V4L/DVB: lgs8gxx: Use shifts rather than multiply/divide when possible
If val is a u64, then following: val *= (u64)1 << 32; val /= (u64)1 << 32; should surely be better represented as: val <<= 32; val >>= 32; Especially as, for the division, the compiler might want to actually do a division: drivers/built-in.o: In function `lgs8gxx_get_afc_phase': drivers/media/dvb/frontends/lgs8gxx.c:250: undefined reference to `__udivdi3' Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
5bf5834738
commit
3ab1b9cecd
|
@ -199,7 +199,7 @@ static int lgs8gxx_set_if_freq(struct lgs8gxx_state *priv, u32 freq /*in kHz*/)
|
|||
|
||||
val = freq;
|
||||
if (freq != 0) {
|
||||
val *= (u64)1 << 32;
|
||||
val <<= 32;
|
||||
if (if_clk != 0)
|
||||
do_div(val, if_clk);
|
||||
v32 = val & 0xFFFFFFFF;
|
||||
|
@ -246,7 +246,7 @@ static int lgs8gxx_get_afc_phase(struct lgs8gxx_state *priv)
|
|||
|
||||
val = v32;
|
||||
val *= priv->config->if_clk_freq;
|
||||
val /= (u64)1 << 32;
|
||||
val >>= 32;
|
||||
dprintk("AFC = %u kHz\n", (u32)val);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue