svn commit: r334996 - head/sys/arm64/rockchip/clk
Emmanuel Vadot
manu at FreeBSD.org
Tue Jun 12 11:47:22 UTC 2018
Author: manu
Date: Tue Jun 12 11:47:21 2018
New Revision: 334996
URL: https://svnweb.freebsd.org/changeset/base/334996
Log:
arm64: rockchip: Correctly set armclk
Parent needs to be the same frequency as the armclk, not twice the freq.
The real divider is incremented by one so write it with - 1
The rate can be at index 0
Pointy Hat To: myself
Modified:
head/sys/arm64/rockchip/clk/rk_clk_armclk.c
Modified: head/sys/arm64/rockchip/clk/rk_clk_armclk.c
==============================================================================
--- head/sys/arm64/rockchip/clk/rk_clk_armclk.c Tue Jun 12 10:43:20 2018 (r334995)
+++ head/sys/arm64/rockchip/clk/rk_clk_armclk.c Tue Jun 12 11:47:21 2018 (r334996)
@@ -154,12 +154,13 @@ rk_clk_armclk_set_freq(struct clknode *clk, uint64_t f
if (sc->rates[i].freq == *fout) {
best = sc->rates[i].freq;
div = sc->rates[i].div;
- best_p = best * (div + 1);
+ best_p = best * div;
rate = i;
+ break;
}
}
- if (rate == 0)
+ if (rate == sc->nrates)
return (0);
err = clknode_set_freq(p_main, best_p, 0, 1);
@@ -177,7 +178,7 @@ rk_clk_armclk_set_freq(struct clknode *clk, uint64_t f
DEVICE_LOCK(clk);
READ4(clk, sc->muxdiv_offset, &val);
val &= ~sc->div_mask;
- val |= div << sc->div_shift;
+ val |= (div - 1) << sc->div_shift;
WRITE4(clk, sc->muxdiv_offset, val | RK_CLK_ARMCLK_MASK);
DEVICE_UNLOCK(clk);
More information about the svn-src-head
mailing list