diff options
| -rw-r--r-- | drivers/hid/Kconfig | 7 | ||||
| -rw-r--r-- | drivers/hid/Makefile | 1 | ||||
| -rw-r--r-- | drivers/hid/hid-core.c | 1 | ||||
| -rw-r--r-- | drivers/hid/hid-dell.c | 74 | ||||
| -rw-r--r-- | drivers/hid/hid-dummy.c | 3 | ||||
| -rw-r--r-- | drivers/hid/usbhid/hid-quirks.c | 2 | 
6 files changed, 86 insertions, 2 deletions
diff --git a/drivers/hid/Kconfig b/drivers/hid/Kconfig index 7ced6476026..1ab067ee7e6 100644 --- a/drivers/hid/Kconfig +++ b/drivers/hid/Kconfig @@ -131,6 +131,13 @@ config HID_CYPRESS  	---help---  	Support for Cypress mouse and barcodes. +config HID_DELL +	tristate "Dell" +	default m +	depends on USB_HID +	---help--- +	Support for Dell W7658. +  config HID_EZKEY  	tristate "Ezkey"  	default m diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile index 4f39b9431eb..4a756c6e3a9 100644 --- a/drivers/hid/Makefile +++ b/drivers/hid/Makefile @@ -18,6 +18,7 @@ obj-$(CONFIG_HID_BELKIN)	+= hid-belkin.o  obj-$(CONFIG_HID_CHERRY)	+= hid-cherry.o  obj-$(CONFIG_HID_CHICONY)	+= hid-chicony.o  obj-$(CONFIG_HID_CYPRESS)	+= hid-cypress.o +obj-$(CONFIG_HID_DELL)		+= hid-dell.o  obj-$(CONFIG_HID_EZKEY)		+= hid-ezkey.o  obj-$(CONFIG_HID_GYRATION)	+= hid-gyration.o  obj-$(CONFIG_HID_LOGITECH)	+= hid-logitech.o diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index f527e332b59..ea5f8bc900e 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c @@ -1170,6 +1170,7 @@ static const struct hid_device_id hid_blacklist[] = {  	{ HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_1) },  	{ HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_BARCODE_2) },  	{ HID_USB_DEVICE(USB_VENDOR_ID_CYPRESS, USB_DEVICE_ID_CYPRESS_MOUSE) }, +	{ HID_USB_DEVICE(USB_VENDOR_ID_DELL, USB_DEVICE_ID_DELL_W7658) },  	{ HID_USB_DEVICE(USB_VENDOR_ID_EZKEY, USB_DEVICE_ID_BTC_8193) },  	{ HID_USB_DEVICE(USB_VENDOR_ID_GYRATION, USB_DEVICE_ID_GYRATION_REMOTE) },  	{ HID_USB_DEVICE(USB_VENDOR_ID_LABTEC, USB_DEVICE_ID_LABTEC_WIRELESS_KEYBOARD) }, diff --git a/drivers/hid/hid-dell.c b/drivers/hid/hid-dell.c new file mode 100644 index 00000000000..5d1d54cfa87 --- /dev/null +++ b/drivers/hid/hid-dell.c @@ -0,0 +1,74 @@ +/* + *  HID driver for some dell "special" devices + * + *  Copyright (c) 1999 Andreas Gal + *  Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz> + *  Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc + *  Copyright (c) 2006-2007 Jiri Kosina + *  Copyright (c) 2007 Paul Walmsley + *  Copyright (c) 2008 Jiri Slaby + */ + +/* + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + */ + +#include <linux/device.h> +#include <linux/hid.h> +#include <linux/module.h> + +#include "hid-ids.h" + +static int dell_probe(struct hid_device *hdev, const struct hid_device_id *id) +{ +	int ret; + +	hdev->quirks |= HID_QUIRK_RESET_LEDS; + +	ret = hid_parse(hdev); +	if (ret) { +		dev_err(&hdev->dev, "parse failed\n"); +		goto err_free; +	} + +	ret = hid_hw_start(hdev); +	if (ret) { +		dev_err(&hdev->dev, "hw start failed\n"); +		goto err_free; +	} + +	return 0; +err_free: +	return ret; +} + +static const struct hid_device_id dell_devices[] = { +	{ HID_USB_DEVICE(USB_VENDOR_ID_DELL, USB_DEVICE_ID_DELL_W7658) }, +	{ } +}; +MODULE_DEVICE_TABLE(hid, dell_devices); + +static struct hid_driver dell_driver = { +	.name = "dell", +	.id_table = dell_devices, +	.probe = dell_probe, +}; + +static int dell_init(void) +{ +	return hid_register_driver(&dell_driver); +} + +static void dell_exit(void) +{ +	hid_unregister_driver(&dell_driver); +} + +module_init(dell_init); +module_exit(dell_exit); +MODULE_LICENSE("GPL"); + +HID_COMPAT_LOAD_DRIVER(dell); diff --git a/drivers/hid/hid-dummy.c b/drivers/hid/hid-dummy.c index 1ef3111f7fe..684191dcb32 100644 --- a/drivers/hid/hid-dummy.c +++ b/drivers/hid/hid-dummy.c @@ -22,6 +22,9 @@ static int __init hid_dummy_init(void)  #ifdef CONFIG_HID_CYPRESS_MODULE  	HID_COMPAT_CALL_DRIVER(cypress);  #endif +#ifdef CONFIG_HID_DELL_MODULE +	HID_COMPAT_CALL_DRIVER(dell); +#endif  #ifdef CONFIG_HID_EZKEY_MODULE  	HID_COMPAT_CALL_DRIVER(ezkey);  #endif diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c index a154a7dc1e6..71bf64bc146 100644 --- a/drivers/hid/usbhid/hid-quirks.c +++ b/drivers/hid/usbhid/hid-quirks.c @@ -60,8 +60,6 @@ static const struct hid_blacklist {  	{ USB_VENDOR_ID_WISEGROUP_LTD, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS, HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, -	{ USB_VENDOR_ID_DELL, USB_DEVICE_ID_DELL_W7658, HID_QUIRK_RESET_LEDS }, -  	{ 0, 0 }  };  |