Commit b8675e2c authored by Paul Walmsley's avatar Paul Walmsley

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: default avatarPaul Walmsley <paul@pwsan.com>
Cc: Mike Turquette <mturquette@linaro.org>
parent 628a37d4
...@@ -243,7 +243,7 @@ static struct dpll_data dpll_core_dd = { ...@@ -243,7 +243,7 @@ static struct dpll_data dpll_core_dd = {
static const char *dpll_core_ck_parents[] = { static const char *dpll_core_ck_parents[] = {
"sys_clkin_ck", "sys_clkin_ck", "core_hsd_byp_clk_mux_ck"
}; };
static struct clk dpll_core_ck; static struct clk dpll_core_ck;
...@@ -373,6 +373,10 @@ static struct dpll_data dpll_iva_dd = { ...@@ -373,6 +373,10 @@ static struct dpll_data dpll_iva_dd = {
.min_divider = 1, .min_divider = 1,
}; };
static const char *dpll_iva_ck_parents[] = {
"sys_clkin_ck", "iva_hsd_byp_clk_mux_ck"
};
static struct clk dpll_iva_ck; static struct clk dpll_iva_ck;
static const struct clk_ops dpll_ck_ops = { static const struct clk_ops dpll_ck_ops = {
...@@ -392,7 +396,7 @@ static struct clk_hw_omap dpll_iva_ck_hw = { ...@@ -392,7 +396,7 @@ static struct clk_hw_omap dpll_iva_ck_hw = {
.ops = &clkhwops_omap3_dpll, .ops = &clkhwops_omap3_dpll,
}; };
DEFINE_STRUCT_CLK(dpll_iva_ck, dpll_core_ck_parents, dpll_ck_ops); DEFINE_STRUCT_CLK(dpll_iva_ck, dpll_iva_ck_parents, dpll_ck_ops);
static const char *dpll_iva_x2_ck_parents[] = { static const char *dpll_iva_x2_ck_parents[] = {
"dpll_iva_ck", "dpll_iva_ck",
...@@ -435,6 +439,10 @@ static struct dpll_data dpll_mpu_dd = { ...@@ -435,6 +439,10 @@ static struct dpll_data dpll_mpu_dd = {
.min_divider = 1, .min_divider = 1,
}; };
static const char *dpll_mpu_ck_parents[] = {
"sys_clkin_ck", "div_mpu_hs_clk"
};
static struct clk dpll_mpu_ck; static struct clk dpll_mpu_ck;
static struct clk_hw_omap dpll_mpu_ck_hw = { static struct clk_hw_omap dpll_mpu_ck_hw = {
...@@ -445,7 +453,7 @@ static struct clk_hw_omap dpll_mpu_ck_hw = { ...@@ -445,7 +453,7 @@ static struct clk_hw_omap dpll_mpu_ck_hw = {
.ops = &clkhwops_omap3_dpll, .ops = &clkhwops_omap3_dpll,
}; };
DEFINE_STRUCT_CLK(dpll_mpu_ck, dpll_core_ck_parents, dpll_ck_ops); DEFINE_STRUCT_CLK(dpll_mpu_ck, dpll_mpu_ck_parents, dpll_ck_ops);
DEFINE_CLK_FIXED_FACTOR(mpu_periphclk, "dpll_mpu_ck", &dpll_mpu_ck, 0x0, 1, 2); DEFINE_CLK_FIXED_FACTOR(mpu_periphclk, "dpll_mpu_ck", &dpll_mpu_ck, 0x0, 1, 2);
...@@ -483,6 +491,9 @@ static struct dpll_data dpll_per_dd = { ...@@ -483,6 +491,9 @@ static struct dpll_data dpll_per_dd = {
.min_divider = 1, .min_divider = 1,
}; };
static const char *dpll_per_ck_parents[] = {
"sys_clkin_ck", "per_hsd_byp_clk_mux_ck"
};
static struct clk dpll_per_ck; static struct clk dpll_per_ck;
...@@ -494,7 +505,7 @@ static struct clk_hw_omap dpll_per_ck_hw = { ...@@ -494,7 +505,7 @@ static struct clk_hw_omap dpll_per_ck_hw = {
.ops = &clkhwops_omap3_dpll, .ops = &clkhwops_omap3_dpll,
}; };
DEFINE_STRUCT_CLK(dpll_per_ck, dpll_core_ck_parents, dpll_ck_ops); DEFINE_STRUCT_CLK(dpll_per_ck, dpll_per_ck_parents, dpll_ck_ops);
DEFINE_CLK_DIVIDER(dpll_per_m2_ck, "dpll_per_ck", &dpll_per_ck, 0x0, DEFINE_CLK_DIVIDER(dpll_per_m2_ck, "dpll_per_ck", &dpll_per_ck, 0x0,
OMAP4430_CM_DIV_M2_DPLL_PER, OMAP4430_DPLL_CLKOUT_DIV_SHIFT, OMAP4430_CM_DIV_M2_DPLL_PER, OMAP4430_DPLL_CLKOUT_DIV_SHIFT,
...@@ -578,6 +589,10 @@ static struct dpll_data dpll_usb_dd = { ...@@ -578,6 +589,10 @@ static struct dpll_data dpll_usb_dd = {
.min_divider = 1, .min_divider = 1,
}; };
static const char *dpll_usb_ck_parents[] = {
"sys_clkin_ck", "usb_hs_clk_div_ck"
};
static struct clk dpll_usb_ck; static struct clk dpll_usb_ck;
static struct clk_hw_omap dpll_usb_ck_hw = { static struct clk_hw_omap dpll_usb_ck_hw = {
...@@ -588,7 +603,7 @@ static struct clk_hw_omap dpll_usb_ck_hw = { ...@@ -588,7 +603,7 @@ static struct clk_hw_omap dpll_usb_ck_hw = {
.ops = &clkhwops_omap3_dpll, .ops = &clkhwops_omap3_dpll,
}; };
DEFINE_STRUCT_CLK(dpll_usb_ck, dpll_core_ck_parents, dpll_ck_ops); DEFINE_STRUCT_CLK(dpll_usb_ck, dpll_usb_ck_parents, dpll_ck_ops);
static const char *dpll_usb_clkdcoldo_ck_parents[] = { static const char *dpll_usb_clkdcoldo_ck_parents[] = {
"dpll_usb_ck", "dpll_usb_ck",
...@@ -715,9 +730,13 @@ DEFINE_CLK_DIVIDER(syc_clk_div_ck, "sys_clkin_ck", &sys_clkin_ck, 0x0, ...@@ -715,9 +730,13 @@ DEFINE_CLK_DIVIDER(syc_clk_div_ck, "sys_clkin_ck", &sys_clkin_ck, 0x0,
OMAP4430_CM_ABE_DSS_SYS_CLKSEL, OMAP4430_CLKSEL_0_0_SHIFT, OMAP4430_CM_ABE_DSS_SYS_CLKSEL, OMAP4430_CLKSEL_0_0_SHIFT,
OMAP4430_CLKSEL_0_0_WIDTH, 0x0, NULL); OMAP4430_CLKSEL_0_0_WIDTH, 0x0, NULL);
static const char *dbgclk_mux_ck_parents[] = {
"sys_clkin_ck"
};
static struct clk dbgclk_mux_ck; static struct clk dbgclk_mux_ck;
DEFINE_STRUCT_CLK_HW_OMAP(dbgclk_mux_ck, NULL); DEFINE_STRUCT_CLK_HW_OMAP(dbgclk_mux_ck, NULL);
DEFINE_STRUCT_CLK(dbgclk_mux_ck, dpll_core_ck_parents, DEFINE_STRUCT_CLK(dbgclk_mux_ck, dbgclk_mux_ck_parents,
dpll_usb_clkdcoldo_ck_ops); dpll_usb_clkdcoldo_ck_ops);
/* Leaf clocks controlled by modules */ /* Leaf clocks controlled by modules */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment