|
@@ -382,19 +382,19 @@ static int mga_g200eh_set_plls(struct mga_device *mdev, long clock)
|
|
|
m = n = p = 0;
|
|
|
vcomax = 800000;
|
|
|
vcomin = 400000;
|
|
|
- pllreffreq = 3333;
|
|
|
+ pllreffreq = 33333;
|
|
|
|
|
|
delta = 0xffffffff;
|
|
|
permitteddelta = clock * 5 / 1000;
|
|
|
|
|
|
- for (testp = 16; testp > 0; testp--) {
|
|
|
+ for (testp = 16; testp > 0; testp >>= 1) {
|
|
|
if (clock * testp > vcomax)
|
|
|
continue;
|
|
|
if (clock * testp < vcomin)
|
|
|
continue;
|
|
|
|
|
|
for (testm = 1; testm < 33; testm++) {
|
|
|
- for (testn = 1; testn < 257; testn++) {
|
|
|
+ for (testn = 17; testn < 257; testn++) {
|
|
|
computed = (pllreffreq * testn) /
|
|
|
(testm * testp);
|
|
|
if (computed > clock)
|
|
@@ -404,11 +404,11 @@ static int mga_g200eh_set_plls(struct mga_device *mdev, long clock)
|
|
|
if (tmpdelta < delta) {
|
|
|
delta = tmpdelta;
|
|
|
n = testn - 1;
|
|
|
- m = (testm - 1) | ((n >> 1) & 0x80);
|
|
|
+ m = (testm - 1);
|
|
|
p = testp - 1;
|
|
|
}
|
|
|
if ((clock * testp) >= 600000)
|
|
|
- p |= 80;
|
|
|
+ p |= 0x80;
|
|
|
}
|
|
|
}
|
|
|
}
|