|
@@ -173,8 +173,7 @@ static long clk_pll_get_best_div_mul(struct clk_pll *pll, unsigned long rate,
|
|
|
int i = 0;
|
|
int i = 0;
|
|
|
|
|
|
|
|
/* Check if parent_rate is a valid input rate */
|
|
/* Check if parent_rate is a valid input rate */
|
|
|
- if (parent_rate < characteristics->input.min ||
|
|
|
|
|
- parent_rate > characteristics->input.max)
|
|
|
|
|
|
|
+ if (parent_rate < characteristics->input.min)
|
|
|
return -ERANGE;
|
|
return -ERANGE;
|
|
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -187,6 +186,15 @@ static long clk_pll_get_best_div_mul(struct clk_pll *pll, unsigned long rate,
|
|
|
if (!mindiv)
|
|
if (!mindiv)
|
|
|
mindiv = 1;
|
|
mindiv = 1;
|
|
|
|
|
|
|
|
|
|
+ if (parent_rate > characteristics->input.max) {
|
|
|
|
|
+ tmpdiv = DIV_ROUND_UP(parent_rate, characteristics->input.max);
|
|
|
|
|
+ if (tmpdiv > PLL_DIV_MAX)
|
|
|
|
|
+ return -ERANGE;
|
|
|
|
|
+
|
|
|
|
|
+ if (tmpdiv > mindiv)
|
|
|
|
|
+ mindiv = tmpdiv;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/*
|
|
/*
|
|
|
* Calculate the maximum divider which is limited by PLL register
|
|
* Calculate the maximum divider which is limited by PLL register
|
|
|
* layout (limited by the MUL or DIV field size).
|
|
* layout (limited by the MUL or DIV field size).
|