From: Peng Fan <peng.fan@oss.nxp.com>
To: Brian Masney <bmasney@redhat.com>
Cc: Abel Vesa <abelvesa@kernel.org>, Peng Fan <peng.fan@nxp.com>,
Michael Turquette <mturquette@baylibre.com>,
Stephen Boyd <sboyd@kernel.org>, Shawn Guo <shawnguo@kernel.org>,
Sascha Hauer <s.hauer@pengutronix.de>,
Pengutronix Kernel Team <kernel@pengutronix.de>,
Fabio Estevam <festevam@gmail.com>,
Maxime Ripard <mripard@kernel.org>,
linux-clk@vger.kernel.org, imx@lists.linux.dev,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 00/13] clk: imx: convert from clk round_rate() to determine_rate()
Date: Tue, 15 Jul 2025 14:57:42 +0800 [thread overview]
Message-ID: <20250715065742.GD632@nxa18884-linux> (raw)
In-Reply-To: <20250710-clk-imx-round-rate-v1-0-5726f98e6d8d@redhat.com>
On Thu, Jul 10, 2025 at 05:10:32PM -0400, Brian Masney wrote:
>The round_rate() clk ops is deprecated in the clk framework in favor
>of the determine_rate() clk ops. The first two patches in this series
>drops the round_rate() function since a determine_rate() function is
>already implemented. The remaining patches convert the drivers using
>the Coccinelle semantic patch posted below. I did a few minor cosmetic
>cleanups of the code in a few cases.
>
>Coccinelle semantic patch:
>
> virtual patch
>
> // Look up the current name of the round_rate function
> @ has_round_rate @
> identifier round_rate_name =~ ".*_round_rate";
> identifier hw_param, rate_param, parent_rate_param;
> @@
>
> long round_rate_name(struct clk_hw *hw_param, unsigned long rate_param,
> unsigned long *parent_rate_param)
> {
> ...
> }
>
> // Rename the route_rate function name to determine_rate()
> @ script:python generate_name depends on has_round_rate @
> round_rate_name << has_round_rate.round_rate_name;
> new_name;
> @@
>
> coccinelle.new_name = round_rate_name.replace("_round_rate", "_determine_rate")
>
> // Change rate to req->rate; also change occurrences of 'return XXX'.
> @ chg_rate depends on generate_name @
> identifier has_round_rate.round_rate_name;
> identifier has_round_rate.hw_param;
> identifier has_round_rate.rate_param;
> identifier has_round_rate.parent_rate_param;
> identifier ERR =~ "E.*";
> expression E;
> @@
>
> long round_rate_name(struct clk_hw *hw_param, unsigned long rate_param,
> unsigned long *parent_rate_param)
> {
> <...
> (
> -return -ERR;
> +return -ERR;
> |
> - return rate_param;
> + return 0;
> |
> - return E;
> + req->rate = E;
> +
> + return 0;
> |
> - rate_param
> + req->rate
> )
> ...>
> }
>
> // Coccinelle only transforms the first occurrence of the rate parameter
> // Run a second time. FIXME: Is there a better way to do this?
> @ chg_rate2 depends on generate_name @
> identifier has_round_rate.round_rate_name;
> identifier has_round_rate.hw_param;
> identifier has_round_rate.rate_param;
> identifier has_round_rate.parent_rate_param;
> @@
>
> long round_rate_name(struct clk_hw *hw_param, unsigned long rate_param,
> unsigned long *parent_rate_param)
> {
> <...
> - rate_param
> + req->rate
> ...>
> }
>
> // Change parent_rate to req->best_parent_rate
> @ chg_parent_rate depends on generate_name @
> identifier has_round_rate.round_rate_name;
> identifier has_round_rate.hw_param;
> identifier has_round_rate.rate_param;
> identifier has_round_rate.parent_rate_param;
> @@
>
> long round_rate_name(struct clk_hw *hw_param, unsigned long rate_param,
> unsigned long *parent_rate_param)
> {
> <...
> (
> - *parent_rate_param
> + req->best_parent_rate
> |
> - parent_rate_param
> + &req->best_parent_rate
> )
> ...>
> }
>
> // Convert the function definition from round_rate() to determine_rate()
> @ func_definition depends on chg_rate @
> identifier has_round_rate.round_rate_name;
> identifier has_round_rate.hw_param;
> identifier has_round_rate.rate_param;
> identifier has_round_rate.parent_rate_param;
> identifier generate_name.new_name;
> @@
>
> - long round_rate_name(struct clk_hw *hw_param, unsigned long rate_param,
> - unsigned long *parent_rate_param)
> + int new_name(struct clk_hw *hw, struct clk_rate_request *req)
> {
> ...
> }
>
> // Update the ops from round_rate() to determine_rate()
> @ ops depends on func_definition @
> identifier has_round_rate.round_rate_name;
> identifier generate_name.new_name;
> @@
>
> {
> ...,
> - .round_rate = round_rate_name,
> + .determine_rate = new_name,
> ...,
> }
>
>Note that I used coccinelle 1.2 instead of 1.3 since the newer version
>adds unnecessary braces as described in this post.
>https://lore.kernel.org/cocci/67642477-5f3e-4b2a-914d-579a54f48cbd@intel.com/
>
>Signed-off-by: Brian Masney <bmasney@redhat.com>
patchset LGTM:
Reviewed-by: Peng Fan <peng.fan@nxp.com>
prev parent reply other threads:[~2025-07-15 5:47 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-10 21:10 [PATCH 00/13] clk: imx: convert from clk round_rate() to determine_rate() Brian Masney
2025-07-10 21:10 ` [PATCH 01/13] clk: imx: composite-8m: remove round_rate() in favor of determine_rate() Brian Masney
2025-07-24 22:16 ` Stephen Boyd
2025-07-10 21:10 ` [PATCH 02/13] clk: imx: composite-93: " Brian Masney
2025-07-24 22:16 ` Stephen Boyd
2025-07-10 21:10 ` [PATCH 03/13] clk: imx: busy: convert from round_rate() to determine_rate() Brian Masney
2025-07-24 22:16 ` Stephen Boyd
2025-07-10 21:10 ` [PATCH 04/13] clk: imx: cpu: " Brian Masney
2025-07-24 22:16 ` Stephen Boyd
2025-07-10 21:10 ` [PATCH 05/13] clk: imx: fixup-div: " Brian Masney
2025-07-24 22:16 ` Stephen Boyd
2025-07-10 21:10 ` [PATCH 06/13] clk: imx: fracn-gppll: " Brian Masney
2025-07-24 22:15 ` Stephen Boyd
2025-07-10 21:10 ` [PATCH 07/13] clk: imx: frac-pll: " Brian Masney
2025-07-24 22:15 ` Stephen Boyd
2025-07-10 21:10 ` [PATCH 08/13] clk: imx: pfd: " Brian Masney
2025-07-24 22:15 ` Stephen Boyd
2025-07-10 21:10 ` [PATCH 09/13] clk: imx: pll14xx: " Brian Masney
2025-07-24 22:15 ` Stephen Boyd
2025-07-10 21:10 ` [PATCH 10/13] clk: imx: pllv2: " Brian Masney
2025-07-24 22:15 ` Stephen Boyd
2025-07-10 21:10 ` [PATCH 11/13] clk: imx: pllv3: " Brian Masney
2025-07-24 22:15 ` Stephen Boyd
2025-07-10 21:10 ` [PATCH 12/13] clk: imx: pllv4: " Brian Masney
2025-07-24 22:15 ` Stephen Boyd
2025-07-10 21:10 ` [PATCH 13/13] clk: imx: scu: " Brian Masney
2025-07-24 22:15 ` Stephen Boyd
2025-07-15 6:57 ` Peng Fan [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250715065742.GD632@nxa18884-linux \
--to=peng.fan@oss.nxp.com \
--cc=abelvesa@kernel.org \
--cc=bmasney@redhat.com \
--cc=festevam@gmail.com \
--cc=imx@lists.linux.dev \
--cc=kernel@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mripard@kernel.org \
--cc=mturquette@baylibre.com \
--cc=peng.fan@nxp.com \
--cc=s.hauer@pengutronix.de \
--cc=sboyd@kernel.org \
--cc=shawnguo@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.