Skip to content

Commit 83ccc46

Browse files
Tero KristoMichael Turquette
authored andcommitted
ARM: OMAP3: clock: fix boot breakage in legacy mode
The new usage of determine_rate and set_rate_and_parent calls for OMAP DPLLs assumes the DPLLs must have two parents defined, even if it is the same clock. Legacy clock data did not fullfill this requirement and caused a boot crash. Fixed by adding the missing parent information to the DPLL clocks. Signed-off-by: Tero Kristo <t-kristo@ti.com> Fixes: 2e1a7b0 ("ARM: OMAP3+: DPLL: use determine_rate() and...") Cc: Paul Walmsley <paul@pwsan.com> Acked-by: Tony Lindgren <tony@atomide.com> Tested-by: Kevin Hilman <khilman@linaro.org> Reported-by: Kevin Hilman <khilman@linaro.org> Signed-off-by: Michael Turquette <mturquette@linaro.org>
1 parent 6f8e853 commit 83ccc46

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

arch/arm/mach-omap2/cclock3xxx_data.c

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ static struct clk dpll3_ck;
111111

112112
static const char *dpll3_ck_parent_names[] = {
113113
"sys_ck",
114+
"sys_ck",
114115
};
115116

116117
static const struct clk_ops dpll3_ck_ops = {
@@ -733,6 +734,10 @@ static const char *corex2_fck_parent_names[] = {
733734
DEFINE_STRUCT_CLK_HW_OMAP(corex2_fck, NULL);
734735
DEFINE_STRUCT_CLK(corex2_fck, corex2_fck_parent_names, core_ck_ops);
735736

737+
static const char *cpefuse_fck_parent_names[] = {
738+
"sys_ck",
739+
};
740+
736741
static struct clk cpefuse_fck;
737742

738743
static struct clk_hw_omap cpefuse_fck_hw = {
@@ -744,7 +749,7 @@ static struct clk_hw_omap cpefuse_fck_hw = {
744749
.clkdm_name = "core_l4_clkdm",
745750
};
746751

747-
DEFINE_STRUCT_CLK(cpefuse_fck, dpll3_ck_parent_names, aes2_ick_ops);
752+
DEFINE_STRUCT_CLK(cpefuse_fck, cpefuse_fck_parent_names, aes2_ick_ops);
748753

749754
static struct clk csi2_96m_fck;
750755

@@ -775,7 +780,7 @@ static struct clk_hw_omap d2d_26m_fck_hw = {
775780
.clkdm_name = "d2d_clkdm",
776781
};
777782

778-
DEFINE_STRUCT_CLK(d2d_26m_fck, dpll3_ck_parent_names, aes2_ick_ops);
783+
DEFINE_STRUCT_CLK(d2d_26m_fck, cpefuse_fck_parent_names, aes2_ick_ops);
779784

780785
static struct clk des1_ick;
781786

@@ -1046,7 +1051,7 @@ static struct clk_hw_omap dss2_alwon_fck_hw = {
10461051
.clkdm_name = "dss_clkdm",
10471052
};
10481053

1049-
DEFINE_STRUCT_CLK(dss2_alwon_fck, dpll3_ck_parent_names, aes2_ick_ops);
1054+
DEFINE_STRUCT_CLK(dss2_alwon_fck, cpefuse_fck_parent_names, aes2_ick_ops);
10501055

10511056
static struct clk dss_96m_fck;
10521057

@@ -1368,7 +1373,7 @@ DEFINE_STRUCT_CLK(gpio1_dbck, gpio1_dbck_parent_names, aes2_ick_ops);
13681373
static struct clk wkup_l4_ick;
13691374

13701375
DEFINE_STRUCT_CLK_HW_OMAP(wkup_l4_ick, "wkup_clkdm");
1371-
DEFINE_STRUCT_CLK(wkup_l4_ick, dpll3_ck_parent_names, core_l4_ick_ops);
1376+
DEFINE_STRUCT_CLK(wkup_l4_ick, cpefuse_fck_parent_names, core_l4_ick_ops);
13721377

13731378
static struct clk gpio1_ick;
13741379

@@ -1862,7 +1867,7 @@ static struct clk_hw_omap hecc_ck_hw = {
18621867
.clkdm_name = "core_l3_clkdm",
18631868
};
18641869

1865-
DEFINE_STRUCT_CLK(hecc_ck, dpll3_ck_parent_names, aes2_ick_ops);
1870+
DEFINE_STRUCT_CLK(hecc_ck, cpefuse_fck_parent_names, aes2_ick_ops);
18661871

18671872
static struct clk hsotgusb_fck_am35xx;
18681873

@@ -1875,7 +1880,7 @@ static struct clk_hw_omap hsotgusb_fck_am35xx_hw = {
18751880
.clkdm_name = "core_l3_clkdm",
18761881
};
18771882

1878-
DEFINE_STRUCT_CLK(hsotgusb_fck_am35xx, dpll3_ck_parent_names, aes2_ick_ops);
1883+
DEFINE_STRUCT_CLK(hsotgusb_fck_am35xx, cpefuse_fck_parent_names, aes2_ick_ops);
18791884

18801885
static struct clk hsotgusb_ick_3430es1;
18811886

@@ -2411,7 +2416,7 @@ static struct clk_hw_omap modem_fck_hw = {
24112416
.clkdm_name = "d2d_clkdm",
24122417
};
24132418

2414-
DEFINE_STRUCT_CLK(modem_fck, dpll3_ck_parent_names, aes2_ick_ops);
2419+
DEFINE_STRUCT_CLK(modem_fck, cpefuse_fck_parent_names, aes2_ick_ops);
24152420

24162421
static struct clk mspro_fck;
24172422

@@ -2710,7 +2715,7 @@ static struct clk_hw_omap sr1_fck_hw = {
27102715
.clkdm_name = "wkup_clkdm",
27112716
};
27122717

2713-
DEFINE_STRUCT_CLK(sr1_fck, dpll3_ck_parent_names, aes2_ick_ops);
2718+
DEFINE_STRUCT_CLK(sr1_fck, cpefuse_fck_parent_names, aes2_ick_ops);
27142719

27152720
static struct clk sr2_fck;
27162721

@@ -2724,7 +2729,7 @@ static struct clk_hw_omap sr2_fck_hw = {
27242729
.clkdm_name = "wkup_clkdm",
27252730
};
27262731

2727-
DEFINE_STRUCT_CLK(sr2_fck, dpll3_ck_parent_names, aes2_ick_ops);
2732+
DEFINE_STRUCT_CLK(sr2_fck, cpefuse_fck_parent_names, aes2_ick_ops);
27282733

27292734
static struct clk sr_l4_ick;
27302735

0 commit comments

Comments
 (0)