Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6f8e853d authored by Tero Kristo's avatar Tero Kristo Committed by Michael Turquette
Browse files

ARM: OMAP2+: clock: fix DPLL code to use new determine rate APIs



While the change for determine_rate clock operation was merged,
the OMAP counterpart using these calls was overlooked for some reason,
and caused boot failures on at least OMAP4 platforms. Fixed by updating
the DPLL API calls to use the new parameters.

Signed-off-by: default avatarTero Kristo <t-kristo@ti.com>
Fixes: 646cafc6 ("clk: Change clk_ops->determine_rate")
Cc: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Acked-by: default avatarTony Lindgren <tony@atomide.com>
Acked-by: default avatarPaul Walmsley <paul@pwsan.com>
Tested-by: default avatarKevin Hilman <khilman@linaro.org>
Reported-by: default avatarKevin Hilman <khilman@linaro.org>
Signed-off-by: default avatarMichael Turquette <mturquette@linaro.org>
parent b1924c2e
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -474,7 +474,7 @@ void omap3_noncore_dpll_disable(struct clk_hw *hw)
 */
 */
long omap3_noncore_dpll_determine_rate(struct clk_hw *hw, unsigned long rate,
long omap3_noncore_dpll_determine_rate(struct clk_hw *hw, unsigned long rate,
				       unsigned long *best_parent_rate,
				       unsigned long *best_parent_rate,
				       struct clk **best_parent_clk)
				       struct clk_hw **best_parent_clk)
{
{
	struct clk_hw_omap *clk = to_clk_hw_omap(hw);
	struct clk_hw_omap *clk = to_clk_hw_omap(hw);
	struct dpll_data *dd;
	struct dpll_data *dd;
@@ -488,10 +488,10 @@ long omap3_noncore_dpll_determine_rate(struct clk_hw *hw, unsigned long rate,


	if (__clk_get_rate(dd->clk_bypass) == rate &&
	if (__clk_get_rate(dd->clk_bypass) == rate &&
	    (dd->modes & (1 << DPLL_LOW_POWER_BYPASS))) {
	    (dd->modes & (1 << DPLL_LOW_POWER_BYPASS))) {
		*best_parent_clk = dd->clk_bypass;
		*best_parent_clk = __clk_get_hw(dd->clk_bypass);
	} else {
	} else {
		rate = omap2_dpll_round_rate(hw, rate, best_parent_rate);
		rate = omap2_dpll_round_rate(hw, rate, best_parent_rate);
		*best_parent_clk = dd->clk_ref;
		*best_parent_clk = __clk_get_hw(dd->clk_ref);
	}
	}


	*best_parent_rate = rate;
	*best_parent_rate = rate;
+3 −3
Original line number Original line Diff line number Diff line
@@ -223,7 +223,7 @@ long omap4_dpll_regm4xen_round_rate(struct clk_hw *hw,
 */
 */
long omap4_dpll_regm4xen_determine_rate(struct clk_hw *hw, unsigned long rate,
long omap4_dpll_regm4xen_determine_rate(struct clk_hw *hw, unsigned long rate,
					unsigned long *best_parent_rate,
					unsigned long *best_parent_rate,
					struct clk **best_parent_clk)
					struct clk_hw **best_parent_clk)
{
{
	struct clk_hw_omap *clk = to_clk_hw_omap(hw);
	struct clk_hw_omap *clk = to_clk_hw_omap(hw);
	struct dpll_data *dd;
	struct dpll_data *dd;
@@ -237,11 +237,11 @@ long omap4_dpll_regm4xen_determine_rate(struct clk_hw *hw, unsigned long rate,


	if (__clk_get_rate(dd->clk_bypass) == rate &&
	if (__clk_get_rate(dd->clk_bypass) == rate &&
	    (dd->modes & (1 << DPLL_LOW_POWER_BYPASS))) {
	    (dd->modes & (1 << DPLL_LOW_POWER_BYPASS))) {
		*best_parent_clk = dd->clk_bypass;
		*best_parent_clk = __clk_get_hw(dd->clk_bypass);
	} else {
	} else {
		rate = omap4_dpll_regm4xen_round_rate(hw, rate,
		rate = omap4_dpll_regm4xen_round_rate(hw, rate,
						      best_parent_rate);
						      best_parent_rate);
		*best_parent_clk = dd->clk_ref;
		*best_parent_clk = __clk_get_hw(dd->clk_ref);
	}
	}


	*best_parent_rate = rate;
	*best_parent_rate = rate;
+2 −2
Original line number Original line Diff line number Diff line
@@ -264,7 +264,7 @@ int omap3_noncore_dpll_set_rate_and_parent(struct clk_hw *hw,
long omap3_noncore_dpll_determine_rate(struct clk_hw *hw,
long omap3_noncore_dpll_determine_rate(struct clk_hw *hw,
				       unsigned long rate,
				       unsigned long rate,
				       unsigned long *best_parent_rate,
				       unsigned long *best_parent_rate,
				       struct clk **best_parent_clk);
				       struct clk_hw **best_parent_clk);
unsigned long omap4_dpll_regm4xen_recalc(struct clk_hw *hw,
unsigned long omap4_dpll_regm4xen_recalc(struct clk_hw *hw,
					 unsigned long parent_rate);
					 unsigned long parent_rate);
long omap4_dpll_regm4xen_round_rate(struct clk_hw *hw,
long omap4_dpll_regm4xen_round_rate(struct clk_hw *hw,
@@ -273,7 +273,7 @@ long omap4_dpll_regm4xen_round_rate(struct clk_hw *hw,
long omap4_dpll_regm4xen_determine_rate(struct clk_hw *hw,
long omap4_dpll_regm4xen_determine_rate(struct clk_hw *hw,
					unsigned long rate,
					unsigned long rate,
					unsigned long *best_parent_rate,
					unsigned long *best_parent_rate,
					struct clk **best_parent_clk);
					struct clk_hw **best_parent_clk);
u8 omap2_init_dpll_parent(struct clk_hw *hw);
u8 omap2_init_dpll_parent(struct clk_hw *hw);
unsigned long omap3_dpll_recalc(struct clk_hw *hw, unsigned long parent_rate);
unsigned long omap3_dpll_recalc(struct clk_hw *hw, unsigned long parent_rate);
long omap2_dpll_round_rate(struct clk_hw *hw, unsigned long target_rate,
long omap2_dpll_round_rate(struct clk_hw *hw, unsigned long target_rate,