Linux-Media Archive on lore.kernel.org
 help / color / Atom feed
* MyGica T230 dvb-t2 data corruption since commit 5fa8815
@ 2019-07-17  7:44 James Hutchinson
  2019-07-17 12:21 ` JP
                   ` (2 more replies)
  0 siblings, 3 replies; 18+ messages in thread
From: James Hutchinson @ 2019-07-17  7:44 UTC (permalink / raw)
  To: linux-media, crazycat69, mchehab

(trying again in plain text)...

I'm encountering invalid checksum errors randomly in tvheadend with my
MyGica T230 DVB-T2 tuner, straight after upgrading from Debian Stretch
(kernel 4.9.168) to Buster (kernel 4.19.37).

For example

2019-06-29 16:32:27.259 [   INFO]:subscription: 004B: "scan"
subscribing to mux "618.167MHz", weight: 6, adapter: "Silicon Labs
Si2168 #0 : DVB-T #0", network: "Freeview", service: "Raw PID
Subscription"
2019-06-29 16:32:27.769 [WARNING]:tbl-eit: uk_freeview: 618.167MHz in
Freeview: invalid checksum (len 1558, errors 1)
2019-06-29 16:32:27.770 [WARNING]:tbl-base: pat: 618.167MHz in
Freeview: invalid checksum (len 136, errors 1)
2019-06-29 16:32:27.967 [WARNING]:tbl-base: sdt: 618.167MHz in
Freeview: invalid checksum (len 971, errors 1)
2019-06-29 16:32:28.462 [WARNING]:tbl-base: pmt: 618.167MHz in
Freeview: invalid checksum (len 60, errors 1)
2019-06-29 16:32:28.463 [WARNING]:tbl-base: pmt: 618.167MHz in
Freeview: invalid checksum (len 46, errors 1)
2019-06-29 16:32:28.637 [WARNING]:tbl-base: pmt: 618.167MHz in
Freeview: invalid checksum (len 38, errors 1)
2019-06-29 16:32:32.258 [   INFO]:mpegts: 618.167MHz in Freeview scan complete
2019-06-29 16:32:32.258 [   INFO]:subscription: 004B: "scan" unsubscribing
2019-06-29 16:32:32.259 [   INFO]:mpegts: 642MHz in Freeview - tuning
on Silicon Labs Si2168 #0 : DVB-T #0
2019-06-29 16:32:32.259 [   INFO]:subscription: 004E: "scan"
subscribing to mux "642MHz", weight: 6, adapter: "Silicon Labs Si2168
#0 : DVB-T #0", network: "Freeview", service: "Raw PID Subscription"
2019-06-29 16:32:41.179 [   INFO]:mpegts: 642MHz in Freeview scan complete
2019-06-29 16:32:41.179 [   INFO]:subscription: 004E: "scan" unsubscribing
2019-06-29 16:32:41.180 [   INFO]:mpegts: 602MHz in Freeview - tuning
on Silicon Labs Si2168 #0 : DVB-T #0
2019-06-29 16:32:41.180 [   INFO]:subscription: 0052: "scan"
subscribing to mux "602MHz", weight: 6, adapter: "Silicon Labs Si2168
#0 : DVB-T #0", network: "Freeview", service: "Raw PID Subscription"
2019-06-29 16:32:41.835 [WARNING]:tbl-eit: uk_freeview: 602MHz in
Freeview: invalid checksum (len 320, errors 1)
2019-06-29 16:32:42.109 [WARNING]:tbl-base: sdt: 602MHz in Freeview:
invalid checksum (len 322, errors 1)
2019-06-29 16:32:42.314 [WARNING]:tbl-base: pmt: 602MHz in Freeview:
invalid checksum (len 84, errors 1)
2019-06-29 16:32:46.180 [   INFO]:mpegts: 602MHz in Freeview scan complete
2019-06-29 16:32:46.180 [   INFO]:subscription: 0052: "scan" unsubscribing

The issue is not specific to particular muxes, and happens entirely at
random. If I retune then the same mux will scan without issue. It also
causes data corruption when streaming with continuity counter errors
in the tvh log; again retuning often resolves the problem, but i never
had any such issues with kernel v4.9.x.

Heres the output of lsusb to confirm my hardware id:
0572:c688 Conexant Systems (Rockwell), Inc. Geniatech T230 DVB-T2 TV Stick

I've been testing various kernel versions in-between 4.9->4.19 and
quickly found that the issue was introduced somewhere between
4.9->4.10.

I therefore performed a (lengthy) git bisect to find out which of the
14,248 commits during the v4.10 development cycle introduced this
regression.

I have tracked this regression down to the following commit:
5fa8815: [media] dvb-usb-cxusb: Geniatech T230 - resync TS FIFO after lock

Indeed, if I revert that commit on an upto-date kernel, I now have a
stable MyGica T230 tuner once more.

Please note that i've tried the latest media_build drivers and have
also the 5.2 kernel; both of which have the issue, and both of which
can be fixed by reverting 5fa8815.

Regards,
James

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

* Re: MyGica T230 dvb-t2 data corruption since commit 5fa8815
  2019-07-17  7:44 MyGica T230 dvb-t2 data corruption since commit 5fa8815 James Hutchinson
@ 2019-07-17 12:21 ` JP
  2019-07-17 21:22 ` Thomas Hollstegge
  2019-07-19 18:35 ` Jan Pieter van Woerkom
  2 siblings, 0 replies; 18+ messages in thread
From: JP @ 2019-07-17 12:21 UTC (permalink / raw)
  To: James Hutchinson, linux-media, crazycat69, mchehab

Hi James,

I have T230 and T230C (v2) and with both sticks I see invalid
checksum errors. My buest guess is that they come from bad
power supply decoupling on the demodulator chip.

The fact that you only see errors with this commit can then be
explained as a timing problem that exists because of this bad
decoupling.

Cheers,
Jan Pieter.

On 7/17/19 9:44 AM, James Hutchinson wrote:
> (trying again in plain text)...
>
> I'm encountering invalid checksum errors randomly in tvheadend with my
> MyGica T230 DVB-T2 tuner, straight after upgrading from Debian Stretch
> (kernel 4.9.168) to Buster (kernel 4.19.37).
>
> For example
>
> 2019-06-29 16:32:27.259 [   INFO]:subscription: 004B: "scan"
> subscribing to mux "618.167MHz", weight: 6, adapter: "Silicon Labs
> Si2168 #0 : DVB-T #0", network: "Freeview", service: "Raw PID
> Subscription"
> 2019-06-29 16:32:27.769 [WARNING]:tbl-eit: uk_freeview: 618.167MHz in
> Freeview: invalid checksum (len 1558, errors 1)
> 2019-06-29 16:32:27.770 [WARNING]:tbl-base: pat: 618.167MHz in
> Freeview: invalid checksum (len 136, errors 1)
> 2019-06-29 16:32:27.967 [WARNING]:tbl-base: sdt: 618.167MHz in
> Freeview: invalid checksum (len 971, errors 1)
> 2019-06-29 16:32:28.462 [WARNING]:tbl-base: pmt: 618.167MHz in
> Freeview: invalid checksum (len 60, errors 1)
> 2019-06-29 16:32:28.463 [WARNING]:tbl-base: pmt: 618.167MHz in
> Freeview: invalid checksum (len 46, errors 1)
> 2019-06-29 16:32:28.637 [WARNING]:tbl-base: pmt: 618.167MHz in
> Freeview: invalid checksum (len 38, errors 1)
> 2019-06-29 16:32:32.258 [   INFO]:mpegts: 618.167MHz in Freeview scan complete
> 2019-06-29 16:32:32.258 [   INFO]:subscription: 004B: "scan" unsubscribing
> 2019-06-29 16:32:32.259 [   INFO]:mpegts: 642MHz in Freeview - tuning
> on Silicon Labs Si2168 #0 : DVB-T #0
> 2019-06-29 16:32:32.259 [   INFO]:subscription: 004E: "scan"
> subscribing to mux "642MHz", weight: 6, adapter: "Silicon Labs Si2168
> #0 : DVB-T #0", network: "Freeview", service: "Raw PID Subscription"
> 2019-06-29 16:32:41.179 [   INFO]:mpegts: 642MHz in Freeview scan complete
> 2019-06-29 16:32:41.179 [   INFO]:subscription: 004E: "scan" unsubscribing
> 2019-06-29 16:32:41.180 [   INFO]:mpegts: 602MHz in Freeview - tuning
> on Silicon Labs Si2168 #0 : DVB-T #0
> 2019-06-29 16:32:41.180 [   INFO]:subscription: 0052: "scan"
> subscribing to mux "602MHz", weight: 6, adapter: "Silicon Labs Si2168
> #0 : DVB-T #0", network: "Freeview", service: "Raw PID Subscription"
> 2019-06-29 16:32:41.835 [WARNING]:tbl-eit: uk_freeview: 602MHz in
> Freeview: invalid checksum (len 320, errors 1)
> 2019-06-29 16:32:42.109 [WARNING]:tbl-base: sdt: 602MHz in Freeview:
> invalid checksum (len 322, errors 1)
> 2019-06-29 16:32:42.314 [WARNING]:tbl-base: pmt: 602MHz in Freeview:
> invalid checksum (len 84, errors 1)
> 2019-06-29 16:32:46.180 [   INFO]:mpegts: 602MHz in Freeview scan complete
> 2019-06-29 16:32:46.180 [   INFO]:subscription: 0052: "scan" unsubscribing
>
> The issue is not specific to particular muxes, and happens entirely at
> random. If I retune then the same mux will scan without issue. It also
> causes data corruption when streaming with continuity counter errors
> in the tvh log; again retuning often resolves the problem, but i never
> had any such issues with kernel v4.9.x.
>
> Heres the output of lsusb to confirm my hardware id:
> 0572:c688 Conexant Systems (Rockwell), Inc. Geniatech T230 DVB-T2 TV Stick
>
> I've been testing various kernel versions in-between 4.9->4.19 and
> quickly found that the issue was introduced somewhere between
> 4.9->4.10.
>
> I therefore performed a (lengthy) git bisect to find out which of the
> 14,248 commits during the v4.10 development cycle introduced this
> regression.
>
> I have tracked this regression down to the following commit:
> 5fa8815: [media] dvb-usb-cxusb: Geniatech T230 - resync TS FIFO after lock
>
> Indeed, if I revert that commit on an upto-date kernel, I now have a
> stable MyGica T230 tuner once more.
>
> Please note that i've tried the latest media_build drivers and have
> also the 5.2 kernel; both of which have the issue, and both of which
> can be fixed by reverting 5fa8815.
>
> Regards,
> James
>


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

* Re: MyGica T230 dvb-t2 data corruption since commit 5fa8815
  2019-07-17  7:44 MyGica T230 dvb-t2 data corruption since commit 5fa8815 James Hutchinson
  2019-07-17 12:21 ` JP
@ 2019-07-17 21:22 ` Thomas Hollstegge
  2019-07-19 18:35 ` Jan Pieter van Woerkom
  2 siblings, 0 replies; 18+ messages in thread
From: Thomas Hollstegge @ 2019-07-17 21:22 UTC (permalink / raw)
  To: linux-media, crazycat69, mchehab, James Hutchinson; +Cc: JP

Hi James,

I have both sticks (v1 and v2) and can confirm your observations. I
also pinned the problem down to the commit you specified. I am running
on a kernel with that commit reverted for some months now and didn't
observe any problems so far.

