All of lore.kernel.org
 help / color / mirror / Atom feed
From: Frank Oltmanns <frank@oltmanns.dev>
To: Maxime Ripard <mripard@kernel.org>
Cc: Michael Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@kernel.org>, Chen-Yu Tsai <wens@csie.org>,
	Jernej Skrabec <jernej.skrabec@gmail.com>,
	Samuel Holland <samuel@sholland.org>,
	Andre Przywara <andre.przywara@arm.com>,
	Roman Beranek <me@crly.cz>,
	linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 08/11] clk: sunxi-ng: nkm: Support finding closest rate
Date: Sun, 23 Jul 2023 09:25:10 +0200	[thread overview]
Message-ID: <87ilabqecp.fsf@oltmanns.dev> (raw)
In-Reply-To: <ho2bblo2hzizst74hfqog3ga4cjf7eead2ntbl4e7xi5c32bhq@qpttu7ayv7vy>

Hi Maxime,

On 2023-07-17 at 16:14:58 +0200, Maxime Ripard <mripard@kernel.org> wrote:
> [[PGP Signed Part:Undecided]]
> On Mon, Jul 17, 2023 at 03:34:32PM +0200, Frank Oltmanns wrote:
>> When finding the best rate for a NKM clock, consider rates that are
>> higher than the requested rate, if the CCU_FEATURE_CLOSEST_RATE flag is
>> set by using the helper function ccu_is_better_rate().
>>
>> Accommodate ccu_mux_helper_determine_rate to this change.
>>
>> Signed-off-by: Frank Oltmanns <frank@oltmanns.dev>
>> ---
>>  drivers/clk/sunxi-ng/ccu_mux.c |  2 +-
>>  drivers/clk/sunxi-ng/ccu_nkm.c | 18 ++++++++----------
>>  2 files changed, 9 insertions(+), 11 deletions(-)
>>
>> diff --git a/drivers/clk/sunxi-ng/ccu_mux.c b/drivers/clk/sunxi-ng/ccu_mux.c
>> index 1d557e323169..3ca695439620 100644
>> --- a/drivers/clk/sunxi-ng/ccu_mux.c
>> +++ b/drivers/clk/sunxi-ng/ccu_mux.c
>> @@ -139,7 +139,7 @@ int ccu_mux_helper_determine_rate(struct ccu_common *common,
>>  			goto out;
>>  		}
>>
>> -		if ((req->rate - tmp_rate) < (req->rate - best_rate)) {
>> +		if (ccu_is_better_rate(common, req->rate, tmp_rate, best_rate)) {
>>  			best_rate = tmp_rate;
>>  			best_parent_rate = parent_rate;
>>  			best_parent = parent;
>> diff --git a/drivers/clk/sunxi-ng/ccu_nkm.c b/drivers/clk/sunxi-ng/ccu_nkm.c
>> index 793160bc2d47..5439b9351cd7 100644
>> --- a/drivers/clk/sunxi-ng/ccu_nkm.c
>> +++ b/drivers/clk/sunxi-ng/ccu_nkm.c
>> @@ -39,6 +39,7 @@ static unsigned long ccu_nkm_optimal_parent_rate(unsigned long rate, unsigned lo
>>  }
>>
>>  static unsigned long ccu_nkm_find_best_with_parent_adj(struct clk_hw *phw, struct _ccu_nkm *nkm,
>> +						       struct ccu_common *common,
>>  						       unsigned long *parent, unsigned long rate)
>>  {
>>  	unsigned long best_rate = 0, best_parent_rate = *parent, tmp_parent = *parent;
>> @@ -54,10 +55,8 @@ static unsigned long ccu_nkm_find_best_with_parent_adj(struct clk_hw *phw, struc
>>  				tmp_parent = clk_hw_round_rate(phw, tmp_parent);
>>
>>  				tmp_rate = tmp_parent * _n * _k / _m;
>> -				if (tmp_rate > rate)
>> -					continue;
>>
>> -				if ((rate - tmp_rate) < (rate - best_rate)) {
>> +				if (ccu_is_better_rate(common, rate, tmp_rate, best_rate)) {
>>  					best_rate = tmp_rate;
>>  					best_parent_rate = tmp_parent;
>>  					best_n = _n;
>> @@ -78,7 +77,7 @@ static unsigned long ccu_nkm_find_best_with_parent_adj(struct clk_hw *phw, struc
>>  }
>>
>>  static unsigned long ccu_nkm_find_best(unsigned long parent, unsigned long rate,
>> -				       struct _ccu_nkm *nkm)
>> +				       struct _ccu_nkm *nkm, struct ccu_common *common)
>
> Same comment than on patch 7, common should be first in those two functions.
>

Ok, I wasn't sure what your expectation is for existing functions. For
ccu_find_best_with_parent_adj the order is:
  1. *phw
  2. *nkm
  3. *common
  4. *parent
  5. rate

We don't have the parent hw in ccu_nkm_find_best. The order prior to
this patch is:
  1. parent
  2. rate
  3. *nkm

We need to add *common to that, so I could add it to the beginning as
per your suggestion:
  1. *common
  2. parent
  3. rate
  4. *nkm

I could also pull *nkm to the beginning (similar to the parent_adj
version):
  4. *nkm
  1. *common
  2. parent
  3. rate

Thanks for your feedback,
  Frank

>
> Once fixed,
> Acked-by: Maxime Ripard <mripard@kernel.org>
>
> Maxime
>
> [[End of PGP Signed Part]]

WARNING: multiple messages have this Message-ID (diff)
From: Frank Oltmanns <frank@oltmanns.dev>
To: Maxime Ripard <mripard@kernel.org>
Cc: Michael Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@kernel.org>, Chen-Yu Tsai <wens@csie.org>,
	Jernej Skrabec <jernej.skrabec@gmail.com>,
	Samuel Holland <samuel@sholland.org>,
	Andre Przywara <andre.przywara@arm.com>,
	Roman Beranek <me@crly.cz>,
	linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 08/11] clk: sunxi-ng: nkm: Support finding closest rate
Date: Sun, 23 Jul 2023 09:25:10 +0200	[thread overview]
Message-ID: <87ilabqecp.fsf@oltmanns.dev> (raw)
In-Reply-To: <ho2bblo2hzizst74hfqog3ga4cjf7eead2ntbl4e7xi5c32bhq@qpttu7ayv7vy>

Hi Maxime,

On 2023-07-17 at 16:14:58 +0200, Maxime Ripard <mripard@kernel.org> wrote:
> [[PGP Signed Part:Undecided]]
> On Mon, Jul 17, 2023 at 03:34:32PM +0200, Frank Oltmanns wrote:
>> When finding the best rate for a NKM clock, consider rates that are
>> higher than the requested rate, if the CCU_FEATURE_CLOSEST_RATE flag is
>> set by using the helper function ccu_is_better_rate().
>>
>> Accommodate ccu_mux_helper_determine_rate to this change.
>>
>> Signed-off-by: Frank Oltmanns <frank@oltmanns.dev>
>> ---
>>  drivers/clk/sunxi-ng/ccu_mux.c |  2 +-
>>  drivers/clk/sunxi-ng/ccu_nkm.c | 18 ++++++++----------
>>  2 files changed, 9 insertions(+), 11 deletions(-)
>>
>> diff --git a/drivers/clk/sunxi-ng/ccu_mux.c b/drivers/clk/sunxi-ng/ccu_mux.c
>> index 1d557e323169..3ca695439620 100644
>> --- a/drivers/clk/sunxi-ng/ccu_mux.c
>> +++ b/drivers/clk/sunxi-ng/ccu_mux.c
>> @@ -139,7 +139,7 @@ int ccu_mux_helper_determine_rate(struct ccu_common *common,
>>  			goto out;
>>  		}
>>
>> -		if ((req->rate - tmp_rate) < (req->rate - best_rate)) {
>> +		if (ccu_is_better_rate(common, req->rate, tmp_rate, best_rate)) {
>>  			best_rate = tmp_rate;
>>  			best_parent_rate = parent_rate;
>>  			best_parent = parent;
>> diff --git a/drivers/clk/sunxi-ng/ccu_nkm.c b/drivers/clk/sunxi-ng/ccu_nkm.c
>> index 793160bc2d47..5439b9351cd7 100644
>> --- a/drivers/clk/sunxi-ng/ccu_nkm.c
>> +++ b/drivers/clk/sunxi-ng/ccu_nkm.c
>> @@ -39,6 +39,7 @@ static unsigned long ccu_nkm_optimal_parent_rate(unsigned long rate, unsigned lo
>>  }
>>
>>  static unsigned long ccu_nkm_find_best_with_parent_adj(struct clk_hw *phw, struct _ccu_nkm *nkm,
>> +						       struct ccu_common *common,
>>  						       unsigned long *parent, unsigned long rate)
>>  {
>>  	unsigned long best_rate = 0, best_parent_rate = *parent, tmp_parent = *parent;
>> @@ -54,10 +55,8 @@ static unsigned long ccu_nkm_find_best_with_parent_adj(struct clk_hw *phw, struc
>>  				tmp_parent = clk_hw_round_rate(phw, tmp_parent);
>>
>>  				tmp_rate = tmp_parent * _n * _k / _m;
>> -				if (tmp_rate > rate)
>> -					continue;
>>
>> -				if ((rate - tmp_rate) < (rate - best_rate)) {
>> +				if (ccu_is_better_rate(common, rate, tmp_rate, best_rate)) {
>>  					best_rate = tmp_rate;
>>  					best_parent_rate = tmp_parent;
>>  					best_n = _n;
>> @@ -78,7 +77,7 @@ static unsigned long ccu_nkm_find_best_with_parent_adj(struct clk_hw *phw, struc
>>  }
>>
>>  static unsigned long ccu_nkm_find_best(unsigned long parent, unsigned long rate,
>> -				       struct _ccu_nkm *nkm)
>> +				       struct _ccu_nkm *nkm, struct ccu_common *common)
>
> Same comment than on patch 7, common should be first in those two functions.
>

Ok, I wasn't sure what your expectation is for existing functions. For
ccu_find_best_with_parent_adj the order is:
  1. *phw
  2. *nkm
  3. *common
  4. *parent
  5. rate

We don't have the parent hw in ccu_nkm_find_best. The order prior to
this patch is:
  1. parent
  2. rate
  3. *nkm

We need to add *common to that, so I could add it to the beginning as
per your suggestion:
  1. *common
  2. parent
  3. rate
  4. *nkm

I could also pull *nkm to the beginning (similar to the parent_adj
version):
  4. *nkm
  1. *common
  2. parent
  3. rate

Thanks for your feedback,
  Frank

>
> Once fixed,
> Acked-by: Maxime Ripard <mripard@kernel.org>
>
> Maxime
>
> [[End of PGP Signed Part]]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2023-07-23  7:25 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-17 13:34 [PATCH v4 00/11] clk: sunxi-ng: Consider alternative parent rates when determining NKM clock rate Frank Oltmanns
2023-07-17 13:34 ` Frank Oltmanns
2023-07-17 13:34 ` [PATCH v4 01/11] clk: sunxi-ng: nkm: Use correct parameter name for parent HW Frank Oltmanns
2023-07-17 13:34   ` Frank Oltmanns
2023-07-17 14:07   ` Maxime Ripard
2023-07-17 14:07     ` Maxime Ripard
2023-07-17 13:34 ` [PATCH v4 02/11] clk: sunxi-ng: nkm: consider alternative parent rates when determining rate Frank Oltmanns
2023-07-17 13:34   ` Frank Oltmanns
2023-07-17 14:07   ` Maxime Ripard
2023-07-17 14:07     ` Maxime Ripard
2023-07-17 13:34 ` [PATCH v4 03/11] clk: sunxi-ng: nkm: Improve determine rate when setting parent Frank Oltmanns
2023-07-17 13:34   ` Frank Oltmanns
2023-07-17 14:10   ` Maxime Ripard
2023-07-17 14:10     ` Maxime Ripard
2023-07-17 13:34 ` [PATCH v4 04/11] clk: sunxi-ng: a64: allow pll-mipi to set parent's rate Frank Oltmanns
2023-07-17 13:34   ` Frank Oltmanns
2023-07-17 13:34 ` [PATCH v4 05/11] clk: sunxi-ng: Add feature to find closest rate Frank Oltmanns
2023-07-17 13:34   ` Frank Oltmanns
2023-07-17 13:34 ` [PATCH v4 06/11] clk: sunxi-ng: Add helper function " Frank Oltmanns
2023-07-17 13:34   ` Frank Oltmanns
2023-07-17 14:08   ` Maxime Ripard
2023-07-17 14:08     ` Maxime Ripard
2023-07-17 13:34 ` [PATCH v4 07/11] clk: sunxi-ng: nm: Support finding " Frank Oltmanns
2023-07-17 13:34   ` Frank Oltmanns
2023-07-17 14:12   ` Maxime Ripard
2023-07-17 14:12     ` Maxime Ripard
2023-07-23  7:26     ` Frank Oltmanns
2023-07-23  7:26       ` Frank Oltmanns
2023-07-17 13:34 ` [PATCH v4 08/11] clk: sunxi-ng: nkm: " Frank Oltmanns
2023-07-17 13:34   ` Frank Oltmanns
2023-07-17 14:14   ` Maxime Ripard
2023-07-17 14:14     ` Maxime Ripard
2023-07-23  7:25     ` Frank Oltmanns [this message]
2023-07-23  7:25       ` Frank Oltmanns
2023-07-24 13:19       ` Maxime Ripard
2023-07-17 13:34 ` [PATCH v4 09/11] clk: sunxi-ng: mux: " Frank Oltmanns
2023-07-17 13:34   ` Frank Oltmanns
2023-07-17 14:15   ` Maxime Ripard
2023-07-17 14:15     ` Maxime Ripard
2023-07-17 13:34 ` [PATCH v4 10/11] clk: sunxi-ng: div: " Frank Oltmanns
2023-07-17 13:34   ` Frank Oltmanns
2023-07-17 13:34 ` [PATCH v4 11/11] clk: sunxi-ng: a64: select closest rate for pll-video0 Frank Oltmanns
2023-07-17 13:34   ` Frank Oltmanns
2023-07-17 14:16   ` Maxime Ripard
2023-07-17 14:16     ` Maxime Ripard

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=87ilabqecp.fsf@oltmanns.dev \
    --to=frank@oltmanns.dev \
    --cc=andre.przywara@arm.com \
    --cc=jernej.skrabec@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sunxi@lists.linux.dev \
    --cc=me@crly.cz \
    --cc=mripard@kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=samuel@sholland.org \
    --cc=sboyd@kernel.org \
    --cc=wens@csie.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.