Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
HID: Apple ALU wireless keyboards are bluetooth devices
HID: remove setup mutex, fix possible deadlock
HID: add USB ID for another dual gameron adapter
HID: unignore mouse on unibody macbooks
HID: fix blacklist entries for greenasia/pantherlord

+14 -28
+3 -3
drivers/hid/hid-apple.c
··· 400 400 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS), 401 401 .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN | 402 402 APPLE_RDESC_JIS }, 403 - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI), 403 + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI), 404 404 .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN }, 405 - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ISO), 405 + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ISO), 406 406 .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN | 407 407 APPLE_ISO_KEYBOARD }, 408 - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_JIS), 408 + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_JIS), 409 409 .driver_data = APPLE_NUMLOCK_EMULATION | APPLE_HAS_FN }, 410 410 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_ANSI), 411 411 .driver_data = APPLE_HAS_FN },
+6 -8
drivers/hid/hid-core.c
··· 1241 1241 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ANSI) }, 1242 1242 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ISO) }, 1243 1243 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS) }, 1244 - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI) }, 1245 - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ISO) }, 1246 - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_JIS) }, 1244 + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI) }, 1245 + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ISO) }, 1246 + { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_JIS) }, 1247 1247 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_ANSI) }, 1248 1248 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_ISO) }, 1249 1249 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_JIS) }, ··· 1266 1266 { HID_USB_DEVICE(USB_VENDOR_ID_DELL, USB_DEVICE_ID_DELL_SK8115) }, 1267 1267 { HID_USB_DEVICE(USB_VENDOR_ID_EZKEY, USB_DEVICE_ID_BTC_8193) }, 1268 1268 { HID_USB_DEVICE(USB_VENDOR_ID_GENERIC_13BA, USB_DEVICE_ID_GENERIC_13BA_KBD_MOUSE) }, 1269 + { HID_USB_DEVICE(USB_VENDOR_ID_GAMERON, USB_DEVICE_ID_GAMERON_DUAL_PSX_ADAPTOR) }, 1270 + { HID_USB_DEVICE(USB_VENDOR_ID_GAMERON, USB_DEVICE_ID_GAMERON_DUAL_PCS_ADAPTOR) }, 1271 + { HID_USB_DEVICE(USB_VENDOR_ID_GREENASIA, 0x0003) }, 1269 1272 { HID_USB_DEVICE(USB_VENDOR_ID_GYRATION, USB_DEVICE_ID_GYRATION_REMOTE) }, 1270 1273 { HID_USB_DEVICE(USB_VENDOR_ID_GYRATION, USB_DEVICE_ID_GYRATION_REMOTE_2) }, 1271 1274 { HID_USB_DEVICE(USB_VENDOR_ID_LABTEC, USB_DEVICE_ID_LABTEC_WIRELESS_KEYBOARD) }, ··· 1423 1420 { HID_USB_DEVICE(USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EARTHMATE) }, 1424 1421 { HID_USB_DEVICE(USB_VENDOR_ID_DELORME, USB_DEVICE_ID_DELORME_EM_LT20) }, 1425 1422 { HID_USB_DEVICE(USB_VENDOR_ID_ESSENTIAL_REALITY, USB_DEVICE_ID_ESSENTIAL_REALITY_P5) }, 1426 - { HID_USB_DEVICE(USB_VENDOR_ID_GAMERON, USB_DEVICE_ID_GAMERON_DUAL_PSX_ADAPTOR) }, 1427 1423 { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0001) }, 1428 1424 { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0002) }, 1429 1425 { HID_USB_DEVICE(USB_VENDOR_ID_GENERAL_TOUCH, 0x0003) }, ··· 1438 1436 { HID_USB_DEVICE(USB_VENDOR_ID_GOTOP, USB_DEVICE_ID_SUPER_Q2) }, 1439 1437 { HID_USB_DEVICE(USB_VENDOR_ID_GOTOP, USB_DEVICE_ID_GOGOPEN) }, 1440 1438 { HID_USB_DEVICE(USB_VENDOR_ID_GOTOP, USB_DEVICE_ID_PENPOWER) }, 1441 - { HID_USB_DEVICE(USB_VENDOR_ID_GREENASIA, 0x0003) }, 1442 1439 { HID_USB_DEVICE(USB_VENDOR_ID_GRETAGMACBETH, USB_DEVICE_ID_GRETAGMACBETH_HUEY) }, 1443 1440 { HID_USB_DEVICE(USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_POWERMATE) }, 1444 1441 { HID_USB_DEVICE(USB_VENDOR_ID_GRIFFIN, USB_DEVICE_ID_SOUNDKNOB) }, ··· 1577 1576 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING2_ANSI) }, 1578 1577 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING2_ISO) }, 1579 1578 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING2_JIS) }, 1580 - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI) }, 1581 - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ISO) }, 1582 - { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS) }, 1583 1579 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) }, 1584 1580 { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) }, 1585 1581 { }
+1
drivers/hid/hid-ids.h
··· 163 163 164 164 #define USB_VENDOR_ID_GAMERON 0x0810 165 165 #define USB_DEVICE_ID_GAMERON_DUAL_PSX_ADAPTOR 0x0001 166 + #define USB_DEVICE_ID_GAMERON_DUAL_PCS_ADAPTOR 0x0002 166 167 167 168 #define USB_VENDOR_ID_GENERAL_TOUCH 0x0dfc 168 169
+2
drivers/hid/hid-pl.c
··· 178 178 static const struct hid_device_id pl_devices[] = { 179 179 { HID_USB_DEVICE(USB_VENDOR_ID_GAMERON, USB_DEVICE_ID_GAMERON_DUAL_PSX_ADAPTOR), 180 180 .driver_data = 1 }, /* Twin USB Joystick */ 181 + { HID_USB_DEVICE(USB_VENDOR_ID_GAMERON, USB_DEVICE_ID_GAMERON_DUAL_PCS_ADAPTOR), 182 + .driver_data = 1 }, /* Twin USB Joystick */ 181 183 { HID_USB_DEVICE(USB_VENDOR_ID_GREENASIA, 0x0003), }, /* GreenAsia Inc. USB Joystick */ 182 184 { } 183 185 };
+2 -16
drivers/hid/usbhid/hid-core.c
··· 796 796 if (insize > HID_MAX_BUFFER_SIZE) 797 797 insize = HID_MAX_BUFFER_SIZE; 798 798 799 - mutex_lock(&usbhid->setup); 800 799 if (hid_alloc_buffers(dev, hid)) { 801 800 ret = -ENOMEM; 802 801 goto fail; ··· 875 876 hid_dump_device(hid); 876 877 877 878 set_bit(HID_STARTED, &usbhid->iofl); 878 - mutex_unlock(&usbhid->setup); 879 879 880 880 return 0; 881 881 ··· 886 888 usbhid->urbout = NULL; 887 889 usbhid->urbctrl = NULL; 888 890 hid_free_buffers(dev, hid); 889 - mutex_unlock(&usbhid->setup); 890 891 return ret; 891 892 } 892 893 ··· 896 899 if (WARN_ON(!usbhid)) 897 900 return; 898 901 899 - mutex_lock(&usbhid->setup); 900 902 clear_bit(HID_STARTED, &usbhid->iofl); 901 903 spin_lock_irq(&usbhid->inlock); /* Sync with error handler */ 902 904 set_bit(HID_DISCONNECTED, &usbhid->iofl); ··· 924 928 usbhid->urbout = NULL; 925 929 926 930 hid_free_buffers(hid_to_usb_dev(hid), hid); 927 - mutex_unlock(&usbhid->setup); 928 931 } 929 932 930 933 static struct hid_ll_driver usb_hid_driver = { ··· 1011 1016 1012 1017 hid->driver_data = usbhid; 1013 1018 usbhid->hid = hid; 1014 - mutex_init(&usbhid->setup); /* needed on suspend/resume */ 1015 1019 1016 1020 ret = hid_add_device(hid); 1017 1021 if (ret) { ··· 1045 1051 struct hid_device *hid = usb_get_intfdata (intf); 1046 1052 struct usbhid_device *usbhid = hid->driver_data; 1047 1053 1048 - mutex_lock(&usbhid->setup); 1049 - if (!test_bit(HID_STARTED, &usbhid->iofl)) { 1050 - mutex_unlock(&usbhid->setup); 1054 + if (!test_bit(HID_STARTED, &usbhid->iofl)) 1051 1055 return 0; 1052 - } 1053 1056 1054 1057 spin_lock_irq(&usbhid->inlock); /* Sync with error handler */ 1055 1058 set_bit(HID_SUSPENDED, &usbhid->iofl); 1056 1059 spin_unlock_irq(&usbhid->inlock); 1057 1060 del_timer_sync(&usbhid->io_retry); 1058 1061 usb_kill_urb(usbhid->urbin); 1059 - mutex_unlock(&usbhid->setup); 1060 1062 dev_dbg(&intf->dev, "suspend\n"); 1061 1063 return 0; 1062 1064 } ··· 1063 1073 struct usbhid_device *usbhid = hid->driver_data; 1064 1074 int status; 1065 1075 1066 - mutex_lock(&usbhid->setup); 1067 - if (!test_bit(HID_STARTED, &usbhid->iofl)) { 1068 - mutex_unlock(&usbhid->setup); 1076 + if (!test_bit(HID_STARTED, &usbhid->iofl)) 1069 1077 return 0; 1070 - } 1071 1078 1072 1079 clear_bit(HID_SUSPENDED, &usbhid->iofl); 1073 1080 usbhid->retry_delay = 0; 1074 1081 status = hid_start_in(hid); 1075 - mutex_unlock(&usbhid->setup); 1076 1082 dev_dbg(&intf->dev, "resume status %d\n", status); 1077 1083 return status; 1078 1084 }
-1
drivers/hid/usbhid/usbhid.h
··· 74 74 dma_addr_t outbuf_dma; /* Output buffer dma */ 75 75 spinlock_t outlock; /* Output fifo spinlock */ 76 76 77 - struct mutex setup; 78 77 unsigned long iofl; /* I/O flags (CTRL_RUNNING, OUT_RUNNING) */ 79 78 struct timer_list io_retry; /* Retry timer */ 80 79 unsigned long stop_retry; /* Time to give up, in jiffies */