The easiest way to reproduce this issue was to force a complete
network scan in tvheadend. With that commit applied, the scan always
failed after ~50% of all muxes were scanned. And it was not just about
some continuity errors, but a complete loss of signal that could only
be resolved by rebooting.

After reverting the commit, everything runs fine.

Best regards
Thomas

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

* Re: MyGica T230 dvb-t2 data corruption since commit 5fa8815
  2019-07-17  7:44 MyGica T230 dvb-t2 data corruption since commit 5fa8815 James Hutchinson
  2019-07-17 12:21 ` JP
  2019-07-17 21:22 ` Thomas Hollstegge
@ 2019-07-19 18:35 ` Jan Pieter van Woerkom
  2019-07-21 18:29   ` Sean Young
  2019-08-02 12:00   ` James Hutchinson
  2 siblings, 2 replies; 18+ messages in thread
From: Jan Pieter van Woerkom @ 2019-07-19 18:35 UTC (permalink / raw)
  To: James Hutchinson
  Cc: Antti Palosaari, Sean Young, linux-media, Thomas Hollstegge

dvbsky: add MyGica T230.
Moved from cxusb driver as that driver can't handle FX2 FIFO issue.

Signed-off-by: Jan Pieter van Woerkom <jp@jpvw.nl>
---
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-07-08 00:41:56.000000000 +0200
+++ b/drivers/media/usb/dvb-usb-v2/dvbsky.c	2019-07-19 17:50:54.671341146 +0200
@@ -561,11 +561,18 @@
 
 	/* attach tuner */
 	si2157_config.fe = adap->fe[0];
-	si2157_config.if_port = 0;
-
-	state->i2c_client_tuner = dvb_module_probe("si2157", "si2141",
+	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,
+						   i2c_adapter,
+						   0x60, &si2157_config);
+	}
+	else {
+		si2157_config.if_port = 0;
+		state->i2c_client_tuner = dvb_module_probe("si2157", "si2141",
 						   i2c_adapter,
 						   0x60, &si2157_config);
+	}
 	if (!state->i2c_client_tuner) {
 		dvb_module_release(state->i2c_client_demod);
 		return -ENODEV;
@@ -787,6 +794,9 @@
 	{ DVB_USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_S2_R4,
 		&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-T2 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-T2 USB Stick T230C",
 		RC_MAP_TOTAL_MEDIA_IN_HAND_02) },

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

* Re: MyGica T230 dvb-t2 data corruption since commit 5fa8815
  2019-07-19 18:35 ` Jan Pieter van Woerkom
@ 2019-07-21 18:29   ` Sean Young
  2019-07-21 22:03     ` JP
  2019-08-02 12:00   ` James Hutchinson
  1 sibling, 1 reply; 18+ messages in thread
From: Sean Young @ 2019-07-21 18:29 UTC (permalink / raw)
  To: Jan Pieter van Woerkom
  Cc: James Hutchinson, Antti Palosaari, linux-media, Thomas Hollstegge

On Fri, Jul 19, 2019 at 08:35:42PM +0200, Jan Pieter van Woerkom wrote:
> dvbsky: add MyGica T230.
> Moved from cxusb driver as that driver can't handle FX2 FIFO issue.

Well then it should be deleted from the cxusb driver. Also how well
is this tested?

Thanks
Sean

> 
> Signed-off-by: Jan Pieter van Woerkom <jp@jpvw.nl>
> ---
> 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-07-08 00:41:56.000000000 +0200
> +++ b/drivers/media/usb/dvb-usb-v2/dvbsky.c	2019-07-19 17:50:54.671341146 +0200
> @@ -561,11 +561,18 @@
>  
>  	/* attach tuner */
>  	si2157_config.fe = adap->fe[0];
> -	si2157_config.if_port = 0;
> -
> -	state->i2c_client_tuner = dvb_module_probe("si2157", "si2141",
> +	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,
> +						   i2c_adapter,
> +						   0x60, &si2157_config);
> +	}
> +	else {
> +		si2157_config.if_port = 0;
> +		state->i2c_client_tuner = dvb_module_probe("si2157", "si2141",
>  						   i2c_adapter,
>  						   0x60, &si2157_config);
> +	}
>  	if (!state->i2c_client_tuner) {
>  		dvb_module_release(state->i2c_client_demod);
>  		return -ENODEV;
> @@ -787,6 +794,9 @@
>  	{ DVB_USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_S2_R4,
>  		&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-T2 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-T2 USB Stick T230C",
>  		RC_MAP_TOTAL_MEDIA_IN_HAND_02) },

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

* Re: MyGica T230 dvb-t2 data corruption since commit 5fa8815
  2019-07-21 18:29   ` Sean Young
@ 2019-07-21 22:03     ` JP
       [not found]       ` <CAD+OKUre40kQiucuryJC0uYrvBSqL5M=pAkmi7QxgOoKUWt0bg@mail.gmail.com>
  0 siblings, 1 reply; 18+ messages in thread
From: JP @ 2019-07-21 22:03 UTC (permalink / raw)
  To: Sean Young
  Cc: James Hutchinson, Antti Palosaari, linux-media, Thomas Hollstegge

Hi Sean,

On 7/21/19 8:29 PM, Sean Young wrote:
> On Fri, Jul 19, 2019 at 08:35:42PM +0200, Jan Pieter van Woerkom wrote:
>> dvbsky: add MyGica T230.
>> Moved from cxusb driver as that driver can't handle FX2 FIFO issue.
> Well then it should be deleted from the cxusb driver. Also how well
> is this tested?
I'm watching DVB-T2 TV now  with this for a couple of days
and see no problems. Will test on DVB-C coming week.
James will also test coming week.

The driver in cxusb crashes the kernel when I remove the
stick while running. That is gone with this. I needed that.
Another advantage is one can switch off the RC. I needed
that too. And almost all code was already in dvbsky.

Yep it should be deleted from cxusb. I now blacklist that
module while testing.
> Thanks
> Sean
>
Thank you,
Jan Pieter.

>> Signed-off-by: Jan Pieter van Woerkom <jp@jpvw.nl>
>> ---
>> 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-07-08 00:41:56.000000000 +0200
>> +++ b/drivers/media/usb/dvb-usb-v2/dvbsky.c	2019-07-19 17:50:54.671341146 +0200
>> @@ -561,11 +561,18 @@
>>   
>>   	/* attach tuner */
>>   	si2157_config.fe = adap->fe[0];
>> -	si2157_config.if_port = 0;
>> -
>> -	state->i2c_client_tuner = dvb_module_probe("si2157", "si2141",
>> +	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,
>> +						   i2c_adapter,
>> +						   0x60, &si2157_config);
>> +	}
>> +	else {
>> +		si2157_config.if_port = 0;
>> +		state->i2c_client_tuner = dvb_module_probe("si2157", "si2141",
>>   						   i2c_adapter,
>>   						   0x60, &si2157_config);
>> +	}
>>   	if (!state->i2c_client_tuner) {
>>   		dvb_module_release(state->i2c_client_demod);
>>   		return -ENODEV;
>> @@ -787,6 +794,9 @@
>>   	{ DVB_USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_S2_R4,
>>   		&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-T2 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-T2 USB Stick T230C",
>>   		RC_MAP_TOTAL_MEDIA_IN_HAND_02) },


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

