All of lore.kernel.org
 help / color / mirror / Atom feed
From: Geert Uytterhoeven <geert+renesas@glider.be>
To: Michael Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@kernel.org>
Cc: Takeshi Kihara <takeshi.kihara.df@renesas.com>,
	linux-renesas-soc@vger.kernel.org, linux-clk@vger.kernel.org,
	Geert Uytterhoeven <geert+renesas@glider.be>
Subject: [PATCH 5/7] clk: renesas: rcar-gen3: Increase Z clock accuracy
Date: Fri, 26 Mar 2021 13:00:58 +0100	[thread overview]
Message-ID: <20210326120100.1577596-6-geert+renesas@glider.be> (raw)
In-Reply-To: <20210326120100.1577596-1-geert+renesas@glider.be>

Improve accuracy in the .determine_rate() callback for Z and Z2 clocks
by using rounded divisions.  This is similar to the calculation of rates
and multipliers in the .recalc_rate() resp. set_rate() callbacks.

Sample impact for a few requested clock rates:
  - R-Car H3:
      - Z 500 MHz:	468 MHz => 515 MHz
      - Z2 1000 MHz:	973 MHz => 1011 MHz
  - R-Car M3-W:
      - Z 500 MHz:	422 MHz => 516 MHz
      - Z2 800 MHz:	750 MHz => 788 MHz

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
 drivers/clk/renesas/rcar-gen3-cpg.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/clk/renesas/rcar-gen3-cpg.c b/drivers/clk/renesas/rcar-gen3-cpg.c
index a241bf6e904f2f66..6b389c1caca76f07 100644
--- a/drivers/clk/renesas/rcar-gen3-cpg.c
+++ b/drivers/clk/renesas/rcar-gen3-cpg.c
@@ -83,10 +83,10 @@ static int cpg_z_clk_determine_rate(struct clk_hw *hw,
 	if (max_mult < min_mult)
 		return -EINVAL;
 
-	mult = div64_ul(req->rate * 32ULL, prate);
+	mult = DIV_ROUND_CLOSEST_ULL(req->rate * 32ULL, prate);
 	mult = clamp(mult, min_mult, max_mult);
 
-	req->rate = div_u64((u64)prate * mult, 32);
+	req->rate = DIV_ROUND_CLOSEST_ULL((u64)prate * mult, 32);
 	return 0;
 }
 
-- 
2.25.1


  parent reply	other threads:[~2021-03-26 12:03 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-26 12:00 [PATCH 0/7] clk: renesas: rcar-gen3: Add support for CPU core clock boost modes Geert Uytterhoeven
2021-03-26 12:00 ` [PATCH 1/7] clk: renesas: rcar-gen3: Update Z clock rate formula in comments Geert Uytterhoeven
2021-03-26 12:00 ` [PATCH 2/7] clk: renesas: rcar-gen3: Make cpg_z_clk.mask u32 Geert Uytterhoeven
2021-03-26 12:00 ` [PATCH 3/7] clk: renesas: rcar-gen3: Remove superfluous masking in cpg_z_clk_set_rate() Geert Uytterhoeven
2021-03-26 12:00 ` [PATCH 4/7] clk: renesas: rcar-gen3: Grammar s/dependent of/dependent on/ Geert Uytterhoeven
2021-03-26 12:00 ` Geert Uytterhoeven [this message]
2021-03-26 12:00 ` [PATCH 6/7] clk: renesas: rcar-gen3: Add custom clock for PLLs Geert Uytterhoeven
2021-03-30  2:22   ` Stephen Boyd
2021-03-30  7:02     ` Geert Uytterhoeven
2021-04-01  1:40       ` Stephen Boyd
2021-03-26 12:01 ` [PATCH 7/7] clk: renesas: rcar-gen3: Add boost support to Z clocks Geert Uytterhoeven
2021-03-30  2:21 ` [PATCH 0/7] clk: renesas: rcar-gen3: Add support for CPU core clock boost modes Stephen Boyd
2021-03-30 10:05 ` Yoshihiro Shimoda

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=20210326120100.1577596-6-geert+renesas@glider.be \
    --to=geert+renesas@glider.be \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=sboyd@kernel.org \
    --cc=takeshi.kihara.df@renesas.com \
    /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.