Re: [PATCH] media: saa7134: keep demod i2c gate open on Medion 7134

From: Matthias Schwarzott
Date: Tue Aug 20 2019 - 15:54:09 EST


Hi Maciej,

some comment about wording in commit message and code-comment.

As far as I know the terms are defined like this:
* gate open = i2c-clients behind gate can be reached
* gate closed = i2c-clients behind gate are not reachable

Regards
Matthias

Am 19.08.19 um 00:55 schrieb Maciej S. Szmigiero:
> Medion 7134 has two i2c eeproms on the same i2c bus sharing the same bus
> addresses: the first one for SAA7134 chip config and the second one behind
> TDA10046 DVB-T demod chip i2c gate storing its firmware.
> The TV tuner on this board is not behind this i2c gate.
>
> Due to the bus conflict described above, the card PCI SVID / SSID sometimes
> gets garbled after a reboot, which makes it necessary to specify the card
> model manually as an insmod option in order for it to be detected reliably.
> To avoid this, let's just leave the gate permanently open so the eeprom
> chips won't clash.
>
> The demod firmware load is done with its i2c gate open anyway so it is not
> affected by this change.
>
> Signed-off-by: Maciej S. Szmigiero <mail@xxxxxxxxxxxxxxxxxxxxx>
> ---
> drivers/media/pci/saa7134/saa7134-dvb.c | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/drivers/media/pci/saa7134/saa7134-dvb.c b/drivers/media/pci/saa7134/saa7134-dvb.c
> index eb8377a95023..ace019ef6784 100644
> --- a/drivers/media/pci/saa7134/saa7134-dvb.c
> +++ b/drivers/media/pci/saa7134/saa7134-dvb.c
> @@ -1264,6 +1264,20 @@ static int dvb_init(struct saa7134_dev *dev)
> &medion_cardbus,
> &dev->i2c_adap);
> if (fe0->dvb.frontend) {
> + /*
> + * The TV tuner on this board is actually NOT
> + * behind the demod i2c gate.
> + * However, the demod eeprom is indeed there and it
> + * conflicts with the SAA7134 chip config eeprom
> + * if the i2c gate is closed (since they have same
> + * bus addresses) resulting in card PCI SVID / SSID
> + * being garbage after a reboot from time to time.
> + *
> + * Let's just leave the gate permanently open -
> + * saa7134_i2c_eeprom_md7134_gate() will open it for
> + * us at probe time if it was closed for some reason.
> + */
> + fe0->dvb.frontend->ops.i2c_gate_ctrl = NULL;
> dvb_attach(simple_tuner_attach, fe0->dvb.frontend,
> &dev->i2c_adap, medion_cardbus.tuner_address,
> TUNER_PHILIPS_FMD1216ME_MK3);
>