diff options
Diffstat (limited to 'drivers/usb/input')
-rw-r--r-- | drivers/usb/input/hid-core.c | 59 | ||||
-rw-r--r-- | drivers/usb/input/hiddev.c | 5 | ||||
-rw-r--r-- | drivers/usb/input/touchkitusb.c | 3 | ||||
-rw-r--r-- | drivers/usb/input/yealink.c | 48 |
4 files changed, 57 insertions, 58 deletions
diff --git a/drivers/usb/input/hid-core.c b/drivers/usb/input/hid-core.c index a91e72c41415..772478086bd3 100644 --- a/drivers/usb/input/hid-core.c +++ b/drivers/usb/input/hid-core.c | |||
@@ -1307,7 +1307,7 @@ void hid_init_reports(struct hid_device *hid) | |||
1307 | } | 1307 | } |
1308 | 1308 | ||
1309 | if (err) | 1309 | if (err) |
1310 | warn("timeout initializing reports\n"); | 1310 | warn("timeout initializing reports"); |
1311 | } | 1311 | } |
1312 | 1312 | ||
1313 | #define USB_VENDOR_ID_WACOM 0x056a | 1313 | #define USB_VENDOR_ID_WACOM 0x056a |
@@ -1435,17 +1435,20 @@ void hid_init_reports(struct hid_device *hid) | |||
1435 | #define USB_DEVICE_ID_VERNIER_CYCLOPS 0x0004 | 1435 | #define USB_DEVICE_ID_VERNIER_CYCLOPS 0x0004 |
1436 | 1436 | ||
1437 | #define USB_VENDOR_ID_LD 0x0f11 | 1437 | #define USB_VENDOR_ID_LD 0x0f11 |
1438 | #define USB_DEVICE_ID_CASSY 0x1000 | 1438 | #define USB_DEVICE_ID_LD_CASSY 0x1000 |
1439 | #define USB_DEVICE_ID_POCKETCASSY 0x1010 | 1439 | #define USB_DEVICE_ID_LD_POCKETCASSY 0x1010 |
1440 | #define USB_DEVICE_ID_MOBILECASSY 0x1020 | 1440 | #define USB_DEVICE_ID_LD_MOBILECASSY 0x1020 |
1441 | #define USB_DEVICE_ID_JWM 0x1080 | 1441 | #define USB_DEVICE_ID_LD_JWM 0x1080 |
1442 | #define USB_DEVICE_ID_DMMP 0x1081 | 1442 | #define USB_DEVICE_ID_LD_DMMP 0x1081 |
1443 | #define USB_DEVICE_ID_UMIP 0x1090 | 1443 | #define USB_DEVICE_ID_LD_UMIP 0x1090 |
1444 | #define USB_DEVICE_ID_VIDEOCOM 0x1200 | 1444 | #define USB_DEVICE_ID_LD_XRAY1 0x1100 |
1445 | #define USB_DEVICE_ID_COM3LAB 0x2000 | 1445 | #define USB_DEVICE_ID_LD_XRAY2 0x1101 |
1446 | #define USB_DEVICE_ID_TELEPORT 0x2010 | 1446 | #define USB_DEVICE_ID_LD_VIDEOCOM 0x1200 |
1447 | #define USB_DEVICE_ID_NETWORKANALYSER 0x2020 | 1447 | #define USB_DEVICE_ID_LD_COM3LAB 0x2000 |
1448 | #define USB_DEVICE_ID_POWERCONTROL 0x2030 | 1448 | #define USB_DEVICE_ID_LD_TELEPORT 0x2010 |
1449 | #define USB_DEVICE_ID_LD_NETWORKANALYSER 0x2020 | ||
1450 | #define USB_DEVICE_ID_LD_POWERCONTROL 0x2030 | ||
1451 | #define USB_DEVICE_ID_LD_MACHINETEST 0x2040 | ||
1449 | 1452 | ||
1450 | #define USB_VENDOR_ID_APPLE 0x05ac | 1453 | #define USB_VENDOR_ID_APPLE 0x05ac |
1451 | #define USB_DEVICE_ID_APPLE_POWERMOUSE 0x0304 | 1454 | #define USB_DEVICE_ID_APPLE_POWERMOUSE 0x0304 |
@@ -1453,6 +1456,9 @@ void hid_init_reports(struct hid_device *hid) | |||
1453 | #define USB_VENDOR_ID_CHERRY 0x046a | 1456 | #define USB_VENDOR_ID_CHERRY 0x046a |
1454 | #define USB_DEVICE_ID_CHERRY_CYMOTION 0x0023 | 1457 | #define USB_DEVICE_ID_CHERRY_CYMOTION 0x0023 |
1455 | 1458 | ||
1459 | #define USB_VENDOR_ID_HP 0x03f0 | ||
1460 | #define USB_DEVICE_ID_HP_USBHUB_KB 0x020c | ||
1461 | |||
1456 | /* | 1462 | /* |
1457 | * Alphabetically sorted blacklist by quirk type. | 1463 | * Alphabetically sorted blacklist by quirk type. |
1458 | */ | 1464 | */ |
@@ -1488,17 +1494,20 @@ static const struct hid_blacklist { | |||
1488 | { USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_POWERMATE, HID_QUIRK_IGNORE }, | 1494 | { USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_POWERMATE, HID_QUIRK_IGNORE }, |
1489 | { USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_SOUNDKNOB, HID_QUIRK_IGNORE }, | 1495 | { USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_SOUNDKNOB, HID_QUIRK_IGNORE }, |
1490 | { USB_VENDOR_ID_KBGEAR, USB_DEVICE_ID_KBGEAR_JAMSTUDIO, HID_QUIRK_IGNORE }, | 1496 | { USB_VENDOR_ID_KBGEAR, USB_DEVICE_ID_KBGEAR_JAMSTUDIO, HID_QUIRK_IGNORE }, |
1491 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_CASSY, HID_QUIRK_IGNORE }, | 1497 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_CASSY, HID_QUIRK_IGNORE }, |
1492 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_POCKETCASSY, HID_QUIRK_IGNORE }, | 1498 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POCKETCASSY, HID_QUIRK_IGNORE }, |
1493 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_MOBILECASSY, HID_QUIRK_IGNORE }, | 1499 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MOBILECASSY, HID_QUIRK_IGNORE }, |
1494 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_JWM, HID_QUIRK_IGNORE }, | 1500 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_JWM, HID_QUIRK_IGNORE }, |
1495 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_DMMP, HID_QUIRK_IGNORE }, | 1501 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_DMMP, HID_QUIRK_IGNORE }, |
1496 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_UMIP, HID_QUIRK_IGNORE }, | 1502 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_UMIP, HID_QUIRK_IGNORE }, |
1497 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_VIDEOCOM, HID_QUIRK_IGNORE }, | 1503 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_XRAY1, HID_QUIRK_IGNORE }, |
1498 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_COM3LAB, HID_QUIRK_IGNORE }, | 1504 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_XRAY2, HID_QUIRK_IGNORE }, |
1499 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_TELEPORT, HID_QUIRK_IGNORE }, | 1505 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_VIDEOCOM, HID_QUIRK_IGNORE }, |
1500 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_NETWORKANALYSER, HID_QUIRK_IGNORE }, | 1506 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_COM3LAB, HID_QUIRK_IGNORE }, |
1501 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_POWERCONTROL, HID_QUIRK_IGNORE }, | 1507 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_TELEPORT, HID_QUIRK_IGNORE }, |
1508 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_NETWORKANALYSER, HID_QUIRK_IGNORE }, | ||
1509 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_POWERCONTROL, HID_QUIRK_IGNORE }, | ||
1510 | { USB_VENDOR_ID_LD, USB_DEVICE_ID_LD_MACHINETEST, HID_QUIRK_IGNORE }, | ||
1502 | { USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1024LS, HID_QUIRK_IGNORE }, | 1511 | { USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1024LS, HID_QUIRK_IGNORE }, |
1503 | { USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1208LS, HID_QUIRK_IGNORE }, | 1512 | { USB_VENDOR_ID_MCC, USB_DEVICE_ID_MCC_PMD1208LS, HID_QUIRK_IGNORE }, |
1504 | { USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS, HID_QUIRK_IGNORE }, | 1513 | { USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS, HID_QUIRK_IGNORE }, |
@@ -1566,6 +1575,7 @@ static const struct hid_blacklist { | |||
1566 | { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVMC, HID_QUIRK_NOGET }, | 1575 | { USB_VENDOR_ID_ATEN, USB_DEVICE_ID_ATEN_4PORTKVMC, HID_QUIRK_NOGET }, |
1567 | { USB_VENDOR_ID_BTC, USB_DEVICE_ID_BTC_KEYBOARD, HID_QUIRK_NOGET}, | 1576 | { USB_VENDOR_ID_BTC, USB_DEVICE_ID_BTC_KEYBOARD, HID_QUIRK_NOGET}, |
1568 | { USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_USBHUB_KB, HID_QUIRK_NOGET}, | 1577 | { USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_USBHUB_KB, HID_QUIRK_NOGET}, |
1578 | { USB_VENDOR_ID_HP, USB_DEVICE_ID_HP_USBHUB_KB, HID_QUIRK_NOGET }, | ||
1569 | { USB_VENDOR_ID_TANGTOP, USB_DEVICE_ID_TANGTOP_USBPS2, HID_QUIRK_NOGET }, | 1579 | { USB_VENDOR_ID_TANGTOP, USB_DEVICE_ID_TANGTOP_USBPS2, HID_QUIRK_NOGET }, |
1570 | 1580 | ||
1571 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_POWERMOUSE, HID_QUIRK_2WHEEL_POWERMOUSE }, | 1581 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_POWERMOUSE, HID_QUIRK_2WHEEL_POWERMOUSE }, |
@@ -1828,9 +1838,6 @@ static struct hid_device *usb_hid_configure(struct usb_interface *intf) | |||
1828 | hid->urbctrl->transfer_dma = hid->ctrlbuf_dma; | 1838 | hid->urbctrl->transfer_dma = hid->ctrlbuf_dma; |
1829 | hid->urbctrl->transfer_flags |= (URB_NO_TRANSFER_DMA_MAP | URB_NO_SETUP_DMA_MAP); | 1839 | hid->urbctrl->transfer_flags |= (URB_NO_TRANSFER_DMA_MAP | URB_NO_SETUP_DMA_MAP); |
1830 | 1840 | ||
1831 | /* May be needed for some devices */ | ||
1832 | usb_clear_halt(hid->dev, hid->urbin->pipe); | ||
1833 | |||
1834 | return hid; | 1841 | return hid; |
1835 | 1842 | ||
1836 | fail: | 1843 | fail: |
diff --git a/drivers/usb/input/hiddev.c b/drivers/usb/input/hiddev.c index 4dff8473553d..925f5aba06f5 100644 --- a/drivers/usb/input/hiddev.c +++ b/drivers/usb/input/hiddev.c | |||
@@ -35,7 +35,6 @@ | |||
35 | #include <linux/usb.h> | 35 | #include <linux/usb.h> |
36 | #include "hid.h" | 36 | #include "hid.h" |
37 | #include <linux/hiddev.h> | 37 | #include <linux/hiddev.h> |
38 | #include <linux/devfs_fs_kernel.h> | ||
39 | 38 | ||
40 | #ifdef CONFIG_USB_DYNAMIC_MINORS | 39 | #ifdef CONFIG_USB_DYNAMIC_MINORS |
41 | #define HIDDEV_MINOR_BASE 0 | 40 | #define HIDDEV_MINOR_BASE 0 |
@@ -632,7 +631,7 @@ static int hiddev_ioctl(struct inode *inode, struct file *file, unsigned int cmd | |||
632 | 631 | ||
633 | else if ((cmd == HIDIOCGUSAGES || cmd == HIDIOCSUSAGES) && | 632 | else if ((cmd == HIDIOCGUSAGES || cmd == HIDIOCSUSAGES) && |
634 | (uref_multi->num_values > HID_MAX_MULTI_USAGES || | 633 | (uref_multi->num_values > HID_MAX_MULTI_USAGES || |
635 | uref->usage_index + uref_multi->num_values >= field->report_count)) | 634 | uref->usage_index + uref_multi->num_values > field->report_count)) |
636 | goto inval; | 635 | goto inval; |
637 | } | 636 | } |
638 | 637 | ||
@@ -832,12 +831,10 @@ static /* const */ struct usb_driver hiddev_driver = { | |||
832 | 831 | ||
833 | int __init hiddev_init(void) | 832 | int __init hiddev_init(void) |
834 | { | 833 | { |
835 | devfs_mk_dir("usb/hid"); | ||
836 | return usb_register(&hiddev_driver); | 834 | return usb_register(&hiddev_driver); |
837 | } | 835 | } |
838 | 836 | ||
839 | void hiddev_exit(void) | 837 | void hiddev_exit(void) |
840 | { | 838 | { |
841 | usb_deregister(&hiddev_driver); | 839 | usb_deregister(&hiddev_driver); |
842 | devfs_remove("usb/hid"); | ||
843 | } | 840 | } |
diff --git a/drivers/usb/input/touchkitusb.c b/drivers/usb/input/touchkitusb.c index 3b3c7b4120a2..697c5e573a11 100644 --- a/drivers/usb/input/touchkitusb.c +++ b/drivers/usb/input/touchkitusb.c | |||
@@ -337,6 +337,9 @@ static int touchkit_probe(struct usb_interface *intf, | |||
337 | touchkit->data, TOUCHKIT_REPORT_DATA_SIZE, | 337 | touchkit->data, TOUCHKIT_REPORT_DATA_SIZE, |
338 | touchkit_irq, touchkit, endpoint->bInterval); | 338 | touchkit_irq, touchkit, endpoint->bInterval); |
339 | 339 | ||
340 | touchkit->irq->transfer_dma = touchkit->data_dma; | ||
341 | touchkit->irq->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; | ||
342 | |||
340 | input_register_device(touchkit->input); | 343 | input_register_device(touchkit->input); |
341 | 344 | ||
342 | usb_set_intfdata(intf, touchkit); | 345 | usb_set_intfdata(intf, touchkit); |
diff --git a/drivers/usb/input/yealink.c b/drivers/usb/input/yealink.c index 1bfc105ad4d6..37d2f0ba0319 100644 --- a/drivers/usb/input/yealink.c +++ b/drivers/usb/input/yealink.c | |||
@@ -59,7 +59,7 @@ | |||
59 | #include "map_to_7segment.h" | 59 | #include "map_to_7segment.h" |
60 | #include "yealink.h" | 60 | #include "yealink.h" |
61 | 61 | ||
62 | #define DRIVER_VERSION "yld-20050816" | 62 | #define DRIVER_VERSION "yld-20051230" |
63 | #define DRIVER_AUTHOR "Henk Vergonet" | 63 | #define DRIVER_AUTHOR "Henk Vergonet" |
64 | #define DRIVER_DESC "Yealink phone driver" | 64 | #define DRIVER_DESC "Yealink phone driver" |
65 | 65 | ||
@@ -786,16 +786,25 @@ static struct attribute_group yld_attr_group = { | |||
786 | * Linux interface and usb initialisation | 786 | * Linux interface and usb initialisation |
787 | ******************************************************************************/ | 787 | ******************************************************************************/ |
788 | 788 | ||
789 | static const struct yld_device { | 789 | struct driver_info { |
790 | u16 idVendor; | ||
791 | u16 idProduct; | ||
792 | char *name; | 790 | char *name; |
793 | } yld_device[] = { | ||
794 | { 0x6993, 0xb001, "Yealink usb-p1k" }, | ||
795 | }; | 791 | }; |
796 | 792 | ||
797 | static struct usb_device_id usb_table [] = { | 793 | static const struct driver_info info_P1K = { |
798 | { USB_INTERFACE_INFO(USB_CLASS_HID, 0, 0) }, | 794 | .name = "Yealink usb-p1k", |
795 | }; | ||
796 | |||
797 | static const struct usb_device_id usb_table [] = { | ||
798 | { | ||
799 | .match_flags = USB_DEVICE_ID_MATCH_DEVICE | | ||
800 | USB_DEVICE_ID_MATCH_INT_INFO, | ||
801 | .idVendor = 0x6993, | ||
802 | .idProduct = 0xb001, | ||
803 | .bInterfaceClass = USB_CLASS_HID, | ||
804 | .bInterfaceSubClass = 0, | ||
805 | .bInterfaceProtocol = 0, | ||
806 | .driver_info = (kernel_ulong_t)&info_P1K | ||
807 | }, | ||
799 | { } | 808 | { } |
800 | }; | 809 | }; |
801 | 810 | ||
@@ -842,33 +851,16 @@ static void usb_disconnect(struct usb_interface *intf) | |||
842 | usb_cleanup(yld, 0); | 851 | usb_cleanup(yld, 0); |
843 | } | 852 | } |
844 | 853 | ||
845 | static int usb_match(struct usb_device *udev) | ||
846 | { | ||
847 | int i; | ||
848 | u16 idVendor = le16_to_cpu(udev->descriptor.idVendor); | ||
849 | u16 idProduct = le16_to_cpu(udev->descriptor.idProduct); | ||
850 | |||
851 | for (i = 0; i < ARRAY_SIZE(yld_device); i++) { | ||
852 | if ((idVendor == yld_device[i].idVendor) && | ||
853 | (idProduct == yld_device[i].idProduct)) | ||
854 | return i; | ||
855 | } | ||
856 | return -ENODEV; | ||
857 | } | ||
858 | |||
859 | static int usb_probe(struct usb_interface *intf, const struct usb_device_id *id) | 854 | static int usb_probe(struct usb_interface *intf, const struct usb_device_id *id) |
860 | { | 855 | { |
861 | struct usb_device *udev = interface_to_usbdev (intf); | 856 | struct usb_device *udev = interface_to_usbdev (intf); |
857 | struct driver_info *nfo = (struct driver_info *)id->driver_info; | ||
862 | struct usb_host_interface *interface; | 858 | struct usb_host_interface *interface; |
863 | struct usb_endpoint_descriptor *endpoint; | 859 | struct usb_endpoint_descriptor *endpoint; |
864 | struct yealink_dev *yld; | 860 | struct yealink_dev *yld; |
865 | struct input_dev *input_dev; | 861 | struct input_dev *input_dev; |
866 | int ret, pipe, i; | 862 | int ret, pipe, i; |
867 | 863 | ||
868 | i = usb_match(udev); | ||
869 | if (i < 0) | ||
870 | return -ENODEV; | ||
871 | |||
872 | interface = intf->cur_altsetting; | 864 | interface = intf->cur_altsetting; |
873 | endpoint = &interface->endpoint[0].desc; | 865 | endpoint = &interface->endpoint[0].desc; |
874 | if (!(endpoint->bEndpointAddress & USB_DIR_IN)) | 866 | if (!(endpoint->bEndpointAddress & USB_DIR_IN)) |
@@ -915,7 +907,7 @@ static int usb_probe(struct usb_interface *intf, const struct usb_device_id *id) | |||
915 | pipe = usb_rcvintpipe(udev, endpoint->bEndpointAddress); | 907 | pipe = usb_rcvintpipe(udev, endpoint->bEndpointAddress); |
916 | ret = usb_maxpacket(udev, pipe, usb_pipeout(pipe)); | 908 | ret = usb_maxpacket(udev, pipe, usb_pipeout(pipe)); |
917 | if (ret != USB_PKT_LEN) | 909 | if (ret != USB_PKT_LEN) |
918 | err("invalid payload size %d, expected %d", ret, USB_PKT_LEN); | 910 | err("invalid payload size %d, expected %zd", ret, USB_PKT_LEN); |
919 | 911 | ||
920 | /* initialise irq urb */ | 912 | /* initialise irq urb */ |
921 | usb_fill_int_urb(yld->urb_irq, udev, pipe, yld->irq_data, | 913 | usb_fill_int_urb(yld->urb_irq, udev, pipe, yld->irq_data, |
@@ -948,7 +940,7 @@ static int usb_probe(struct usb_interface *intf, const struct usb_device_id *id) | |||
948 | strlcat(yld->phys, "/input0", sizeof(yld->phys)); | 940 | strlcat(yld->phys, "/input0", sizeof(yld->phys)); |
949 | 941 | ||
950 | /* register settings for the input device */ | 942 | /* register settings for the input device */ |
951 | input_dev->name = yld_device[i].name; | 943 | input_dev->name = nfo->name; |
952 | input_dev->phys = yld->phys; | 944 | input_dev->phys = yld->phys; |
953 | usb_to_input_id(udev, &input_dev->id); | 945 | usb_to_input_id(udev, &input_dev->id); |
954 | input_dev->cdev.dev = &intf->dev; | 946 | input_dev->cdev.dev = &intf->dev; |