clk: fix some determine_rate implementations
Some determine_rate implementations are not returning an error when they failed to adapt the rate according to the rate request. Fix them so that they return an error instead of silently returning 0. Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com> CC: Jonathan Corbet <corbet@lwn.net> CC: Tony Lindgren <tony@atomide.com> CC: Ralf Baechle <ralf@linux-mips.org> CC: "Emilio López" <emilio@elopez.com.ar> CC: Maxime Ripard <maxime.ripard@free-electrons.com> Cc: Tero Kristo <t-kristo@ti.com> CC: Peter De Schrijver <pdeschrijver@nvidia.com> CC: Prashant Gaikwad <pgaikwad@nvidia.com> CC: Stephen Warren <swarren@wwwdotorg.org> CC: Thierry Reding <thierry.reding@gmail.com> CC: Alexandre Courbot <gnurou@gmail.com> CC: linux-doc@vger.kernel.org CC: linux-kernel@vger.kernel.org CC: linux-arm-kernel@lists.infradead.org CC: linux-omap@vger.kernel.org CC: linux-mips@linux-mips.org CC: linux-tegra@vger.kernel.org Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
This commit is contained in:
parent
0817b62cc0
commit
57d866e606
@ -469,9 +469,13 @@ static int alchemy_clk_fgcs_detr(struct clk_hw *hw,
|
||||
}
|
||||
}
|
||||
|
||||
if (br < 0)
|
||||
return br;
|
||||
|
||||
req->best_parent_rate = bpr;
|
||||
req->best_parent_hw = __clk_get_hw(bpc);
|
||||
req->rate = br;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -125,8 +125,7 @@ static int clk_composite_determine_rate(struct clk_hw *hw,
|
||||
return mux_ops->determine_rate(mux_hw, req);
|
||||
} else {
|
||||
pr_err("clk: clk_composite_determine_rate function called, but no mux or rate callback set!\n");
|
||||
req->rate = 0;
|
||||
return 0;
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -487,6 +487,9 @@ clk_mux_determine_rate_flags(struct clk_hw *hw, struct clk_rate_request *req,
|
||||
}
|
||||
}
|
||||
|
||||
if (!best_parent)
|
||||
return -EINVAL;
|
||||
|
||||
out:
|
||||
if (best_parent)
|
||||
req->best_parent_hw = best_parent->hw;
|
||||
|
@ -316,7 +316,7 @@ static int mmc_clk_determine_rate(struct clk_hw *hw,
|
||||
req->rate = 180000000;
|
||||
req->best_parent_rate = 1440000000;
|
||||
}
|
||||
return 0;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static u32 mmc_clk_delay(u32 val, u32 para, u32 off, u32 len)
|
||||
|
@ -218,7 +218,7 @@ static int mmp_clk_mix_determine_rate(struct clk_hw *hw,
|
||||
parent = NULL;
|
||||
mix_rate_best = 0;
|
||||
parent_rate_best = 0;
|
||||
gap_best = req->rate;
|
||||
gap_best = ULONG_MAX;
|
||||
parent_best = NULL;
|
||||
|
||||
if (mix->table) {
|
||||
@ -262,6 +262,9 @@ static int mmp_clk_mix_determine_rate(struct clk_hw *hw,
|
||||
}
|
||||
|
||||
found:
|
||||
if (!parent_best)
|
||||
return -EINVAL;
|
||||
|
||||
req->best_parent_rate = parent_rate_best;
|
||||
req->best_parent_hw = __clk_get_hw(parent_best);
|
||||
req->rate = mix_rate_best;
|
||||
|
@ -107,8 +107,10 @@ static int clk_factors_determine_rate(struct clk_hw *hw,
|
||||
}
|
||||
}
|
||||
|
||||
if (best_parent)
|
||||
req->best_parent_hw = __clk_get_hw(best_parent);
|
||||
if (!best_parent)
|
||||
return -EINVAL;
|
||||
|
||||
req->best_parent_hw = __clk_get_hw(best_parent);
|
||||
req->best_parent_rate = best;
|
||||
req->rate = best_child_rate;
|
||||
|
||||
|
@ -105,6 +105,9 @@ static int ar100_determine_rate(struct clk_hw *hw,
|
||||
}
|
||||
}
|
||||
|
||||
if (best_rate < 0)
|
||||
return best_rate;
|
||||
|
||||
req->rate = best_rate;
|
||||
|
||||
return 0;
|
||||
|
@ -146,8 +146,10 @@ static int sun6i_ahb1_clk_determine_rate(struct clk_hw *hw,
|
||||
}
|
||||
}
|
||||
|
||||
if (best_parent)
|
||||
req->best_parent_hw = __clk_get_hw(best_parent);
|
||||
if (!best_parent)
|
||||
return -EINVAL;
|
||||
|
||||
req->best_parent_hw = __clk_get_hw(best_parent);
|
||||
req->best_parent_rate = best;
|
||||
req->rate = best_child_rate;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user