diff options
Diffstat (limited to 'drivers/clk/zynq/pll.c')
| -rw-r--r-- | drivers/clk/zynq/pll.c | 12 | 
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/clk/zynq/pll.c b/drivers/clk/zynq/pll.c index e5f8fb704df2..5eca1c14981a 100644 --- a/drivers/clk/zynq/pll.c +++ b/drivers/clk/zynq/pll.c @@ -48,18 +48,20 @@ struct zynq_pll {   * @prate:	Clock frequency of parent clock   * Return:	frequency closest to @rate the hardware can generate.   */ -static long zynq_pll_round_rate(struct clk_hw *hw, unsigned long rate, -		unsigned long *prate) +static int zynq_pll_determine_rate(struct clk_hw *hw, +				   struct clk_rate_request *req)  {  	u32 fbdiv; -	fbdiv = DIV_ROUND_CLOSEST(rate, *prate); +	fbdiv = DIV_ROUND_CLOSEST(req->rate, req->best_parent_rate);  	if (fbdiv < PLL_FBDIV_MIN)  		fbdiv = PLL_FBDIV_MIN;  	else if (fbdiv > PLL_FBDIV_MAX)  		fbdiv = PLL_FBDIV_MAX; -	return *prate * fbdiv; +	req->rate = req->best_parent_rate * fbdiv; + +	return 0;  }  /** @@ -167,7 +169,7 @@ static const struct clk_ops zynq_pll_ops = {  	.enable = zynq_pll_enable,  	.disable = zynq_pll_disable,  	.is_enabled = zynq_pll_is_enabled, -	.round_rate = zynq_pll_round_rate, +	.determine_rate = zynq_pll_determine_rate,  	.recalc_rate = zynq_pll_recalc_rate  };  | 