* Re: MyGica T230 dvb-t2 data corruption since commit 5fa8815
       [not found]           ` <CAD+OKUr-f_a8dcPVp24d4wPhRAE80tf10_kt5s3_WvVmfWu9JQ@mail.gmail.com>
@ 2019-07-22 16:22             ` Jan Pieter van Woerkom
  2019-07-23 16:02               ` James Hutchinson
  0 siblings, 1 reply; 18+ messages in thread
From: Jan Pieter van Woerkom @ 2019-07-22 16:22 UTC (permalink / raw)
  To: James Hutchinson; +Cc: Antti Palosaari, Sean Young, linux-media

remove t230 from cxusb

Signed-off-by: Jan Pieter van Woerkom <jp@jpvw.nl>
---
diff -ru a/drivers/media/usb/dvb-usb/cxusb.c b/drivers/media/usb/dvb-usb/cxusb.c
--- a/drivers/media/usb/dvb-usb/cxusb.c	2019-07-08 00:41:56.000000000 +0200
+++ b/drivers/media/usb/dvb-usb/cxusb.c	2019-07-22 17:34:51.550698820 +0200
@@ -369,26 +369,6 @@
 	return 0;
 }
 
-static int cxusb_read_status(struct dvb_frontend *fe,
-				  enum fe_status *status)
-{
-	struct dvb_usb_adapter *adap = (struct dvb_usb_adapter *)fe->dvb->priv;
-	struct cxusb_state *state = (struct cxusb_state *)adap->dev->priv;
-	int ret;
-
-	ret = state->fe_read_status(fe, status);
-
-	/* it need resync slave fifo when signal change from unlock to lock.*/
-	if ((*status & FE_HAS_LOCK) && (!state->last_lock)) {
-		mutex_lock(&state->stream_mutex);
-		cxusb_streaming_ctrl(adap, 1);
-		mutex_unlock(&state->stream_mutex);
-	}
-
-	state->last_lock = (*status & FE_HAS_LOCK) ? 1 : 0;
-	return ret;
-}
-
 static void cxusb_d680_dmb_drain_message(struct dvb_usb_device *d)
 {
 	int       ep = d->props.generic_bulk_ctrl_endpoint;
@@ -1164,83 +1144,6 @@
 	return 0;
 }
 
-static int cxusb_mygica_t230_frontend_attach(struct dvb_usb_adapter *adap)
-{
-	struct dvb_usb_device *d = adap->dev;
-	struct cxusb_state *st = d->priv;
-	struct i2c_adapter *adapter;
-	struct i2c_client *client_demod;
-	struct i2c_client *client_tuner;
-	struct i2c_board_info info;
-	struct si2168_config si2168_config;
-	struct si2157_config si2157_config;
-
-	/* Select required USB configuration */
-	if (usb_set_interface(d->udev, 0, 0) < 0)
-		err("set interface failed");
-
-	/* Unblock all USB pipes */
-	usb_clear_halt(d->udev,
-		usb_sndbulkpipe(d->udev, d->props.generic_bulk_ctrl_endpoint));
-	usb_clear_halt(d->udev,
-		usb_rcvbulkpipe(d->udev, d->props.generic_bulk_ctrl_endpoint));
-	usb_clear_halt(d->udev,
-		usb_rcvbulkpipe(d->udev, d->props.adapter[0].fe[0].stream.endpoint));
-
-	/* attach frontend */
-	si2168_config.i2c_adapter = &adapter;
-	si2168_config.fe = &adap->fe_adap[0].fe;
-	si2168_config.ts_mode = SI2168_TS_PARALLEL;
-	si2168_config.ts_clock_inv = 1;
-	memset(&info, 0, sizeof(struct i2c_board_info));
-	strscpy(info.type, "si2168", I2C_NAME_SIZE);
-	info.addr = 0x64;
-	info.platform_data = &si2168_config;
-	request_module(info.type);
-	client_demod = i2c_new_device(&d->i2c_adap, &info);
-	if (client_demod == NULL || client_demod->dev.driver == NULL)
-		return -ENODEV;
-
-	if (!try_module_get(client_demod->dev.driver->owner)) {
-		i2c_unregister_device(client_demod);
-		return -ENODEV;
-	}
-
-	st->i2c_client_demod = client_demod;
-
-	/* attach tuner */
-	memset(&si2157_config, 0, sizeof(si2157_config));
-	si2157_config.fe = adap->fe_adap[0].fe;
-	si2157_config.if_port = 1;
-	memset(&info, 0, sizeof(struct i2c_board_info));
-	strscpy(info.type, "si2157", I2C_NAME_SIZE);
-	info.addr = 0x60;
-	info.platform_data = &si2157_config;
-	request_module(info.type);
-	client_tuner = i2c_new_device(adapter, &info);
-	if (client_tuner == NULL || client_tuner->dev.driver == NULL) {
-		module_put(client_demod->dev.driver->owner);
-		i2c_unregister_device(client_demod);
-		return -ENODEV;
-	}
-	if (!try_module_get(client_tuner->dev.driver->owner)) {
-		i2c_unregister_device(client_tuner);
-		module_put(client_demod->dev.driver->owner);
-		i2c_unregister_device(client_demod);
-		return -ENODEV;
-	}
-
-	st->i2c_client_tuner = client_tuner;
-
-	/* hook fe: need to resync the slave fifo when signal locks. */
-	mutex_init(&st->stream_mutex);
-	st->last_lock = 0;
-	st->fe_read_status = adap->fe_adap[0].fe->ops.read_status;
-	adap->fe_adap[0].fe->ops.read_status = cxusb_read_status;
-
-	return 0;
-}
-
 /*
  * DViCO has shipped two devices with the same USB ID, but only one of them
  * needs a firmware download.  Check the device class details to see if they
@@ -1322,7 +1225,6 @@
 static struct dvb_usb_device_properties cxusb_aver_a868r_properties;
 static struct dvb_usb_device_properties cxusb_d680_dmb_properties;
 static struct dvb_usb_device_properties cxusb_mygica_d689_properties;
-static struct dvb_usb_device_properties cxusb_mygica_t230_properties;
 
 static int cxusb_probe(struct usb_interface *intf,
 		       const struct usb_device_id *id)
@@ -1353,8 +1255,6 @@
 				     THIS_MODULE, NULL, adapter_nr) ||
 	    0 == dvb_usb_device_init(intf, &cxusb_mygica_d689_properties,
 				     THIS_MODULE, NULL, adapter_nr) ||
-	    0 == dvb_usb_device_init(intf, &cxusb_mygica_t230_properties,
-				     THIS_MODULE, NULL, adapter_nr) ||
 	    0)
 		return 0;
 
@@ -1405,7 +1305,6 @@
 	DVICO_BLUEBIRD_DUAL_4_REV_2,
 	CONEXANT_D680_DMB,
 	MYGICA_D689,
-	MYGICA_T230,
 	NR__cxusb_table_index
 };
 
@@ -1470,9 +1369,6 @@
 	[MYGICA_D689] = {
 		USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_D689)
 	},
-	[MYGICA_T230] = {
-		USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230)
-	},
 	{}		/* Terminating entry */
 };
 MODULE_DEVICE_TABLE (usb, cxusb_table);
@@ -2128,60 +2024,6 @@
 		},
 	}
 };
-
-static struct dvb_usb_device_properties cxusb_mygica_t230_properties = {
-	.caps = DVB_USB_IS_AN_I2C_ADAPTER,
-
-	.usb_ctrl         = CYPRESS_FX2,
-
-	.size_of_priv     = sizeof(struct cxusb_state),
-
-	.num_adapters = 1,
-	.adapter = {
-		{
-		.num_frontends = 1,
-		.fe = {{
-			.streaming_ctrl   = cxusb_streaming_ctrl,
-			.frontend_attach  = cxusb_mygica_t230_frontend_attach,
-
-			/* parameter for the MPEG2-data transfer */
-			.stream = {
-				.type = USB_BULK,
-				.count = 5,
-				.endpoint = 0x02,
-				.u = {
-					.bulk = {
-						.buffersize = 8192,
-					}
-				}
-			},
-		} },
-		},
-	},
-
-	.power_ctrl       = cxusb_d680_dmb_power_ctrl,
-
-	.i2c_algo         = &cxusb_i2c_algo,
-
-	.generic_bulk_ctrl_endpoint = 0x01,
-
-	.rc.core = {
-		.rc_interval	= 100,
-		.rc_codes	= RC_MAP_D680_DMB,
-		.module_name	= KBUILD_MODNAME,
-		.rc_query       = cxusb_d680_dmb_rc_query,
-		.allowed_protos = RC_PROTO_BIT_UNKNOWN,
-	},
-
-	.num_device_descs = 1,
-	.devices = {
-		{
-			"Mygica T230 DVB-T/T2/C",
-			{ NULL },
-			{ &cxusb_table[MYGICA_T230], NULL },
-		},
-	}
-};
 
 static struct usb_driver cxusb_driver = {
 	.name		= "dvb_usb_cxusb",

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

* Re: MyGica T230 dvb-t2 data corruption since commit 5fa8815
  2019-07-22 16:22             ` Jan Pieter van Woerkom
@ 2019-07-23 16:02               ` James Hutchinson
  2019-08-02 11:58                 ` James Hutchinson
  0 siblings, 1 reply; 18+ messages in thread
From: James Hutchinson @ 2019-07-23 16:02 UTC (permalink / raw)
  To: Jan Pieter van Woerkom
  Cc: Antti Palosaari, Sean Young, linux-media, thomas.hollstegge

Hi Jan,

My initial testing of your two patches to move the T230 to the dvbsky
module looks good so far.

I'm testing on an 8th Gen NUC (8i3BEH) 16GB RAM, 2 x MyGica T230 T2
USB tuners, and 2 x DVBSky S960 S2 tuners.

This machine is running Debian stretch with the Debian 4.19.37
backport kernel (incl. your two patches to move the T230 to the dvbsky
module).

I have a test script that performs 200x consecutive tvheadend network scans...
This was executed against the UK Freeview network (6 muxes) =~1,200
tuning requests. This took a couple of hours, but not a single
checksum error.

I moved onto streaming various channels and didn't have any problems
so far. I only noted a couple of minor picture disturbances
(continuity counter errors) when i tried to record two HD channels
whilst watching a 3rd on the same mux. I'm not sure whether this was
pushing things too far, and would like to carry out similar tests on a
known working 4.9.x kernel.

I'll do more testing over the next couple of weeks and report back.

Also adding Thomas who has the same issue with the T230 tuner and
bisected to issue to the same problematic commit as me.

Regards,
James.



On Mon, 22 Jul 2019 at 17:22, Jan Pieter van Woerkom <jp@jpvw.nl> wrote:
>
> remove t230 from cxusb
>
> Signed-off-by: Jan Pieter van Woerkom <jp@jpvw.nl>
> ---
> diff -ru a/drivers/media/usb/dvb-usb/cxusb.c b/drivers/media/usb/dvb-usb/cxusb.c
> --- a/drivers/media/usb/dvb-usb/cxusb.c 2019-07-08 00:41:56.000000000 +0200
> +++ b/drivers/media/usb/dvb-usb/cxusb.c 2019-07-22 17:34:51.550698820 +0200
> @@ -369,26 +369,6 @@
>         return 0;
>  }
>
> -static int cxusb_read_status(struct dvb_frontend *fe,
> -                                 enum fe_status *status)
> -{
> -       struct dvb_usb_adapter *adap = (struct dvb_usb_adapter *)fe->dvb->priv;
> -       struct cxusb_state *state = (struct cxusb_state *)adap->dev->priv;
> -       int ret;
> -
> -       ret = state->fe_read_status(fe, status);
> -
> -       /* it need resync slave fifo when signal change from unlock to lock.*/
> -       if ((*status & FE_HAS_LOCK) && (!state->last_lock)) {
> -               mutex_lock(&state->stream_mutex);
> -               cxusb_streaming_ctrl(adap, 1);
> -               mutex_unlock(&state->stream_mutex);
> -       }
> -
> -       state->last_lock = (*status & FE_HAS_LOCK) ? 1 : 0;
> -       return ret;
> -}
> -
>  static void cxusb_d680_dmb_drain_message(struct dvb_usb_device *d)
>  {
>         int       ep = d->props.generic_bulk_ctrl_endpoint;
> @@ -1164,83 +1144,6 @@
>         return 0;
>  }
>
> -static int cxusb_mygica_t230_frontend_attach(struct dvb_usb_adapter *adap)
> -{
> -       struct dvb_usb_device *d = adap->dev;
> -       struct cxusb_state *st = d->priv;
> -       struct i2c_adapter *adapter;
> -       struct i2c_client *client_demod;
> -       struct i2c_client *client_tuner;
> -       struct i2c_board_info info;
> -       struct si2168_config si2168_config;
> -       struct si2157_config si2157_config;
> -
> -       /* Select required USB configuration */
> -       if (usb_set_interface(d->udev, 0, 0) < 0)
> -               err("set interface failed");
> -
> -       /* Unblock all USB pipes */
> -       usb_clear_halt(d->udev,
> -               usb_sndbulkpipe(d->udev, d->props.generic_bulk_ctrl_endpoint));
> -       usb_clear_halt(d->udev,
> -               usb_rcvbulkpipe(d->udev, d->props.generic_bulk_ctrl_endpoint));
> -       usb_clear_halt(d->udev,
> -               usb_rcvbulkpipe(d->udev, d->props.adapter[0].fe[0].stream.endpoint));
> -
> -       /* attach frontend */
> -       si2168_config.i2c_adapter = &adapter;
> -       si2168_config.fe = &adap->fe_adap[0].fe;
> -       si2168_config.ts_mode = SI2168_TS_PARALLEL;
> -       si2168_config.ts_clock_inv = 1;
> -       memset(&info, 0, sizeof(struct i2c_board_info));
> -       strscpy(info.type, "si2168", I2C_NAME_SIZE);
> -       info.addr = 0x64;
> -       info.platform_data = &si2168_config;
> -       request_module(info.type);
> -       client_demod = i2c_new_device(&d->i2c_adap, &info);
> -       if (client_demod == NULL || client_demod->dev.driver == NULL)
> -               return -ENODEV;
> -
> -       if (!try_module_get(client_demod->dev.driver->owner)) {
> -               i2c_unregister_device(client_demod);
> -               return -ENODEV;
> -       }
> -
> -       st->i2c_client_demod = client_demod;
> -
> -       /* attach tuner */
> -       memset(&si2157_config, 0, sizeof(si2157_config));
> -       si2157_config.fe = adap->fe_adap[0].fe;
> -       si2157_config.if_port = 1;
> -       memset(&info, 0, sizeof(struct i2c_board_info));
> -       strscpy(info.type, "si2157", I2C_NAME_SIZE);
> -       info.addr = 0x60;
> -       info.platform_data = &si2157_config;
> -       request_module(info.type);
> -       client_tuner = i2c_new_device(adapter, &info);
> -       if (client_tuner == NULL || client_tuner->dev.driver == NULL) {
> -               module_put(client_demod->dev.driver->owner);
> -               i2c_unregister_device(client_demod);
> -               return -ENODEV;
> -       }
> -       if (!try_module_get(client_tuner->dev.driver->owner)) {
> -               i2c_unregister_device(client_tuner);
> -               module_put(client_demod->dev.driver->owner);
> -               i2c_unregister_device(client_demod);
> -               return -ENODEV;
> -       }
> -
> -       st->i2c_client_tuner = client_tuner;
> -
> -       /* hook fe: need to resync the slave fifo when signal locks. */
> -       mutex_init(&st->stream_mutex);
> -       st->last_lock = 0;
> -       st->fe_read_status = adap->fe_adap[0].fe->ops.read_status;
> -       adap->fe_adap[0].fe->ops.read_status = cxusb_read_status;
> -
> -       return 0;
> -}
> -
>  /*
>   * DViCO has shipped two devices with the same USB ID, but only one of them
>   * needs a firmware download.  Check the device class details to see if they
> @@ -1322,7 +1225,6 @@
>  static struct dvb_usb_device_properties cxusb_aver_a868r_properties;
>  static struct dvb_usb_device_properties cxusb_d680_dmb_properties;
>  static struct dvb_usb_device_properties cxusb_mygica_d689_properties;
> -static struct dvb_usb_device_properties cxusb_mygica_t230_properties;
>
>  static int cxusb_probe(struct usb_interface *intf,
>                        const struct usb_device_id *id)
> @@ -1353,8 +1255,6 @@
>                                      THIS_MODULE, NULL, adapter_nr) ||
>             0 == dvb_usb_device_init(intf, &cxusb_mygica_d689_properties,
>                                      THIS_MODULE, NULL, adapter_nr) ||
> -           0 == dvb_usb_device_init(intf, &cxusb_mygica_t230_properties,
> -                                    THIS_MODULE, NULL, adapter_nr) ||
>             0)
>                 return 0;
>
> @@ -1405,7 +1305,6 @@
>         DVICO_BLUEBIRD_DUAL_4_REV_2,
>         CONEXANT_D680_DMB,
>         MYGICA_D689,
> -       MYGICA_T230,
>         NR__cxusb_table_index
>  };
>
> @@ -1470,9 +1369,6 @@
>         [MYGICA_D689] = {
>                 USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_D689)
>         },
> -       [MYGICA_T230] = {
> -               USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230)
> -       },
>         {}              /* Terminating entry */
>  };
>  MODULE_DEVICE_TABLE (usb, cxusb_table);
> @@ -2128,60 +2024,6 @@
>                 },
>         }
>  };
> -
> -static struct dvb_usb_device_properties cxusb_mygica_t230_properties = {
> -       .caps = DVB_USB_IS_AN_I2C_ADAPTER,
> -
> -       .usb_ctrl         = CYPRESS_FX2,
> -
> -       .size_of_priv     = sizeof(struct cxusb_state),
> -
> -       .num_adapters = 1,
> -       .adapter = {
> -               {
> -               .num_frontends = 1,
> -               .fe = {{
> -                       .streaming_ctrl   = cxusb_streaming_ctrl,
> -                       .frontend_attach  = cxusb_mygica_t230_frontend_attach,
> -
> -                       /* parameter for the MPEG2-data transfer */
> -                       .stream = {
> -                               .type = USB_BULK,
> -                               .count = 5,
> -                               .endpoint = 0x02,
> -                               .u = {
> -                                       .bulk = {
> -                                               .buffersize = 8192,
> -                                       }
> -                               }
> -                       },
> -               } },
> -               },
> -       },
> -
> -       .power_ctrl       = cxusb_d680_dmb_power_ctrl,
> -
> -       .i2c_algo         = &cxusb_i2c_algo,
> -
> -       .generic_bulk_ctrl_endpoint = 0x01,
> -
> -       .rc.core = {
> -               .rc_interval    = 100,
> -               .rc_codes       = RC_MAP_D680_DMB,
> -               .module_name    = KBUILD_MODNAME,
> -               .rc_query       = cxusb_d680_dmb_rc_query,
> -               .allowed_protos = RC_PROTO_BIT_UNKNOWN,
> -       },
> -
> -       .num_device_descs = 1,
> -       .devices = {
> -               {
> -                       "Mygica T230 DVB-T/T2/C",
> -                       { NULL },
> -                       { &cxusb_table[MYGICA_T230], NULL },
> -               },
> -       }
> -};
>
>  static struct usb_driver cxusb_driver = {
>         .name           = "dvb_usb_cxusb",

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

* Re: MyGica T230 dvb-t2 data corruption since commit 5fa8815
  2019-07-23 16:02               ` James Hutchinson
@ 2019-08-02 11:58                 ` James Hutchinson
  0 siblings, 0 replies; 18+ messages in thread
From: James Hutchinson @ 2019-08-02 11:58 UTC (permalink / raw)
  To: Jan Pieter van Woerkom
  Cc: Antti Palosaari, Sean Young, linux-media, thomas.hollstegge

Hi Jan,

I've been running for a couple of weeks now with your two patches applied:

1) dvbsky: add MyGica T230
2) remove t230 from cxusb

