diff options
author | Tero Kristo <t-kristo@ti.com> | 2014-10-03 09:57:14 -0400 |
---|---|---|
committer | Paul Walmsley <paul@pwsan.com> | 2014-11-13 11:26:45 -0500 |
commit | 2e1a7b014f9c3d61fbf12b429f0479242264dbec (patch) | |
tree | cecb7c3739740f991c03eda4f0fbfd075458cd82 /drivers/clk | |
parent | e3ab6013ab06d3a861ed00c1f8d32aa4e6b66ddd (diff) |
ARM: OMAP3+: DPLL: use determine_rate() and set_rate_and_parent()
Currently, DPLLs are hiding the gory details of switching parent
within set_rate, which confuses the common clock code and is wrong.
Fixed by applying the new determine_rate() and set_rate_and_parent()
functionality to any clock-ops previously using the broken approach.
This patch also removes the broken legacy code.
Signed-off-by: Tero Kristo <t-kristo@ti.com>
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Diffstat (limited to 'drivers/clk')
-rw-r--r-- | drivers/clk/ti/dpll.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/clk/ti/dpll.c b/drivers/clk/ti/dpll.c index 79791e1bf282..85ac0dd501de 100644 --- a/drivers/clk/ti/dpll.c +++ b/drivers/clk/ti/dpll.c | |||
@@ -33,6 +33,9 @@ static const struct clk_ops dpll_m4xen_ck_ops = { | |||
33 | .recalc_rate = &omap4_dpll_regm4xen_recalc, | 33 | .recalc_rate = &omap4_dpll_regm4xen_recalc, |
34 | .round_rate = &omap4_dpll_regm4xen_round_rate, | 34 | .round_rate = &omap4_dpll_regm4xen_round_rate, |
35 | .set_rate = &omap3_noncore_dpll_set_rate, | 35 | .set_rate = &omap3_noncore_dpll_set_rate, |
36 | .set_parent = &omap3_noncore_dpll_set_parent, | ||
37 | .set_rate_and_parent = &omap3_noncore_dpll_set_rate_and_parent, | ||
38 | .determine_rate = &omap4_dpll_regm4xen_determine_rate, | ||
36 | .get_parent = &omap2_init_dpll_parent, | 39 | .get_parent = &omap2_init_dpll_parent, |
37 | }; | 40 | }; |
38 | #else | 41 | #else |
@@ -53,6 +56,9 @@ static const struct clk_ops dpll_ck_ops = { | |||
53 | .recalc_rate = &omap3_dpll_recalc, | 56 | .recalc_rate = &omap3_dpll_recalc, |
54 | .round_rate = &omap2_dpll_round_rate, | 57 | .round_rate = &omap2_dpll_round_rate, |
55 | .set_rate = &omap3_noncore_dpll_set_rate, | 58 | .set_rate = &omap3_noncore_dpll_set_rate, |
59 | .set_parent = &omap3_noncore_dpll_set_parent, | ||
60 | .set_rate_and_parent = &omap3_noncore_dpll_set_rate_and_parent, | ||
61 | .determine_rate = &omap3_noncore_dpll_determine_rate, | ||
56 | .get_parent = &omap2_init_dpll_parent, | 62 | .get_parent = &omap2_init_dpll_parent, |
57 | }; | 63 | }; |
58 | 64 | ||
@@ -61,6 +67,9 @@ static const struct clk_ops dpll_no_gate_ck_ops = { | |||
61 | .get_parent = &omap2_init_dpll_parent, | 67 | .get_parent = &omap2_init_dpll_parent, |
62 | .round_rate = &omap2_dpll_round_rate, | 68 | .round_rate = &omap2_dpll_round_rate, |
63 | .set_rate = &omap3_noncore_dpll_set_rate, | 69 | .set_rate = &omap3_noncore_dpll_set_rate, |
70 | .set_parent = &omap3_noncore_dpll_set_parent, | ||
71 | .set_rate_and_parent = &omap3_noncore_dpll_set_rate_and_parent, | ||
72 | .determine_rate = &omap3_noncore_dpll_determine_rate, | ||
64 | }; | 73 | }; |
65 | #else | 74 | #else |
66 | static const struct clk_ops dpll_core_ck_ops = {}; | 75 | static const struct clk_ops dpll_core_ck_ops = {}; |
@@ -97,6 +106,9 @@ static const struct clk_ops omap3_dpll_ck_ops = { | |||
97 | .get_parent = &omap2_init_dpll_parent, | 106 | .get_parent = &omap2_init_dpll_parent, |
98 | .recalc_rate = &omap3_dpll_recalc, | 107 | .recalc_rate = &omap3_dpll_recalc, |
99 | .set_rate = &omap3_noncore_dpll_set_rate, | 108 | .set_rate = &omap3_noncore_dpll_set_rate, |
109 | .set_parent = &omap3_noncore_dpll_set_parent, | ||
110 | .set_rate_and_parent = &omap3_noncore_dpll_set_rate_and_parent, | ||
111 | .determine_rate = &omap3_noncore_dpll_determine_rate, | ||
100 | .round_rate = &omap2_dpll_round_rate, | 112 | .round_rate = &omap2_dpll_round_rate, |
101 | }; | 113 | }; |
102 | 114 | ||
@@ -106,6 +118,9 @@ static const struct clk_ops omap3_dpll_per_ck_ops = { | |||
106 | .get_parent = &omap2_init_dpll_parent, | 118 | .get_parent = &omap2_init_dpll_parent, |
107 | .recalc_rate = &omap3_dpll_recalc, | 119 | .recalc_rate = &omap3_dpll_recalc, |
108 | .set_rate = &omap3_dpll4_set_rate, | 120 | .set_rate = &omap3_dpll4_set_rate, |
121 | .set_parent = &omap3_noncore_dpll_set_parent, | ||
122 | .set_rate_and_parent = &omap3_dpll4_set_rate_and_parent, | ||
123 | .determine_rate = &omap3_noncore_dpll_determine_rate, | ||
109 | .round_rate = &omap2_dpll_round_rate, | 124 | .round_rate = &omap2_dpll_round_rate, |
110 | }; | 125 | }; |
111 | #endif | 126 | #endif |