Thread (4 messages) 4 messages, 3 authors, 2018-12-18

Re: [PATCH] clk: at91: optimize clk_round_rate() for AUDIO_PLL

From: Stephen Boyd <sboyd@kernel.org>
Date: 2018-12-17 23:23:08

Quoting Michał Mirosław (2018-12-17 11:37:05)
This makes for 3 clk_round_rate() calls instead of 64 of them on
SAMA5D2-based board when searching for 12.288MHz clock.
Ok, but is that better? Worse? Can you more clearly describe what you're
doing here? And it's not breaking some other corner case?
Signed-off-by: Micha\u0142 Miros\u0142aw <mirq-linux@rere.qmqm.pl>
This got all broken. Something on your end?
quoted hunk ↗ jump to hunk
---
 drivers/clk/at91/clk-audio-pll.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/clk/at91/clk-audio-pll.c b/drivers/clk/at91/clk-audio-pll.c
index 36d77146a3bd..3a358282784e 100644
--- a/drivers/clk/at91/clk-audio-pll.c
+++ b/drivers/clk/at91/clk-audio-pll.c
@@ -340,7 +340,11 @@ static long clk_audio_pll_pmc_round_rate(struct clk_hw *hw, unsigned long rate,
        pr_debug("A PLL/PMC: %s, rate = %lu (parent_rate = %lu)\n", __func__,
                 rate, *parent_rate);
 
-       for (div = 1; div <= AUDIO_PLL_QDPMC_MAX; div++) {
+       if (!rate)
+               return 0;
+
+       best_parent_rate = clk_round_rate(pclk->clk, 1);
+       for (div = max(best_parent_rate / rate, 1ul); div <= AUDIO_PLL_QDPMC_MAX; div++) {
Nitpick: Style is usually 1UL instead of lowercase 1ul.
quoted hunk ↗ jump to hunk
                best_parent_rate = clk_round_rate(pclk->clk, rate * div);
                tmp_rate = best_parent_rate / div;
                tmp_diff = abs(rate - tmp_rate);
@@ -350,6 +354,8 @@ static long clk_audio_pll_pmc_round_rate(struct clk_hw *hw, unsigned long rate,
                        best_rate = tmp_rate;
                        best_diff = tmp_diff;
                        tmp_qd = div;
+                       if (!best_diff)
+                               break;  /* got exact match */
Seems sensible to break immediately if exact match is found.
`

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help