aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/clock34xx.h
diff options
context:
space:
mode:
authorPaul Walmsley <paul@pwsan.com>2009-01-28 14:08:44 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2009-02-08 12:50:35 -0500
commit95f538ac370d9625457ba00ef7c3bb91e2b92f89 (patch)
tree3fff982958af2674f57a200ff26619e32135f95c /arch/arm/mach-omap2/clock34xx.h
parent85a5f78d2b15a2e73b6486a24b77bb3ab67d5bbc (diff)
[ARM] OMAP3 clock: avoid invalid FREQSEL values during DPLL rate rounding
The DPLL FREQSEL jitter correction bits are set based on a table in the 34xx TRM, Table 4-38, according to the DPLL's internal clock frequency "Fint." Several Fint frequency ranges are missing from this table. Previously, we allowed these Fint frequency ranges to be selected in the rate rounding code, but did not change the FREQSEL bits. Correspondence with the OMAP hardware team indicates that Fint values not in the table should not be used. So, prevent them from being selected during DPLL rate rounding. This removes warnings and also can prevent the chip from locking up. The first pass through the rate rounding code will update the DPLL max and min dividers appropriately, so later rate rounding passes will run faster than the first. Peter de Schrijver <peter.de-schrijver@nokia.com> put up with several test cycles of this patch - thanks Peter. linux-omap source commit is f9c1b82f55b60fc39eaa6e7aa1fbe380c0ffe2e9. Signed-off-by: Paul Walmsley <paul@pwsan.com> Cc: Peter de Schrijver <peter.de-schrijver@nokia.com> Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-omap2/clock34xx.h')
-rw-r--r--arch/arm/mach-omap2/clock34xx.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/clock34xx.h b/arch/arm/mach-omap2/clock34xx.h
index 7ee131202625..aadd296c05a2 100644
--- a/arch/arm/mach-omap2/clock34xx.h
+++ b/arch/arm/mach-omap2/clock34xx.h
@@ -268,6 +268,7 @@ static struct dpll_data dpll1_dd = {
268 .idlest_reg = OMAP_CM_REGADDR(MPU_MOD, OMAP3430_CM_IDLEST_PLL), 268 .idlest_reg = OMAP_CM_REGADDR(MPU_MOD, OMAP3430_CM_IDLEST_PLL),
269 .idlest_mask = OMAP3430_ST_MPU_CLK_MASK, 269 .idlest_mask = OMAP3430_ST_MPU_CLK_MASK,
270 .max_multiplier = OMAP3_MAX_DPLL_MULT, 270 .max_multiplier = OMAP3_MAX_DPLL_MULT,
271 .min_divider = 1,
271 .max_divider = OMAP3_MAX_DPLL_DIV, 272 .max_divider = OMAP3_MAX_DPLL_DIV,
272 .rate_tolerance = DEFAULT_DPLL_RATE_TOLERANCE 273 .rate_tolerance = DEFAULT_DPLL_RATE_TOLERANCE
273}; 274};
@@ -341,6 +342,7 @@ static struct dpll_data dpll2_dd = {
341 .idlest_reg = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD, OMAP3430_CM_IDLEST_PLL), 342 .idlest_reg = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD, OMAP3430_CM_IDLEST_PLL),
342 .idlest_mask = OMAP3430_ST_IVA2_CLK_MASK, 343 .idlest_mask = OMAP3430_ST_IVA2_CLK_MASK,
343 .max_multiplier = OMAP3_MAX_DPLL_MULT, 344 .max_multiplier = OMAP3_MAX_DPLL_MULT,
345 .min_divider = 1,
344 .max_divider = OMAP3_MAX_DPLL_DIV, 346 .max_divider = OMAP3_MAX_DPLL_DIV,
345 .rate_tolerance = DEFAULT_DPLL_RATE_TOLERANCE 347 .rate_tolerance = DEFAULT_DPLL_RATE_TOLERANCE
346}; 348};
@@ -400,6 +402,7 @@ static struct dpll_data dpll3_dd = {
400 .idlest_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST), 402 .idlest_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST),
401 .idlest_mask = OMAP3430_ST_CORE_CLK_MASK, 403 .idlest_mask = OMAP3430_ST_CORE_CLK_MASK,
402 .max_multiplier = OMAP3_MAX_DPLL_MULT, 404 .max_multiplier = OMAP3_MAX_DPLL_MULT,
405 .min_divider = 1,
403 .max_divider = OMAP3_MAX_DPLL_DIV, 406 .max_divider = OMAP3_MAX_DPLL_DIV,
404 .rate_tolerance = DEFAULT_DPLL_RATE_TOLERANCE 407 .rate_tolerance = DEFAULT_DPLL_RATE_TOLERANCE
405}; 408};
@@ -591,6 +594,7 @@ static struct dpll_data dpll4_dd = {
591 .idlest_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST), 594 .idlest_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST),
592 .idlest_mask = OMAP3430_ST_PERIPH_CLK_MASK, 595 .idlest_mask = OMAP3430_ST_PERIPH_CLK_MASK,
593 .max_multiplier = OMAP3_MAX_DPLL_MULT, 596 .max_multiplier = OMAP3_MAX_DPLL_MULT,
597 .min_divider = 1,
594 .max_divider = OMAP3_MAX_DPLL_DIV, 598 .max_divider = OMAP3_MAX_DPLL_DIV,
595 .rate_tolerance = DEFAULT_DPLL_RATE_TOLERANCE 599 .rate_tolerance = DEFAULT_DPLL_RATE_TOLERANCE
596}; 600};
@@ -930,6 +934,7 @@ static struct dpll_data dpll5_dd = {
930 .idlest_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST2), 934 .idlest_reg = OMAP_CM_REGADDR(PLL_MOD, CM_IDLEST2),
931 .idlest_mask = OMAP3430ES2_ST_PERIPH2_CLK_MASK, 935 .idlest_mask = OMAP3430ES2_ST_PERIPH2_CLK_MASK,
932 .max_multiplier = OMAP3_MAX_DPLL_MULT, 936 .max_multiplier = OMAP3_MAX_DPLL_MULT,
937 .min_divider = 1,
933 .max_divider = OMAP3_MAX_DPLL_DIV, 938 .max_divider = OMAP3_MAX_DPLL_DIV,
934 .rate_tolerance = DEFAULT_DPLL_RATE_TOLERANCE 939 .rate_tolerance = DEFAULT_DPLL_RATE_TOLERANCE
935}; 940};