diff options
Diffstat (limited to 'drivers/clk/qcom/clk-regmap-divider.c')
| -rw-r--r-- | drivers/clk/qcom/clk-regmap-divider.c | 27 | 
1 files changed, 17 insertions, 10 deletions
diff --git a/drivers/clk/qcom/clk-regmap-divider.c b/drivers/clk/qcom/clk-regmap-divider.c index 63c9fca0d65d..4f5395f0ab6d 100644 --- a/drivers/clk/qcom/clk-regmap-divider.c +++ b/drivers/clk/qcom/clk-regmap-divider.c @@ -15,8 +15,8 @@ static inline struct clk_regmap_div *to_clk_regmap_div(struct clk_hw *hw)  	return container_of(to_clk_regmap(hw), struct clk_regmap_div, clkr);  } -static long div_round_ro_rate(struct clk_hw *hw, unsigned long rate, -			      unsigned long *prate) +static int div_ro_determine_rate(struct clk_hw *hw, +				 struct clk_rate_request *req)  {  	struct clk_regmap_div *divider = to_clk_regmap_div(hw);  	struct clk_regmap *clkr = ÷r->clkr; @@ -26,17 +26,24 @@ static long div_round_ro_rate(struct clk_hw *hw, unsigned long rate,  	val >>= divider->shift;  	val &= BIT(divider->width) - 1; -	return divider_ro_round_rate(hw, rate, prate, NULL, divider->width, -				     CLK_DIVIDER_ROUND_CLOSEST, val); +	req->rate = divider_ro_round_rate(hw, req->rate, +					  &req->best_parent_rate, NULL, +					  divider->width, +					  CLK_DIVIDER_ROUND_CLOSEST, val); + +	return 0;  } -static long div_round_rate(struct clk_hw *hw, unsigned long rate, -			   unsigned long *prate) +static int div_determine_rate(struct clk_hw *hw, struct clk_rate_request *req)  {  	struct clk_regmap_div *divider = to_clk_regmap_div(hw); -	return divider_round_rate(hw, rate, prate, NULL, divider->width, -				  CLK_DIVIDER_ROUND_CLOSEST); +	req->rate = divider_round_rate(hw, req->rate, &req->best_parent_rate, +				       NULL, +				       divider->width, +				       CLK_DIVIDER_ROUND_CLOSEST); + +	return 0;  }  static int div_set_rate(struct clk_hw *hw, unsigned long rate, @@ -70,14 +77,14 @@ static unsigned long div_recalc_rate(struct clk_hw *hw,  }  const struct clk_ops clk_regmap_div_ops = { -	.round_rate = div_round_rate, +	.determine_rate = div_determine_rate,  	.set_rate = div_set_rate,  	.recalc_rate = div_recalc_rate,  };  EXPORT_SYMBOL_GPL(clk_regmap_div_ops);  const struct clk_ops clk_regmap_div_ro_ops = { -	.round_rate = div_round_ro_rate, +	.determine_rate = div_ro_determine_rate,  	.recalc_rate = div_recalc_rate,  };  EXPORT_SYMBOL_GPL(clk_regmap_div_ro_ops);  | 
