diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/media/dvb/frontends/cx24113.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/media/dvb/frontends/cx24113.c b/drivers/media/dvb/frontends/cx24113.c index e4fd533a427c..075b2b57cf09 100644 --- a/drivers/media/dvb/frontends/cx24113.c +++ b/drivers/media/dvb/frontends/cx24113.c | |||
@@ -303,6 +303,7 @@ static void cx24113_calc_pll_nf(struct cx24113_state *state, u16 *n, s32 *f) | |||
303 | { | 303 | { |
304 | s32 N; | 304 | s32 N; |
305 | s64 F; | 305 | s64 F; |
306 | u64 dividend; | ||
306 | u8 R, r; | 307 | u8 R, r; |
307 | u8 vcodiv; | 308 | u8 vcodiv; |
308 | u8 factor; | 309 | u8 factor; |
@@ -346,7 +347,10 @@ static void cx24113_calc_pll_nf(struct cx24113_state *state, u16 *n, s32 *f) | |||
346 | F = freq_hz; | 347 | F = freq_hz; |
347 | F *= (u64) (R * vcodiv * 262144); | 348 | F *= (u64) (R * vcodiv * 262144); |
348 | dprintk("1 N: %d, F: %lld, R: %d\n", N, (long long)F, R); | 349 | dprintk("1 N: %d, F: %lld, R: %d\n", N, (long long)F, R); |
349 | do_div(F, state->config->xtal_khz*1000 * factor * 2); | 350 | /* do_div needs an u64 as first argument */ |
351 | dividend = F; | ||
352 | do_div(dividend, state->config->xtal_khz * 1000 * factor * 2); | ||
353 | F = dividend; | ||
350 | dprintk("2 N: %d, F: %lld, R: %d\n", N, (long long)F, R); | 354 | dprintk("2 N: %d, F: %lld, R: %d\n", N, (long long)F, R); |
351 | F -= (N + 32) * 262144; | 355 | F -= (N + 32) * 262144; |
352 | 356 | ||