Everything has been working perfectly - the checksum errors when
scanning muxes have gone, and streaming has been working nicely.

Tested-by: James Hutchinson <jahutchinson99@googlemail.com>

Regards,
James

On Tue, 23 Jul 2019 at 17:02, James Hutchinson
<jahutchinson99@googlemail.com> wrote:
>
> Hi Jan,
>
> My initial testing of your two patches to move the T230 to the dvbsky
> module looks good so far.
>
> I'm testing on an 8th Gen NUC (8i3BEH) 16GB RAM, 2 x MyGica T230 T2
> USB tuners, and 2 x DVBSky S960 S2 tuners.
>
> This machine is running Debian stretch with the Debian 4.19.37
> backport kernel (incl. your two patches to move the T230 to the dvbsky
> module).
>
> I have a test script that performs 200x consecutive tvheadend network scans...
> This was executed against the UK Freeview network (6 muxes) =~1,200
> tuning requests. This took a couple of hours, but not a single
> checksum error.
>
> I moved onto streaming various channels and didn't have any problems
> so far. I only noted a couple of minor picture disturbances
> (continuity counter errors) when i tried to record two HD channels
> whilst watching a 3rd on the same mux. I'm not sure whether this was
> pushing things too far, and would like to carry out similar tests on a
> known working 4.9.x kernel.
>
> I'll do more testing over the next couple of weeks and report back.
>
> Also adding Thomas who has the same issue with the T230 tuner and
> bisected to issue to the same problematic commit as me.
>
> Regards,
> James.
>
>
>
> On Mon, 22 Jul 2019 at 17:22, Jan Pieter van Woerkom <jp@jpvw.nl> wrote:
> >
> > remove t230 from cxusb
> >
> > Signed-off-by: Jan Pieter van Woerkom <jp@jpvw.nl>
> > ---
> > diff -ru a/drivers/media/usb/dvb-usb/cxusb.c b/drivers/media/usb/dvb-usb/cxusb.c
> > --- a/drivers/media/usb/dvb-usb/cxusb.c 2019-07-08 00:41:56.000000000 +0200
> > +++ b/drivers/media/usb/dvb-usb/cxusb.c 2019-07-22 17:34:51.550698820 +0200
> > @@ -369,26 +369,6 @@
> >         return 0;
> >  }
> >
> > -static int cxusb_read_status(struct dvb_frontend *fe,
> > -                                 enum fe_status *status)
> > -{
> > -       struct dvb_usb_adapter *adap = (struct dvb_usb_adapter *)fe->dvb->priv;
> > -       struct cxusb_state *state = (struct cxusb_state *)adap->dev->priv;
> > -       int ret;
> > -
> > -       ret = state->fe_read_status(fe, status);
> > -
> > -       /* it need resync slave fifo when signal change from unlock to lock.*/
> > -       if ((*status & FE_HAS_LOCK) && (!state->last_lock)) {
> > -               mutex_lock(&state->stream_mutex);
> > -               cxusb_streaming_ctrl(adap, 1);
> > -               mutex_unlock(&state->stream_mutex);
> > -       }
> > -
> > -       state->last_lock = (*status & FE_HAS_LOCK) ? 1 : 0;
> > -       return ret;
> > -}
> > -
> >  static void cxusb_d680_dmb_drain_message(struct dvb_usb_device *d)
> >  {
> >         int       ep = d->props.generic_bulk_ctrl_endpoint;
> > @@ -1164,83 +1144,6 @@
> >         return 0;
> >  }
> >
> > -static int cxusb_mygica_t230_frontend_attach(struct dvb_usb_adapter *adap)
> > -{
> > -       struct dvb_usb_device *d = adap->dev;
> > -       struct cxusb_state *st = d->priv;
> > -       struct i2c_adapter *adapter;
> > -       struct i2c_client *client_demod;
> > -       struct i2c_client *client_tuner;
> > -       struct i2c_board_info info;
> > -       struct si2168_config si2168_config;
> > -       struct si2157_config si2157_config;
> > -
> > -       /* Select required USB configuration */
> > -       if (usb_set_interface(d->udev, 0, 0) < 0)
> > -               err("set interface failed");
> > -
> > -       /* Unblock all USB pipes */
> > -       usb_clear_halt(d->udev,
> > -               usb_sndbulkpipe(d->udev, d->props.generic_bulk_ctrl_endpoint));
> > -       usb_clear_halt(d->udev,
> > -               usb_rcvbulkpipe(d->udev, d->props.generic_bulk_ctrl_endpoint));
> > -       usb_clear_halt(d->udev,
> > -               usb_rcvbulkpipe(d->udev, d->props.adapter[0].fe[0].stream.endpoint));
> > -
> > -       /* attach frontend */
> > -       si2168_config.i2c_adapter = &adapter;
> > -       si2168_config.fe = &adap->fe_adap[0].fe;
> > -       si2168_config.ts_mode = SI2168_TS_PARALLEL;
> > -       si2168_config.ts_clock_inv = 1;
> > -       memset(&info, 0, sizeof(struct i2c_board_info));
> > -       strscpy(info.type, "si2168", I2C_NAME_SIZE);
> > -       info.addr = 0x64;
> > -       info.platform_data = &si2168_config;
> > -       request_module(info.type);
> > -       client_demod = i2c_new_device(&d->i2c_adap, &info);
> > -       if (client_demod == NULL || client_demod->dev.driver == NULL)
> > -               return -ENODEV;
> > -
> > -       if (!try_module_get(client_demod->dev.driver->owner)) {
> > -               i2c_unregister_device(client_demod);
> > -               return -ENODEV;
> > -       }
> > -
> > -       st->i2c_client_demod = client_demod;
> > -
> > -       /* attach tuner */
> > -       memset(&si2157_config, 0, sizeof(si2157_config));
> > -       si2157_config.fe = adap->fe_adap[0].fe;
> > -       si2157_config.if_port = 1;
> > -       memset(&info, 0, sizeof(struct i2c_board_info));
> > -       strscpy(info.type, "si2157", I2C_NAME_SIZE);
> > -       info.addr = 0x60;
> > -       info.platform_data = &si2157_config;
> > -       request_module(info.type);
> > -       client_tuner = i2c_new_device(adapter, &info);
> > -       if (client_tuner == NULL || client_tuner->dev.driver == NULL) {
> > -               module_put(client_demod->dev.driver->owner);
> > -               i2c_unregister_device(client_demod);
> > -               return -ENODEV;
> > -       }
> > -       if (!try_module_get(client_tuner->dev.driver->owner)) {
> > -               i2c_unregister_device(client_tuner);
> > -               module_put(client_demod->dev.driver->owner);
> > -               i2c_unregister_device(client_demod);
> > -               return -ENODEV;
> > -       }
> > -
> > -       st->i2c_client_tuner = client_tuner;
> > -
> > -       /* hook fe: need to resync the slave fifo when signal locks. */
> > -       mutex_init(&st->stream_mutex);
> > -       st->last_lock = 0;
> > -       st->fe_read_status = adap->fe_adap[0].fe->ops.read_status;
> > -       adap->fe_adap[0].fe->ops.read_status = cxusb_read_status;
> > -
> > -       return 0;
> > -}
> > -
> >  /*
> >   * DViCO has shipped two devices with the same USB ID, but only one of them
> >   * needs a firmware download.  Check the device class details to see if they
> > @@ -1322,7 +1225,6 @@
> >  static struct dvb_usb_device_properties cxusb_aver_a868r_properties;
> >  static struct dvb_usb_device_properties cxusb_d680_dmb_properties;
> >  static struct dvb_usb_device_properties cxusb_mygica_d689_properties;
> > -static struct dvb_usb_device_properties cxusb_mygica_t230_properties;
> >
> >  static int cxusb_probe(struct usb_interface *intf,
> >                        const struct usb_device_id *id)
> > @@ -1353,8 +1255,6 @@
> >                                      THIS_MODULE, NULL, adapter_nr) ||
> >             0 == dvb_usb_device_init(intf, &cxusb_mygica_d689_properties,
> >                                      THIS_MODULE, NULL, adapter_nr) ||
> > -           0 == dvb_usb_device_init(intf, &cxusb_mygica_t230_properties,
> > -                                    THIS_MODULE, NULL, adapter_nr) ||
> >             0)
> >                 return 0;
> >
> > @@ -1405,7 +1305,6 @@
> >         DVICO_BLUEBIRD_DUAL_4_REV_2,
> >         CONEXANT_D680_DMB,
> >         MYGICA_D689,
> > -       MYGICA_T230,
> >         NR__cxusb_table_index
> >  };
> >
> > @@ -1470,9 +1369,6 @@
> >         [MYGICA_D689] = {
> >                 USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_D689)
> >         },
> > -       [MYGICA_T230] = {
> > -               USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230)
> > -       },
> >         {}              /* Terminating entry */
> >  };
> >  MODULE_DEVICE_TABLE (usb, cxusb_table);
> > @@ -2128,60 +2024,6 @@
> >                 },
> >         }
> >  };
> > -
> > -static struct dvb_usb_device_properties cxusb_mygica_t230_properties = {
> > -       .caps = DVB_USB_IS_AN_I2C_ADAPTER,
> > -
> > -       .usb_ctrl         = CYPRESS_FX2,
> > -
> > -       .size_of_priv     = sizeof(struct cxusb_state),
> > -
> > -       .num_adapters = 1,
> > -       .adapter = {
> > -               {
> > -               .num_frontends = 1,
> > -               .fe = {{
> > -                       .streaming_ctrl   = cxusb_streaming_ctrl,
> > -                       .frontend_attach  = cxusb_mygica_t230_frontend_attach,
> > -
> > -                       /* parameter for the MPEG2-data transfer */
> > -                       .stream = {
> > -                               .type = USB_BULK,
> > -                               .count = 5,
> > -                               .endpoint = 0x02,
> > -                               .u = {
> > -                                       .bulk = {
> > -                                               .buffersize = 8192,
> > -                                       }
> > -                               }
> > -                       },
> > -               } },
> > -               },
> > -       },
> > -
> > -       .power_ctrl       = cxusb_d680_dmb_power_ctrl,
> > -
> > -       .i2c_algo         = &cxusb_i2c_algo,
> > -
> > -       .generic_bulk_ctrl_endpoint = 0x01,
> > -
> > -       .rc.core = {
> > -               .rc_interval    = 100,
> > -               .rc_codes       = RC_MAP_D680_DMB,
> > -               .module_name    = KBUILD_MODNAME,
> > -               .rc_query       = cxusb_d680_dmb_rc_query,
> > -               .allowed_protos = RC_PROTO_BIT_UNKNOWN,
> > -       },
> > -
> > -       .num_device_descs = 1,
> > -       .devices = {
> > -               {
> > -                       "Mygica T230 DVB-T/T2/C",
> > -                       { NULL },
> > -                       { &cxusb_table[MYGICA_T230], NULL },
> > -               },
> > -       }
> > -};
> >
> >  static struct usb_driver cxusb_driver = {
> >         .name           = "dvb_usb_cxusb",

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

* Re: MyGica T230 dvb-t2 data corruption since commit 5fa8815
  2019-07-19 18:35 ` Jan Pieter van Woerkom
  2019-07-21 18:29   ` Sean Young
@ 2019-08-02 12:00   ` James Hutchinson
  2019-08-13 13:46     ` JP
  1 sibling, 1 reply; 18+ messages in thread
From: James Hutchinson @ 2019-08-02 12:00 UTC (permalink / raw)
  To: Jan Pieter van Woerkom
  Cc: Antti Palosaari, Sean Young, linux-media, Thomas Hollstegge

Hi Jan,

I've been running for a couple of weeks now with your two patches applied:

1) dvbsky: add MyGica T230
2) remove t230 from cxusb

