clk: qcom: clock-generic: Fix handoff for mux_div clock
The current implementation would check for the parent rate and decide the handoff state of the clock, which is not true for mux clocks. With this logic the function returns 'enabled' even when the clock downstream of this clock is disabled. The handoff code will unnecessarily enable the current parent of this clock. If this function always returns 'disabled' and a clock downstream is on, the clock handoff code will bump up the ref count for this clock and its current parent as necessary. The clocks without an actual HW gate can always return handoff disabled. Change-Id: I1f06842e2761b336b49a9390a556064de44f2e36 Signed-off-by: Taniya Das <tdas@codeaurora.org>
This commit is contained in:
parent
20d189ae63
commit
c9e523c794
|
@ -880,8 +880,6 @@ static enum handoff mux_div_clk_handoff(struct clk *c)
|
|||
unsigned int numer;
|
||||
|
||||
parent_rate = clk_get_rate(c->parent);
|
||||
if (!parent_rate)
|
||||
return HANDOFF_DISABLED_CLK;
|
||||
/*
|
||||
* div values are doubled for half dividers.
|
||||
* Adjust for that by picking a numer of 2.
|
||||
|
@ -895,10 +893,20 @@ static enum handoff mux_div_clk_handoff(struct clk *c)
|
|||
return HANDOFF_DISABLED_CLK;
|
||||
}
|
||||
|
||||
if (!md->ops->is_enabled)
|
||||
return HANDOFF_DISABLED_CLK;
|
||||
if (md->ops->is_enabled(md))
|
||||
return HANDOFF_ENABLED_CLK;
|
||||
if (md->en_mask && md->ops && md->ops->is_enabled)
|
||||
return md->ops->is_enabled(md)
|
||||
? HANDOFF_ENABLED_CLK
|
||||
: HANDOFF_DISABLED_CLK;
|
||||
|
||||
/*
|
||||
* If this function returns 'enabled' even when the clock downstream
|
||||
* of this clock is disabled, then handoff code will unnecessarily
|
||||
* enable the current parent of this clock. If this function always
|
||||
* returns 'disabled' and a clock downstream is on, the clock handoff
|
||||
* code will bump up the ref count for this clock and its current
|
||||
* parent as necessary. So, clocks without an actual HW gate can
|
||||
* always return disabled.
|
||||
*/
|
||||
return HANDOFF_DISABLED_CLK;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue