patch-2.4.0-test11 linux/drivers/char/joystick/iforce.c
Next file: linux/drivers/char/joystick/ns558.c
Previous file: linux/drivers/char/joystick/analog.c
Back to the patch index
Back to the overall index
- Lines: 61
- Date:
Sat Nov 11 18:48:18 2000
- Orig file:
v2.4.0-test10/linux/drivers/char/joystick/iforce.c
- Orig date:
Tue Aug 22 11:41:14 2000
diff -u --recursive --new-file v2.4.0-test10/linux/drivers/char/joystick/iforce.c linux/drivers/char/joystick/iforce.c
@@ -54,6 +54,7 @@
struct iforce {
signed char data[IFORCE_MAX_LENGTH];
+ struct usb_device *usbdev;
struct input_dev dev;
struct urb irq;
int open;
@@ -113,9 +114,11 @@
{
struct iforce *iforce = dev->private;
- if (dev->idbus == BUS_USB && !iforce->open++)
+ if (dev->idbus == BUS_USB && !iforce->open++) {
+ iforce->irq.dev = iforce->usbdev;
if (usb_submit_urb(&iforce->irq))
return -EIO;
+ }
return 0;
}
@@ -177,15 +180,12 @@
iforce_process_packet(&iforce->dev, iforce->data[0], 8, iforce->data + 1);
}
-static void *iforce_usb_probe(struct usb_device *dev, unsigned int ifnum)
+static void *iforce_usb_probe(struct usb_device *dev, unsigned int ifnum,
+ const struct usb_device_id *id)
{
struct usb_endpoint_descriptor *endpoint;
struct iforce *iforce;
- if (dev->descriptor.idVendor != USB_VENDOR_ID_LOGITECH ||
- dev->descriptor.idProduct != USB_DEVICE_ID_LOGITECH_WMFORCE)
- return NULL;
-
endpoint = dev->config[0].interface[ifnum].altsetting[0].endpoint + 0;
if (!(iforce = kmalloc(sizeof(struct iforce), GFP_KERNEL))) return NULL;
@@ -216,10 +216,21 @@
kfree(iforce);
}
+static struct usb_device_id iforce_usb_ids [] = {
+ {
+ idVendor: USB_VENDOR_ID_LOGITECH,
+ idProduct: USB_DEVICE_ID_LOGITECH_WMFORCE
+ },
+ { } /* Terminating entry */
+};
+
+MODULE_DEVICE_TABLE (usb, iforce_usb_ids);
+
static struct usb_driver iforce_usb_driver = {
name: "iforce",
probe: iforce_usb_probe,
disconnect: iforce_usb_disconnect,
+ id_table: iforce_usb_ids,
};
#endif
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)