Everything has been working perfectly - the checksum errors when
scanning muxes have gone, and streaming has been working nicely.

Tested-by: James Hutchinson <jahutchinson99@googlemail.com>

Regards,
James

On Fri, 19 Jul 2019 at 19:35, Jan Pieter van Woerkom <jp@jpvw.nl> wrote:
>
> dvbsky: add MyGica T230.
> Moved from cxusb driver as that driver can't handle FX2 FIFO issue.
>
> Signed-off-by: Jan Pieter van Woerkom <jp@jpvw.nl>
> ---
> 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-07-08 00:41:56.000000000 +0200
> +++ b/drivers/media/usb/dvb-usb-v2/dvbsky.c     2019-07-19 17:50:54.671341146 +0200
> @@ -561,11 +561,18 @@
>
>         /* attach tuner */
>         si2157_config.fe = adap->fe[0];
> -       si2157_config.if_port = 0;
> -
> -       state->i2c_client_tuner = dvb_module_probe("si2157", "si2141",
> +       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,
> +                                                  i2c_adapter,
> +                                                  0x60, &si2157_config);
> +       }
> +       else {
> +               si2157_config.if_port = 0;
> +               state->i2c_client_tuner = dvb_module_probe("si2157", "si2141",
>                                                    i2c_adapter,
>                                                    0x60, &si2157_config);
> +       }
>         if (!state->i2c_client_tuner) {
>                 dvb_module_release(state->i2c_client_demod);
>                 return -ENODEV;
> @@ -787,6 +794,9 @@
>         { DVB_USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_S2_R4,
>                 &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-T2 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-T2 USB Stick T230C",
>                 RC_MAP_TOTAL_MEDIA_IN_HAND_02) },

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

* Re: MyGica T230 dvb-t2 data corruption since commit 5fa8815
  2019-08-02 12:00   ` James Hutchinson
@ 2019-08-13 13:46     ` JP
  2019-08-15 10:14       ` Sean Young
  2019-08-18 10:29       ` MyGica T230 dvb-t2 data corruption since commit 5fa8815 Sean Young
  0 siblings, 2 replies; 18+ messages in thread
From: JP @ 2019-08-13 13:46 UTC (permalink / raw)
  To: James Hutchinson
  Cc: Antti Palosaari, Sean Young, linux-media, Thomas Hollstegge

Thanks James, my tests on both DVB-T and DVB-C all went OK.

So, with the t230 driver in cxusb broken for one hw version of
the device and both hw versions now working fine in dvbsky &
the driver in cxusb does not crash itself anymore (did you test
that, James?) & everybody agrees I think this move to dvbsky
should be done.

Sean: some hunks from the 'remove from cxusb' patch won't
apply to linux-5.3 , because of the recent addition of the analogue
driver code to cxusb. So I now have 2 different 'remove from
cxusb'  patches. How do I proceed with that?

[one more remark below]

On 8/2/19 2:00 PM, James Hutchinson wrote:
> Hi Jan,
>
> I've been running for a couple of weeks now with your two patches applied:
>
> 1) dvbsky: add MyGica T230
> 2) remove t230 from cxusb
>
> Everything has been working perfectly - the checksum errors when
> scanning muxes have gone, and streaming has been working nicely.
>
> Tested-by: James Hutchinson <jahutchinson99@googlemail.com>
>
> Regards,
> James
>
> On Fri, 19 Jul 2019 at 19:35, Jan Pieter van Woerkom <jp@jpvw.nl> wrote:
>> dvbsky: add MyGica T230.
>> Moved from cxusb driver as that driver can't handle FX2 FIFO issue.
>>
>> Signed-off-by: Jan Pieter van Woerkom <jp@jpvw.nl>
>> ---
>> 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-07-08 00:41:56.000000000 +0200
>> +++ b/drivers/media/usb/dvb-usb-v2/dvbsky.c     2019-07-19 17:50:54.671341146 +0200
>> @@ -561,11 +561,18 @@
>>
>>          /* attach tuner */
>>          si2157_config.fe = adap->fe[0];
>> -       si2157_config.if_port = 0;
>> -
>> -       state->i2c_client_tuner = dvb_module_probe("si2157", "si2141",
>> +       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,
>> +                                                  i2c_adapter,
>> +                                                  0x60, &si2157_config);
>> +       }
>> +       else {
Coding style: those last 2 lines should be:
         } else {
>> +               si2157_config.if_port = 0;
>> +               state->i2c_client_tuner = dvb_module_probe("si2157", "si2141",
>>                                                     i2c_adapter,
>>                                                     0x60, &si2157_config);
>> +       }
>>          if (!state->i2c_client_tuner) {
>>                  dvb_module_release(state->i2c_client_demod);
>>                  return -ENODEV;
>> @@ -787,6 +794,9 @@
>>          { DVB_USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_S2_R4,
>>                  &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-T2 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-T2 USB Stick T230C",
>>                  RC_MAP_TOTAL_MEDIA_IN_HAND_02) },
Cheers,
Jan Pieter.

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

* Re: MyGica T230 dvb-t2 data corruption since commit 5fa8815
  2019-08-13 13:46     ` JP
@ 2019-08-15 10:14       ` Sean Young
  2019-08-15 16:34         ` [PATCH 0/2] media: dvb-usb: move T230 to dvbsky Jan Pieter van Woerkom
  2019-08-18 10:29       ` MyGica T230 dvb-t2 data corruption since commit 5fa8815 Sean Young
  1 sibling, 1 reply; 18+ messages in thread
From: Sean Young @ 2019-08-15 10:14 UTC (permalink / raw)
  To: JP; +Cc: James Hutchinson, Antti Palosaari, linux-media, Thomas Hollstegge

Hi JP,

On Tue, Aug 13, 2019 at 03:46:37PM +0200, JP wrote:
> Thanks James, my tests on both DVB-T and DVB-C all went OK.
> 
> So, with the t230 driver in cxusb broken for one hw version of
> the device and both hw versions now working fine in dvbsky &
> the driver in cxusb does not crash itself anymore (did you test
> that, James?) & everybody agrees I think this move to dvbsky
> should be done.
> 
> Sean: some hunks from the 'remove from cxusb' patch won't
> apply to linux-5.3 , because of the recent addition of the analogue
> driver code to cxusb. So I now have 2 different 'remove from
> cxusb'  patches. How do I proceed with that?

Would it be possible to submit new patches which apply? The testing
is great (thanks James!) so should be good for v5.4 if we have
patches on time.

Thanks,

Sean

