Re: [PATCH] [media] em28xx TerraTec Cinergy Hybrid T USB XS with demodulator MT352 is not detect by em28xx

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Em Fri, 23 Jun 2017 11:22:50 +0200
Hans Verkuil <hverkuil@xxxxxxxxx> escreveu:

> Hi Giovanni,
> 
> On 06/10/17 09:13, juvann@xxxxxxxxxxx wrote:
> > TerraTec Cinergy Hybrid T USB XS with demodulator MT352 stop working with kernel 3.xx and newer.
> > I have already sent this patch without a success reply, I hope this time you can accept it.
> > 
> > --- /usr/src/linux-3.14.3/drivers/media/usb/em28xx/em28xx-cards.c.orig   2014-05-06 16:59:58.000000000 +0200
> > +++ /usr/src/linux-3.14.3/drivers/media/usb/em28xx/em28xx-cards.c   2014-05-07 15:18:31.719524453 +0200
> > @@ -2233,7 +2233,7 @@
> >         { USB_DEVICE(0x0ccd, 0x005e),
> >                         .driver_info = EM2882_BOARD_TERRATEC_HYBRID_XS },
> >         { USB_DEVICE(0x0ccd, 0x0042),
> > -                       .driver_info = EM2882_BOARD_TERRATEC_HYBRID_XS },
> > +                       .driver_info = EM2880_BOARD_TERRATEC_HYBRID_XS },
> >         { USB_DEVICE(0x0ccd, 0x0043),
> >                         .driver_info = EM2870_BOARD_TERRATEC_XS },
> >         { USB_DEVICE(0x0ccd, 0x008e),   /* Cinergy HTC USB XS Rev. 1 */
> > 
> > This patch is working also on kernel 4.xx I have tested kernel 4.3 and 4.9  
> 
> I checked the commit that changed the original EM2880_BOARD_TERRATEC_HYBRID_XS
> to EM2882_BOARD_TERRATEC_HYBRID_XS and it says this:
> 
> commit 9124544320bd36d5aa21769d17a5781ba729aebf
> Author: Philippe Bourdin <richel@xxxxxxxxxxxxxx>
> Date:   Sun Oct 31 09:57:58 2010 -0300
> 
>     [media] Terratec Cinergy Hybrid T USB XS
> 
>     I found that the problems people have reported with the USB-TV-stick
>     "Terratec Cinergy Hybrid T USB XS" (USB-ID: 0ccd:0042)
>     are coming from a wrong header file in the v4l-sources.
> 
>     Attached is a diff, which fixes the problem (tested successfully here).
>     Obviously the USB-ID has been associated with a wrong chip: EM2880
>     instead of EM2882, which would be correct.
> 
>     Reported-by: Philippe Bourdin <richel@xxxxxxxxxxxxxx>
>     Signed-off-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxx>
> 
> So it looks like there are two variants with the same USB ID: one uses
> the EM2880, one uses the EM2882. Since nobody else complained I expect
> that most devices with this USB ID are in fact using the EM2882.
> 
> I won't apply this patch, since that would break it for others.
> 
> The best solution for you is to explicitly set the card using the
> 'card=11' em28xx module option.
> 
> I've CC-ed Mauro in case he knows a better solution.

If the newest original driver from the manufacturer supports both
versions, perhaps the *.INF file there would help to identify what
version is there, by using the USB revision numbers.

We have this for USB ID 1554:5010, for example. That specific USB ID
actually use two different drivers, depending on the review.

Either cx231xx:

	{USB_DEVICE_VER(USB_VID_PIXELVIEW, USB_PID_PIXELVIEW_SBTVD, 0x4000, 0x4001),
	 .driver_info = CX231XX_BOARD_PV_PLAYTV_USB_HYBRID},

or dib0700:

	{ USB_DEVICE_VER(USB_VID_PIXELVIEW, USB_PID_PIXELVIEW_SBTVD, 0x000, 0x3f00) },

Unfortunately, I don't have any contacts at Terratec anymore, so we'll
need to get it the hard way: people with this hardware should report the
version of the hardware, by using lsusb -v. It should report something
like:

	Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
	Couldn't open device, some information will be missing
	Device Descriptor:
	  bLength                18
	  bDescriptorType         1
	  bcdUSB               2.00
	  bDeviceClass            9 Hub
	  bDeviceSubClass         0 
	  bDeviceProtocol         1 Single TT
	  bMaxPacketSize0        64
	  idVendor           0x1d6b Linux Foundation
	  idProduct          0x0002 2.0 root hub
	  bcdDevice            4.10
	  iManufacturer           3 
	  iProduct                2 
	  iSerial                 1 

The USB_DEVICE_VER macro is:

	#define USB_DEVICE_VER(vend, prod, lo, hi) \
		.match_flags = USB_DEVICE_ID_MATCH_DEVICE_AND_VERSION, \
		.idVendor = (vend), \
		.idProduct = (prod), \
		.bcdDevice_lo = (lo), \
		.bcdDevice_hi = (hi)

So, it basically uses the field "bcdDevice" in order to detect for a
specific hardware version.

Please notice that, ideally, we need the "bcdDevice" data for both the 
em2880 and em2882 versions in to fix it and be sure that the
manufacturer changed it on the newest version. The *.INF file may
contain such information, with would make our lives a way easier.

Regards,
Mauro



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux