Re: [PATCH 4/4] Add support for Logilink VG0022A.

From: Gon Solo
Date: Thu Oct 10 2019 - 07:44:49 EST


Hi!

> "When the [...] firmware that came with the device is replaced
> by a new one, any I2C data received from the tuner will be
> replaced by 0xff.
>
> Probably, the vendor firmware has some patch specifically
> designed for this device. So, we can't replace by the generic
> firmware.
>
> The right solution would be to extract the [...] firmware from
> the original driver and ask the driver to load the specifically
> designed firmware, but, while we don't have that, the next best
> solution is to just keep the original firmware at the device."

The information in the patch is not totally correct. It is the
si2168(!) firmware download that confuses things, not the one for the
si2157. The si2157 seems to have no firmware and the problem is
that we used to bail out because we didn't recognize the bogus
chip id. The following patch corrects this.

Signed-off-by: <andreas.wendleder@xxxxxxxxx>

diff --git a/drivers/media/usb/dvb-usb-v2/af9035.c b/drivers/media/usb/dvb-usb-v2/af9035.c
index 792667ee5ebc..5a2943e2932b 100644
--- a/drivers/media/usb/dvb-usb-v2/af9035.c
+++ b/drivers/media/usb/dvb-usb-v2/af9035.c
@@ -1621,17 +1621,20 @@ static int it930x_tuner_attach(struct dvb_usb_adapter *adap)
si2157_config.fe = adap->fe[0];

/*
- * HACK: The Logilink VG0022A has a bug: when the si2157
+ * HACK: The Logilink VG0022A has a bug: When the si2168
* firmware that came with the device is replaced by a new
* one, the I2C transfers to the tuner will return just 0xff.
*
* Probably, the vendor firmware has some patch specifically
* designed for this device. So, we can't replace by the
* generic firmware. The right solution would be to extract
- * the si2157 firmware from the original driver and ask the
+ * the si2157/68 firmware from the original driver and ask the
* driver to load the specifically designed firmware, but,
* while we don't have that, the next best solution is to just
* keep the original firmware at the device.
+ *
+ * Or, the Windows driver includes the same hack and doesn't
+ * bail out on bogus chip ids.
*/
if (le16_to_cpu(d->udev->descriptor.idVendor) == USB_VID_DEXATEK &&
le16_to_cpu(d->udev->descriptor.idProduct) == 0x0100)