[linux-dvb] SNR calculation in stv0299 driver

Gill Robles-Thome gill.robles at exterity.co.uk
Wed Jul 20 13:12:18 CEST 2005

Hi -

Can anyone explain the algorithm used to calculate the SNR for the
stv0299 driver? Ie

	case FE_READ_SNR:
		s32 snr = 0xffff - ((stv0299_readreg (i2c, 0x24) << 8)
				   | stv0299_readreg (i2c, 0x25));
		snr = 3 * (snr - 0xa100);
		*((u16*) arg) = (snr > 0xffff) ? 0xffff :
				(snr < 0) ? 0 : snr;

I don't understand where the 0xa100 value comes from, or why the result
is them multiplied by 3!  Registers 0x24 and 0x25 are apparently "Noise
Indicator" registers, but the stv0299 specification doesn't explain very
well how these registers should be used.

Thanks for your help,

More information about the linux-dvb mailing list