On 6/8/19 5:01 PM, JP wrote:
On 6/8/19 11:30 AM, Sean Young wrote:
Hello Jan Pieter,
On Sat, Jun 08, 2019 at 04:49:23AM +0200, JP wrote:
I made the Mygica T230c2 work on kernel 5.1.7, but I have no idea
how to submit this.
http://jpvw.nl/pub/test/dvb/linux-5.1.7-t230c2.patch
Please can someone help me out. It looks like the extra code in the
demodulator does not effect other drivers that use it. Tested with a
T230, they bothseem to work OK.
That's great, but there are some changes needed before we can accept
this
patch. It needs a commit message and Signed-off-by and more:
https://www.kernel.org/doc/html/latest/process/submitting-patches.html
Jan Pieter van Woerkom
diff -ru a/drivers/media/dvb-frontends/si2168.c
b/drivers/media/dvb-frontends/si2168.c
--- a/drivers/media/dvb-frontends/si2168.c 2019-06-04
07:59:45.000000000
+0200
+++ b/drivers/media/dvb-frontends/si2168.c 2019-06-07
22:49:21.226337473
+0200
@@ -91,8 +91,16 @@
dev_dbg(&client->dev, "%s acquire: %d\n", __func__, acquire);
+ /* set ts clock freq to 10Mhz */
+ memcpy(cmd.args, "\x14\x00\x0d\x10\xe8\x03", 6);
+ cmd.wlen = 6;
+ cmd.rlen = 4;
+ ret = si2168_cmd_execute(client, &cmd);
+ if (ret) return ret;
+
/* set TS_MODE property */
- memcpy(cmd.args, "\x14\x00\x01\x10\x10\x00", 6);
+ memcpy(cmd.args, "\x14\x00\x01\x10\x00\x00", 6);
+ cmd.args[4] = dev->ts_mode & 0x30;
This change affects every driver that uses the si2168. This will need
some
justification.
There is currently no other driver that uses anything else than
AUTO for ts clock mode. This is the best way to set it to MANUAL
from the calling driver. With this patch, the outcome in cmd.args[4]
for every other driver that does not set MANUAL (they currently
don't) is exactly the same.
In other words: the si2168 code currently hardcodes TC_CLOCK_MODE
to AUTO. The T230C2 needs MANUAL. The patch allows the driver to
set MANUAL via ts_mode. Other drivers are not affected, except for
the 10Mhz value but that does not do any harm in AUTO mode.
Setting this clock to 10Mhz doesn't hurt anyone either. When
in AUTO mode, I guess it is overwritten with the scanned value.
When in the future there will be more drivers that use si2168
manual clock mode, with different clock values, some other
approach might be better. Having to modify every driver that
uses the si2168 to set the clock mode explicitly, just to be able
to add one more driver, does not seem the right choice to me.
if (acquire)
cmd.args[4] |= dev->ts_mode;
else
diff -ru a/drivers/media/usb/dvb-usb-v2/dvbsky.c
b/drivers/media/usb/dvb-usb-v2/dvbsky.c
--- a/drivers/media/usb/dvb-usb-v2/dvbsky.c 2019-06-04
07:59:45.000000000
+0200
+++ b/drivers/media/usb/dvb-usb-v2/dvbsky.c 2019-06-07
16:47:32.141530489
+0200
@@ -560,6 +560,9 @@
si2168_config.i2c_adapter = &i2c_adapter;
si2168_config.fe = &adap->fe[0];
si2168_config.ts_mode = SI2168_TS_PARALLEL;
+ if (d->udev->descriptor.idProduct == USB_PID_MYGICA_T230C2)
This needs le16_to_cpu().
It has been almost 25 years ago I did any programming.
But I'll look into that. And also into the administrative stuff.
+ si2168_config.ts_mode |= 0x20;
si2168_config.ts_clock_inv = 1;
state->i2c_client_demod = dvb_module_probe("si2168", NULL,
@@ -799,6 +802,9 @@
{ DVB_USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230C,
&mygica_t230c_props, "MyGica Mini DVB-T2 USB Stick T230C",
RC_MAP_TOTAL_MEDIA_IN_HAND_02) },
+ { DVB_USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230C2,
+ &mygica_t230c_props, "MyGica Mini DVB-T2 USB Stick T230C2",
+ RC_MAP_TOTAL_MEDIA_IN_HAND_02) },
{ }
};
MODULE_DEVICE_TABLE(usb, dvbsky_id_table);
diff -ru a/include/media/dvb-usb-ids.h b/include/media/dvb-usb-ids.h
--- a/include/media/dvb-usb-ids.h 2019-06-04 07:59:45.000000000
+0200
+++ b/include/media/dvb-usb-ids.h 2019-06-06 17:32:32.159187000
+0200
@@ -387,6 +387,7 @@
#define USB_PID_MYGICA_D689 0xd811
#define USB_PID_MYGICA_T230 0xc688
#define USB_PID_MYGICA_T230C 0xc689
+#define USB_PID_MYGICA_T230C2 0xc68a
#define USB_PID_ELGATO_EYETV_DIVERSITY 0x0011
#define USB_PID_ELGATO_EYETV_DTT 0x0021
#define USB_PID_ELGATO_EYETV_DTT_2 0x003f
Thanks,
Sean
Than you.
Jan Pieter.