aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/cclock44xx_data.c
diff options
context:
space:
mode:
authorPaul Walmsley <paul@pwsan.com>2012-12-15 03:36:04 -0500
committerPaul Walmsley <paul@pwsan.com>2012-12-15 03:41:24 -0500
commitb8675e2c04fd368f0a726b7e4583946f7b8e7125 (patch)
treef729cfd41af9c30089be40a30b48c5b4d0ce2d1a /arch/arm/mach-omap2/cclock44xx_data.c
parent628a37d40e27886f94946d91d71ac323b826809c (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.c31
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
245static const char *dpll_core_ck_parents[] = { 245static const char *dpll_core_ck_parents[] = {
246 "sys_clkin_ck", 246 "sys_clkin_ck", "core_hsd_byp_clk_mux_ck"
247}; 247};
248 248
249static struct clk dpll_core_ck; 249static 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
376static const char *dpll_iva_ck_parents[] = {
377 "sys_clkin_ck", "iva_hsd_byp_clk_mux_ck"
378};
379
376static struct clk dpll_iva_ck; 380static struct clk dpll_iva_ck;
377 381
378static const struct clk_ops dpll_ck_ops = { 382static 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
395DEFINE_STRUCT_CLK(dpll_iva_ck, dpll_core_ck_parents, dpll_ck_ops); 399DEFINE_STRUCT_CLK(dpll_iva_ck, dpll_iva_ck_parents, dpll_ck_ops);
396 400
397static const char *dpll_iva_x2_ck_parents[] = { 401static 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
442static const char *dpll_mpu_ck_parents[] = {
443 "sys_clkin_ck", "div_mpu_hs_clk"
444};
445
438static struct clk dpll_mpu_ck; 446static struct clk dpll_mpu_ck;
439 447
440static struct clk_hw_omap dpll_mpu_ck_hw = { 448static 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
448DEFINE_STRUCT_CLK(dpll_mpu_ck, dpll_core_ck_parents, dpll_ck_ops); 456DEFINE_STRUCT_CLK(dpll_mpu_ck, dpll_mpu_ck_parents, dpll_ck_ops);
449 457
450DEFINE_CLK_FIXED_FACTOR(mpu_periphclk, "dpll_mpu_ck", &dpll_mpu_ck, 0x0, 1, 2); 458DEFINE_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
494static const char *dpll_per_ck_parents[] = {
495 "sys_clkin_ck", "per_hsd_byp_clk_mux_ck"
496};
486 497
487static struct clk dpll_per_ck; 498static 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
497DEFINE_STRUCT_CLK(dpll_per_ck, dpll_core_ck_parents, dpll_ck_ops); 508DEFINE_STRUCT_CLK(dpll_per_ck, dpll_per_ck_parents, dpll_ck_ops);
498 509
499DEFINE_CLK_DIVIDER(dpll_per_m2_ck, "dpll_per_ck", &dpll_per_ck, 0x0, 510DEFINE_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
592static const char *dpll_usb_ck_parents[] = {
593 "sys_clkin_ck", "usb_hs_clk_div_ck"
594};
595
581static struct clk dpll_usb_ck; 596static struct clk dpll_usb_ck;
582 597
583static struct clk_hw_omap dpll_usb_ck_hw = { 598static 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
591DEFINE_STRUCT_CLK(dpll_usb_ck, dpll_core_ck_parents, dpll_ck_ops); 606DEFINE_STRUCT_CLK(dpll_usb_ck, dpll_usb_ck_parents, dpll_ck_ops);
592 607
593static const char *dpll_usb_clkdcoldo_ck_parents[] = { 608static 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
733static const char *dbgclk_mux_ck_parents[] = {
734 "sys_clkin_ck"
735};
736
718static struct clk dbgclk_mux_ck; 737static struct clk dbgclk_mux_ck;
719DEFINE_STRUCT_CLK_HW_OMAP(dbgclk_mux_ck, NULL); 738DEFINE_STRUCT_CLK_HW_OMAP(dbgclk_mux_ck, NULL);
720DEFINE_STRUCT_CLK(dbgclk_mux_ck, dpll_core_ck_parents, 739DEFINE_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 */