> 
> [one more remark below]
> 
> On 8/2/19 2:00 PM, James Hutchinson wrote:
> > Hi Jan,
> > 
> > I've been running for a couple of weeks now with your two patches applied:
> > 
> > 1) dvbsky: add MyGica T230
> > 2) remove t230 from cxusb
> > 
> > Everything has been working perfectly - the checksum errors when
> > scanning muxes have gone, and streaming has been working nicely.
> > 
> > Tested-by: James Hutchinson <jahutchinson99@googlemail.com>
> > 
> > Regards,
> > James
> > 
> > On Fri, 19 Jul 2019 at 19:35, Jan Pieter van Woerkom <jp@jpvw.nl> wrote:
> > > dvbsky: add MyGica T230.
> > > Moved from cxusb driver as that driver can't handle FX2 FIFO issue.
> > > 
> > > Signed-off-by: Jan Pieter van Woerkom <jp@jpvw.nl>
> > > ---
> > > 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-07-08 00:41:56.000000000 +0200
> > > +++ b/drivers/media/usb/dvb-usb-v2/dvbsky.c     2019-07-19 17:50:54.671341146 +0200
> > > @@ -561,11 +561,18 @@
> > > 
> > >          /* attach tuner */
> > >          si2157_config.fe = adap->fe[0];
> > > -       si2157_config.if_port = 0;
> > > -
> > > -       state->i2c_client_tuner = dvb_module_probe("si2157", "si2141",
> > > +       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,
> > > +                                                  i2c_adapter,
> > > +                                                  0x60, &si2157_config);
> > > +       }
> > > +       else {
> Coding style: those last 2 lines should be:
>         } else {
> > > +               si2157_config.if_port = 0;
> > > +               state->i2c_client_tuner = dvb_module_probe("si2157", "si2141",
> > >                                                     i2c_adapter,
> > >                                                     0x60, &si2157_config);
> > > +       }
> > >          if (!state->i2c_client_tuner) {
> > >                  dvb_module_release(state->i2c_client_demod);
> > >                  return -ENODEV;
> > > @@ -787,6 +794,9 @@
> > >          { DVB_USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_S2_R4,
> > >                  &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-T2 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-T2 USB Stick T230C",
> > >                  RC_MAP_TOTAL_MEDIA_IN_HAND_02) },
> Cheers,
> Jan Pieter.

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

* [PATCH 0/2] media: dvb-usb: move T230 to dvbsky
  2019-08-15 10:14       ` Sean Young
@ 2019-08-15 16:34         ` Jan Pieter van Woerkom
  2019-08-15 16:37           ` [PATCH 1/2] " Jan Pieter van Woerkom
                             ` (2 more replies)
  0 siblings, 3 replies; 18+ messages in thread
From: Jan Pieter van Woerkom @ 2019-08-15 16:34 UTC (permalink / raw)
  To: Sean Young; +Cc: Antti Palosaari, Sean Young, linux-media, thomas.hollstegge

media: dvb-usb: move t230 driver from cxusb to dvbsky

This solves (amongst others) the 'T230 dvb-t2 data
corruption since commit 5fa8815' problem.

The 'remove from cxusb' patch has 2 versions: the a
version applies to linux-5.2 and earlier, the b version
applies to linux 5.3-rc4 (and possibly others). Use one
or the other.

Thank you very much! :-)

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

* Re: [PATCH 1/2] media: dvb-usb: move T230 to dvbsky
  2019-08-15 16:34         ` [PATCH 0/2] media: dvb-usb: move T230 to dvbsky Jan Pieter van Woerkom
@ 2019-08-15 16:37           ` " Jan Pieter van Woerkom
  2019-08-15 16:39           ` [PATCH 2a/2] " Jan Pieter van Woerkom
  2019-08-15 16:41           ` [PATCH 2b/2] " Jan Pieter van Woerkom
  2 siblings, 0 replies; 18+ messages in thread
From: Jan Pieter van Woerkom @ 2019-08-15 16:37 UTC (permalink / raw)
  To: Sean Young; +Cc: Antti Palosaari, Sean Young, linux-media, thomas.hollstegge

add t230 to dvbsky

Signed-off-by: Jan Pieter van Woerkom <jp@jpvw.nl>
Tested-by: James Hutchinson <jahutchinson99@googlemail.com>
---
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-07-08 00:41:56.000000000 +0200
+++ b/drivers/media/usb/dvb-usb-v2/dvbsky.c	2019-07-19 17:50:54.671341146 +0200
@@ -561,11 +561,18 @@
 
 	/* attach tuner */
 	si2157_config.fe = adap->fe[0];
-	si2157_config.if_port = 0;
-
-	state->i2c_client_tuner = dvb_module_probe("si2157", "si2141",
+	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,
+						   i2c_adapter,
+						   0x60, &si2157_config);
+	} else {
+		si2157_config.if_port = 0;
+		state->i2c_client_tuner = dvb_module_probe("si2157", "si2141",
 						   i2c_adapter,
 						   0x60, &si2157_config);
+	}
 	if (!state->i2c_client_tuner) {
 		dvb_module_release(state->i2c_client_demod);
 		return -ENODEV;
@@ -787,6 +794,9 @@
 	{ DVB_USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_S2_R4,
 		&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-T2 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-T2 USB Stick T230C",
 		RC_MAP_TOTAL_MEDIA_IN_HAND_02) },

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

* Re: [PATCH 2a/2] media: dvb-usb: move T230 to dvbsky
  2019-08-15 16:34         ` [PATCH 0/2] media: dvb-usb: move T230 to dvbsky Jan Pieter van Woerkom
  2019-08-15 16:37           ` [PATCH 1/2] " Jan Pieter van Woerkom
@ 2019-08-15 16:39           ` " Jan Pieter van Woerkom
  2019-08-15 16:41           ` [PATCH 2b/2] " Jan Pieter van Woerkom
  2 siblings, 0 replies; 18+ messages in thread
From: Jan Pieter van Woerkom @ 2019-08-15 16:39 UTC (permalink / raw)
  To: Sean Young; +Cc: Antti Palosaari, Sean Young, linux-media, thomas.hollstegge

remove t230 from cxusb (for linux <= 5.2)

Signed-off-by: Jan Pieter van Woerkom <jp@jpvw.nl>
Tested-by: James Hutchinson <jahutchinson99@googlemail.com>
---
diff -ru a/drivers/media/usb/dvb-usb/cxusb.c b/drivers/media/usb/dvb-usb/cxusb.c
--- a/drivers/media/usb/dvb-usb/cxusb.c	2019-07-08 00:41:56.000000000 +0200
+++ b/drivers/media/usb/dvb-usb/cxusb.c	2019-07-22 17:34:51.550698820 +0200
@@ -369,26 +369,6 @@
 	return 0;
 }
 
-static int cxusb_read_status(struct dvb_frontend *fe,
-				  enum fe_status *status)
-{
-	struct dvb_usb_adapter *adap = (struct dvb_usb_adapter *)fe->dvb->priv;
-	struct cxusb_state *state = (struct cxusb_state *)adap->dev->priv;
-	int ret;
-
-	ret = state->fe_read_status(fe, status);
-
-	/* it need resync slave fifo when signal change from unlock to lock.*/
-	if ((*status & FE_HAS_LOCK) && (!state->last_lock)) {
-		mutex_lock(&state->stream_mutex);
-		cxusb_streaming_ctrl(adap, 1);
-		mutex_unlock(&state->stream_mutex);
-	}
-
-	state->last_lock = (*status & FE_HAS_LOCK) ? 1 : 0;
-	return ret;
-}
-
 static void cxusb_d680_dmb_drain_message(struct dvb_usb_device *d)
 {
 	int       ep = d->props.generic_bulk_ctrl_endpoint;
@@ -1164,83 +1144,6 @@
 	return 0;
 }
 
-static int cxusb_mygica_t230_frontend_attach(struct dvb_usb_adapter *adap)
-{
-	struct dvb_usb_device *d = adap->dev;
-	struct cxusb_state *st = d->priv;
-	struct i2c_adapter *adapter;
-	struct i2c_client *client_demod;
-	struct i2c_client *client_tuner;
-	struct i2c_board_info info;
-	struct si2168_config si2168_config;
-	struct si2157_config si2157_config;
-
-	/* Select required USB configuration */
-	if (usb_set_interface(d->udev, 0, 0) < 0)
-		err("set interface failed");
-
-	/* Unblock all USB pipes */
-	usb_clear_halt(d->udev,
-		usb_sndbulkpipe(d->udev, d->props.generic_bulk_ctrl_endpoint));
-	usb_clear_halt(d->udev,
-		usb_rcvbulkpipe(d->udev, d->props.generic_bulk_ctrl_endpoint));
-	usb_clear_halt(d->udev,
-		usb_rcvbulkpipe(d->udev, d->props.adapter[0].fe[0].stream.endpoint));
-
-	/* attach frontend */
-	si2168_config.i2c_adapter = &adapter;
-	si2168_config.fe = &adap->fe_adap[0].fe;
-	si2168_config.ts_mode = SI2168_TS_PARALLEL;
-	si2168_config.ts_clock_inv = 1;
-	memset(&info, 0, sizeof(struct i2c_board_info));
-	strscpy(info.type, "si2168", I2C_NAME_SIZE);
-	info.addr = 0x64;
-	info.platform_data = &si2168_config;
-	request_module(info.type);
-	client_demod = i2c_new_device(&d->i2c_adap, &info);
-	if (client_demod == NULL || client_demod->dev.driver == NULL)
-		return -ENODEV;
-
-	if (!try_module_get(client_demod->dev.driver->owner)) {
-		i2c_unregister_device(client_demod);
-		return -ENODEV;
-	}
-
-	st->i2c_client_demod = client_demod;
-
-	/* attach tuner */
-	memset(&si2157_config, 0, sizeof(si2157_config));
-	si2157_config.fe = adap->fe_adap[0].fe;
-	si2157_config.if_port = 1;
-	memset(&info, 0, sizeof(struct i2c_board_info));
-	strscpy(info.type, "si2157", I2C_NAME_SIZE);
-	info.addr = 0x60;
-	info.platform_data = &si2157_config;
-	request_module(info.type);
-	client_tuner = i2c_new_device(adapter, &info);
-	if (client_tuner == NULL || client_tuner->dev.driver == NULL) {
-		module_put(client_demod->dev.driver->owner);
-		i2c_unregister_device(client_demod);
-		return -ENODEV;
-	}
-	if (!try_module_get(client_tuner->dev.driver->owner)) {
-		i2c_unregister_device(client_tuner);
-		module_put(client_demod->dev.driver->owner);
-		i2c_unregister_device(client_demod);
-		return -ENODEV;
-	}
-
-	st->i2c_client_tuner = client_tuner;
-
-	/* hook fe: need to resync the slave fifo when signal locks. */
-	mutex_init(&st->stream_mutex);
-	st->last_lock = 0;
-	st->fe_read_status = adap->fe_adap[0].fe->ops.read_status;
-	adap->fe_adap[0].fe->ops.read_status = cxusb_read_status;
-
-	return 0;
-}
-
 /*
  * DViCO has shipped two devices with the same USB ID, but only one of them
  * needs a firmware download.  Check the device class details to see if they
@@ -1322,7 +1225,6 @@
 static struct dvb_usb_device_properties cxusb_aver_a868r_properties;
 static struct dvb_usb_device_properties cxusb_d680_dmb_properties;
 static struct dvb_usb_device_properties cxusb_mygica_d689_properties;
-static struct dvb_usb_device_properties cxusb_mygica_t230_properties;
 
 static int cxusb_probe(struct usb_interface *intf,
 		       const struct usb_device_id *id)
@@ -1353,8 +1255,6 @@
 				     THIS_MODULE, NULL, adapter_nr) ||
 	    0 == dvb_usb_device_init(intf, &cxusb_mygica_d689_properties,
 				     THIS_MODULE, NULL, adapter_nr) ||
-	    0 == dvb_usb_device_init(intf, &cxusb_mygica_t230_properties,
-				     THIS_MODULE, NULL, adapter_nr) ||
 	    0)
 		return 0;
 
@@ -1405,7 +1305,6 @@
 	DVICO_BLUEBIRD_DUAL_4_REV_2,
 	CONEXANT_D680_DMB,
 	MYGICA_D689,
-	MYGICA_T230,
 	NR__cxusb_table_index
 };
 
@@ -1470,9 +1369,6 @@
 	[MYGICA_D689] = {
 		USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_D689)
 	},
-	[MYGICA_T230] = {
-		USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230)
-	},
 	{}		/* Terminating entry */
 };
 MODULE_DEVICE_TABLE (usb, cxusb_table);
