@@ -104,15 +104,15 @@ static const struct imx_pll14xx_rate_table *imx_get_pll_settings(
104
104
static long pll14xx_calc_rate (struct clk_pll14xx * pll , int mdiv , int pdiv ,
105
105
int sdiv , int kdiv , unsigned long prate )
106
106
{
107
- u64 fvco = prate ;
107
+ u64 fout = prate ;
108
108
109
- /* fvco = (m * 65536 + k) * Fin / (p * 65536) */
110
- fvco *= (mdiv * 65536 + kdiv );
109
+ /* fout = (m * 65536 + k) * Fin / (p * 65536) / (1 << sdiv ) */
110
+ fout *= (mdiv * 65536 + kdiv );
111
111
pdiv *= 65536 ;
112
112
113
- do_div (fvco , pdiv << sdiv );
113
+ do_div (fout , pdiv << sdiv );
114
114
115
- return fvco ;
115
+ return fout ;
116
116
}
117
117
118
118
static long pll1443x_calc_kdiv (int mdiv , int pdiv , int sdiv ,
@@ -131,7 +131,7 @@ static void imx_pll14xx_calc_settings(struct clk_pll14xx *pll, unsigned long rat
131
131
{
132
132
u32 pll_div_ctl0 , pll_div_ctl1 ;
133
133
int mdiv , pdiv , sdiv , kdiv ;
134
- long fvco , rate_min , rate_max , dist , best = LONG_MAX ;
134
+ long fout , rate_min , rate_max , dist , best = LONG_MAX ;
135
135
const struct imx_pll14xx_rate_table * tt ;
136
136
137
137
/*
@@ -143,6 +143,7 @@ static void imx_pll14xx_calc_settings(struct clk_pll14xx *pll, unsigned long rat
143
143
* d) -32768 <= k <= 32767
144
144
*
145
145
* fvco = (m * 65536 + k) * prate / (p * 65536)
146
+ * fout = (m * 65536 + k) * prate / (p * 65536) / (1 << sdiv)
146
147
*/
147
148
148
149
/* First try if we can get the desired rate from one of the static entries */
@@ -173,8 +174,8 @@ static void imx_pll14xx_calc_settings(struct clk_pll14xx *pll, unsigned long rat
173
174
pr_debug ("%s: in=%ld, want=%ld Only adjust kdiv %ld -> %d\n" ,
174
175
clk_hw_get_name (& pll -> hw ), prate , rate ,
175
176
FIELD_GET (KDIV_MASK , pll_div_ctl1 ), kdiv );
176
- fvco = pll14xx_calc_rate (pll , mdiv , pdiv , sdiv , kdiv , prate );
177
- t -> rate = (unsigned int )fvco ;
177
+ fout = pll14xx_calc_rate (pll , mdiv , pdiv , sdiv , kdiv , prate );
178
+ t -> rate = (unsigned int )fout ;
178
179
t -> mdiv = mdiv ;
179
180
t -> pdiv = pdiv ;
180
181
t -> sdiv = sdiv ;
@@ -190,13 +191,13 @@ static void imx_pll14xx_calc_settings(struct clk_pll14xx *pll, unsigned long rat
190
191
mdiv = clamp (mdiv , 64 , 1023 );
191
192
192
193
kdiv = pll1443x_calc_kdiv (mdiv , pdiv , sdiv , rate , prate );
193
- fvco = pll14xx_calc_rate (pll , mdiv , pdiv , sdiv , kdiv , prate );
194
+ fout = pll14xx_calc_rate (pll , mdiv , pdiv , sdiv , kdiv , prate );
194
195
195
196
/* best match */
196
- dist = abs ((long )rate - (long )fvco );
197
+ dist = abs ((long )rate - (long )fout );
197
198
if (dist < best ) {
198
199
best = dist ;
199
- t -> rate = (unsigned int )fvco ;
200
+ t -> rate = (unsigned int )fout ;
200
201
t -> mdiv = mdiv ;
201
202
t -> pdiv = pdiv ;
202
203
t -> sdiv = sdiv ;
0 commit comments