diff options
author | cognet <cognet@FreeBSD.org> | 2010-10-06 22:40:27 +0000 |
---|---|---|
committer | cognet <cognet@FreeBSD.org> | 2010-10-06 22:40:27 +0000 |
commit | 3a67028003520c808580f7ad76332264113ed3a7 (patch) | |
tree | 010ee20a0e63d75a94eab678b3d2218f57017895 /sys/arm/at91/at91_pmc.c | |
parent | 776b19482a8b1aebc00d0c1371eff3d2ed92bcd0 (diff) | |
download | FreeBSD-src-3a67028003520c808580f7ad76332264113ed3a7.zip FreeBSD-src-3a67028003520c808580f7ad76332264113ed3a7.tar.gz |
Add support for the AT91SAM9260
Submitted by: Greg Ansley
Diffstat (limited to 'sys/arm/at91/at91_pmc.c')
-rw-r--r-- | sys/arm/at91/at91_pmc.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/arm/at91/at91_pmc.c b/sys/arm/at91/at91_pmc.c index 1f314c3..03a7a6e 100644 --- a/sys/arm/at91/at91_pmc.c +++ b/sys/arm/at91/at91_pmc.c @@ -331,6 +331,9 @@ at91_pmc_pll_rate(struct at91_pmc_clock *clk, uint32_t reg) div = (reg >> clk->pll_div_shift) & clk->pll_div_mask; mul = (reg >> clk->pll_mul_shift) & clk->pll_mul_mask; +// printf("pll = (%d / %d) * %d = %d\n", +// freq, div ,mul + 1, (freq/div) * (mul+1)); + if (div != 0 && mul != 0) { freq /= div; freq *= mul + 1; @@ -338,6 +341,8 @@ at91_pmc_pll_rate(struct at91_pmc_clock *clk, uint32_t reg) freq = 0; } clk->hz = freq; + + return (freq); } @@ -444,7 +449,8 @@ at91_pmc_init_clock(struct at91_pmc_softc *sc, unsigned int main_clock) mdiv = (mckr & PMC_MCKR_MDIV_MASK) >> 8; if (at91_is_sam9()) { - mck.hz /= (mdiv) ? (mdiv * 2) : 1; + if (mdiv > 0) + mck.hz /= mdiv * 2; } else mck.hz /= (1 + mdiv); |