diff options
Diffstat (limited to 'drivers/hid/hid-core.c')
-rw-r--r-- | drivers/hid/hid-core.c | 37 |
1 files changed, 19 insertions, 18 deletions
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index 1cc967448f4d..5746a5903bce 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c | |||
@@ -1236,6 +1236,9 @@ static const struct hid_device_id hid_blacklist[] = { | |||
1236 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI) }, | 1236 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI) }, |
1237 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO) }, | 1237 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO) }, |
1238 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS) }, | 1238 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS) }, |
1239 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_MINI_ANSI) }, | ||
1240 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_MINI_ISO) }, | ||
1241 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_MINI_JIS) }, | ||
1239 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_ANSI) }, | 1242 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_ANSI) }, |
1240 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_ISO) }, | 1243 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_ISO) }, |
1241 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_JIS) }, | 1244 | { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_JIS) }, |
@@ -1262,6 +1265,7 @@ static const struct hid_device_id hid_blacklist[] = { | |||
1262 | { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_1) }, | 1265 | { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_1) }, |
1263 | { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_2) }, | 1266 | { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_2) }, |
1264 | { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_MOUSE) }, | 1267 | { HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_MOUSE) }, |
1268 | { HID_USB_DEVICE(USB_VENDOR_ID_DRAGONRISE, 0x0006) }, | ||
1265 | { HID_USB_DEVICE(USB_VENDOR_ID_EZKEY, USB_DEVICE_ID_BTC_8193) }, | 1269 | { HID_USB_DEVICE(USB_VENDOR_ID_EZKEY, USB_DEVICE_ID_BTC_8193) }, |
1266 | { 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_PSX_ADAPTOR) }, |
1267 | { HID_USB_DEVICE(USB_VENDOR_ID_GAMERON, USB_DEVICE_ID_GAMERON_DUAL_PCS_ADAPTOR) }, | 1271 | { HID_USB_DEVICE(USB_VENDOR_ID_GAMERON, USB_DEVICE_ID_GAMERON_DUAL_PCS_ADAPTOR) }, |
@@ -1269,6 +1273,8 @@ static const struct hid_device_id hid_blacklist[] = { | |||
1269 | { HID_USB_DEVICE(USB_VENDOR_ID_GREENASIA, 0x0012) }, | 1273 | { HID_USB_DEVICE(USB_VENDOR_ID_GREENASIA, 0x0012) }, |
1270 | { HID_USB_DEVICE(USB_VENDOR_ID_GYRATION, USB_DEVICE_ID_GYRATION_REMOTE) }, | 1274 | { HID_USB_DEVICE(USB_VENDOR_ID_GYRATION, USB_DEVICE_ID_GYRATION_REMOTE) }, |
1271 | { HID_USB_DEVICE(USB_VENDOR_ID_GYRATION, USB_DEVICE_ID_GYRATION_REMOTE_2) }, | 1275 | { HID_USB_DEVICE(USB_VENDOR_ID_GYRATION, USB_DEVICE_ID_GYRATION_REMOTE_2) }, |
1276 | { HID_USB_DEVICE(USB_VENDOR_ID_KENSINGTON, USB_DEVICE_ID_KS_SLIMBLADE) }, | ||
1277 | { HID_USB_DEVICE(USB_VENDOR_ID_KYE, USB_DEVICE_ID_KYE_ERGO_525V) }, | ||
1272 | { HID_USB_DEVICE(USB_VENDOR_ID_LABTEC, USB_DEVICE_ID_LABTEC_WIRELESS_KEYBOARD) }, | 1278 | { HID_USB_DEVICE(USB_VENDOR_ID_LABTEC, USB_DEVICE_ID_LABTEC_WIRELESS_KEYBOARD) }, |
1273 | { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_MX3000_RECEIVER) }, | 1279 | { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_MX3000_RECEIVER) }, |
1274 | { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_S510_RECEIVER) }, | 1280 | { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_S510_RECEIVER) }, |
@@ -1813,14 +1819,21 @@ void hid_unregister_driver(struct hid_driver *hdrv) | |||
1813 | } | 1819 | } |
1814 | EXPORT_SYMBOL_GPL(hid_unregister_driver); | 1820 | EXPORT_SYMBOL_GPL(hid_unregister_driver); |
1815 | 1821 | ||
1816 | #ifdef CONFIG_HID_COMPAT | 1822 | int hid_check_keys_pressed(struct hid_device *hid) |
1817 | static void hid_compat_load(struct work_struct *ws) | ||
1818 | { | 1823 | { |
1819 | request_module("hid-dummy"); | 1824 | struct hid_input *hidinput; |
1825 | int i; | ||
1826 | |||
1827 | list_for_each_entry(hidinput, &hid->inputs, list) { | ||
1828 | for (i = 0; i < BITS_TO_LONGS(KEY_MAX); i++) | ||
1829 | if (hidinput->input->key[i]) | ||
1830 | return 1; | ||
1831 | } | ||
1832 | |||
1833 | return 0; | ||
1820 | } | 1834 | } |
1821 | static DECLARE_WORK(hid_compat_work, hid_compat_load); | 1835 | |
1822 | static struct workqueue_struct *hid_compat_wq; | 1836 | EXPORT_SYMBOL_GPL(hid_check_keys_pressed); |
1823 | #endif | ||
1824 | 1837 | ||
1825 | static int __init hid_init(void) | 1838 | static int __init hid_init(void) |
1826 | { | 1839 | { |
@@ -1836,15 +1849,6 @@ static int __init hid_init(void) | |||
1836 | if (ret) | 1849 | if (ret) |
1837 | goto err_bus; | 1850 | goto err_bus; |
1838 | 1851 | ||
1839 | #ifdef CONFIG_HID_COMPAT | ||
1840 | hid_compat_wq = create_singlethread_workqueue("hid_compat"); | ||
1841 | if (!hid_compat_wq) { | ||
1842 | hidraw_exit(); | ||
1843 | goto err; | ||
1844 | } | ||
1845 | queue_work(hid_compat_wq, &hid_compat_work); | ||
1846 | #endif | ||
1847 | |||
1848 | return 0; | 1852 | return 0; |
1849 | err_bus: | 1853 | err_bus: |
1850 | bus_unregister(&hid_bus_type); | 1854 | bus_unregister(&hid_bus_type); |
@@ -1854,9 +1858,6 @@ err: | |||
1854 | 1858 | ||
1855 | static void __exit hid_exit(void) | 1859 | static void __exit hid_exit(void) |
1856 | { | 1860 | { |
1857 | #ifdef CONFIG_HID_COMPAT | ||
1858 | destroy_workqueue(hid_compat_wq); | ||
1859 | #endif | ||
1860 | hidraw_exit(); | 1861 | hidraw_exit(); |
1861 | bus_unregister(&hid_bus_type); | 1862 | bus_unregister(&hid_bus_type); |
1862 | } | 1863 | } |