@@ -2128,60 +2024,6 @@
 		},
 	}
 };
-
-static struct dvb_usb_device_properties cxusb_mygica_t230_properties = {
-	.caps = DVB_USB_IS_AN_I2C_ADAPTER,
-
-	.usb_ctrl         = CYPRESS_FX2,
-
-	.size_of_priv     = sizeof(struct cxusb_state),
-
-	.num_adapters = 1,
-	.adapter = {
-		{
-		.num_frontends = 1,
-		.fe = {{
-			.streaming_ctrl   = cxusb_streaming_ctrl,
-			.frontend_attach  = cxusb_mygica_t230_frontend_attach,
-
-			/* parameter for the MPEG2-data transfer */
-			.stream = {
-				.type = USB_BULK,
-				.count = 5,
-				.endpoint = 0x02,
-				.u = {
-					.bulk = {
-						.buffersize = 8192,
-					}
-				}
-			},
-		} },
-		},
-	},
-
-	.power_ctrl       = cxusb_d680_dmb_power_ctrl,
-
-	.i2c_algo         = &cxusb_i2c_algo,
-
-	.generic_bulk_ctrl_endpoint = 0x01,
-
-	.rc.core = {
-		.rc_interval	= 100,
-		.rc_codes	= RC_MAP_D680_DMB,
-		.module_name	= KBUILD_MODNAME,
-		.rc_query       = cxusb_d680_dmb_rc_query,
-		.allowed_protos = RC_PROTO_BIT_UNKNOWN,
-	},
-
-	.num_device_descs = 1,
-	.devices = {
-		{
-			"Mygica T230 DVB-T/T2/C",
-			{ NULL },
-			{ &cxusb_table[MYGICA_T230], NULL },
-		},
-	}
-};
 
 static struct usb_driver cxusb_driver = {
 	.name		= "dvb_usb_cxusb",

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

* Re: [PATCH 2b/2] media: dvb-usb: move T230 to dvbsky
  2019-08-15 16:34         ` [PATCH 0/2] media: dvb-usb: move T230 to dvbsky Jan Pieter van Woerkom
  2019-08-15 16:37           ` [PATCH 1/2] " Jan Pieter van Woerkom
  2019-08-15 16:39           ` [PATCH 2a/2] " Jan Pieter van Woerkom
@ 2019-08-15 16:41           ` " Jan Pieter van Woerkom
  2 siblings, 0 replies; 18+ messages in thread
From: Jan Pieter van Woerkom @ 2019-08-15 16:41 UTC (permalink / raw)
  To: Sean Young; +Cc: Antti Palosaari, Sean Young, linux-media, thomas.hollstegge

remove t230 from cxusb (for linux >= 5.3)

Signed-off-by: Jan Pieter van Woerkom <jp@jpvw.nl>
---
diff -ru a/drivers/media/usb/dvb-usb/cxusb.c b/drivers/media/usb/dvb-usb/cxusb.c
--- a/drivers/media/usb/dvb-usb/cxusb.c	2019-08-11 22:26:41.000000000 +0200
+++ b/drivers/media/usb/dvb-usb/cxusb.c	2019-08-13 03:13:48.496221952 +0200
@@ -78,7 +78,6 @@
 	DVICO_BLUEBIRD_DUAL_4_REV_2,
 	CONEXANT_D680_DMB,
 	MYGICA_D689,
-	MYGICA_T230,
 	NR__cxusb_table_index
 };
 
@@ -456,26 +455,6 @@
 	return 0;
 }
 
-static int cxusb_read_status(struct dvb_frontend *fe,
-			     enum fe_status *status)
-{
-	struct dvb_usb_adapter *adap = (struct dvb_usb_adapter *)fe->dvb->priv;
-	struct cxusb_state *state = (struct cxusb_state *)adap->dev->priv;
-	int ret;
-
-	ret = state->fe_read_status(fe, status);
-
-	/* it need resync slave fifo when signal change from unlock to lock.*/
-	if ((*status & FE_HAS_LOCK) && (!state->last_lock)) {
-		mutex_lock(&state->stream_mutex);
-		cxusb_streaming_ctrl(adap, 1);
-		mutex_unlock(&state->stream_mutex);
-	}
-
-	state->last_lock = (*status & FE_HAS_LOCK) ? 1 : 0;
-	return ret;
-}
-
 static void cxusb_d680_dmb_drain_message(struct dvb_usb_device *d)
 {
 	int       ep = d->props.generic_bulk_ctrl_endpoint;
@@ -1374,86 +1353,6 @@
 	return 0;
 }
 
-static int cxusb_mygica_t230_frontend_attach(struct dvb_usb_adapter *adap)
-{
-	struct dvb_usb_device *d = adap->dev;
-	struct cxusb_state *st = d->priv;
-	struct i2c_adapter *adapter;
-	struct i2c_client *client_demod;
-	struct i2c_client *client_tuner;
-	struct i2c_board_info info;
-	struct si2168_config si2168_config;
-	struct si2157_config si2157_config;
-
-	/* Select required USB configuration */
-	if (usb_set_interface(d->udev, 0, 0) < 0)
-		err("set interface failed");
-
-	/* Unblock all USB pipes */
-	usb_clear_halt(d->udev,
-		       usb_sndbulkpipe(d->udev,
-				       d->props.generic_bulk_ctrl_endpoint));
-	usb_clear_halt(d->udev,
-		       usb_rcvbulkpipe(d->udev,
-				       d->props.generic_bulk_ctrl_endpoint));
-	usb_clear_halt(d->udev,
-		       usb_rcvbulkpipe(d->udev,
-				       d->props.adapter[0].fe[0].stream.endpoint));
-
-	/* attach frontend */
-	si2168_config.i2c_adapter = &adapter;
-	si2168_config.fe = &adap->fe_adap[0].fe;
-	si2168_config.ts_mode = SI2168_TS_PARALLEL;
-	si2168_config.ts_clock_inv = 1;
-	memset(&info, 0, sizeof(struct i2c_board_info));
-	strscpy(info.type, "si2168", I2C_NAME_SIZE);
-	info.addr = 0x64;
-	info.platform_data = &si2168_config;
-	request_module(info.type);
-	client_demod = i2c_new_device(&d->i2c_adap, &info);
-	if (!client_demod || !client_demod->dev.driver)
-		return -ENODEV;
-
-	if (!try_module_get(client_demod->dev.driver->owner)) {
-		i2c_unregister_device(client_demod);
-		return -ENODEV;
-	}
-
-	st->i2c_client_demod = client_demod;
-
-	/* attach tuner */
-	memset(&si2157_config, 0, sizeof(si2157_config));
-	si2157_config.fe = adap->fe_adap[0].fe;
-	si2157_config.if_port = 1;
-	memset(&info, 0, sizeof(struct i2c_board_info));
-	strscpy(info.type, "si2157", I2C_NAME_SIZE);
-	info.addr = 0x60;
-	info.platform_data = &si2157_config;
-	request_module(info.type);
-	client_tuner = i2c_new_device(adapter, &info);
-	if (!client_tuner || !client_tuner->dev.driver) {
-		module_put(client_demod->dev.driver->owner);
-		i2c_unregister_device(client_demod);
-		return -ENODEV;
-	}
-	if (!try_module_get(client_tuner->dev.driver->owner)) {
-		i2c_unregister_device(client_tuner);
-		module_put(client_demod->dev.driver->owner);
-		i2c_unregister_device(client_demod);
-		return -ENODEV;
-	}
-
-	st->i2c_client_tuner = client_tuner;
-
-	/* hook fe: need to resync the slave fifo when signal locks. */
-	mutex_init(&st->stream_mutex);
-	st->last_lock = 0;
-	st->fe_read_status = adap->fe_adap[0].fe->ops.read_status;
-	adap->fe_adap[0].fe->ops.read_status = cxusb_read_status;
-
-	return 0;
-}
-
 /*
  * DViCO has shipped two devices with the same USB ID, but only one of them
  * needs a firmware download.  Check the device class details to see if they
@@ -1633,7 +1532,6 @@
 static struct dvb_usb_device_properties cxusb_aver_a868r_properties;
 static struct dvb_usb_device_properties cxusb_d680_dmb_properties;
 static struct dvb_usb_device_properties cxusb_mygica_d689_properties;
-static struct dvb_usb_device_properties cxusb_mygica_t230_properties;
 
 static int cxusb_medion_priv_init(struct dvb_usb_device *dvbdev)
 {
@@ -1759,8 +1657,6 @@
 					THIS_MODULE, NULL, adapter_nr) ||
 		   !dvb_usb_device_init(intf, &cxusb_mygica_d689_properties,
 					THIS_MODULE, NULL, adapter_nr) ||
-		   !dvb_usb_device_init(intf, &cxusb_mygica_t230_properties,
-					THIS_MODULE, NULL, adapter_nr) ||
 		   0)
 		return 0;
 
@@ -1862,9 +1758,6 @@
 	[MYGICA_D689] = {
 		USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_D689)
 	},
-	[MYGICA_T230] = {
-		USB_DEVICE(USB_VID_CONEXANT, USB_PID_MYGICA_T230)
-	},
 	{}		/* Terminating entry */
 };
 MODULE_DEVICE_TABLE(usb, cxusb_table);
@@ -2534,60 +2427,6 @@
 		},
 	}
 };
