All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Backport MYGICA T230A adapter
@ 2021-03-13 12:36 Vincent Fortier
  2021-03-13 21:37 ` JP
  2021-03-16 16:55 ` JP
  0 siblings, 2 replies; 5+ messages in thread
From: Vincent Fortier @ 2021-03-13 12:36 UTC (permalink / raw)
  To: linux-media

Hi all,

(first patch posting so don't hesitate to let me know where to find 
additional info to improve next time)

The following patch is a manual backport based on crazycat69 / 
linux_media git repository:

https://github.com/crazycat69/linux_media/commit/e1ef47d604775c550a8f0d1bda276c113f882c9b?branch=e1ef47d604775c550a8f0d1bda276c113f882c9b&diff=unified


MYGICA T230A support was found on the following thread:
https://forum.libreelec.tv/thread/23142-mygica-t230a/?pageNo=2

Built successfully over commit 069192365e2cec8b47f6e6701fb2aa50f763c602 
(March 9th) on media_build git tree with driver snapshot from 
2021-03-07-1c5ab1e2286f over Synology 4.4.59 / 4.4.60 kernels. Also 
built successfully over 3.10.105 using latest compatible snapshot from 
2021-01-13 using driver version 2021-01-08-321af22a3d2f (as sadly 
pre-4.4 support was removed recently).

User thread confirming it to work under Synology NAS under 4.4.59 kernel 
available here:

https://github.com/th0ma7/synology/issues/9

Much thnx in advance.

- vin

---

diff -uprN ../linuxtv.orig/linux/drivers/media/usb/dvb-usb-v2/dvbsky.c 
./linux/drivers/media/usb/dvb-usb-v2/dvbsky.c
--- ../linuxtv.orig/linux/drivers/media/usb/dvb-usb-v2/dvbsky.c 
2020-11-06 05:40:16.000000000 +0000
+++ ./linux/drivers/media/usb/dvb-usb-v2/dvbsky.c    2021-02-19 
14:31:34.405091839 +0000
@@ -529,7 +529,7 @@ static int dvbsky_t330_attach(struct dvb
      return 0;
  }

-static int dvbsky_mygica_t230c_attach(struct dvb_usb_adapter *adap)
+static int dvbsky_mygica_t230_attach(struct dvb_usb_adapter *adap)
  {
      struct dvbsky_state *state = adap_to_priv(adap);
      struct dvb_usb_device *d = adap_to_d(adap);
@@ -541,7 +541,9 @@ static int dvbsky_mygica_t230c_attach(st
      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;

@@ -553,19 +555,26 @@ static int dvbsky_mygica_t230c_attach(st

      /* attach tuner */
      si2157_config.fe = adap->fe[0];
-    if (le16_to_cpu(d->udev->descriptor.idProduct) == 
USB_PID_MYGICA_T230) {
-        si2157_config.if_port = 1;
-        state->i2c_client_tuner = dvb_module_probe("si2157", NULL,
+    switch (le16_to_cpu(d->udev->descriptor.idProduct)) {
+    case USB_PID_MYGICA_T230C:
+    case USB_PID_MYGICA_T230C2:
+    case USB_PID_MYGICA_T230C2_LITE:
+    case USB_PID_MYGICA_T230A: {
+        si2157_config.if_port = 0;
+        state->i2c_client_tuner = dvb_module_probe("si2157", "si2141",
                                 i2c_adapter,
                                 0x60,
                                 &si2157_config);
-    } else {
-        si2157_config.if_port = 0;
-        state->i2c_client_tuner = dvb_module_probe("si2157", "si2141",
+        break;
+    }
+    default: {
+        si2157_config.if_port = 1;
+        state->i2c_client_tuner = dvb_module_probe("si2157", NULL,
                                 i2c_adapter,
                                 0x60,
                                 &si2157_config);
      }
+    }
      if (!state->i2c_client_tuner) {
          dvb_module_release(state->i2c_client_demod);
          return -ENODEV;
@@ -577,14 +586,24 @@ static int dvbsky_mygica_t230c_attach(st

  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;
  }
@@ -719,7 +738,7 @@ static struct dvb_usb_device_properties
      }
  };

-static struct dvb_usb_device_properties mygica_t230c_props = {
+static struct dvb_usb_device_properties mygica_t230_props = {
      .driver_name = KBUILD_MODNAME,
      .owner = THIS_MODULE,
      .adapter_nr = adapter_nr,
@@ -730,7 +749,7 @@ static struct dvb_usb_device_properties
      .generic_bulk_ctrl_delay = DVBSKY_MSG_DELAY,

      .i2c_algo         = &dvbsky_i2c_algo,
-    .frontend_attach  = dvbsky_mygica_t230c_attach,
+    .frontend_attach  = dvbsky_mygica_t230_attach,
      .frontend_detach  = dvbsky_frontend_detach,
      .init             = dvbsky_init,
      .get_rc_config    = dvbsky_get_rc_config,
@@ -778,16 +797,22 @@ static const struct usb_device_id dvbsky
          &dvbsky_s960_props, "Terratec Cinergy S2 Rev.4",
          RC_MAP_DVBSKY) },
      { DVB_USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230,
-        &mygica_t230c_props, "MyGica Mini DVB-(T/T2/C) USB Stick T230",
+        &mygica_t230_props, "MyGica Mini DVB-(T/T2/C) USB Stick T230",
          RC_MAP_TOTAL_MEDIA_IN_HAND_02) },
      { DVB_USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230C,
-        &mygica_t230c_props, "MyGica Mini DVB-(T/T2/C) USB Stick T230C",
+        &mygica_t230_props, "MyGica Mini DVB-(T/T2/C) USB Stick T230C",
          RC_MAP_TOTAL_MEDIA_IN_HAND_02) },
      { DVB_USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230C_LITE,
-        &mygica_t230c_props, "MyGica Mini DVB-(T/T2/C) USB Stick T230C 
Lite",
+        &mygica_t230_props, "MyGica Mini DVB-(T/T2/C) USB Stick T230C 
Lite",
          NULL) },
      { DVB_USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230C2,
-        &mygica_t230c_props, "MyGica Mini DVB-(T/T2/C) USB Stick T230C v2",
+        &mygica_t230_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_t230_props, "MyGica Mini DVB-T2 USB Stick T230C Lite v2",
+        RC_MAP_TOTAL_MEDIA_IN_HAND_02) },
+    { DVB_USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230A,
+        &mygica_t230_props, "MyGica Mini DVB-(T/T2/C) USB Stick T230A",
          RC_MAP_TOTAL_MEDIA_IN_HAND_02) },
      { }
  };
diff -uprN ../linuxtv.orig/linux/include/media/dvb-usb-ids.h 
./linux/include/media/dvb-usb-ids.h
--- ../linuxtv.orig/linux/include/media/dvb-usb-ids.h 2020-05-26 
05:40:21.000000000 +0000
+++ ./linux/include/media/dvb-usb-ids.h    2021-02-19 14:27:21.459391941 
+0000
@@ -394,6 +394,8 @@
  #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



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-03-17 16:25 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-13 12:36 [PATCH] Backport MYGICA T230A adapter Vincent Fortier
2021-03-13 21:37 ` JP
2021-03-16 16:55 ` JP
2021-03-16 23:43   ` Vincent Fortier
2021-03-17 16:24     ` JP

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.