[media] af9015: reject device TerraTec Cinergy T Stick Dual RC (rev. 2)
That same USB ID is used both AF9015 and AF9035 driver. iManufacturer is only thing we can select correct driver without a I/O. Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
0d94d6a04b
commit
e8c7aab50d
1 changed files with 39 additions and 1 deletions
|
@ -1320,6 +1320,43 @@ static int af9015_get_rc_config(struct dvb_usb_device *d, struct dvb_usb_rc *rc)
|
||||||
#define af9015_get_rc_config NULL
|
#define af9015_get_rc_config NULL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static int af9015_probe(struct usb_interface *intf,
|
||||||
|
const struct usb_device_id *id)
|
||||||
|
{
|
||||||
|
struct usb_device *udev = interface_to_usbdev(intf);
|
||||||
|
char manufacturer[sizeof("ITE Technologies, Inc.")];
|
||||||
|
|
||||||
|
memset(manufacturer, 0, sizeof(manufacturer));
|
||||||
|
usb_string(udev, udev->descriptor.iManufacturer,
|
||||||
|
manufacturer, sizeof(manufacturer));
|
||||||
|
/*
|
||||||
|
* There is two devices having same ID but different chipset. One uses
|
||||||
|
* AF9015 and the other IT9135 chipset. Only difference seen on lsusb
|
||||||
|
* is iManufacturer string.
|
||||||
|
*
|
||||||
|
* idVendor 0x0ccd TerraTec Electronic GmbH
|
||||||
|
* idProduct 0x0099
|
||||||
|
* bcdDevice 2.00
|
||||||
|
* iManufacturer 1 Afatech
|
||||||
|
* iProduct 2 DVB-T 2
|
||||||
|
*
|
||||||
|
* idVendor 0x0ccd TerraTec Electronic GmbH
|
||||||
|
* idProduct 0x0099
|
||||||
|
* bcdDevice 2.00
|
||||||
|
* iManufacturer 1 ITE Technologies, Inc.
|
||||||
|
* iProduct 2 DVB-T TV Stick
|
||||||
|
*/
|
||||||
|
if ((le16_to_cpu(udev->descriptor.idVendor) == USB_VID_TERRATEC) &&
|
||||||
|
(le16_to_cpu(udev->descriptor.idProduct) == 0x0099)) {
|
||||||
|
if (!strcmp("ITE Technologies, Inc.", manufacturer)) {
|
||||||
|
dev_dbg(&udev->dev, "%s: rejecting device\n", __func__);
|
||||||
|
return -ENODEV;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return dvb_usbv2_probe(intf, id);
|
||||||
|
}
|
||||||
|
|
||||||
/* interface 0 is used by DVB-T receiver and
|
/* interface 0 is used by DVB-T receiver and
|
||||||
interface 1 is for remote controller (HID) */
|
interface 1 is for remote controller (HID) */
|
||||||
static struct dvb_usb_device_properties af9015_props = {
|
static struct dvb_usb_device_properties af9015_props = {
|
||||||
|
@ -1428,6 +1465,7 @@ static const struct usb_device_id af9015_id_table[] = {
|
||||||
&af9015_props, "AverMedia AVerTV Volar M (A815Mac)", NULL) },
|
&af9015_props, "AverMedia AVerTV Volar M (A815Mac)", NULL) },
|
||||||
{ DVB_USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_T_STICK_RC,
|
{ DVB_USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_T_STICK_RC,
|
||||||
&af9015_props, "TerraTec Cinergy T Stick RC", RC_MAP_TERRATEC_SLIM_2) },
|
&af9015_props, "TerraTec Cinergy T Stick RC", RC_MAP_TERRATEC_SLIM_2) },
|
||||||
|
/* XXX: that same ID [0ccd:0099] is used by af9035 driver too */
|
||||||
{ DVB_USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_T_STICK_DUAL_RC,
|
{ DVB_USB_DEVICE(USB_VID_TERRATEC, USB_PID_TERRATEC_CINERGY_T_STICK_DUAL_RC,
|
||||||
&af9015_props, "TerraTec Cinergy T Stick Dual RC", RC_MAP_TERRATEC_SLIM) },
|
&af9015_props, "TerraTec Cinergy T Stick Dual RC", RC_MAP_TERRATEC_SLIM) },
|
||||||
{ DVB_USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_A850T,
|
{ DVB_USB_DEVICE(USB_VID_AVERMEDIA, USB_PID_AVERMEDIA_A850T,
|
||||||
|
@ -1444,7 +1482,7 @@ MODULE_DEVICE_TABLE(usb, af9015_id_table);
|
||||||
static struct usb_driver af9015_usb_driver = {
|
static struct usb_driver af9015_usb_driver = {
|
||||||
.name = KBUILD_MODNAME,
|
.name = KBUILD_MODNAME,
|
||||||
.id_table = af9015_id_table,
|
.id_table = af9015_id_table,
|
||||||
.probe = dvb_usbv2_probe,
|
.probe = af9015_probe,
|
||||||
.disconnect = dvb_usbv2_disconnect,
|
.disconnect = dvb_usbv2_disconnect,
|
||||||
.suspend = dvb_usbv2_suspend,
|
.suspend = dvb_usbv2_suspend,
|
||||||
.resume = dvb_usbv2_resume,
|
.resume = dvb_usbv2_resume,
|
||||||
|
|
Loading…
Reference in a new issue