Loading drivers/clk/qcom/clk-rcg2.c +12 −2 Original line number Diff line number Diff line Loading @@ -506,7 +506,7 @@ static bool clk_rcg2_current_config(struct clk_rcg2 *rcg, static int __clk_rcg2_configure(struct clk_rcg2 *rcg, const struct freq_tbl *f) { u32 cfg, mask; u32 cfg, mask, d_val, not2d_val, n_minus_m; struct clk_hw *hw = &rcg->clkr.hw; int ret, index = qcom_find_src_index(hw, rcg->parent_map, f->src); Loading @@ -525,8 +525,17 @@ static int __clk_rcg2_configure(struct clk_rcg2 *rcg, const struct freq_tbl *f) if (ret) return ret; /* Calculate 2d value */ d_val = f->n; n_minus_m = f->n - f->m; n_minus_m *= 2; d_val = clamp_t(u32, d_val, f->m, n_minus_m); not2d_val = ~d_val & mask; ret = regmap_update_bits(rcg->clkr.regmap, rcg->cmd_rcgr + D_REG, mask, ~f->n); rcg->cmd_rcgr + D_REG, mask, not2d_val); if (ret) return ret; } Loading Loading @@ -1102,6 +1111,7 @@ static const struct frac_entry frac_table_pixel[] = { { 2, 9 }, { 4, 9 }, { 1, 1 }, { 2, 3 }, { } }; Loading Loading
drivers/clk/qcom/clk-rcg2.c +12 −2 Original line number Diff line number Diff line Loading @@ -506,7 +506,7 @@ static bool clk_rcg2_current_config(struct clk_rcg2 *rcg, static int __clk_rcg2_configure(struct clk_rcg2 *rcg, const struct freq_tbl *f) { u32 cfg, mask; u32 cfg, mask, d_val, not2d_val, n_minus_m; struct clk_hw *hw = &rcg->clkr.hw; int ret, index = qcom_find_src_index(hw, rcg->parent_map, f->src); Loading @@ -525,8 +525,17 @@ static int __clk_rcg2_configure(struct clk_rcg2 *rcg, const struct freq_tbl *f) if (ret) return ret; /* Calculate 2d value */ d_val = f->n; n_minus_m = f->n - f->m; n_minus_m *= 2; d_val = clamp_t(u32, d_val, f->m, n_minus_m); not2d_val = ~d_val & mask; ret = regmap_update_bits(rcg->clkr.regmap, rcg->cmd_rcgr + D_REG, mask, ~f->n); rcg->cmd_rcgr + D_REG, mask, not2d_val); if (ret) return ret; } Loading Loading @@ -1102,6 +1111,7 @@ static const struct frac_entry frac_table_pixel[] = { { 2, 9 }, { 4, 9 }, { 1, 1 }, { 2, 3 }, { } }; Loading