[PATCH v2 10/12] clk: qcom: smd-rpm: drop determine_rate op and use CLK_ROUNDING_NOOP flag

Brian Masney posted 12 patches 1 month ago
[PATCH v2 10/12] clk: qcom: smd-rpm: drop determine_rate op and use CLK_ROUNDING_NOOP flag
Posted by Brian Masney 1 month ago
This clk driver has a noop determine_rate clk op. Drop this empty
function, and enable the CLK_ROUNDING_NOOP flag.

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Brian Masney <bmasney@redhat.com>
---
To: Bjorn Andersson <andersson@kernel.org>
To: Michael Turquette <mturquette@baylibre.com>
To: Stephen Boyd <sboyd@kernel.org>
Cc: linux-arm-msm@vger.kernel.org
Cc: linux-clk@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
---
 drivers/clk/qcom/clk-smd-rpm.c | 15 ++-------------
 1 file changed, 2 insertions(+), 13 deletions(-)

diff --git a/drivers/clk/qcom/clk-smd-rpm.c b/drivers/clk/qcom/clk-smd-rpm.c
index 103db984a40b950bd33fba668a292be46af6326e..8c6fc5adf5f50537a4f8d43872bf2f9065e5d6d4 100644
--- a/drivers/clk/qcom/clk-smd-rpm.c
+++ b/drivers/clk/qcom/clk-smd-rpm.c
@@ -35,6 +35,7 @@
 					.name = "xo_board",		      \
 			},						      \
 			.num_parents = 1,				      \
+			.flags = CLK_ROUNDING_NOOP,		      \
 		},							      \
 	};								      \
 	static struct clk_smd_rpm clk_smd_rpm_##_prefix##_active = {	      \
@@ -52,7 +53,7 @@
 					.name = "xo_board",		      \
 			},						      \
 			.num_parents = 1,				      \
-			.flags = (ao_flags),				      \
+			.flags = (CLK_ROUNDING_NOOP | (ao_flags)),	      \
 		},							      \
 	}
 
@@ -370,17 +371,6 @@ static int clk_smd_rpm_set_rate(struct clk_hw *hw, unsigned long rate,
 	return 0;
 }
 
-static int clk_smd_rpm_determine_rate(struct clk_hw *hw,
-				      struct clk_rate_request *req)
-{
-	/*
-	 * RPM handles rate rounding and we don't have a way to
-	 * know what the rate will be, so just return whatever
-	 * rate is requested.
-	 */
-	return 0;
-}
-
 static unsigned long clk_smd_rpm_recalc_rate(struct clk_hw *hw,
 					     unsigned long parent_rate)
 {
@@ -427,7 +417,6 @@ static const struct clk_ops clk_smd_rpm_ops = {
 	.prepare	= clk_smd_rpm_prepare,
 	.unprepare	= clk_smd_rpm_unprepare,
 	.set_rate	= clk_smd_rpm_set_rate,
-	.determine_rate = clk_smd_rpm_determine_rate,
 	.recalc_rate	= clk_smd_rpm_recalc_rate,
 };
 

-- 
2.53.0
Re: [PATCH v2 10/12] clk: qcom: smd-rpm: drop determine_rate op and use CLK_ROUNDING_NOOP flag
Posted by Konrad Dybcio 1 month ago
On 3/9/26 3:38 PM, Brian Masney wrote:
> This clk driver has a noop determine_rate clk op. Drop this empty
> function, and enable the CLK_ROUNDING_NOOP flag.
> 
> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> Signed-off-by: Brian Masney <bmasney@redhat.com>
> ---
> To: Bjorn Andersson <andersson@kernel.org>
> To: Michael Turquette <mturquette@baylibre.com>
> To: Stephen Boyd <sboyd@kernel.org>
> Cc: linux-arm-msm@vger.kernel.org
> Cc: linux-clk@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> ---
>  drivers/clk/qcom/clk-smd-rpm.c | 15 ++-------------
>  1 file changed, 2 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/clk/qcom/clk-smd-rpm.c b/drivers/clk/qcom/clk-smd-rpm.c
> index 103db984a40b950bd33fba668a292be46af6326e..8c6fc5adf5f50537a4f8d43872bf2f9065e5d6d4 100644
> --- a/drivers/clk/qcom/clk-smd-rpm.c
> +++ b/drivers/clk/qcom/clk-smd-rpm.c
> @@ -35,6 +35,7 @@
>  					.name = "xo_board",		      \
>  			},						      \
>  			.num_parents = 1,				      \
> +			.flags = CLK_ROUNDING_NOOP,		      \
>  		},							      \
>  	};								      \
>  	static struct clk_smd_rpm clk_smd_rpm_##_prefix##_active = {	      \
> @@ -52,7 +53,7 @@
>  					.name = "xo_board",		      \
>  			},						      \
>  			.num_parents = 1,				      \
> -			.flags = (ao_flags),				      \
> +			.flags = (CLK_ROUNDING_NOOP | (ao_flags)),	      \
>  		},							      \

The other two definitions (using clk_smd_rpm_branch_ops) also need this