-
-static struct dvb_usb_device_properties cxusb_mygica_t230_properties = {
-	.caps = DVB_USB_IS_AN_I2C_ADAPTER,
-
-	.usb_ctrl         = CYPRESS_FX2,
-
-	.size_of_priv     = sizeof(struct cxusb_state),
-
-	.num_adapters = 1,
-	.adapter = {
-		{
-		.num_frontends = 1,
-		.fe = {{
-			.streaming_ctrl   = cxusb_streaming_ctrl,
-			.frontend_attach  = cxusb_mygica_t230_frontend_attach,
-
-			/* parameter for the MPEG2-data transfer */
-			.stream = {
-				.type = USB_BULK,
-				.count = 5,
-				.endpoint = 0x02,
-				.u = {
-					.bulk = {
-						.buffersize = 8192,
-					}
-				}
-			},
-		} },
-		},
-	},
-
-	.power_ctrl       = cxusb_d680_dmb_power_ctrl,
-
-	.i2c_algo         = &cxusb_i2c_algo,
-
-	.generic_bulk_ctrl_endpoint = 0x01,
-
-	.rc.core = {
-		.rc_interval	= 100,
-		.rc_codes	= RC_MAP_D680_DMB,
-		.module_name	= KBUILD_MODNAME,
-		.rc_query       = cxusb_d680_dmb_rc_query,
-		.allowed_protos = RC_PROTO_BIT_UNKNOWN,
-	},
-
-	.num_device_descs = 1,
-	.devices = {
-		{
-			"Mygica T230 DVB-T/T2/C",
-			{ NULL },
-			{ &cxusb_table[MYGICA_T230], NULL },
-		},
-	}
-};
 
 static struct usb_driver cxusb_driver = {
 	.name		= "dvb_usb_cxusb",

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

* Re: MyGica T230 dvb-t2 data corruption since commit 5fa8815
  2019-08-13 13:46     ` JP
  2019-08-15 10:14       ` Sean Young
@ 2019-08-18 10:29       ` Sean Young
  2019-08-20 19:25         ` JP
  1 sibling, 1 reply; 18+ messages in thread
From: Sean Young @ 2019-08-18 10:29 UTC (permalink / raw)
  To: JP; +Cc: James Hutchinson, Antti Palosaari, linux-media, Thomas Hollstegge

Hi JP, James,

On Tue, Aug 13, 2019 at 03:46:37PM +0200, JP wrote:
> Thanks James, my tests on both DVB-T and DVB-C all went OK.
> 
> So, with the t230 driver in cxusb broken for one hw version of
> the device and both hw versions now working fine in dvbsky &
> the driver in cxusb does not crash itself anymore (did you test
> that, James?) & everybody agrees I think this move to dvbsky
> should be done.

So I think the commmit message should say what the two hardware
revisions are and what the FX2 FIFO issue is exactly.

Would you be able to provide some words for the commit message
which says what the issue with the existing driver (FX2 FIFO,
anything else), what hardware revisions were tested (maybe what
they look like) and what was exactly tested (and for whole long).

Thanks

Sean


> Sean: some hunks from the 'remove from cxusb' patch won't
> apply to linux-5.3 , because of the recent addition of the analogue
> driver code to cxusb. So I now have 2 different 'remove from
> cxusb'  patches. How do I proceed with that?
> 
> [one more remark below]
> 
> On 8/2/19 2:00 PM, James Hutchinson wrote:
> > Hi Jan,
> > 
> > I've been running for a couple of weeks now with your two patches applied:
> > 
> > 1) dvbsky: add MyGica T230
> > 2) remove t230 from cxusb
> > 
> > Everything has been working perfectly - the checksum errors when
> > scanning muxes have gone, and streaming has been working nicely.
> > 
> > Tested-by: James Hutchinson <jahutchinson99@googlemail.com>
> > 
> > Regards,
> > James
> > 
> > On Fri, 19 Jul 2019 at 19:35, Jan Pieter van Woerkom <jp@jpvw.nl> wrote:
> > > dvbsky: add MyGica T230.
> > > Moved from cxusb driver as that driver can't handle FX2 FIFO issue.
> > > 
> > > Signed-off-by: Jan Pieter van Woerkom <jp@jpvw.nl>
> > > ---
> > > 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-07-08 00:41:56.000000000 +0200
> > > +++ b/drivers/media/usb/dvb-usb-v2/dvbsky.c     2019-07-19 17:50:54.671341146 +0200
> > > @@ -561,11 +561,18 @@
> > > 
> > >          /* attach tuner */
> > >          si2157_config.fe = adap->fe[0];
> > > -       si2157_config.if_port = 0;
> > > -
> > > -       state->i2c_client_tuner = dvb_module_probe("si2157", "si2141",
> > > +       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,
> > > +                                                  i2c_adapter,
> > > +                                                  0x60, &si2157_config);
> > > +       }
> > > +       else {
> Coding style: those last 2 lines should be:
>         } else {
> > > +               si2157_config.if_port = 0;
> > > +               state->i2c_client_tuner = dvb_module_probe("si2157", "si2141",
> > >                                                     i2c_adapter,
> > >                                                     0x60, &si2157_config);
> > > +       }
> > >          if (!state->i2c_client_tuner) {
> > >                  dvb_module_release(state->i2c_client_demod);
> > >                  return -ENODEV;
> > > @@ -787,6 +794,9 @@
> > >          { DVB_USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_S2_R4,
> > >                  &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-T2 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-T2 USB Stick T230C",
> > >                  RC_MAP_TOTAL_MEDIA_IN_HAND_02) },
> Cheers,
> Jan Pieter.

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

* Re: MyGica T230 dvb-t2 data corruption since commit 5fa8815
  2019-08-18 10:29       ` MyGica T230 dvb-t2 data corruption since commit 5fa8815 Sean Young
@ 2019-08-20 19:25         ` JP
  0 siblings, 0 replies; 18+ messages in thread
From: JP @ 2019-08-20 19:25 UTC (permalink / raw)
  To: Sean Young
  Cc: James Hutchinson, Antti Palosaari, linux-media, Thomas Hollstegge

Hoi Sean,

On 8/18/19 12:29 PM, Sean Young wrote:
> Hi JP, James,
>
> On Tue, Aug 13, 2019 at 03:46:37PM +0200, JP wrote:
>> Thanks James, my tests on both DVB-T and DVB-C all went OK.
>>
>> So, with the t230 driver in cxusb broken for one hw version of
>> the device and both hw versions now working fine in dvbsky &
>> the driver in cxusb does not crash itself anymore (did you test
>> that, James?) & everybody agrees I think this move to dvbsky
>> should be done.
> So I think the commmit message should say what the two hardware
> revisions are and what the FX2 FIFO issue is exactly.
There are no real different hw versions. My mistake.
There are simply some receiver units that needed the
FIFO fix, and some that did not. Most did not, and some
(maybe most or all) of them suffered like the 2 units
James has.

The issue was that after lock, the TS FIFO sometimes
got overrun and caused a TS error. With commit 5fa8815,
the FIF0 was resync'd after each lock. While this fixed the
driver for some units, it broke the driver for others.

> Would you be able to provide some words for the commit message
> which says what the issue with the existing driver (FX2 FIFO,
> anything else), what hardware revisions were tested (maybe what
> they look like) and what was exactly tested (and for whole long).
move Mygica T230 driver from cxusb to dvbsky

Fixes (kernel NULL pointer dereference) crash of the cxusb
driver when unit is unplugged live from it's USB port.
Adds module option to disable the RC.
Fixes buggy 'resync FIF0 after lock' streaming fix that broke
the driver for most receiver units.

Tested by patch author. DVB-T/T2/C scan and stream A/V
and data 24/7 without any problems on a production machine
for several weeks now.

Tested-by: James Hutchinson <jahutchinson99@googlemail.com>
"I've been running for a couple of weeks now"
"Everything has been working perfectly - the checksum errors when
scanning muxes have gone, and streaming has been working nicely."

> Thanks
>
> Sean
Thank you
Jan Pieter

>
>
>> Sean: some hunks from the 'remove from cxusb' patch won't
>> apply to linux-5.3 , because of the recent addition of the analogue
>> driver code to cxusb. So I now have 2 different 'remove from
>> cxusb'  patches. How do I proceed with that?
>>
>> [one more remark below]
>>
>> On 8/2/19 2:00 PM, James Hutchinson wrote:
>>> Hi Jan,
>>>
>>> I've been running for a couple of weeks now with your two patches applied:
>>>
>>> 1) dvbsky: add MyGica T230
>>> 2) remove t230 from cxusb
>>>
>>> Everything has been working perfectly - the checksum errors when
>>> scanning muxes have gone, and streaming has been working nicely.
>>>
>>> Tested-by: James Hutchinson <jahutchinson99@googlemail.com>
>>>
>>> Regards,
>>> James
>>>
>>> On Fri, 19 Jul 2019 at 19:35, Jan Pieter van Woerkom <jp@jpvw.nl> wrote:
>>>> dvbsky: add MyGica T230.
>>>> Moved from cxusb driver as that driver can't handle FX2 FIFO issue.
>>>>
>>>> Signed-off-by: Jan Pieter van Woerkom <jp@jpvw.nl>
>>>> ---
>>>> 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-07-08 00:41:56.000000000 +0200
>>>> +++ b/drivers/media/usb/dvb-usb-v2/dvbsky.c     2019-07-19 17:50:54.671341146 +0200
>>>> @@ -561,11 +561,18 @@
>>>>
>>>>           /* attach tuner */
>>>>           si2157_config.fe = adap->fe[0];
>>>> -       si2157_config.if_port = 0;
>>>> -
>>>> -       state->i2c_client_tuner = dvb_module_probe("si2157", "si2141",
>>>> +       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,
>>>> +                                                  i2c_adapter,
>>>> +                                                  0x60, &si2157_config);
>>>> +       }
>>>> +       else {
>> Coding style: those last 2 lines should be:
>>          } else {
>>>> +               si2157_config.if_port = 0;
>>>> +               state->i2c_client_tuner = dvb_module_probe("si2157", "si2141",
>>>>                                                      i2c_adapter,
>>>>                                                      0x60, &si2157_config);
>>>> +       }
>>>>           if (!state->i2c_client_tuner) {
>>>>                   dvb_module_release(state->i2c_client_demod);
>>>>                   return -ENODEV;
>>>> @@ -787,6 +794,9 @@
>>>>           { DVB_USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_S2_R4,
>>>>                   &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-T2 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-T2 USB Stick T230C",
>>>>                   RC_MAP_TOTAL_MEDIA_IN_HAND_02) },
>> Cheers,
>> Jan Pieter.


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

end of thread, back to index

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-17  7:44 MyGica T230 dvb-t2 data corruption since commit 5fa8815 James Hutchinson
2019-07-17 12:21 ` JP
2019-07-17 21:22 ` Thomas Hollstegge
2019-07-19 18:35 ` Jan Pieter van Woerkom
2019-07-21 18:29   ` Sean Young
2019-07-21 22:03     ` JP
     [not found]       ` <CAD+OKUre40kQiucuryJC0uYrvBSqL5M=pAkmi7QxgOoKUWt0bg@mail.gmail.com>
     [not found]         ` <70cb09ed-1ae4-6626-643d-c9e1c9ae47c6@jpvw.nl>
     [not found]           ` <CAD+OKUr-f_a8dcPVp24d4wPhRAE80tf10_kt5s3_WvVmfWu9JQ@mail.gmail.com>
2019-07-22 16:22             ` Jan Pieter van Woerkom
2019-07-23 16:02               ` James Hutchinson
2019-08-02 11:58                 ` James Hutchinson
2019-08-02 12:00   ` James Hutchinson
2019-08-13 13:46     ` JP
2019-08-15 10:14       ` Sean Young
2019-08-15 16:34         ` [PATCH 0/2] media: dvb-usb: move T230 to dvbsky Jan Pieter van Woerkom
2019-08-15 16:37           ` [PATCH 1/2] " Jan Pieter van Woerkom
2019-08-15 16:39           ` [PATCH 2a/2] " Jan Pieter van Woerkom
2019-08-15 16:41           ` [PATCH 2b/2] " Jan Pieter van Woerkom
2019-08-18 10:29       ` MyGica T230 dvb-t2 data corruption since commit 5fa8815 Sean Young
2019-08-20 19:25         ` JP

Linux-Media Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-media/0 linux-media/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-media linux-media/ https://lore.kernel.org/linux-media \
		linux-media@vger.kernel.org linux-media@archiver.kernel.org
	public-inbox-index linux-media


Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-media


AGPL code for this site: git clone https://public-inbox.org/ public-inbox