Commit 3ab1b9ce authored by David Howells's avatar David Howells Committed by Mauro Carvalho Chehab
Browse files

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: default avatarDavid Howells <dhowells@redhat.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 5bf58347
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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;
}