diff options
author | Chen-Yu Tsai <wens@csie.org> | 2017-01-28 20:22:32 +0800 |
---|---|---|
committer | Maxime Ripard <maxime.ripard@free-electrons.com> | 2017-01-30 08:36:03 +0100 |
commit | 82aab516ec96ab9f9ad4b80a0bab9368b1cd5cdc (patch) | |
tree | 53badf37c67f472b3505f012681c764a2667e4a9 /drivers/clk/sunxi-ng/ccu_mux.c | |
parent | 216abdcc3ae7b1dbe145f1e78cf727b6832db9b4 (diff) |
clk: sunxi-ng: mux: Get closest parent rate possible with CLK_SET_RATE_PARENT
If the CLK_SET_RATE_PARENT flag is set, we want to try getting the
closest parent rate.
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Diffstat (limited to 'drivers/clk/sunxi-ng/ccu_mux.c')
-rw-r--r-- | drivers/clk/sunxi-ng/ccu_mux.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/clk/sunxi-ng/ccu_mux.c b/drivers/clk/sunxi-ng/ccu_mux.c index d0d69c7eb516..c6bb1f523232 100644 --- a/drivers/clk/sunxi-ng/ccu_mux.c +++ b/drivers/clk/sunxi-ng/ccu_mux.c @@ -93,7 +93,18 @@ int ccu_mux_helper_determine_rate(struct ccu_common *common, if (!parent) continue; - parent_rate = clk_hw_get_rate(parent); + if (clk_hw_get_flags(hw) & CLK_SET_RATE_PARENT) { + struct clk_rate_request parent_req = *req; + int ret = __clk_determine_rate(parent, &parent_req); + + if (ret) + continue; + + parent_rate = parent_req.rate; + } else { + parent_rate = clk_hw_get_rate(parent); + } + adj_parent_rate = parent_rate; ccu_mux_helper_adjust_parent_for_prediv(common, cm, i, &adj_parent_rate); |