#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 <thoffman@arnor.net>"
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 */
};
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;
}
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);
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)
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;
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;
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);