diff options
| author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-06-24 08:41:41 -0400 |
|---|---|---|
| committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-06-24 13:07:53 -0400 |
| commit | 816724e65c72a90a44fbad0ef0b59b186c85fa90 (patch) | |
| tree | 421fa29aedff988e392f92780637553e275d37a0 /drivers/usb/input | |
| parent | 70ac4385a13f78bc478f26d317511893741b05bd (diff) | |
| parent | d384ea691fe4ea8c2dd5b9b8d9042eb181776f18 (diff) | |
Merge branch 'master' of /home/trondmy/kernel/linux-2.6/
Conflicts:
fs/nfs/inode.c
fs/super.c
Fix conflicts between patch 'NFS: Split fs/nfs/inode.c' and patch
'VFS: Permit filesystem to override root dentry on mount'
Diffstat (limited to 'drivers/usb/input')
| -rw-r--r-- | drivers/usb/input/acecad.c | 4 | ||||
| -rw-r--r-- | drivers/usb/input/aiptek.c | 4 | ||||
| -rw-r--r-- | drivers/usb/input/appletouch.c | 117 | ||||
| -rw-r--r-- | drivers/usb/input/ati_remote.c | 4 | ||||
| -rw-r--r-- | drivers/usb/input/ati_remote2.c | 2 | ||||
| -rw-r--r-- | drivers/usb/input/hid-core.c | 83 | ||||
| -rw-r--r-- | drivers/usb/input/hid-input.c | 36 | ||||
| -rw-r--r-- | drivers/usb/input/hid.h | 11 | ||||
| -rw-r--r-- | drivers/usb/input/itmtouch.c | 4 | ||||
| -rw-r--r-- | drivers/usb/input/kbtab.c | 5 | ||||
| -rw-r--r-- | drivers/usb/input/keyspan_remote.c | 4 | ||||
| -rw-r--r-- | drivers/usb/input/mtouchusb.c | 4 | ||||
| -rw-r--r-- | drivers/usb/input/powermate.c | 4 | ||||
| -rw-r--r-- | drivers/usb/input/touchkitusb.c | 4 | ||||
| -rw-r--r-- | drivers/usb/input/usbkbd.c | 4 | ||||
| -rw-r--r-- | drivers/usb/input/usbmouse.c | 4 | ||||
| -rw-r--r-- | drivers/usb/input/usbtouchscreen.c | 2 | ||||
| -rw-r--r-- | drivers/usb/input/wacom.c | 5 | ||||
| -rw-r--r-- | drivers/usb/input/xpad.c | 4 | ||||
| -rw-r--r-- | drivers/usb/input/yealink.c | 4 |
20 files changed, 205 insertions, 104 deletions
diff --git a/drivers/usb/input/acecad.c b/drivers/usb/input/acecad.c index df29b8078b54..18c10e150ef3 100644 --- a/drivers/usb/input/acecad.c +++ b/drivers/usb/input/acecad.c | |||
| @@ -27,11 +27,9 @@ | |||
| 27 | 27 | ||
| 28 | #include <linux/kernel.h> | 28 | #include <linux/kernel.h> |
| 29 | #include <linux/slab.h> | 29 | #include <linux/slab.h> |
| 30 | #include <linux/input.h> | ||
| 31 | #include <linux/module.h> | 30 | #include <linux/module.h> |
| 32 | #include <linux/init.h> | 31 | #include <linux/init.h> |
| 33 | #include <linux/usb.h> | 32 | #include <linux/usb/input.h> |
| 34 | #include <linux/usb_input.h> | ||
| 35 | 33 | ||
| 36 | /* | 34 | /* |
| 37 | * Version Information | 35 | * Version Information |
diff --git a/drivers/usb/input/aiptek.c b/drivers/usb/input/aiptek.c index a6693b0d1c4c..b138dae2b055 100644 --- a/drivers/usb/input/aiptek.c +++ b/drivers/usb/input/aiptek.c | |||
| @@ -73,11 +73,9 @@ | |||
| 73 | #include <linux/jiffies.h> | 73 | #include <linux/jiffies.h> |
| 74 | #include <linux/kernel.h> | 74 | #include <linux/kernel.h> |
| 75 | #include <linux/slab.h> | 75 | #include <linux/slab.h> |
| 76 | #include <linux/input.h> | ||
| 77 | #include <linux/module.h> | 76 | #include <linux/module.h> |
| 78 | #include <linux/init.h> | 77 | #include <linux/init.h> |
| 79 | #include <linux/usb.h> | 78 | #include <linux/usb/input.h> |
| 80 | #include <linux/usb_input.h> | ||
| 81 | #include <linux/sched.h> | 79 | #include <linux/sched.h> |
| 82 | #include <asm/uaccess.h> | 80 | #include <asm/uaccess.h> |
| 83 | #include <asm/unaligned.h> | 81 | #include <asm/unaligned.h> |
diff --git a/drivers/usb/input/appletouch.c b/drivers/usb/input/appletouch.c index c222ed13deab..36855062eacc 100644 --- a/drivers/usb/input/appletouch.c +++ b/drivers/usb/input/appletouch.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Apple USB Touchpad (for post-February 2005 PowerBooks) driver | 2 | * Apple USB Touchpad (for post-February 2005 PowerBooks and MacBooks) driver |
| 3 | * | 3 | * |
| 4 | * Copyright (C) 2001-2004 Greg Kroah-Hartman (greg@kroah.com) | 4 | * Copyright (C) 2001-2004 Greg Kroah-Hartman (greg@kroah.com) |
| 5 | * Copyright (C) 2005 Johannes Berg (johannes@sipsolutions.net) | 5 | * Copyright (C) 2005 Johannes Berg (johannes@sipsolutions.net) |
| @@ -7,6 +7,7 @@ | |||
| 7 | * Copyright (C) 2005 Frank Arnold (frank@scirocco-5v-turbo.de) | 7 | * Copyright (C) 2005 Frank Arnold (frank@scirocco-5v-turbo.de) |
| 8 | * Copyright (C) 2005 Peter Osterlund (petero2@telia.com) | 8 | * Copyright (C) 2005 Peter Osterlund (petero2@telia.com) |
| 9 | * Copyright (C) 2005 Michael Hanselmann (linux-kernel@hansmi.ch) | 9 | * Copyright (C) 2005 Michael Hanselmann (linux-kernel@hansmi.ch) |
| 10 | * Copyright (C) 2006 Nicolas Boichat (nicolas@boichat.ch) | ||
| 10 | * | 11 | * |
| 11 | * Thanks to Alex Harper <basilisk@foobox.net> for his inputs. | 12 | * Thanks to Alex Harper <basilisk@foobox.net> for his inputs. |
| 12 | * | 13 | * |
| @@ -32,9 +33,7 @@ | |||
| 32 | #include <linux/init.h> | 33 | #include <linux/init.h> |
| 33 | #include <linux/slab.h> | 34 | #include <linux/slab.h> |
| 34 | #include <linux/module.h> | 35 | #include <linux/module.h> |
| 35 | #include <linux/usb.h> | 36 | #include <linux/usb/input.h> |
| 36 | #include <linux/input.h> | ||
| 37 | #include <linux/usb_input.h> | ||
| 38 | 37 | ||
| 39 | /* Apple has powerbooks which have the keyboard with different Product IDs */ | 38 | /* Apple has powerbooks which have the keyboard with different Product IDs */ |
| 40 | #define APPLE_VENDOR_ID 0x05AC | 39 | #define APPLE_VENDOR_ID 0x05AC |
| @@ -44,6 +43,11 @@ | |||
| 44 | #define GEYSER_ISO_PRODUCT_ID 0x0215 | 43 | #define GEYSER_ISO_PRODUCT_ID 0x0215 |
| 45 | #define GEYSER_JIS_PRODUCT_ID 0x0216 | 44 | #define GEYSER_JIS_PRODUCT_ID 0x0216 |
| 46 | 45 | ||
| 46 | /* MacBook devices */ | ||
| 47 | #define GEYSER3_ANSI_PRODUCT_ID 0x0217 | ||
| 48 | #define GEYSER3_ISO_PRODUCT_ID 0x0218 | ||
| 49 | #define GEYSER3_JIS_PRODUCT_ID 0x0219 | ||
| 50 | |||
| 47 | #define ATP_DEVICE(prod) \ | 51 | #define ATP_DEVICE(prod) \ |
| 48 | .match_flags = USB_DEVICE_ID_MATCH_DEVICE | \ | 52 | .match_flags = USB_DEVICE_ID_MATCH_DEVICE | \ |
| 49 | USB_DEVICE_ID_MATCH_INT_CLASS | \ | 53 | USB_DEVICE_ID_MATCH_INT_CLASS | \ |
| @@ -65,6 +69,10 @@ static struct usb_device_id atp_table [] = { | |||
| 65 | { ATP_DEVICE(GEYSER_ISO_PRODUCT_ID) }, | 69 | { ATP_DEVICE(GEYSER_ISO_PRODUCT_ID) }, |
| 66 | { ATP_DEVICE(GEYSER_JIS_PRODUCT_ID) }, | 70 | { ATP_DEVICE(GEYSER_JIS_PRODUCT_ID) }, |
| 67 | 71 | ||
| 72 | { ATP_DEVICE(GEYSER3_ANSI_PRODUCT_ID) }, | ||
| 73 | { ATP_DEVICE(GEYSER3_ISO_PRODUCT_ID) }, | ||
| 74 | { ATP_DEVICE(GEYSER3_JIS_PRODUCT_ID) }, | ||
| 75 | |||
| 68 | /* Terminating entry */ | 76 | /* Terminating entry */ |
| 69 | { } | 77 | { } |
| 70 | }; | 78 | }; |
| @@ -101,6 +109,13 @@ MODULE_DEVICE_TABLE (usb, atp_table); | |||
| 101 | */ | 109 | */ |
| 102 | #define ATP_THRESHOLD 5 | 110 | #define ATP_THRESHOLD 5 |
| 103 | 111 | ||
| 112 | /* MacBook Pro (Geyser 3) initialization constants */ | ||
| 113 | #define ATP_GEYSER3_MODE_READ_REQUEST_ID 1 | ||
| 114 | #define ATP_GEYSER3_MODE_WRITE_REQUEST_ID 9 | ||
| 115 | #define ATP_GEYSER3_MODE_REQUEST_VALUE 0x300 | ||
| 116 | #define ATP_GEYSER3_MODE_REQUEST_INDEX 0 | ||
| 117 | #define ATP_GEYSER3_MODE_VENDOR_VALUE 0x04 | ||
| 118 | |||
| 104 | /* Structure to hold all of our device specific stuff */ | 119 | /* Structure to hold all of our device specific stuff */ |
| 105 | struct atp { | 120 | struct atp { |
| 106 | char phys[64]; | 121 | char phys[64]; |
| @@ -147,13 +162,22 @@ MODULE_PARM_DESC(debug, "Activate debugging output"); | |||
| 147 | /* Checks if the device a Geyser 2 (ANSI, ISO, JIS) */ | 162 | /* Checks if the device a Geyser 2 (ANSI, ISO, JIS) */ |
| 148 | static inline int atp_is_geyser_2(struct atp *dev) | 163 | static inline int atp_is_geyser_2(struct atp *dev) |
| 149 | { | 164 | { |
| 150 | int16_t productId = le16_to_cpu(dev->udev->descriptor.idProduct); | 165 | u16 productId = le16_to_cpu(dev->udev->descriptor.idProduct); |
| 151 | 166 | ||
| 152 | return (productId == GEYSER_ANSI_PRODUCT_ID) || | 167 | return (productId == GEYSER_ANSI_PRODUCT_ID) || |
| 153 | (productId == GEYSER_ISO_PRODUCT_ID) || | 168 | (productId == GEYSER_ISO_PRODUCT_ID) || |
| 154 | (productId == GEYSER_JIS_PRODUCT_ID); | 169 | (productId == GEYSER_JIS_PRODUCT_ID); |
| 155 | } | 170 | } |
| 156 | 171 | ||
| 172 | static inline int atp_is_geyser_3(struct atp *dev) | ||
| 173 | { | ||
| 174 | u16 productId = le16_to_cpu(dev->udev->descriptor.idProduct); | ||
| 175 | |||
| 176 | return (productId == GEYSER3_ANSI_PRODUCT_ID) || | ||
| 177 | (productId == GEYSER3_ISO_PRODUCT_ID) || | ||
| 178 | (productId == GEYSER3_JIS_PRODUCT_ID); | ||
| 179 | } | ||
| 180 | |||
| 157 | static int atp_calculate_abs(int *xy_sensors, int nb_sensors, int fact, | 181 | static int atp_calculate_abs(int *xy_sensors, int nb_sensors, int fact, |
| 158 | int *z, int *fingers) | 182 | int *z, int *fingers) |
| 159 | { | 183 | { |
| @@ -219,12 +243,33 @@ static void atp_complete(struct urb* urb, struct pt_regs* regs) | |||
| 219 | 243 | ||
| 220 | /* drop incomplete datasets */ | 244 | /* drop incomplete datasets */ |
| 221 | if (dev->urb->actual_length != dev->datalen) { | 245 | if (dev->urb->actual_length != dev->datalen) { |
| 222 | dprintk("appletouch: incomplete data package.\n"); | 246 | dprintk("appletouch: incomplete data package" |
| 247 | " (first byte: %d, length: %d).\n", | ||
| 248 | dev->data[0], dev->urb->actual_length); | ||
| 223 | goto exit; | 249 | goto exit; |
| 224 | } | 250 | } |
| 225 | 251 | ||
| 226 | /* reorder the sensors values */ | 252 | /* reorder the sensors values */ |
| 227 | if (atp_is_geyser_2(dev)) { | 253 | if (atp_is_geyser_3(dev)) { |
| 254 | memset(dev->xy_cur, 0, sizeof(dev->xy_cur)); | ||
| 255 | |||
| 256 | /* | ||
| 257 | * The values are laid out like this: | ||
| 258 | * -, Y1, Y2, -, Y3, Y4, -, ..., -, X1, X2, -, X3, X4, ... | ||
| 259 | * '-' is an unused value. | ||
| 260 | */ | ||
| 261 | |||
| 262 | /* read X values */ | ||
| 263 | for (i = 0, j = 19; i < 20; i += 2, j += 3) { | ||
| 264 | dev->xy_cur[i] = dev->data[j + 1]; | ||
| 265 | dev->xy_cur[i + 1] = dev->data[j + 2]; | ||
| 266 | } | ||
| 267 | /* read Y values */ | ||
| 268 | for (i = 0, j = 1; i < 9; i += 2, j += 3) { | ||
| 269 | dev->xy_cur[ATP_XSENSORS + i] = dev->data[j + 1]; | ||
| 270 | dev->xy_cur[ATP_XSENSORS + i + 1] = dev->data[j + 2]; | ||
| 271 | } | ||
| 272 | } else if (atp_is_geyser_2(dev)) { | ||
| 228 | memset(dev->xy_cur, 0, sizeof(dev->xy_cur)); | 273 | memset(dev->xy_cur, 0, sizeof(dev->xy_cur)); |
| 229 | 274 | ||
| 230 | /* | 275 | /* |
| @@ -267,6 +312,9 @@ static void atp_complete(struct urb* urb, struct pt_regs* regs) | |||
| 267 | dev->x_old = dev->y_old = -1; | 312 | dev->x_old = dev->y_old = -1; |
| 268 | memcpy(dev->xy_old, dev->xy_cur, sizeof(dev->xy_old)); | 313 | memcpy(dev->xy_old, dev->xy_cur, sizeof(dev->xy_old)); |
| 269 | 314 | ||
| 315 | if (atp_is_geyser_3(dev)) /* No 17" Macbooks (yet) */ | ||
| 316 | goto exit; | ||
| 317 | |||
| 270 | /* 17" Powerbooks have extra X sensors */ | 318 | /* 17" Powerbooks have extra X sensors */ |
| 271 | for (i = (atp_is_geyser_2(dev)?15:16); i < ATP_XSENSORS; i++) { | 319 | for (i = (atp_is_geyser_2(dev)?15:16); i < ATP_XSENSORS; i++) { |
| 272 | if (!dev->xy_cur[i]) continue; | 320 | if (!dev->xy_cur[i]) continue; |
| @@ -414,7 +462,50 @@ static int atp_probe(struct usb_interface *iface, const struct usb_device_id *id | |||
| 414 | dev->udev = udev; | 462 | dev->udev = udev; |
| 415 | dev->input = input_dev; | 463 | dev->input = input_dev; |
| 416 | dev->overflowwarn = 0; | 464 | dev->overflowwarn = 0; |
| 417 | dev->datalen = (atp_is_geyser_2(dev)?64:81); | 465 | if (atp_is_geyser_3(dev)) |
| 466 | dev->datalen = 64; | ||
| 467 | else if (atp_is_geyser_2(dev)) | ||
| 468 | dev->datalen = 64; | ||
| 469 | else | ||
| 470 | dev->datalen = 81; | ||
| 471 | |||
| 472 | if (atp_is_geyser_3(dev)) { | ||
| 473 | /* | ||
| 474 | * By default Geyser 3 device sends standard USB HID mouse | ||
| 475 | * packets (Report ID 2). This code changes device mode, so it | ||
| 476 | * sends raw sensor reports (Report ID 5). | ||
| 477 | */ | ||
| 478 | char data[8]; | ||
| 479 | int size; | ||
| 480 | |||
| 481 | size = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), | ||
| 482 | ATP_GEYSER3_MODE_READ_REQUEST_ID, | ||
| 483 | USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE, | ||
| 484 | ATP_GEYSER3_MODE_REQUEST_VALUE, | ||
| 485 | ATP_GEYSER3_MODE_REQUEST_INDEX, &data, 8, 5000); | ||
| 486 | |||
| 487 | if (size != 8) { | ||
| 488 | err("Could not do mode read request from device" | ||
| 489 | " (Geyser 3 mode)"); | ||
| 490 | goto err_free_devs; | ||
| 491 | } | ||
| 492 | |||
| 493 | /* Apply the mode switch */ | ||
| 494 | data[0] = ATP_GEYSER3_MODE_VENDOR_VALUE; | ||
| 495 | |||
| 496 | size = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), | ||
| 497 | ATP_GEYSER3_MODE_WRITE_REQUEST_ID, | ||
| 498 | USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE, | ||
| 499 | ATP_GEYSER3_MODE_REQUEST_VALUE, | ||
| 500 | ATP_GEYSER3_MODE_REQUEST_INDEX, &data, 8, 5000); | ||
| 501 | |||
| 502 | if (size != 8) { | ||
| 503 | err("Could not do mode write request to device" | ||
| 504 | " (Geyser 3 mode)"); | ||
| 505 | goto err_free_devs; | ||
| 506 | } | ||
| 507 | printk("appletouch Geyser 3 inited.\n"); | ||
| 508 | } | ||
| 418 | 509 | ||
| 419 | dev->urb = usb_alloc_urb(0, GFP_KERNEL); | 510 | dev->urb = usb_alloc_urb(0, GFP_KERNEL); |
| 420 | if (!dev->urb) { | 511 | if (!dev->urb) { |
| @@ -447,7 +538,15 @@ static int atp_probe(struct usb_interface *iface, const struct usb_device_id *id | |||
| 447 | 538 | ||
| 448 | set_bit(EV_ABS, input_dev->evbit); | 539 | set_bit(EV_ABS, input_dev->evbit); |
| 449 | 540 | ||
| 450 | if (atp_is_geyser_2(dev)) { | 541 | if (atp_is_geyser_3(dev)) { |
| 542 | /* | ||
| 543 | * MacBook have 20 X sensors, 10 Y sensors | ||
| 544 | */ | ||
| 545 | input_set_abs_params(input_dev, ABS_X, 0, | ||
| 546 | ((20 - 1) * ATP_XFACT) - 1, ATP_FUZZ, 0); | ||
| 547 | input_set_abs_params(input_dev, ABS_Y, 0, | ||
| 548 | ((10 - 1) * ATP_YFACT) - 1, ATP_FUZZ, 0); | ||
| 549 | } else if (atp_is_geyser_2(dev)) { | ||
| 451 | /* | 550 | /* |
| 452 | * Oct 2005 15" PowerBooks have 15 X sensors, 17" are detected | 551 | * Oct 2005 15" PowerBooks have 15 X sensors, 17" are detected |
| 453 | * later. | 552 | * later. |
diff --git a/drivers/usb/input/ati_remote.c b/drivers/usb/input/ati_remote.c index 99f986cb6e95..07c8c0e665dd 100644 --- a/drivers/usb/input/ati_remote.c +++ b/drivers/usb/input/ati_remote.c | |||
| @@ -92,9 +92,7 @@ | |||
| 92 | #include <linux/slab.h> | 92 | #include <linux/slab.h> |
| 93 | #include <linux/module.h> | 93 | #include <linux/module.h> |
| 94 | #include <linux/moduleparam.h> | 94 | #include <linux/moduleparam.h> |
| 95 | #include <linux/input.h> | 95 | #include <linux/usb/input.h> |
| 96 | #include <linux/usb.h> | ||
| 97 | #include <linux/usb_input.h> | ||
| 98 | #include <linux/wait.h> | 96 | #include <linux/wait.h> |
| 99 | #include <linux/jiffies.h> | 97 | #include <linux/jiffies.h> |
| 100 | 98 | ||
diff --git a/drivers/usb/input/ati_remote2.c b/drivers/usb/input/ati_remote2.c index ab1a1ae24be9..ea71de81ca6b 100644 --- a/drivers/usb/input/ati_remote2.c +++ b/drivers/usb/input/ati_remote2.c | |||
| @@ -8,7 +8,7 @@ | |||
| 8 | * as published by the Free Software Foundation. | 8 | * as published by the Free Software Foundation. |
| 9 | */ | 9 | */ |
| 10 | 10 | ||
| 11 | #include <linux/usb_input.h> | 11 | #include <linux/usb/input.h> |
| 12 | 12 | ||
| 13 | #define DRIVER_DESC "ATI/Philips USB RF remote driver" | 13 | #define DRIVER_DESC "ATI/Philips USB RF remote driver" |
| 14 | #define DRIVER_VERSION "0.1" | 14 | #define DRIVER_VERSION "0.1" |
diff --git a/drivers/usb/input/hid-core.c b/drivers/usb/input/hid-core.c index 435273e7c85c..b9fb9687f926 100644 --- a/drivers/usb/input/hid-core.c +++ b/drivers/usb/input/hid-core.c | |||
| @@ -944,21 +944,28 @@ static void hid_reset(void *_hid) | |||
| 944 | dev_dbg(&hid->intf->dev, "resetting device\n"); | 944 | dev_dbg(&hid->intf->dev, "resetting device\n"); |
| 945 | rc = rc_lock = usb_lock_device_for_reset(hid->dev, hid->intf); | 945 | rc = rc_lock = usb_lock_device_for_reset(hid->dev, hid->intf); |
| 946 | if (rc_lock >= 0) { | 946 | if (rc_lock >= 0) { |
| 947 | rc = usb_reset_device(hid->dev); | 947 | rc = usb_reset_composite_device(hid->dev, hid->intf); |
| 948 | if (rc_lock) | 948 | if (rc_lock) |
| 949 | usb_unlock_device(hid->dev); | 949 | usb_unlock_device(hid->dev); |
| 950 | } | 950 | } |
| 951 | clear_bit(HID_RESET_PENDING, &hid->iofl); | 951 | clear_bit(HID_RESET_PENDING, &hid->iofl); |
| 952 | 952 | ||
| 953 | if (rc == 0) { | 953 | switch (rc) { |
| 954 | hid->retry_delay = 0; | 954 | case 0: |
| 955 | if (hid_start_in(hid)) | 955 | if (!test_bit(HID_IN_RUNNING, &hid->iofl)) |
| 956 | hid_io_error(hid); | 956 | hid_io_error(hid); |
| 957 | } else if (!(rc == -ENODEV || rc == -EHOSTUNREACH || rc == -EINTR)) | 957 | break; |
| 958 | default: | ||
| 958 | err("can't reset device, %s-%s/input%d, status %d", | 959 | err("can't reset device, %s-%s/input%d, status %d", |
| 959 | hid->dev->bus->bus_name, | 960 | hid->dev->bus->bus_name, |
| 960 | hid->dev->devpath, | 961 | hid->dev->devpath, |
| 961 | hid->ifnum, rc); | 962 | hid->ifnum, rc); |
| 963 | /* FALLTHROUGH */ | ||
| 964 | case -EHOSTUNREACH: | ||
| 965 | case -ENODEV: | ||
| 966 | case -EINTR: | ||
| 967 | break; | ||
| 968 | } | ||
| 962 | } | 969 | } |
| 963 | 970 | ||
| 964 | /* Main I/O error handler */ | 971 | /* Main I/O error handler */ |
| @@ -1374,9 +1381,6 @@ void hid_close(struct hid_device *hid) | |||
| 1374 | 1381 | ||
| 1375 | #define USB_VENDOR_ID_PANJIT 0x134c | 1382 | #define USB_VENDOR_ID_PANJIT 0x134c |
| 1376 | 1383 | ||
| 1377 | #define USB_VENDOR_ID_SILVERCREST 0x062a | ||
| 1378 | #define USB_DEVICE_ID_SILVERCREST_KB 0x0201 | ||
| 1379 | |||
| 1380 | /* | 1384 | /* |
| 1381 | * Initialize all reports | 1385 | * Initialize all reports |
| 1382 | */ | 1386 | */ |
| @@ -1461,9 +1465,6 @@ void hid_init_reports(struct hid_device *hid) | |||
| 1461 | #define USB_VENDOR_ID_ONTRAK 0x0a07 | 1465 | #define USB_VENDOR_ID_ONTRAK 0x0a07 |
| 1462 | #define USB_DEVICE_ID_ONTRAK_ADU100 0x0064 | 1466 | #define USB_DEVICE_ID_ONTRAK_ADU100 0x0064 |
| 1463 | 1467 | ||
| 1464 | #define USB_VENDOR_ID_TANGTOP 0x0d3d | ||
| 1465 | #define USB_DEVICE_ID_TANGTOP_USBPS2 0x0001 | ||
| 1466 | |||
| 1467 | #define USB_VENDOR_ID_ESSENTIAL_REALITY 0x0d7f | 1468 | #define USB_VENDOR_ID_ESSENTIAL_REALITY 0x0d7f |
| 1468 | #define USB_DEVICE_ID_ESSENTIAL_REALITY_P5 0x0100 | 1469 | #define USB_DEVICE_ID_ESSENTIAL_REALITY_P5 0x0100 |
| 1469 | 1470 | ||
| @@ -1520,12 +1521,6 @@ void hid_init_reports(struct hid_device *hid) | |||
| 1520 | #define USB_DEVICE_ID_MCC_PMD1024LS 0x0076 | 1521 | #define USB_DEVICE_ID_MCC_PMD1024LS 0x0076 |
| 1521 | #define USB_DEVICE_ID_MCC_PMD1208LS 0x007a | 1522 | #define USB_DEVICE_ID_MCC_PMD1208LS 0x007a |
| 1522 | 1523 | ||
| 1523 | #define USB_VENDOR_ID_CHICONY 0x04f2 | ||
| 1524 | #define USB_DEVICE_ID_CHICONY_USBHUB_KB 0x0100 | ||
| 1525 | |||
| 1526 | #define USB_VENDOR_ID_BTC 0x046e | ||
| 1527 | #define USB_DEVICE_ID_BTC_KEYBOARD 0x5303 | ||
| 1528 | |||
| 1529 | #define USB_VENDOR_ID_VERNIER 0x08f7 | 1524 | #define USB_VENDOR_ID_VERNIER 0x08f7 |
| 1530 | #define USB_DEVICE_ID_VERNIER_LABPRO 0x0001 | 1525 | #define USB_DEVICE_ID_VERNIER_LABPRO 0x0001 |
| 1531 | #define USB_DEVICE_ID_VERNIER_GOTEMP 0x0002 | 1526 | #define USB_DEVICE_ID_VERNIER_GOTEMP 0x0002 |
| @@ -1549,20 +1544,13 @@ void hid_init_reports(struct hid_device *hid) | |||
| 1549 | #define USB_DEVICE_ID_LD_MACHINETEST 0x2040 | 1544 | #define USB_DEVICE_ID_LD_MACHINETEST 0x2040 |
| 1550 | 1545 | ||
| 1551 | #define USB_VENDOR_ID_APPLE 0x05ac | 1546 | #define USB_VENDOR_ID_APPLE 0x05ac |
| 1552 | #define USB_DEVICE_ID_APPLE_POWERMOUSE 0x0304 | 1547 | #define USB_DEVICE_ID_APPLE_MIGHTYMOUSE 0x0304 |
| 1553 | 1548 | ||
| 1554 | #define USB_VENDOR_ID_CHERRY 0x046a | 1549 | #define USB_VENDOR_ID_CHERRY 0x046a |
| 1555 | #define USB_DEVICE_ID_CHERRY_CYMOTION 0x0023 | 1550 | #define USB_DEVICE_ID_CHERRY_CYMOTION 0x0023 |
| 1556 | 1551 | ||
| 1557 | #define USB_VENDOR_ID_HP 0x03f0 | 1552 | #define USB_VENDOR_ID_YEALINK 0x6993 |
| 1558 | #define USB_DEVICE_ID_HP_USBHUB_KB 0x020c | 1553 | #define USB_DEVICE_ID_YEALINK_P1K_P4K_B2K 0xb001 |
| 1559 | |||
| 1560 | #define USB_VENDOR_ID_IBM 0x04b3 | ||
| 1561 | #define USB_DEVICE_ID_IBM_USBHUB_KB 0x3005 | ||
| 1562 | |||
| 1563 | #define USB_VENDOR_ID_CREATIVELABS 0x062a | ||
| 1564 | #define USB_DEVICE_ID_CREATIVELABS_SILVERCREST 0x0201 | ||
| 1565 | |||
| 1566 | /* | 1554 | /* |
| 1567 | * Alphabetically sorted blacklist by quirk type. | 1555 | * Alphabetically sorted blacklist by quirk type. |
| 1568 | */ | 1556 | */ |
| @@ -1671,6 +1659,7 @@ static const struct hid_blacklist { | |||
| 1671 | { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_DTF + 3, HID_QUIRK_IGNORE }, | 1659 | { USB_VENDOR_ID_WACOM, USB_DEVICE_ID_WACOM_DTF + 3, HID_QUIRK_IGNORE }, |
| 1672 | { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_4_PHIDGETSERVO_20, HID_QUIRK_IGNORE }, | 1660 | { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_4_PHIDGETSERVO_20, HID_QUIRK_IGNORE }, |
| 1673 | { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_1_PHIDGETSERVO_20, HID_QUIRK_IGNORE }, | 1661 | { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_1_PHIDGETSERVO_20, HID_QUIRK_IGNORE }, |
| 1662 | { USB_VENDOR_ID_YEALINK, USB_DEVICE_ID_YEALINK_P1K_P4K_B2K, HID_QUIRK_IGNORE }, | ||
| 1674 | 1663 | ||
| 1675 | { USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_FLAIR, HID_QUIRK_IGNORE }, | 1664 | { USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_FLAIR, HID_QUIRK_IGNORE }, |
| 1676 | { USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_302, HID_QUIRK_IGNORE }, | 1665 | { USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_302, HID_QUIRK_IGNORE }, |
| @@ -1680,16 +1669,9 @@ static const struct hid_blacklist { | |||
| 1680 | { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_2PORTKVM, HID_QUIRK_NOGET }, | 1669 | { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_2PORTKVM, HID_QUIRK_NOGET }, |
| 1681 | { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVM, HID_QUIRK_NOGET }, | 1670 | { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVM, HID_QUIRK_NOGET }, |
| 1682 | { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVMC, HID_QUIRK_NOGET }, | 1671 | { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVMC, HID_QUIRK_NOGET }, |
| 1683 | { USB_VENDOR_ID_BTC, USB_DEVICE_ID_BTC_KEYBOARD, HID_QUIRK_NOGET}, | ||
| 1684 | { USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_USBHUB_KB, HID_QUIRK_NOGET}, | ||
| 1685 | { USB_VENDOR_ID_CREATIVELABS, USB_DEVICE_ID_CREATIVELABS_SILVERCREST, HID_QUIRK_NOGET }, | ||
| 1686 | { USB_VENDOR_ID_HP, USB_DEVICE_ID_HP_USBHUB_KB, HID_QUIRK_NOGET }, | ||
| 1687 | { USB_VENDOR_ID_IBM, USB_DEVICE_ID_IBM_USBHUB_KB, HID_QUIRK_NOGET }, | ||
| 1688 | { USB_VENDOR_ID_TANGTOP, USB_DEVICE_ID_TANGTOP_USBPS2, HID_QUIRK_NOGET }, | ||
| 1689 | { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_DUAL_USB_JOYPAD, HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, | 1672 | { USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_DUAL_USB_JOYPAD, HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, |
| 1690 | { USB_VENDOR_ID_SILVERCREST, USB_DEVICE_ID_SILVERCREST_KB, HID_QUIRK_NOGET }, | ||
| 1691 | 1673 | ||
| 1692 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_POWERMOUSE, HID_QUIRK_2WHEEL_POWERMOUSE }, | 1674 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE, HID_QUIRK_MIGHTYMOUSE | HID_QUIRK_INVERT_HWHEEL }, |
| 1693 | { USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU, HID_QUIRK_2WHEEL_MOUSE_HACK_7 }, | 1675 | { USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU, HID_QUIRK_2WHEEL_MOUSE_HACK_7 }, |
| 1694 | { USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_MOUSE, HID_QUIRK_2WHEEL_MOUSE_HACK_5 }, | 1676 | { USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_MOUSE, HID_QUIRK_2WHEEL_MOUSE_HACK_5 }, |
| 1695 | 1677 | ||
| @@ -1711,6 +1693,9 @@ static const struct hid_blacklist { | |||
| 1711 | { USB_VENDOR_ID_APPLE, 0x0214, HID_QUIRK_POWERBOOK_HAS_FN }, | 1693 | { USB_VENDOR_ID_APPLE, 0x0214, HID_QUIRK_POWERBOOK_HAS_FN }, |
| 1712 | { USB_VENDOR_ID_APPLE, 0x0215, HID_QUIRK_POWERBOOK_HAS_FN }, | 1694 | { USB_VENDOR_ID_APPLE, 0x0215, HID_QUIRK_POWERBOOK_HAS_FN }, |
| 1713 | { USB_VENDOR_ID_APPLE, 0x0216, HID_QUIRK_POWERBOOK_HAS_FN }, | 1695 | { USB_VENDOR_ID_APPLE, 0x0216, HID_QUIRK_POWERBOOK_HAS_FN }, |
| 1696 | { USB_VENDOR_ID_APPLE, 0x0217, HID_QUIRK_POWERBOOK_HAS_FN }, | ||
| 1697 | { USB_VENDOR_ID_APPLE, 0x0218, HID_QUIRK_POWERBOOK_HAS_FN }, | ||
| 1698 | { USB_VENDOR_ID_APPLE, 0x0219, HID_QUIRK_POWERBOOK_HAS_FN }, | ||
| 1714 | { USB_VENDOR_ID_APPLE, 0x030A, HID_QUIRK_POWERBOOK_HAS_FN }, | 1699 | { USB_VENDOR_ID_APPLE, 0x030A, HID_QUIRK_POWERBOOK_HAS_FN }, |
| 1715 | { USB_VENDOR_ID_APPLE, 0x030B, HID_QUIRK_POWERBOOK_HAS_FN }, | 1700 | { USB_VENDOR_ID_APPLE, 0x030B, HID_QUIRK_POWERBOOK_HAS_FN }, |
| 1716 | 1701 | ||
| @@ -1794,6 +1779,14 @@ static struct hid_device *usb_hid_configure(struct usb_interface *intf) | |||
| 1794 | (hid_blacklist[n].idProduct == le16_to_cpu(dev->descriptor.idProduct))) | 1779 | (hid_blacklist[n].idProduct == le16_to_cpu(dev->descriptor.idProduct))) |
| 1795 | quirks = hid_blacklist[n].quirks; | 1780 | quirks = hid_blacklist[n].quirks; |
| 1796 | 1781 | ||
| 1782 | /* Many keyboards and mice don't like to be polled for reports, | ||
| 1783 | * so we will always set the HID_QUIRK_NOGET flag for them. */ | ||
| 1784 | if (interface->desc.bInterfaceSubClass == USB_INTERFACE_SUBCLASS_BOOT) { | ||
| 1785 | if (interface->desc.bInterfaceProtocol == USB_INTERFACE_PROTOCOL_KEYBOARD || | ||
| 1786 | interface->desc.bInterfaceProtocol == USB_INTERFACE_PROTOCOL_MOUSE) | ||
| 1787 | quirks |= HID_QUIRK_NOGET; | ||
| 1788 | } | ||
| 1789 | |||
| 1797 | if (quirks & HID_QUIRK_IGNORE) | 1790 | if (quirks & HID_QUIRK_IGNORE) |
| 1798 | return NULL; | 1791 | return NULL; |
| 1799 | 1792 | ||
| @@ -2080,11 +2073,29 @@ static int hid_resume(struct usb_interface *intf) | |||
| 2080 | int status; | 2073 | int status; |
| 2081 | 2074 | ||
| 2082 | clear_bit(HID_SUSPENDED, &hid->iofl); | 2075 | clear_bit(HID_SUSPENDED, &hid->iofl); |
| 2076 | hid->retry_delay = 0; | ||
| 2083 | status = hid_start_in(hid); | 2077 | status = hid_start_in(hid); |
| 2084 | dev_dbg(&intf->dev, "resume status %d\n", status); | 2078 | dev_dbg(&intf->dev, "resume status %d\n", status); |
| 2085 | return status; | 2079 | return status; |
| 2086 | } | 2080 | } |
| 2087 | 2081 | ||
| 2082 | /* Treat USB reset pretty much the same as suspend/resume */ | ||
| 2083 | static void hid_pre_reset(struct usb_interface *intf) | ||
| 2084 | { | ||
| 2085 | /* FIXME: What if the interface is already suspended? */ | ||
| 2086 | hid_suspend(intf, PMSG_ON); | ||
| 2087 | } | ||
| 2088 | |||
| 2089 | static void hid_post_reset(struct usb_interface *intf) | ||
| 2090 | { | ||
| 2091 | struct usb_device *dev = interface_to_usbdev (intf); | ||
| 2092 | |||
| 2093 | hid_set_idle(dev, intf->cur_altsetting->desc.bInterfaceNumber, 0, 0); | ||
| 2094 | /* FIXME: Any more reinitialization needed? */ | ||
| 2095 | |||
| 2096 | hid_resume(intf); | ||
| 2097 | } | ||
| 2098 | |||
| 2088 | static struct usb_device_id hid_usb_ids [] = { | 2099 | static struct usb_device_id hid_usb_ids [] = { |
| 2089 | { .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS, | 2100 | { .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS, |
| 2090 | .bInterfaceClass = USB_INTERFACE_CLASS_HID }, | 2101 | .bInterfaceClass = USB_INTERFACE_CLASS_HID }, |
| @@ -2099,6 +2110,8 @@ static struct usb_driver hid_driver = { | |||
| 2099 | .disconnect = hid_disconnect, | 2110 | .disconnect = hid_disconnect, |
| 2100 | .suspend = hid_suspend, | 2111 | .suspend = hid_suspend, |
| 2101 | .resume = hid_resume, | 2112 | .resume = hid_resume, |
| 2113 | .pre_reset = hid_pre_reset, | ||
| 2114 | .post_reset = hid_post_reset, | ||
| 2102 | .id_table = hid_usb_ids, | 2115 | .id_table = hid_usb_ids, |
| 2103 | }; | 2116 | }; |
| 2104 | 2117 | ||
diff --git a/drivers/usb/input/hid-input.c b/drivers/usb/input/hid-input.c index 25bc85f8ce39..028e1ad89f5d 100644 --- a/drivers/usb/input/hid-input.c +++ b/drivers/usb/input/hid-input.c | |||
| @@ -29,9 +29,7 @@ | |||
| 29 | #include <linux/module.h> | 29 | #include <linux/module.h> |
| 30 | #include <linux/slab.h> | 30 | #include <linux/slab.h> |
| 31 | #include <linux/kernel.h> | 31 | #include <linux/kernel.h> |
| 32 | #include <linux/input.h> | 32 | #include <linux/usb/input.h> |
| 33 | #include <linux/usb.h> | ||
| 34 | #include <linux/usb_input.h> | ||
| 35 | 33 | ||
| 36 | #undef DEBUG | 34 | #undef DEBUG |
| 37 | 35 | ||
| @@ -567,16 +565,14 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel | |||
| 567 | break; | 565 | break; |
| 568 | } | 566 | } |
| 569 | 567 | ||
| 570 | set_bit(usage->type, input->evbit); | 568 | if (device->quirks & HID_QUIRK_MIGHTYMOUSE) { |
| 571 | 569 | if (usage->hid == HID_GD_Z) | |
| 572 | while (usage->code <= max && test_and_set_bit(usage->code, bit)) | 570 | map_rel(REL_HWHEEL); |
| 573 | usage->code = find_next_zero_bit(bit, max + 1, usage->code); | 571 | else if (usage->code == BTN_1) |
| 574 | 572 | map_key(BTN_2); | |
| 575 | if (usage->code > max) | 573 | else if (usage->code == BTN_2) |
| 576 | goto ignore; | 574 | map_key(BTN_1); |
| 577 | 575 | } | |
| 578 | if (((device->quirks & (HID_QUIRK_2WHEEL_POWERMOUSE)) && (usage->hid == 0x00010032))) | ||
| 579 | map_rel(REL_HWHEEL); | ||
| 580 | 576 | ||
| 581 | if ((device->quirks & (HID_QUIRK_2WHEEL_MOUSE_HACK_7 | HID_QUIRK_2WHEEL_MOUSE_HACK_5)) && | 577 | if ((device->quirks & (HID_QUIRK_2WHEEL_MOUSE_HACK_7 | HID_QUIRK_2WHEEL_MOUSE_HACK_5)) && |
| 582 | (usage->type == EV_REL) && (usage->code == REL_WHEEL)) | 578 | (usage->type == EV_REL) && (usage->code == REL_WHEEL)) |
| @@ -586,6 +582,15 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel | |||
| 586 | || ((device->quirks & HID_QUIRK_2WHEEL_MOUSE_HACK_7) && (usage->hid == 0x00090007))) | 582 | || ((device->quirks & HID_QUIRK_2WHEEL_MOUSE_HACK_7) && (usage->hid == 0x00090007))) |
| 587 | goto ignore; | 583 | goto ignore; |
| 588 | 584 | ||
| 585 | set_bit(usage->type, input->evbit); | ||
| 586 | |||
| 587 | while (usage->code <= max && test_and_set_bit(usage->code, bit)) | ||
| 588 | usage->code = find_next_zero_bit(bit, max + 1, usage->code); | ||
| 589 | |||
| 590 | if (usage->code > max) | ||
| 591 | goto ignore; | ||
| 592 | |||
| 593 | |||
| 589 | if (usage->type == EV_ABS) { | 594 | if (usage->type == EV_ABS) { |
| 590 | 595 | ||
| 591 | int a = field->logical_minimum; | 596 | int a = field->logical_minimum; |
| @@ -647,6 +652,11 @@ void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct | |||
| 647 | return; | 652 | return; |
| 648 | } | 653 | } |
| 649 | 654 | ||
| 655 | if ((hid->quirks & HID_QUIRK_INVERT_HWHEEL) && (usage->code == REL_HWHEEL)) { | ||
| 656 | input_event(input, usage->type, usage->code, -value); | ||
| 657 | return; | ||
| 658 | } | ||
| 659 | |||
| 650 | if ((hid->quirks & HID_QUIRK_2WHEEL_MOUSE_HACK_ON) && (usage->code == REL_WHEEL)) { | 660 | if ((hid->quirks & HID_QUIRK_2WHEEL_MOUSE_HACK_ON) && (usage->code == REL_WHEEL)) { |
| 651 | input_event(input, usage->type, REL_HWHEEL, value); | 661 | input_event(input, usage->type, REL_HWHEEL, value); |
| 652 | return; | 662 | return; |
diff --git a/drivers/usb/input/hid.h b/drivers/usb/input/hid.h index 9c62837b5b89..778e575de352 100644 --- a/drivers/usb/input/hid.h +++ b/drivers/usb/input/hid.h | |||
| @@ -41,6 +41,14 @@ | |||
| 41 | #define USB_INTERFACE_CLASS_HID 3 | 41 | #define USB_INTERFACE_CLASS_HID 3 |
| 42 | 42 | ||
| 43 | /* | 43 | /* |
| 44 | * USB HID interface subclass and protocol codes | ||
| 45 | */ | ||
| 46 | |||
| 47 | #define USB_INTERFACE_SUBCLASS_BOOT 1 | ||
| 48 | #define USB_INTERFACE_PROTOCOL_KEYBOARD 1 | ||
| 49 | #define USB_INTERFACE_PROTOCOL_MOUSE 2 | ||
| 50 | |||
| 51 | /* | ||
| 44 | * HID class requests | 52 | * HID class requests |
| 45 | */ | 53 | */ |
| 46 | 54 | ||
| @@ -247,10 +255,11 @@ struct hid_item { | |||
| 247 | #define HID_QUIRK_2WHEEL_MOUSE_HACK_7 0x00000080 | 255 | #define HID_QUIRK_2WHEEL_MOUSE_HACK_7 0x00000080 |
| 248 | #define HID_QUIRK_2WHEEL_MOUSE_HACK_5 0x00000100 | 256 | #define HID_QUIRK_2WHEEL_MOUSE_HACK_5 0x00000100 |
| 249 | #define HID_QUIRK_2WHEEL_MOUSE_HACK_ON 0x00000200 | 257 | #define HID_QUIRK_2WHEEL_MOUSE_HACK_ON 0x00000200 |
| 250 | #define HID_QUIRK_2WHEEL_POWERMOUSE 0x00000400 | 258 | #define HID_QUIRK_MIGHTYMOUSE 0x00000400 |
| 251 | #define HID_QUIRK_CYMOTION 0x00000800 | 259 | #define HID_QUIRK_CYMOTION 0x00000800 |
| 252 | #define HID_QUIRK_POWERBOOK_HAS_FN 0x00001000 | 260 | #define HID_QUIRK_POWERBOOK_HAS_FN 0x00001000 |
| 253 | #define HID_QUIRK_POWERBOOK_FN_ON 0x00002000 | 261 | #define HID_QUIRK_POWERBOOK_FN_ON 0x00002000 |
| 262 | #define HID_QUIRK_INVERT_HWHEEL 0x00004000 | ||
| 254 | 263 | ||
| 255 | /* | 264 | /* |
| 256 | * This is the global environment of the parser. This information is | 265 | * This is the global environment of the parser. This information is |
diff --git a/drivers/usb/input/itmtouch.c b/drivers/usb/input/itmtouch.c index 7618ae5c104f..5c570cc703f3 100644 --- a/drivers/usb/input/itmtouch.c +++ b/drivers/usb/input/itmtouch.c | |||
| @@ -42,11 +42,9 @@ | |||
| 42 | #include <linux/config.h> | 42 | #include <linux/config.h> |
| 43 | #include <linux/kernel.h> | 43 | #include <linux/kernel.h> |
| 44 | #include <linux/slab.h> | 44 | #include <linux/slab.h> |
| 45 | #include <linux/input.h> | ||
| 46 | #include <linux/module.h> | 45 | #include <linux/module.h> |
| 47 | #include <linux/init.h> | 46 | #include <linux/init.h> |
| 48 | #include <linux/usb.h> | 47 | #include <linux/usb/input.h> |
| 49 | #include <linux/usb_input.h> | ||
| 50 | 48 | ||
| 51 | /* only an 8 byte buffer necessary for a single packet */ | 49 | /* only an 8 byte buffer necessary for a single packet */ |
| 52 | #define ITM_BUFSIZE 8 | 50 | #define ITM_BUFSIZE 8 |
diff --git a/drivers/usb/input/kbtab.c b/drivers/usb/input/kbtab.c index f6d5cead542b..604ade356ead 100644 --- a/drivers/usb/input/kbtab.c +++ b/drivers/usb/input/kbtab.c | |||
| @@ -1,12 +1,9 @@ | |||
| 1 | #include <linux/kernel.h> | 1 | #include <linux/kernel.h> |
| 2 | #include <linux/slab.h> | 2 | #include <linux/slab.h> |
| 3 | #include <linux/input.h> | ||
| 4 | #include <linux/module.h> | 3 | #include <linux/module.h> |
| 5 | #include <linux/init.h> | 4 | #include <linux/init.h> |
| 6 | #include <linux/usb.h> | 5 | #include <linux/usb/input.h> |
| 7 | #include <linux/usb_input.h> | ||
| 8 | #include <asm/unaligned.h> | 6 | #include <asm/unaligned.h> |
| 9 | #include <asm/byteorder.h> | ||
| 10 | 7 | ||
| 11 | /* | 8 | /* |
| 12 | * Version Information | 9 | * Version Information |
diff --git a/drivers/usb/input/keyspan_remote.c b/drivers/usb/input/keyspan_remote.c index 3d911976f378..70af985b5db9 100644 --- a/drivers/usb/input/keyspan_remote.c +++ b/drivers/usb/input/keyspan_remote.c | |||
| @@ -18,9 +18,7 @@ | |||
| 18 | #include <linux/slab.h> | 18 | #include <linux/slab.h> |
| 19 | #include <linux/module.h> | 19 | #include <linux/module.h> |
| 20 | #include <linux/moduleparam.h> | 20 | #include <linux/moduleparam.h> |
| 21 | #include <linux/input.h> | 21 | #include <linux/usb/input.h> |
| 22 | #include <linux/usb.h> | ||
| 23 | #include <linux/usb_input.h> | ||
| 24 | 22 | ||
| 25 | #define DRIVER_VERSION "v0.1" | 23 | #define DRIVER_VERSION "v0.1" |
| 26 | #define DRIVER_AUTHOR "Michael Downey <downey@zymeta.com>" | 24 | #define DRIVER_AUTHOR "Michael Downey <downey@zymeta.com>" |
diff --git a/drivers/usb/input/mtouchusb.c b/drivers/usb/input/mtouchusb.c index f018953a5485..4fdee4db0729 100644 --- a/drivers/usb/input/mtouchusb.c +++ b/drivers/usb/input/mtouchusb.c | |||
| @@ -42,11 +42,9 @@ | |||
| 42 | #include <linux/config.h> | 42 | #include <linux/config.h> |
| 43 | #include <linux/kernel.h> | 43 | #include <linux/kernel.h> |
| 44 | #include <linux/slab.h> | 44 | #include <linux/slab.h> |
| 45 | #include <linux/input.h> | ||
| 46 | #include <linux/module.h> | 45 | #include <linux/module.h> |
| 47 | #include <linux/init.h> | 46 | #include <linux/init.h> |
| 48 | #include <linux/usb.h> | 47 | #include <linux/usb/input.h> |
| 49 | #include <linux/usb_input.h> | ||
| 50 | 48 | ||
| 51 | #define MTOUCHUSB_MIN_XC 0x0 | 49 | #define MTOUCHUSB_MIN_XC 0x0 |
| 52 | #define MTOUCHUSB_MAX_RAW_XC 0x4000 | 50 | #define MTOUCHUSB_MAX_RAW_XC 0x4000 |
diff --git a/drivers/usb/input/powermate.c b/drivers/usb/input/powermate.c index fdf0f788062c..b3c0d0c3eae9 100644 --- a/drivers/usb/input/powermate.c +++ b/drivers/usb/input/powermate.c | |||
| @@ -30,12 +30,10 @@ | |||
| 30 | 30 | ||
| 31 | #include <linux/kernel.h> | 31 | #include <linux/kernel.h> |
| 32 | #include <linux/slab.h> | 32 | #include <linux/slab.h> |
| 33 | #include <linux/input.h> | ||
| 34 | #include <linux/module.h> | 33 | #include <linux/module.h> |
| 35 | #include <linux/init.h> | 34 | #include <linux/init.h> |
| 36 | #include <linux/spinlock.h> | 35 | #include <linux/spinlock.h> |
| 37 | #include <linux/usb.h> | 36 | #include <linux/usb/input.h> |
| 38 | #include <linux/usb_input.h> | ||
| 39 | 37 | ||
| 40 | #define POWERMATE_VENDOR 0x077d /* Griffin Technology, Inc. */ | 38 | #define POWERMATE_VENDOR 0x077d /* Griffin Technology, Inc. */ |
| 41 | #define POWERMATE_PRODUCT_NEW 0x0410 /* Griffin PowerMate */ | 39 | #define POWERMATE_PRODUCT_NEW 0x0410 /* Griffin PowerMate */ |
diff --git a/drivers/usb/input/touchkitusb.c b/drivers/usb/input/touchkitusb.c index 697c5e573a11..da7b0bf51aff 100644 --- a/drivers/usb/input/touchkitusb.c +++ b/drivers/usb/input/touchkitusb.c | |||
| @@ -27,11 +27,9 @@ | |||
| 27 | #include <linux/config.h> | 27 | #include <linux/config.h> |
| 28 | #include <linux/kernel.h> | 28 | #include <linux/kernel.h> |
| 29 | #include <linux/slab.h> | 29 | #include <linux/slab.h> |
| 30 | #include <linux/input.h> | ||
| 31 | #include <linux/module.h> | 30 | #include <linux/module.h> |
| 32 | #include <linux/init.h> | 31 | #include <linux/init.h> |
| 33 | #include <linux/usb.h> | 32 | #include <linux/usb/input.h> |
| 34 | #include <linux/usb_input.h> | ||
| 35 | 33 | ||
| 36 | #define TOUCHKIT_MIN_XC 0x0 | 34 | #define TOUCHKIT_MIN_XC 0x0 |
| 37 | #define TOUCHKIT_MAX_XC 0x07ff | 35 | #define TOUCHKIT_MAX_XC 0x07ff |
diff --git a/drivers/usb/input/usbkbd.c b/drivers/usb/input/usbkbd.c index 2f3edc26cb50..5067a6ae650f 100644 --- a/drivers/usb/input/usbkbd.c +++ b/drivers/usb/input/usbkbd.c | |||
| @@ -29,10 +29,8 @@ | |||
| 29 | #include <linux/kernel.h> | 29 | #include <linux/kernel.h> |
| 30 | #include <linux/slab.h> | 30 | #include <linux/slab.h> |
| 31 | #include <linux/module.h> | 31 | #include <linux/module.h> |
| 32 | #include <linux/input.h> | ||
| 33 | #include <linux/init.h> | 32 | #include <linux/init.h> |
| 34 | #include <linux/usb.h> | 33 | #include <linux/usb/input.h> |
| 35 | #include <linux/usb_input.h> | ||
| 36 | 34 | ||
| 37 | /* | 35 | /* |
| 38 | * Version Information | 36 | * Version Information |
diff --git a/drivers/usb/input/usbmouse.c b/drivers/usb/input/usbmouse.c index af526135d210..446935b671d9 100644 --- a/drivers/usb/input/usbmouse.c +++ b/drivers/usb/input/usbmouse.c | |||
| @@ -28,11 +28,9 @@ | |||
| 28 | 28 | ||
| 29 | #include <linux/kernel.h> | 29 | #include <linux/kernel.h> |
| 30 | #include <linux/slab.h> | 30 | #include <linux/slab.h> |
| 31 | #include <linux/input.h> | ||
| 32 | #include <linux/module.h> | 31 | #include <linux/module.h> |
| 33 | #include <linux/init.h> | 32 | #include <linux/init.h> |
| 34 | #include <linux/usb.h> | 33 | #include <linux/usb/input.h> |
| 35 | #include <linux/usb_input.h> | ||
| 36 | 34 | ||
| 37 | /* | 35 | /* |
| 38 | * Version Information | 36 | * Version Information |
diff --git a/drivers/usb/input/usbtouchscreen.c b/drivers/usb/input/usbtouchscreen.c index e9a07c1e905b..3b175aa482cd 100644 --- a/drivers/usb/input/usbtouchscreen.c +++ b/drivers/usb/input/usbtouchscreen.c | |||
| @@ -39,7 +39,7 @@ | |||
| 39 | #include <linux/module.h> | 39 | #include <linux/module.h> |
| 40 | #include <linux/init.h> | 40 | #include <linux/init.h> |
| 41 | #include <linux/usb.h> | 41 | #include <linux/usb.h> |
| 42 | #include <linux/usb_input.h> | 42 | #include <linux/usb/input.h> |
| 43 | 43 | ||
| 44 | 44 | ||
| 45 | #define DRIVER_VERSION "v0.3" | 45 | #define DRIVER_VERSION "v0.3" |
diff --git a/drivers/usb/input/wacom.c b/drivers/usb/input/wacom.c index cf84c6096f29..369461a70b72 100644 --- a/drivers/usb/input/wacom.c +++ b/drivers/usb/input/wacom.c | |||
| @@ -69,13 +69,10 @@ | |||
| 69 | 69 | ||
| 70 | #include <linux/kernel.h> | 70 | #include <linux/kernel.h> |
| 71 | #include <linux/slab.h> | 71 | #include <linux/slab.h> |
| 72 | #include <linux/input.h> | ||
| 73 | #include <linux/module.h> | 72 | #include <linux/module.h> |
| 74 | #include <linux/init.h> | 73 | #include <linux/init.h> |
| 75 | #include <linux/usb.h> | 74 | #include <linux/usb/input.h> |
| 76 | #include <linux/usb_input.h> | ||
| 77 | #include <asm/unaligned.h> | 75 | #include <asm/unaligned.h> |
| 78 | #include <asm/byteorder.h> | ||
| 79 | 76 | ||
| 80 | /* | 77 | /* |
| 81 | * Version Information | 78 | * Version Information |
diff --git a/drivers/usb/input/xpad.c b/drivers/usb/input/xpad.c index e278489a80c6..cfd4a4e04334 100644 --- a/drivers/usb/input/xpad.c +++ b/drivers/usb/input/xpad.c | |||
| @@ -56,13 +56,11 @@ | |||
| 56 | 56 | ||
| 57 | #include <linux/config.h> | 57 | #include <linux/config.h> |
| 58 | #include <linux/kernel.h> | 58 | #include <linux/kernel.h> |
| 59 | #include <linux/input.h> | ||
| 60 | #include <linux/init.h> | 59 | #include <linux/init.h> |
| 61 | #include <linux/slab.h> | 60 | #include <linux/slab.h> |
| 62 | #include <linux/module.h> | 61 | #include <linux/module.h> |
| 63 | #include <linux/smp_lock.h> | 62 | #include <linux/smp_lock.h> |
| 64 | #include <linux/usb.h> | 63 | #include <linux/usb/input.h> |
| 65 | #include <linux/usb_input.h> | ||
| 66 | 64 | ||
| 67 | #define DRIVER_VERSION "v0.0.5" | 65 | #define DRIVER_VERSION "v0.0.5" |
| 68 | #define DRIVER_AUTHOR "Marko Friedemann <mfr@bmx-chemnitz.de>" | 66 | #define DRIVER_AUTHOR "Marko Friedemann <mfr@bmx-chemnitz.de>" |
diff --git a/drivers/usb/input/yealink.c b/drivers/usb/input/yealink.c index 37d2f0ba0319..24aedbb20f03 100644 --- a/drivers/usb/input/yealink.c +++ b/drivers/usb/input/yealink.c | |||
| @@ -48,13 +48,11 @@ | |||
| 48 | 48 | ||
| 49 | #include <linux/config.h> | 49 | #include <linux/config.h> |
| 50 | #include <linux/kernel.h> | 50 | #include <linux/kernel.h> |
| 51 | #include <linux/input.h> | ||
| 52 | #include <linux/init.h> | 51 | #include <linux/init.h> |
| 53 | #include <linux/slab.h> | 52 | #include <linux/slab.h> |
| 54 | #include <linux/module.h> | 53 | #include <linux/module.h> |
| 55 | #include <linux/rwsem.h> | 54 | #include <linux/rwsem.h> |
| 56 | #include <linux/usb.h> | 55 | #include <linux/usb/input.h> |
| 57 | #include <linux/usb_input.h> | ||
| 58 | 56 | ||
| 59 | #include "map_to_7segment.h" | 57 | #include "map_to_7segment.h" |
| 60 | #include "yealink.h" | 58 | #include "yealink.h" |