Konrad
Re: [PATCH v2 10/12] clk: qcom: smd-rpm: drop determine_rate op and use CLK_ROUNDING_NOOP flag
Posted by Brian Masney 1 month ago
On Tue, Mar 10, 2026 at 6:17 AM Konrad Dybcio
<konrad.dybcio@oss.qualcomm.com> wrote:
> On 3/9/26 3:38 PM, Brian Masney wrote:
> > This clk driver has a noop determine_rate clk op. Drop this empty
> > function, and enable the CLK_ROUNDING_NOOP flag.
> >
> > Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> > Signed-off-by: Brian Masney <bmasney@redhat.com>
> > ---
> > To: Bjorn Andersson <andersson@kernel.org>
> > To: Michael Turquette <mturquette@baylibre.com>
> > To: Stephen Boyd <sboyd@kernel.org>
> > Cc: linux-arm-msm@vger.kernel.org
> > Cc: linux-clk@vger.kernel.org
> > Cc: linux-kernel@vger.kernel.org
> > ---
> >  drivers/clk/qcom/clk-smd-rpm.c | 15 ++-------------
> >  1 file changed, 2 insertions(+), 13 deletions(-)
> >
> > diff --git a/drivers/clk/qcom/clk-smd-rpm.c b/drivers/clk/qcom/clk-smd-rpm.c
> > index 103db984a40b950bd33fba668a292be46af6326e..8c6fc5adf5f50537a4f8d43872bf2f9065e5d6d4 100644
> > --- a/drivers/clk/qcom/clk-smd-rpm.c
> > +++ b/drivers/clk/qcom/clk-smd-rpm.c
> > @@ -35,6 +35,7 @@
> >                                       .name = "xo_board",                   \
> >                       },                                                    \
> >                       .num_parents = 1,                                     \
> > +                     .flags = CLK_ROUNDING_NOOP,                   \
> >               },                                                            \
> >       };                                                                    \
> >       static struct clk_smd_rpm clk_smd_rpm_##_prefix##_active = {          \
> > @@ -52,7 +53,7 @@
> >                                       .name = "xo_board",                   \
> >                       },                                                    \
> >                       .num_parents = 1,                                     \
> > -                     .flags = (ao_flags),                                  \
> > +                     .flags = (CLK_ROUNDING_NOOP | (ao_flags)),            \
> >               },                                                            \
>
> The other two definitions (using clk_smd_rpm_branch_ops) also need this

Are you sure? clk_smd_rpm_branch_ops doesn't have a set_rate() op, and
it's been like this for years. If I add NOOP flag to this ops
structure, then clk_core_can_round() will return true with this
series, and it'll change the behavior of this driver.

Brian

Brian
Re: [PATCH v2 10/12] clk: qcom: smd-rpm: drop determine_rate op and use CLK_ROUNDING_NOOP flag
Posted by Konrad Dybcio 4 weeks, 1 day ago
On 3/10/26 11:36 AM, Brian Masney wrote:
> On Tue, Mar 10, 2026 at 6:17 AM Konrad Dybcio
> <konrad.dybcio@oss.qualcomm.com> wrote:
>> On 3/9/26 3:38 PM, Brian Masney wrote:
>>> This clk driver has a noop determine_rate clk op. Drop this empty
>>> function, and enable the CLK_ROUNDING_NOOP flag.
>>>
>>> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
>>> Signed-off-by: Brian Masney <bmasney@redhat.com>
>>> ---
>>> To: Bjorn Andersson <andersson@kernel.org>
>>> To: Michael Turquette <mturquette@baylibre.com>
>>> To: Stephen Boyd <sboyd@kernel.org>
>>> Cc: linux-arm-msm@vger.kernel.org
>>> Cc: linux-clk@vger.kernel.org
>>> Cc: linux-kernel@vger.kernel.org
>>> ---
>>>  drivers/clk/qcom/clk-smd-rpm.c | 15 ++-------------
>>>  1 file changed, 2 insertions(+), 13 deletions(-)
>>>
>>> diff --git a/drivers/clk/qcom/clk-smd-rpm.c b/drivers/clk/qcom/clk-smd-rpm.c
>>> index 103db984a40b950bd33fba668a292be46af6326e..8c6fc5adf5f50537a4f8d43872bf2f9065e5d6d4 100644
>>> --- a/drivers/clk/qcom/clk-smd-rpm.c
>>> +++ b/drivers/clk/qcom/clk-smd-rpm.c
>>> @@ -35,6 +35,7 @@
>>>                                       .name = "xo_board",                   \
>>>                       },                                                    \
>>>                       .num_parents = 1,                                     \
>>> +                     .flags = CLK_ROUNDING_NOOP,                   \
>>>               },                                                            \
>>>       };                                                                    \
>>>       static struct clk_smd_rpm clk_smd_rpm_##_prefix##_active = {          \
>>> @@ -52,7 +53,7 @@
>>>                                       .name = "xo_board",                   \
>>>                       },                                                    \
>>>                       .num_parents = 1,                                     \
>>> -                     .flags = (ao_flags),                                  \
>>> +                     .flags = (CLK_ROUNDING_NOOP | (ao_flags)),            \
>>>               },                                                            \
>>
>> The other two definitions (using clk_smd_rpm_branch_ops) also need this
> 
> Are you sure? clk_smd_rpm_branch_ops doesn't have a set_rate() op, and
> it's been like this for years. If I add NOOP flag to this ops
> structure, then clk_core_can_round() will return true with this
> series, and it'll change the behavior of this driver.

Right, I mistook .recalc_rate for .determine_rate

Konrad