Skip to content

Commit

Permalink
[media] mceusb: add support for cx231xx-based IR (e. g. Polaris)
Browse files Browse the repository at this point in the history
For now, it adds support for Conexant EVK and for Pixelview.
We should probably find a better way to specify all Conexant
Polaris devices, to avoid needing to repeat this setup on
both mceusb and cx231xx-cards.

Reviewed-by: Jarod Wilson <jarod@redhat.com>
Acked-by: Sri Devi <Srinivasa.Deevi@conexant.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Mauro Carvalho Chehab committed Oct 21, 2010
1 parent 9efd85d commit 56e92f6
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions drivers/media/IR/mceusb.c
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,7 @@ static int debug;
#define VENDOR_NORTHSTAR 0x04eb
#define VENDOR_REALTEK 0x0bda
#define VENDOR_TIVO 0x105a
#define VENDOR_CONEXANT 0x0572

static struct usb_device_id mceusb_dev_table[] = {
/* Original Microsoft MCE IR Transceiver (often HP-branded) */
Expand Down Expand Up @@ -198,6 +199,8 @@ static struct usb_device_id mceusb_dev_table[] = {
{ USB_DEVICE(VENDOR_NORTHSTAR, 0xe004) },
/* TiVo PC IR Receiver */
{ USB_DEVICE(VENDOR_TIVO, 0x2000) },
/* Conexant SDK */
{ USB_DEVICE(VENDOR_CONEXANT, 0x58a1) },
/* Terminating entry */
{ }
};
Expand Down Expand Up @@ -229,6 +232,11 @@ static struct usb_device_id std_tx_mask_list[] = {
{}
};

static struct usb_device_id cx_polaris_list[] = {
{ USB_DEVICE(VENDOR_CONEXANT, 0x58a1) },
{}
};

/* data structure for each usb transceiver */
struct mceusb_dev {
/* ir-core bits */
Expand Down Expand Up @@ -929,6 +937,7 @@ static int __devinit mceusb_dev_probe(struct usb_interface *intf,
bool is_gen3;
bool is_microsoft_gen1;
bool tx_mask_inverted;
bool is_polaris;

dev_dbg(&intf->dev, ": %s called\n", __func__);

Expand All @@ -937,6 +946,13 @@ static int __devinit mceusb_dev_probe(struct usb_interface *intf,
is_gen3 = usb_match_id(intf, gen3_list) ? 1 : 0;
is_microsoft_gen1 = usb_match_id(intf, microsoft_gen1_list) ? 1 : 0;
tx_mask_inverted = usb_match_id(intf, std_tx_mask_list) ? 0 : 1;
is_polaris = usb_match_id(intf, cx_polaris_list) ? 1 : 0;

if (is_polaris) {
/* Interface 0 is IR */
if (idesc->desc.bInterfaceNumber)
return -ENODEV;
}

/* step through the endpoints to find first bulk in and out endpoint */
for (i = 0; i < idesc->desc.bNumEndpoints; ++i) {
Expand Down

0 comments on commit 56e92f6

Please sign in to comment.