Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ccac68f9 authored by Reinhard Nißl's avatar Reinhard Nißl Committed by Mauro Carvalho Chehab
Browse files

[media] stb0899: sign extend raw CRL_FREQ value



Contrary to the chip's specs, the register's value is signed, so we
need to sign extend the value before using it in calculations like
when determining the offset frequency.

Signed-off-by: default avatarReinhard Nißl <rnissl@gmx.de>
Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 703e6065
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -1487,6 +1487,10 @@ enum stb0899_status stb0899_dvbs2_algo(struct stb0899_state *state)
		/* Store signal parameters	*/
		offsetfreq = STB0899_READ_S2REG(STB0899_S2DEMOD, CRL_FREQ);

		/* sign extend 30 bit value before using it in calculations */
		if (offsetfreq & (1 << 29))
			offsetfreq |= -1 << 30;

		offsetfreq = offsetfreq / ((1 << 30) / 1000);
		offsetfreq *= (internal->master_clk / 1000000);
		reg = STB0899_READ_S2REG(STB0899_S2DEMOD, DMD_CNTRL2);