diff options
author | Paul Walmsley <paul@pwsan.com> | 2012-12-15 03:36:04 -0500 |
---|---|---|
committer | Paul Walmsley <paul@pwsan.com> | 2012-12-15 03:41:24 -0500 |
commit | b8675e2c04fd368f0a726b7e4583946f7b8e7125 (patch) | |
tree | f729cfd41af9c30089be40a30b48c5b4d0ce2d1a /arch/arm/mach-omap2/cclock44xx_data.c | |
parent | 628a37d40e27886f94946d91d71ac323b826809c (diff) |
ARM: OMAP4: clock data: DPLLs are missing bypass clocks in their parent lists
Booting OMAP4460 Pandaboard ES with a recent u-boot results in this
warning:
WARNING: at arch/arm/mach-omap2/dpll3xxx.c:427 omap3_noncore_dpll_enable+0xf4/0x110()
The OMAP4 DPLL parent clock names only listed the reference clocks,
not the bypass clocks. Fix by adding the bypass clocks to the DPLL
parent lists.
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Cc: Mike Turquette <mturquette@linaro.org>
Diffstat (limited to 'arch/arm/mach-omap2/cclock44xx_data.c')
-rw-r--r-- | arch/arm/mach-omap2/cclock44xx_data.c | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/arch/arm/mach-omap2/cclock44xx_data.c b/arch/arm/mach-omap2/cclock44xx_data.c index 259280ad6059..5789a5e25563 100644 --- a/arch/arm/mach-omap2/cclock44xx_data.c +++ b/arch/arm/mach-omap2/cclock44xx_data.c | |||
@@ -243,7 +243,7 @@ static struct dpll_data dpll_core_dd = { | |||
243 | 243 | ||
244 | 244 | ||
245 | static const char *dpll_core_ck_parents[] = { | 245 | static const char *dpll_core_ck_parents[] = { |
246 | "sys_clkin_ck", | 246 | "sys_clkin_ck", "core_hsd_byp_clk_mux_ck" |
247 | }; | 247 | }; |
248 | 248 | ||
249 | static struct clk dpll_core_ck; | 249 | static struct clk dpll_core_ck; |
@@ -373,6 +373,10 @@ static struct dpll_data dpll_iva_dd = { | |||
373 | .min_divider = 1, | 373 | .min_divider = 1, |
374 | }; | 374 | }; |
375 | 375 | ||
376 | static const char *dpll_iva_ck_parents[] = { | ||
377 | "sys_clkin_ck", "iva_hsd_byp_clk_mux_ck" | ||
378 | }; | ||
379 | |||
376 | static struct clk dpll_iva_ck; | 380 | static struct clk dpll_iva_ck; |
377 | 381 | ||
378 | static const struct clk_ops dpll_ck_ops = { | 382 | static const struct clk_ops dpll_ck_ops = { |
@@ -392,7 +396,7 @@ static struct clk_hw_omap dpll_iva_ck_hw = { | |||
392 | .ops = &clkhwops_omap3_dpll, | 396 | .ops = &clkhwops_omap3_dpll, |
393 | }; | 397 | }; |
394 | 398 | ||
395 | DEFINE_STRUCT_CLK(dpll_iva_ck, dpll_core_ck_parents, dpll_ck_ops); | 399 | DEFINE_STRUCT_CLK(dpll_iva_ck, dpll_iva_ck_parents, dpll_ck_ops); |
396 | 400 | ||
397 | static const char *dpll_iva_x2_ck_parents[] = { | 401 | static const char *dpll_iva_x2_ck_parents[] = { |
398 | "dpll_iva_ck", | 402 | "dpll_iva_ck", |
@@ -435,6 +439,10 @@ static struct dpll_data dpll_mpu_dd = { | |||
435 | .min_divider = 1, | 439 | .min_divider = 1, |
436 | }; | 440 | }; |
437 | 441 | ||
442 | static const char *dpll_mpu_ck_parents[] = { | ||
443 | "sys_clkin_ck", "div_mpu_hs_clk" | ||
444 | }; | ||
445 | |||
438 | static struct clk dpll_mpu_ck; | 446 | static struct clk dpll_mpu_ck; |
439 | 447 | ||
440 | static struct clk_hw_omap dpll_mpu_ck_hw = { | 448 | static struct clk_hw_omap dpll_mpu_ck_hw = { |
@@ -445,7 +453,7 @@ static struct clk_hw_omap dpll_mpu_ck_hw = { | |||
445 | .ops = &clkhwops_omap3_dpll, | 453 | .ops = &clkhwops_omap3_dpll, |
446 | }; | 454 | }; |
447 | 455 | ||
448 | DEFINE_STRUCT_CLK(dpll_mpu_ck, dpll_core_ck_parents, dpll_ck_ops); | 456 | DEFINE_STRUCT_CLK(dpll_mpu_ck, dpll_mpu_ck_parents, dpll_ck_ops); |
449 | 457 | ||
450 | DEFINE_CLK_FIXED_FACTOR(mpu_periphclk, "dpll_mpu_ck", &dpll_mpu_ck, 0x0, 1, 2); | 458 | DEFINE_CLK_FIXED_FACTOR(mpu_periphclk, "dpll_mpu_ck", &dpll_mpu_ck, 0x0, 1, 2); |
451 | 459 | ||
@@ -483,6 +491,9 @@ static struct dpll_data dpll_per_dd = { | |||
483 | .min_divider = 1, | 491 | .min_divider = 1, |
484 | }; | 492 | }; |
485 | 493 | ||
494 | static const char *dpll_per_ck_parents[] = { | ||
495 | "sys_clkin_ck", "per_hsd_byp_clk_mux_ck" | ||
496 | }; | ||
486 | 497 | ||
487 | static struct clk dpll_per_ck; | 498 | static struct clk dpll_per_ck; |
488 | 499 | ||
@@ -494,7 +505,7 @@ static struct clk_hw_omap dpll_per_ck_hw = { | |||
494 | .ops = &clkhwops_omap3_dpll, | 505 | .ops = &clkhwops_omap3_dpll, |
495 | }; | 506 | }; |
496 | 507 | ||
497 | DEFINE_STRUCT_CLK(dpll_per_ck, dpll_core_ck_parents, dpll_ck_ops); | 508 | DEFINE_STRUCT_CLK(dpll_per_ck, dpll_per_ck_parents, dpll_ck_ops); |
498 | 509 | ||
499 | DEFINE_CLK_DIVIDER(dpll_per_m2_ck, "dpll_per_ck", &dpll_per_ck, 0x0, | 510 | DEFINE_CLK_DIVIDER(dpll_per_m2_ck, "dpll_per_ck", &dpll_per_ck, 0x0, |
500 | OMAP4430_CM_DIV_M2_DPLL_PER, OMAP4430_DPLL_CLKOUT_DIV_SHIFT, | 511 | OMAP4430_CM_DIV_M2_DPLL_PER, OMAP4430_DPLL_CLKOUT_DIV_SHIFT, |
@@ -578,6 +589,10 @@ static struct dpll_data dpll_usb_dd = { | |||
578 | .min_divider = 1, | 589 | .min_divider = 1, |
579 | }; | 590 | }; |
580 | 591 | ||
592 | static const char *dpll_usb_ck_parents[] = { | ||
593 | "sys_clkin_ck", "usb_hs_clk_div_ck" | ||
594 | }; | ||
595 | |||
581 | static struct clk dpll_usb_ck; | 596 | static struct clk dpll_usb_ck; |
582 | 597 | ||
583 | static struct clk_hw_omap dpll_usb_ck_hw = { | 598 | static struct clk_hw_omap dpll_usb_ck_hw = { |
@@ -588,7 +603,7 @@ static struct clk_hw_omap dpll_usb_ck_hw = { | |||
588 | .ops = &clkhwops_omap3_dpll, | 603 | .ops = &clkhwops_omap3_dpll, |
589 | }; | 604 | }; |
590 | 605 | ||
591 | DEFINE_STRUCT_CLK(dpll_usb_ck, dpll_core_ck_parents, dpll_ck_ops); | 606 | DEFINE_STRUCT_CLK(dpll_usb_ck, dpll_usb_ck_parents, dpll_ck_ops); |
592 | 607 | ||
593 | static const char *dpll_usb_clkdcoldo_ck_parents[] = { | 608 | static const char *dpll_usb_clkdcoldo_ck_parents[] = { |
594 | "dpll_usb_ck", | 609 | "dpll_usb_ck", |
@@ -715,9 +730,13 @@ DEFINE_CLK_DIVIDER(syc_clk_div_ck, "sys_clkin_ck", &sys_clkin_ck, 0x0, | |||
715 | OMAP4430_CM_ABE_DSS_SYS_CLKSEL, OMAP4430_CLKSEL_0_0_SHIFT, | 730 | OMAP4430_CM_ABE_DSS_SYS_CLKSEL, OMAP4430_CLKSEL_0_0_SHIFT, |
716 | OMAP4430_CLKSEL_0_0_WIDTH, 0x0, NULL); | 731 | OMAP4430_CLKSEL_0_0_WIDTH, 0x0, NULL); |
717 | 732 | ||
733 | static const char *dbgclk_mux_ck_parents[] = { | ||
734 | "sys_clkin_ck" | ||
735 | }; | ||
736 | |||
718 | static struct clk dbgclk_mux_ck; | 737 | static struct clk dbgclk_mux_ck; |
719 | DEFINE_STRUCT_CLK_HW_OMAP(dbgclk_mux_ck, NULL); | 738 | DEFINE_STRUCT_CLK_HW_OMAP(dbgclk_mux_ck, NULL); |
720 | DEFINE_STRUCT_CLK(dbgclk_mux_ck, dpll_core_ck_parents, | 739 | DEFINE_STRUCT_CLK(dbgclk_mux_ck, dbgclk_mux_ck_parents, |
721 | dpll_usb_clkdcoldo_ck_ops); | 740 | dpll_usb_clkdcoldo_ck_ops); |
722 | 741 | ||
723 | /* Leaf clocks controlled by modules */ | 742 | /* Leaf clocks controlled by modules */ |