usb/hid:The HID Simple Driver Interface 0.5.0 (core)
PATCH 1/1 usb/hid:The HID Simple Driver Interface 0.5.0 (core)
Changelogs (since 0.4.1):
1. port to 2.6.21.
2. One bugfix.
The code base is 2.6.21-rc2.
Signed-off-by Liyu <[email protected]>
include/linux/hid.h +12 -0
@@ -35,6 +35,7 @@#include <linux/timer.h> #include <linux/workqueue.h> #include <linux/input.h> +#include <linux/mutex.h> /* * USB HID (Human Interface Device) interface class code
@@ -397,8 +398,15 @@ struct hid_input {struct list_head list;struct hid_report *report;struct input_dev *input; +unsigned long input_lock;/* To protect accessing input_dev from +* hid-input processing. But it not +* necessary for accessing this input_dev +* instance from input subsystem. */ +void *private; }; +struct hidinput_simple_driver ; +struct hid_device {/* device report descriptor */ __u8 *rdesc;unsigned rsize;
@@ -429,6 +437,8 @@ struct hid_device { /* device repochar phys[64 ];/* Device physical location */ char uniq[64 ];/* Device unique identifier (serial #) */ +struct hidinput_simple_driver *simple; +void *driver_data;/* device-specific function pointers */
@@ -483,6 +493,8 @@ extern void hidinput_hid_event(struct hiextern void hidinput_report_event (struct hid_device *hid,struct hid_report *report);extern int hidinput_connect (struct hid_device *);extern void hidinput_disconnect (struct hid_device *); +extern void hidinput_reconnect_core (struct hid_device *); +extern int hidinput_disconnect_core (struct hid_device *);int hid_set_field (struct hid_field *,unsigned ,__s32 );int hid_input_report (struct hid_device *,int type,u8 *,int ,int );
include/linux/hid-simple.h +260 -0
260 lines not on this page · raw message
drivers/hid/hid-core.c +151 -2
185 lines not on this page · raw message
drivers/hid/hid-input.c +157 -42
370 lines not on this page · raw message
drivers/hid/hid-simple.c +334 -0
334 lines not on this page · raw message
drivers/hid/Kconfig +8 -0
@@ -36,5 +36,13 @@ config HID_DEBUG If unsure, say N +config HID_SIMPLE + bool "HID simple driver interface" + depends on HID + help + This simple interface let the writing HID driver more easier. Moreover, + this allow you write force-feedback driver without touch HID input + implementation code. Also, it can be used as input filter. + endmenu
drivers/hid/Makefile +4 -0
@@ -3,6 +3,10 @@ # hid-objs := hid-core.o hid-input.o +ifeq ($(CONFIG_HID_SIMPLE),y) +hid-objs += hid-simple.o +endif + obj-$(CONFIG_HID) += hid.o hid-$(CONFIG_HID_DEBUG) += hid-debug.o
drivers/usb/input/hid-core.c +80 -3
124 lines not on this page · raw message