|
|
|
@ -99,16 +99,20 @@ EXPORT_SYMBOL(ar7_bus_clock); |
|
|
|
|
int ar7_dsp_clock = 0; |
|
|
|
|
EXPORT_SYMBOL(ar7_dsp_clock); |
|
|
|
|
|
|
|
|
|
static int gcd(int x, int y) |
|
|
|
|
static int gcd(int a, int b) |
|
|
|
|
{ |
|
|
|
|
if (x > y) |
|
|
|
|
return (x % y) ? gcd(y, x % y) : y; |
|
|
|
|
return (y % x) ? gcd(x, y % x) : x; |
|
|
|
|
} |
|
|
|
|
int c; |
|
|
|
|
|
|
|
|
|
static inline int ABS(int x) |
|
|
|
|
{ |
|
|
|
|
return (x >= 0) ? x : -x; |
|
|
|
|
if ( a < b) { |
|
|
|
|
c = a; |
|
|
|
|
a = b; |
|
|
|
|
b = c; |
|
|
|
|
} |
|
|
|
|
while (c = (a % b)) { |
|
|
|
|
a = b; |
|
|
|
|
b = c; |
|
|
|
|
} |
|
|
|
|
return b; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void approximate(int base, int target, int *prediv, |
|
|
|
@ -118,7 +122,7 @@ static void approximate(int base, int target, int *prediv, |
|
|
|
|
for (i = 1; i <= 16; i++) { |
|
|
|
|
for (j = 1; j <= 32; j++) { |
|
|
|
|
for (k = 1; k <= 32; k++) { |
|
|
|
|
freq = ABS(base / j * i / k - target); |
|
|
|
|
freq = abs(base / j * i / k - target); |
|
|
|
|
if (freq < res) { |
|
|
|
|
res = freq; |
|
|
|
|
*mul = i; |
|
|
|
|