This patch add support for Avermedia TD310 usb stick. 

V4 add usb-ids part of the patch.
V3 add a table for the i2c addresses an other needed options.


Signed-off-by: Jose Alberto Reguero <jose.alberto.regu...@gmail.com> 

diff -upr linux/drivers/media/usb/dvb-usb-v2/af9035.c 
linux.new/drivers/media/usb/dvb-usb-v2/af9035.c
--- linux/drivers/media/usb/dvb-usb-v2/af9035.c 2019-03-05 18:44:34.936077251 
+0100
+++ linux.new/drivers/media/usb/dvb-usb-v2/af9035.c     2019-03-05 
18:43:31.512806221 +0100
@@ -846,6 +846,7 @@ static int af9035_read_config(struct dvb
        state->af9033_config[1].adc_multiplier = AF9033_ADC_MULTIPLIER_2X;
        state->af9033_config[0].ts_mode = AF9033_TS_MODE_USB;
        state->af9033_config[1].ts_mode = AF9033_TS_MODE_SERIAL;
+       state->it930x_addresses = 0;
 
        if (state->chip_type == 0x9135) {
                /* feed clock for integrated RF tuner */
@@ -872,6 +873,10 @@ static int af9035_read_config(struct dvb
                 * IT930x is an USB bridge, only single demod-single tuner
                 * configurations seen so far.
                 */
+               if ((le16_to_cpu(d->udev->descriptor.idVendor) == 
USB_VID_AVERMEDIA) &&
+                   (le16_to_cpu(d->udev->descriptor.idProduct) == 
USB_PID_AVERMEDIA_TD310)) {
+                       state->it930x_addresses = 1;
+               }
                return 0;
        }
 
@@ -1267,8 +1272,9 @@ static int it930x_frontend_attach(struct
 
        state->af9033_config[adap->id].fe = &adap->fe[0];
        state->af9033_config[adap->id].ops = &state->ops;
-       ret = af9035_add_i2c_dev(d, "si2168", 0x67, &si2168_config,
-                               &d->i2c_adap);
+       ret = af9035_add_i2c_dev(d, "si2168",
+                                
it930x_addresses_table[state->it930x_addresses].frontend_i2c_addr,
+                                &si2168_config, &d->i2c_adap);
        if (ret)
                goto err;
 
@@ -1619,10 +1625,10 @@ static int it930x_tuner_attach(struct dv
 
        memset(&si2157_config, 0, sizeof(si2157_config));
        si2157_config.fe = adap->fe[0];
-       si2157_config.if_port = 1;
-       ret = af9035_add_i2c_dev(d, "si2157", 0x63,
-                       &si2157_config, state->i2c_adapter_demod);
-
+       si2157_config.if_port = 
it930x_addresses_table[state->it930x_addresses].tuner_if_port;
+       ret = af9035_add_i2c_dev(d, "si2157",
+                                
it930x_addresses_table[state->it930x_addresses].tuner_i2c_addr,
+                                &si2157_config, state->i2c_adapter_demod);
        if (ret)
                goto err;
 
@@ -2128,6 +2134,8 @@ static const struct usb_device_id af9035
        /* IT930x devices */
        { DVB_USB_DEVICE(USB_VID_ITETECH, USB_PID_ITETECH_IT9303,
                &it930x_props, "ITE 9303 Generic", NULL) },
+       { DVB_USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_TD310,
+               &it930x_props, "AVerMedia TD310 DVB-T2", NULL) },
        { }
 };
 MODULE_DEVICE_TABLE(usb, af9035_id_table);
diff -upr linux/drivers/media/usb/dvb-usb-v2/af9035.h 
linux.new/drivers/media/usb/dvb-usb-v2/af9035.h
--- linux/drivers/media/usb/dvb-usb-v2/af9035.h 2017-02-01 06:41:13.000000000 
+0100
+++ linux.new/drivers/media/usb/dvb-usb-v2/af9035.h     2019-03-05 
18:19:31.450331996 +0100
@@ -69,6 +69,7 @@ struct state {
        u8 dual_mode:1;
        u8 no_read:1;
        u8 af9033_i2c_addr[2];
+       u8 it930x_addresses;
        struct af9033_config af9033_config[2];
        struct af9033_ops ops;
        #define AF9035_I2C_CLIENT_MAX 4
@@ -77,6 +78,17 @@ struct state {
        struct platform_device *platform_device_tuner[2];
 };
 
+struct address_table {
+       u8 frontend_i2c_addr;
+       u8 tuner_i2c_addr;
+       u8 tuner_if_port;
+};
+
+static const struct address_table it930x_addresses_table[] = {
+       { 0x67, 0x63, 1 },
+       { 0x64, 0x60, 0 },
+};
+
 static const u32 clock_lut_af9035[] = {
        20480000, /*      FPGA */
        16384000, /* 16.38 MHz */
diff -upr linux/include/media/dvb-usb-ids.h 
linux.new/include/media/dvb-usb-ids.h
--- linux/include/media/dvb-usb-ids.h   2018-05-05 07:40:18.000000000 +0200
+++ linux.new/include/media/dvb-usb-ids.h       2019-02-20 17:04:40.457821850 
+0100
@@ -258,6 +258,7 @@
 #define USB_PID_AVERMEDIA_A867                         0xa867
 #define USB_PID_AVERMEDIA_H335                         0x0335
 #define USB_PID_AVERMEDIA_TD110                                0xa110
+#define USB_PID_AVERMEDIA_TD310                                0x1871
 #define USB_PID_AVERMEDIA_TWINSTAR                     0x0825
 #define USB_PID_TECHNOTREND_CONNECT_S2400               0x3006
 #define USB_PID_TECHNOTREND_CONNECT_S2400_8KEEPROM     0x3009

-- 
Enviado desde mi dispositivo Android con K-9 Mail. Por favor, disculpa mi 
brevedad.

Reply via email to