lkml.org 
[lkml]   [2020]   [Jan]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH] clk: qcom: Don't overwrite 'cfg' in clk_rcg2_dfs_populate_freq()
From
Date

On 1/29/2020 1:03 AM, Stephen Boyd wrote:
> The DFS frequency table logic overwrites 'cfg' while detecting the
> parent clk and then later on in clk_rcg2_dfs_populate_freq() we use that
> same variable to figure out the mode of the clk, either MND or not. Add
> a new variable to hold the parent clk bit so that 'cfg' is left
> untouched for use later.
>
> This fixes problems in detecting the supported frequencies for any clks
> in DFS mode.
>
> Fixes: cc4f6944d0e3 ("clk: qcom: Add support for RCG to register for DFS")
> Reported-by: Rajendra Nayak <rnayak@codeaurora.org>
> Signed-off-by: Stephen Boyd <sboyd@kernel.org>
> ---

Tested-by: Rajendra Nayak <rnayak@codeaurora.org>

> drivers/clk/qcom/clk-rcg2.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/clk/qcom/clk-rcg2.c b/drivers/clk/qcom/clk-rcg2.c
> index da045b200def..973ecf4f6bc5 100644
> --- a/drivers/clk/qcom/clk-rcg2.c
> +++ b/drivers/clk/qcom/clk-rcg2.c
> @@ -953,7 +953,7 @@ static void clk_rcg2_dfs_populate_freq(struct clk_hw *hw, unsigned int l,
> struct clk_rcg2 *rcg = to_clk_rcg2(hw);
> struct clk_hw *p;
> unsigned long prate = 0;
> - u32 val, mask, cfg, mode;
> + u32 val, mask, cfg, mode, src;
> int i, num_parents;
>
> regmap_read(rcg->clkr.regmap, rcg->cmd_rcgr + SE_PERF_DFSR(l), &cfg);
> @@ -963,12 +963,12 @@ static void clk_rcg2_dfs_populate_freq(struct clk_hw *hw, unsigned int l,
> if (cfg & mask)
> f->pre_div = cfg & mask;
>
> - cfg &= CFG_SRC_SEL_MASK;
> - cfg >>= CFG_SRC_SEL_SHIFT;
> + src = cfg & CFG_SRC_SEL_MASK;
> + src >>= CFG_SRC_SEL_SHIFT;
>
> num_parents = clk_hw_get_num_parents(hw);
> for (i = 0; i < num_parents; i++) {
> - if (cfg == rcg->parent_map[i].cfg) {
> + if (src == rcg->parent_map[i].cfg) {
> f->src = rcg->parent_map[i].src;
> p = clk_hw_get_parent_by_index(&rcg->clkr.hw, i);
> prate = clk_hw_get_rate(p);
>

--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation

\
 
 \ /
  Last update: 2020-01-29 04:21    [W:0.157 / U:0.116 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site