X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fusb%2Finput%2Fati_remote.c;h=3f5414446485aa34f7a5b9b856ebe3755c3986f3;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=61a42bdae1d8895e6f9cc84bc62bba0c798c76c6;hpb=87fc8d1bb10cd459024a742c6a10961fefcef18f;p=linux-2.6.git diff --git a/drivers/usb/input/ati_remote.c b/drivers/usb/input/ati_remote.c index 61a42bdae..3f5414446 100644 --- a/drivers/usb/input/ati_remote.c +++ b/drivers/usb/input/ati_remote.c @@ -102,6 +102,7 @@ #define ATI_REMOTE_VENDOR_ID 0x0bc7 #define ATI_REMOTE_PRODUCT_ID 0x004 #define LOLA_REMOTE_PRODUCT_ID 0x002 +#define MEDION_REMOTE_PRODUCT_ID 0x006 #define DRIVER_VERSION "2.2.1" #define DRIVER_AUTHOR "Torrey Hoffman " @@ -126,6 +127,7 @@ MODULE_PARM_DESC(debug, "Enable extra debug messages and information"); static struct usb_device_id ati_remote_table[] = { { USB_DEVICE(ATI_REMOTE_VENDOR_ID, ATI_REMOTE_PRODUCT_ID) }, { USB_DEVICE(ATI_REMOTE_VENDOR_ID, LOLA_REMOTE_PRODUCT_ID) }, + { USB_DEVICE(ATI_REMOTE_VENDOR_ID, MEDION_REMOTE_PRODUCT_ID) }, {} /* Terminating entry */ }; @@ -418,13 +420,14 @@ static int ati_remote_sendpacket(struct ati_remote *ati_remote, u16 cmd, unsigne while (timeout && (ati_remote->out_urb->status == -EINPROGRESS) && !(ati_remote->send_flags & SEND_FLAG_COMPLETE)) { + set_current_state(TASK_INTERRUPTIBLE); timeout = schedule_timeout(timeout); rmb(); } set_current_state(TASK_RUNNING); remove_wait_queue(&ati_remote->wait, &wait); - usb_unlink_urb(ati_remote->out_urb); + usb_kill_urb(ati_remote->out_urb); return retval; } @@ -624,10 +627,10 @@ static void ati_remote_delete(struct ati_remote *ati_remote) if (!ati_remote) return; if (ati_remote->irq_urb) - usb_unlink_urb(ati_remote->irq_urb); + usb_kill_urb(ati_remote->irq_urb); if (ati_remote->out_urb) - usb_unlink_urb(ati_remote->out_urb); + usb_kill_urb(ati_remote->out_urb); input_unregister_device(&ati_remote->idev); @@ -669,9 +672,9 @@ static void ati_remote_input_init(struct ati_remote *ati_remote) idev->phys = ati_remote->phys; idev->id.bustype = BUS_USB; - idev->id.vendor = ati_remote->udev->descriptor.idVendor; - idev->id.product = ati_remote->udev->descriptor.idProduct; - idev->id.version = ati_remote->udev->descriptor.bcdDevice; + idev->id.vendor = le16_to_cpu(ati_remote->udev->descriptor.idVendor); + idev->id.product = le16_to_cpu(ati_remote->udev->descriptor.idProduct); + idev->id.version = le16_to_cpu(ati_remote->udev->descriptor.bcdDevice); } static int ati_remote_initialize(struct ati_remote *ati_remote) @@ -726,12 +729,6 @@ static int ati_remote_probe(struct usb_interface *interface, const struct usb_de char path[64]; char *buf = NULL; - /* See if the offered device matches what we can accept */ - if ((udev->descriptor.idVendor != ATI_REMOTE_VENDOR_ID) || - ( (udev->descriptor.idProduct != ATI_REMOTE_PRODUCT_ID) && - (udev->descriptor.idProduct != LOLA_REMOTE_PRODUCT_ID) )) - return -ENODEV; - /* Allocate and clear an ati_remote struct */ if (!(ati_remote = kmalloc(sizeof (struct ati_remote), GFP_KERNEL))) return -ENOMEM; @@ -759,7 +756,7 @@ static int ati_remote_probe(struct usb_interface *interface, const struct usb_de retval = -ENODEV; goto error; } - if (ati_remote->endpoint_in->wMaxPacketSize == 0) { + if (le16_to_cpu(ati_remote->endpoint_in->wMaxPacketSize) == 0) { err("%s: endpoint_in message size==0? \n", __FUNCTION__); retval = -ENODEV; goto error; @@ -799,8 +796,8 @@ static int ati_remote_probe(struct usb_interface *interface, const struct usb_de if (!strlen(ati_remote->name)) sprintf(ati_remote->name, DRIVER_DESC "(%04x,%04x)", - ati_remote->udev->descriptor.idVendor, - ati_remote->udev->descriptor.idProduct); + le16_to_cpu(ati_remote->udev->descriptor.idVendor), + le16_to_cpu(ati_remote->udev->descriptor.idProduct)); /* Device Hardware Initialization - fills in ati_remote->idev from udev. */ retval = ati_remote_initialize(ati_remote);