OSDN Git Service

media: dvbsky: add support for MyGica T230C2_LITE and T230A
authorJán Čáni <pego149@gmail.com>
Thu, 17 Jun 2021 19:59:48 +0000 (21:59 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Mon, 12 Jul 2021 07:16:29 +0000 (09:16 +0200)
Add Geniatech MyGica T230C2_LITE and T230A as many people
are asking support for these devices on forums.

Link: https://lore.kernel.org/linux-media/YMuptIYFLdwSmw//@kali
Signed-off-by: Ján Čáni <pego149@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/usb/dvb-usb-v2/dvbsky.c
include/media/dvb-usb-ids.h

index 689829f..1221c92 100644 (file)
@@ -541,7 +541,9 @@ static int dvbsky_mygica_t230c_attach(struct dvb_usb_adapter *adap)
        si2168_config.i2c_adapter = &i2c_adapter;
        si2168_config.fe = &adap->fe[0];
        si2168_config.ts_mode = SI2168_TS_PARALLEL;
-       if (le16_to_cpu(d->udev->descriptor.idProduct) == USB_PID_MYGICA_T230C2)
+       if (le16_to_cpu(d->udev->descriptor.idProduct) == USB_PID_MYGICA_T230C2 ||
+           le16_to_cpu(d->udev->descriptor.idProduct) == USB_PID_MYGICA_T230C2_LITE ||
+           le16_to_cpu(d->udev->descriptor.idProduct) == USB_PID_MYGICA_T230A)
                si2168_config.ts_mode |= SI2168_TS_CLK_MANUAL;
        si2168_config.ts_clock_inv = 1;
 
@@ -577,15 +579,24 @@ static int dvbsky_mygica_t230c_attach(struct dvb_usb_adapter *adap)
 
 static int dvbsky_identify_state(struct dvb_usb_device *d, const char **name)
 {
-       dvbsky_gpio_ctrl(d, 0x04, 1);
-       msleep(20);
-       dvbsky_gpio_ctrl(d, 0x83, 0);
-       dvbsky_gpio_ctrl(d, 0xc0, 1);
-       msleep(100);
-       dvbsky_gpio_ctrl(d, 0x83, 1);
-       dvbsky_gpio_ctrl(d, 0xc0, 0);
-       msleep(50);
-
+       if (le16_to_cpu(d->udev->descriptor.idProduct) == USB_PID_MYGICA_T230A) {
+               dvbsky_gpio_ctrl(d, 0x87, 0);
+               msleep(20);
+               dvbsky_gpio_ctrl(d, 0x86, 1);
+               dvbsky_gpio_ctrl(d, 0x80, 0);
+               msleep(100);
+               dvbsky_gpio_ctrl(d, 0x80, 1);
+               msleep(50);
+       } else {
+               dvbsky_gpio_ctrl(d, 0x04, 1);
+               msleep(20);
+               dvbsky_gpio_ctrl(d, 0x83, 0);
+               dvbsky_gpio_ctrl(d, 0xc0, 1);
+               msleep(100);
+               dvbsky_gpio_ctrl(d, 0x83, 1);
+               dvbsky_gpio_ctrl(d, 0xc0, 0);
+               msleep(50);
+       }
        return WARM;
 }
 
@@ -789,6 +800,12 @@ static const struct usb_device_id dvbsky_id_table[] = {
        { DVB_USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230C2,
                &mygica_t230c_props, "MyGica Mini DVB-(T/T2/C) USB Stick T230C v2",
                RC_MAP_TOTAL_MEDIA_IN_HAND_02) },
+       { DVB_USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230C2_LITE,
+                &mygica_t230c_props, "MyGica Mini DVB-(T/T2/C) USB Stick T230C v2  Lite",
+                NULL) },
+       { DVB_USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230A,
+                &mygica_t230c_props, "MyGica Mini DVB-(T/T2/C) USB Stick T230A",
+                NULL) },
        { }
 };
 MODULE_DEVICE_TABLE(usb, dvbsky_id_table);
index d37cb74..b0a535d 100644 (file)
 #define USB_PID_MYGICA_T230C                           0xc689
 #define USB_PID_MYGICA_T230C2                          0xc68a
 #define USB_PID_MYGICA_T230C_LITE                      0xc699
+#define USB_PID_MYGICA_T230C2_LITE                     0xc69a
+#define USB_PID_MYGICA_T230A                           0x689a
 #define USB_PID_ELGATO_EYETV_DIVERSITY                 0x0011
 #define USB_PID_ELGATO_EYETV_DTT                       0x0021
 #define USB_PID_ELGATO_EYETV_DTT_2                     0x003f