linux/drivers/media/pci/cx23885
David Howells 0f91c9d6ba [media] TS2020: Calculate tuner gain correctly
The TS2020 and TS2022 tuners take an input from the demodulator indicating the
AGC setting on that component that is then used to influence the tuner's own
gain.  This should be taken into account when calculating the gain and signal
strength.

Further, the existing TS2020 driver miscalculates the signal strength as the
result of its calculations can exceed the storage capacity of the 16-bit word
used to return it to userspace.

To this end:

 (1) Add a callback function (->get_agc_pwm()) in the ts2020_config struct that
     the tuner can call to get the AGC PWM value from the demodulator.

 (2) Modify the TS2020 driver to calculate the gain according to Montage's
     specification with the adjustment that we produce a negative value and
     scale it to 0.001dB units (which is what the DVBv5 API will require):

     (a) Callback to the demodulator to retrieve the AGC PWM value and then
     	 turn that into Vagc for incorporation in the calculations.  If the
     	 callback is unset, assume a Vagc of 0.

     (b) Calculate the tuner gain from a combination of Vagc and the tuner's RF
     	 gain and baseband gain settings.

 (3) Turn this into a percentage signal strength as per Montage's
     specification for return to userspace with the DVBv3 API.

 (4) Provide a function in the M88DS3103 demodulator driver that can be used to
     get the AGC PWM value on behalf of the tuner.

 (5) The ts2020_config.get_agc_pwm function should be set by the code that
     stitches together the drivers for each card.

     For the DVBSky cards that use the M88DS3103 with the TS2020 or the TS2022,
     set the get_agc_pwm function to point to m88ds3103_get_agc_pwm.

I have tested this with a DVBSky S952 card which has an M88DS3103 and a TS2022.

Thanks to Montage for providing access to information about the workings of
these parts.

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
2015-06-10 11:10:27 -03:00
..
altera-ci.c [media] cx23885: fix bad indentation 2015-05-01 06:28:16 -03:00
altera-ci.h [media] Add and use IS_REACHABLE macro 2015-04-08 15:02:07 -03:00
cimax2.c [media] cx23885: remove FSF address as per checkpatch 2014-09-03 08:35:55 -03:00
cimax2.h [media] cx23885: remove FSF address as per checkpatch 2014-09-03 08:35:55 -03:00
cx23885-417.c [media] cx23885: fix querycap 2015-04-01 06:56:56 -03:00
cx23885-alsa.c [media] cx23885: remove btcx-risc dependency 2014-09-08 10:01:00 -03:00
cx23885-av.c [media] cx23885: remove FSF address as per checkpatch 2014-09-03 08:35:55 -03:00
cx23885-av.h [media] cx23885: remove FSF address as per checkpatch 2014-09-03 08:35:55 -03:00
cx23885-cards.c Linux 3.19-rc6 2015-01-27 09:39:34 -02:00
cx23885-core.c [media] cx23885: Always initialise dev->slock spinlock 2015-04-08 06:28:01 -03:00
cx23885-dvb.c [media] TS2020: Calculate tuner gain correctly 2015-06-10 11:10:27 -03:00
cx23885-f300.c [media] dvb: Get rid of typedev usage for enums 2015-06-09 17:47:35 -03:00
cx23885-f300.h [media] dvb: Get rid of typedev usage for enums 2015-06-09 17:47:35 -03:00
cx23885-i2c.c [media] cx23885: fix I2C scan printout 2014-12-30 10:46:52 -02:00
cx23885-input.c [media] cx23885: add DVBSky T982(Dual DVB-T2/T/C) support 2014-11-14 18:28:41 -02:00
cx23885-input.h [media] cx23885: remove FSF address as per checkpatch 2014-09-03 08:35:55 -03:00
cx23885-ioctl.c [media] cx23885: remove FSF address as per checkpatch 2014-09-03 08:35:55 -03:00
cx23885-ioctl.h [media] cx23885: remove FSF address as per checkpatch 2014-09-03 08:35:55 -03:00
cx23885-ir.c [media] cx23885: remove FSF address as per checkpatch 2014-09-03 08:35:55 -03:00
cx23885-ir.h [media] cx23885: remove FSF address as per checkpatch 2014-09-03 08:35:55 -03:00
cx23885-reg.h [media] cx23885: remove FSF address as per checkpatch 2014-09-03 08:35:55 -03:00
cx23885-vbi.c [media] vb2-dma-sg: move dma_(un)map_sg here 2014-11-25 09:01:16 -02:00
cx23885-video.c [media] v4l2: replace s_mbus_fmt by set_fmt in bridge drivers 2015-05-01 09:01:16 -03:00
cx23885-video.h [media] cx23885: remove FSF address as per checkpatch 2014-09-03 08:35:55 -03:00
cx23885.h [media] dvb: Get rid of typedev usage for enums 2015-06-09 17:47:35 -03:00
cx23888-ir.c [media] cx23885: remove FSF address as per checkpatch 2014-09-03 08:35:55 -03:00
cx23888-ir.h [media] cx23885: remove FSF address as per checkpatch 2014-09-03 08:35:55 -03:00
Kconfig [media] cx23885: switch ts2022 to ts2020 driver 2015-04-02 22:24:52 -03:00
Makefile [media] cx23885: remove btcx-risc dependency 2014-09-08 10:01:00 -03:00
netup-eeprom.c [media] cx23885: remove FSF address as per checkpatch 2014-09-03 08:35:55 -03:00
netup-eeprom.h [media] cx23885: remove FSF address as per checkpatch 2014-09-03 08:35:55 -03:00
netup-init.c [media] cx23885: remove FSF address as per checkpatch 2014-09-03 08:35:55 -03:00
netup-init.h [media] cx23885: remove FSF address as per checkpatch 2014-09-03 08:35:55 -03:00