[linux-dvb] [PATCH] m920x for LifeView TV Walker Twin

Nick Andrew nick-linuxtv at nick-andrew.net
Tue Mar 20 21:31:03 CET 2007


On Tue, Mar 20, 2007 at 03:13:53PM +0100, Patrick Boettcher wrote:
> thanks for this nice patch. I'm not in charge of committing that (don't 
> know the uli-thing very well), but I would like to comment:

Thanks for the kind words.

> If the device is working OK like that, your workaround is good. I assume 
> that the ULI/Lifeview people didn't want to spend much time to create an 
> architecture for their Windows driver, which supports multiple 
> BDA-filters per device. So they changed the USB-descriptor so that their 
> driver is called twice so that they can do the second receiver.

Unfortunately the workaround runs before any call is made to
dvb_usb_device_init() and so it's not limited to the TV Walker Twin,
unless I add additional code to replicate the USB_DEVICE_ID check.

I don't want to change struct dvb_usb_device_properties and I
don't think the USB device testing macros can test on interface
number.

A barely adequate patch for the kernel would be to test the
usb_device_id and bInterface number (or the bulk endpoint address
in the usb configuration) before calling dvb_usb_device_init(),
and then call it with an appropriate dvb_usb_device_properties
structure. The tvwalkertwin_tda10046_frontend_attach function
would need to test which interface is being configured so it
knows which configuration structure to use. It could get messy.
Also the remote control would be initialized twice, which is
inelegant.

The output from "lsusb -v" follows:

Bus 002 Device 033: ID 10fd:0513 Anubis Electronics, Ltd
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  idVendor           0x10fd Anubis Electronics, Ltd
  idProduct          0x0513
  bcdDevice            0.95
  iManufacturer           1 LifeView
  iProduct                2 DVB-T
  iSerial                 0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           73
    bNumInterfaces          2
    bConfigurationValue     1
    iConfiguration          0
    bmAttributes         0xc0
      Self Powered
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass    255 Vendor Specific Subclass
      bInterfaceProtocol    255 Vendor Specific Protocol
      iInterface              0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0
  bDeviceProtocol         0
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0001
  Self Powered


Nick.



More information about the linux-dvb mailing list