浏览代码

Merge master.kernel.org:/pub/scm/linux/kernel/git/dtor/input

* master.kernel.org:/pub/scm/linux/kernel/git/dtor/input:
  Input: move USB miscellaneous devices under drivers/input/misc
  Input: move USB mice under drivers/input/mouse
  Input: move USB gamepads under drivers/input/joystick
  Input: move USB touchscreens under drivers/input/touchscreen
  Input: move USB tablets under drivers/input/tablet
  Input: i8042 - fix AUX port detection with some chips
  Input: aaed2000_kbd - convert to use polldev library
  Input: drivers/usb/input - usb_buffer_free() cleanup
  Input: synaptics - don't complain about failed resets
  Input: pull input.h into uinpit.h
  Input: drivers/usb/input - fix sparse warnings (signedness)
  Input: evdev - fix some sparse warnings (signedness, shadowing)
  Input: drivers/joystick - fix various sparse warnings
  Input: force feedback - make sure effect is present before playing
Linus Torvalds 18 年之前
父节点
当前提交
393bfca19e
共有 47 个文件被更改,包括 404 次插入404 次删除
  1. 2 0
      drivers/input/Kconfig
  2. 1 0
      drivers/input/Makefile
  3. 3 3
      drivers/input/evdev.c
  4. 2 1
      drivers/input/ff-core.c
  5. 16 2
      drivers/input/joystick/Kconfig
  6. 1 0
      drivers/input/joystick/Makefile
  7. 1 1
      drivers/input/joystick/analog.c
  8. 9 9
      drivers/input/joystick/db9.c
  9. 9 8
      drivers/input/joystick/gamecon.c
  10. 1 1
      drivers/input/joystick/iforce/iforce.h
  11. 10 8
      drivers/input/joystick/turbografx.c
  12. 0 0
      drivers/input/joystick/xpad.c
  13. 1 0
      drivers/input/keyboard/Kconfig
  14. 20 42
      drivers/input/keyboard/aaed2000_kbd.c
  15. 81 7
      drivers/input/misc/Kconfig
  16. 7 2
      drivers/input/misc/Makefile
  17. 0 0
      drivers/input/misc/ati_remote.c
  18. 1 3
      drivers/input/misc/ati_remote2.c
  19. 0 0
      drivers/input/misc/keyspan_remote.c
  20. 0 0
      drivers/input/misc/map_to_7segment.h
  21. 4 6
      drivers/input/misc/powermate.c
  22. 0 1
      drivers/input/misc/uinput.c
  23. 12 13
      drivers/input/misc/yealink.c
  24. 0 0
      drivers/input/misc/yealink.h
  25. 29 9
      drivers/input/mouse/Kconfig
  26. 1 0
      drivers/input/mouse/Makefile
  27. 0 0
      drivers/input/mouse/appletouch.c
  28. 1 1
      drivers/input/mouse/synaptics.c
  29. 29 6
      drivers/input/serio/i8042.c
  30. 74 0
      drivers/input/tablet/Kconfig
  31. 12 0
      drivers/input/tablet/Makefile
  32. 1 1
      drivers/input/tablet/acecad.c
  33. 0 0
      drivers/input/tablet/aiptek.c
  34. 0 0
      drivers/input/tablet/gtco.c
  35. 1 1
      drivers/input/tablet/kbtab.c
  36. 1 1
      drivers/input/tablet/wacom.h
  37. 1 1
      drivers/input/tablet/wacom_sys.c
  38. 1 1
      drivers/input/tablet/wacom_wac.c
  39. 2 2
      drivers/input/tablet/wacom_wac.h
  40. 57 3
      drivers/input/touchscreen/Kconfig
  41. 9 8
      drivers/input/touchscreen/Makefile
  42. 2 3
      drivers/input/touchscreen/usbtouchscreen.c
  43. 0 2
      drivers/usb/Kconfig
  44. 0 9
      drivers/usb/Makefile
  45. 0 225
      drivers/usb/input/Kconfig
  46. 0 24
      drivers/usb/input/Makefile
  47. 2 0
      include/linux/uinput.h

+ 2 - 0
drivers/input/Kconfig

@@ -153,6 +153,8 @@ source "drivers/input/mouse/Kconfig"
 
 
 source "drivers/input/joystick/Kconfig"
 source "drivers/input/joystick/Kconfig"
 
 
+source "drivers/input/tablet/Kconfig"
+
 source "drivers/input/touchscreen/Kconfig"
 source "drivers/input/touchscreen/Kconfig"
 
 
 source "drivers/input/misc/Kconfig"
 source "drivers/input/misc/Kconfig"

+ 1 - 0
drivers/input/Makefile

@@ -18,6 +18,7 @@ obj-$(CONFIG_INPUT_EVBUG)	+= evbug.o
 obj-$(CONFIG_INPUT_KEYBOARD)	+= keyboard/
 obj-$(CONFIG_INPUT_KEYBOARD)	+= keyboard/
 obj-$(CONFIG_INPUT_MOUSE)	+= mouse/
 obj-$(CONFIG_INPUT_MOUSE)	+= mouse/
 obj-$(CONFIG_INPUT_JOYSTICK)	+= joystick/
 obj-$(CONFIG_INPUT_JOYSTICK)	+= joystick/
+obj-$(CONFIG_INPUT_TABLET)	+= tablet/
 obj-$(CONFIG_INPUT_TOUCHSCREEN)	+= touchscreen/
 obj-$(CONFIG_INPUT_TOUCHSCREEN)	+= touchscreen/
 obj-$(CONFIG_INPUT_MISC)	+= misc/
 obj-$(CONFIG_INPUT_MISC)	+= misc/
 
 

+ 3 - 3
drivers/input/evdev.c

@@ -511,7 +511,7 @@ static long evdev_ioctl_handler(struct file *file, unsigned int cmd,
 
 
 				if ((_IOC_NR(cmd) & ~EV_MAX) == _IOC_NR(EVIOCGBIT(0,0))) {
 				if ((_IOC_NR(cmd) & ~EV_MAX) == _IOC_NR(EVIOCGBIT(0,0))) {
 
 
-					long *bits;
+					unsigned long *bits;
 					int len;
 					int len;
 
 
 					switch (_IOC_NR(cmd) & EV_MAX) {
 					switch (_IOC_NR(cmd) & EV_MAX) {
@@ -556,7 +556,7 @@ static long evdev_ioctl_handler(struct file *file, unsigned int cmd,
 
 
 				if ((_IOC_NR(cmd) & ~ABS_MAX) == _IOC_NR(EVIOCGABS(0))) {
 				if ((_IOC_NR(cmd) & ~ABS_MAX) == _IOC_NR(EVIOCGABS(0))) {
 
 
-					int t = _IOC_NR(cmd) & ABS_MAX;
+					t = _IOC_NR(cmd) & ABS_MAX;
 
 
 					abs.value = dev->abs[t];
 					abs.value = dev->abs[t];
 					abs.minimum = dev->absmin[t];
 					abs.minimum = dev->absmin[t];
@@ -576,7 +576,7 @@ static long evdev_ioctl_handler(struct file *file, unsigned int cmd,
 
 
 				if ((_IOC_NR(cmd) & ~ABS_MAX) == _IOC_NR(EVIOCSABS(0))) {
 				if ((_IOC_NR(cmd) & ~ABS_MAX) == _IOC_NR(EVIOCSABS(0))) {
 
 
-					int t = _IOC_NR(cmd) & ABS_MAX;
+					t = _IOC_NR(cmd) & ABS_MAX;
 
 
 					if (copy_from_user(&abs, p, sizeof(struct input_absinfo)))
 					if (copy_from_user(&abs, p, sizeof(struct input_absinfo)))
 						return -EFAULT;
 						return -EFAULT;

+ 2 - 1
drivers/input/ff-core.c

@@ -281,7 +281,8 @@ int input_ff_event(struct input_dev *dev, unsigned int type,
 		break;
 		break;
 
 
 	default:
 	default:
-		ff->playback(dev, code, value);
+		if (check_effect_access(ff, code, NULL) == 0)
+			ff->playback(dev, code, value);
 		break;
 		break;
 	}
 	}
 
 

+ 16 - 2
drivers/input/joystick/Kconfig

@@ -2,7 +2,7 @@
 # Joystick driver configuration
 # Joystick driver configuration
 #
 #
 menuconfig INPUT_JOYSTICK
 menuconfig INPUT_JOYSTICK
-	bool "Joysticks"
+	bool "Joysticks/Gamepads"
 	help
 	help
 	  If you have a joystick, 6dof controller, gamepad, steering wheel,
 	  If you have a joystick, 6dof controller, gamepad, steering wheel,
 	  weapon control system or something like that you can say Y here
 	  weapon control system or something like that you can say Y here
@@ -196,7 +196,7 @@ config JOYSTICK_TWIDJOY
 config JOYSTICK_DB9
 config JOYSTICK_DB9
 	tristate "Multisystem, Sega Genesis, Saturn joysticks and gamepads"
 	tristate "Multisystem, Sega Genesis, Saturn joysticks and gamepads"
 	depends on PARPORT
 	depends on PARPORT
-	---help---
+	help
 	  Say Y here if you have a Sega Master System gamepad, Sega Genesis
 	  Say Y here if you have a Sega Master System gamepad, Sega Genesis
 	  gamepad, Sega Saturn gamepad, or a Multisystem -- Atari, Amiga,
 	  gamepad, Sega Saturn gamepad, or a Multisystem -- Atari, Amiga,
 	  Commodore, Amstrad CPC joystick connected to your parallel port.
 	  Commodore, Amstrad CPC joystick connected to your parallel port.
@@ -253,4 +253,18 @@ config JOYSTICK_JOYDUMP
 	  To compile this driver as a module, choose M here: the
 	  To compile this driver as a module, choose M here: the
 	  module will be called joydump.
 	  module will be called joydump.
 
 
+config JOYSTICK_XPAD
+	tristate "X-Box gamepad support"
+	select USB
+	help
+	  Say Y here if you want to use the X-Box pad with your computer.
+	  Make sure to say Y to "Joystick support" (CONFIG_INPUT_JOYDEV)
+	  and/or "Event interface support" (CONFIG_INPUT_EVDEV) as well.
+
+	  For information about how to connect the X-Box pad to USB, see
+	  <file:Documentation/input/xpad.txt>.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called xpad.
+
 endif
 endif

+ 1 - 0
drivers/input/joystick/Makefile

@@ -26,5 +26,6 @@ obj-$(CONFIG_JOYSTICK_TMDC)		+= tmdc.o
 obj-$(CONFIG_JOYSTICK_TURBOGRAFX)	+= turbografx.o
 obj-$(CONFIG_JOYSTICK_TURBOGRAFX)	+= turbografx.o
 obj-$(CONFIG_JOYSTICK_TWIDJOY)		+= twidjoy.o
 obj-$(CONFIG_JOYSTICK_TWIDJOY)		+= twidjoy.o
 obj-$(CONFIG_JOYSTICK_WARRIOR)		+= warrior.o
 obj-$(CONFIG_JOYSTICK_WARRIOR)		+= warrior.o
+obj-$(CONFIG_JOYSTICK_XPAD)		+= xpad.o
 
 
 obj-$(CONFIG_JOYSTICK_IFORCE)		+= iforce/
 obj-$(CONFIG_JOYSTICK_IFORCE)		+= iforce/

+ 1 - 1
drivers/input/joystick/analog.c

@@ -53,7 +53,7 @@ MODULE_LICENSE("GPL");
 #define ANALOG_PORTS		16
 #define ANALOG_PORTS		16
 
 
 static char *js[ANALOG_PORTS];
 static char *js[ANALOG_PORTS];
-static int js_nargs;
+static unsigned int js_nargs;
 static int analog_options[ANALOG_PORTS];
 static int analog_options[ANALOG_PORTS];
 module_param_array_named(map, js, charp, &js_nargs, 0);
 module_param_array_named(map, js, charp, &js_nargs, 0);
 MODULE_PARM_DESC(map, "Describes analog joysticks type/capabilities");
 MODULE_PARM_DESC(map, "Describes analog joysticks type/capabilities");

+ 9 - 9
drivers/input/joystick/db9.c

@@ -46,17 +46,17 @@ MODULE_LICENSE("GPL");
 
 
 struct db9_config {
 struct db9_config {
 	int args[2];
 	int args[2];
-	int nargs;
+	unsigned int nargs;
 };
 };
 
 
 #define DB9_MAX_PORTS		3
 #define DB9_MAX_PORTS		3
-static struct db9_config db9[DB9_MAX_PORTS] __initdata;
+static struct db9_config db9_cfg[DB9_MAX_PORTS] __initdata;
 
 
-module_param_array_named(dev, db9[0].args, int, &db9[0].nargs, 0);
+module_param_array_named(dev, db9_cfg[0].args, int, &db9_cfg[0].nargs, 0);
 MODULE_PARM_DESC(dev, "Describes first attached device (<parport#>,<type>)");
 MODULE_PARM_DESC(dev, "Describes first attached device (<parport#>,<type>)");
-module_param_array_named(dev2, db9[1].args, int, &db9[0].nargs, 0);
+module_param_array_named(dev2, db9_cfg[1].args, int, &db9_cfg[0].nargs, 0);
 MODULE_PARM_DESC(dev2, "Describes second attached device (<parport#>,<type>)");
 MODULE_PARM_DESC(dev2, "Describes second attached device (<parport#>,<type>)");
-module_param_array_named(dev3, db9[2].args, int, &db9[2].nargs, 0);
+module_param_array_named(dev3, db9_cfg[2].args, int, &db9_cfg[2].nargs, 0);
 MODULE_PARM_DESC(dev3, "Describes third attached device (<parport#>,<type>)");
 MODULE_PARM_DESC(dev3, "Describes third attached device (<parport#>,<type>)");
 
 
 #define DB9_ARG_PARPORT		0
 #define DB9_ARG_PARPORT		0
@@ -680,17 +680,17 @@ static int __init db9_init(void)
 	int err = 0;
 	int err = 0;
 
 
 	for (i = 0; i < DB9_MAX_PORTS; i++) {
 	for (i = 0; i < DB9_MAX_PORTS; i++) {
-		if (db9[i].nargs == 0 || db9[i].args[DB9_ARG_PARPORT] < 0)
+		if (db9_cfg[i].nargs == 0 || db9_cfg[i].args[DB9_ARG_PARPORT] < 0)
 			continue;
 			continue;
 
 
-		if (db9[i].nargs < 2) {
+		if (db9_cfg[i].nargs < 2) {
 			printk(KERN_ERR "db9.c: Device type must be specified.\n");
 			printk(KERN_ERR "db9.c: Device type must be specified.\n");
 			err = -EINVAL;
 			err = -EINVAL;
 			break;
 			break;
 		}
 		}
 
 
-		db9_base[i] = db9_probe(db9[i].args[DB9_ARG_PARPORT],
-					db9[i].args[DB9_ARG_MODE]);
+		db9_base[i] = db9_probe(db9_cfg[i].args[DB9_ARG_PARPORT],
+					db9_cfg[i].args[DB9_ARG_MODE]);
 		if (IS_ERR(db9_base[i])) {
 		if (IS_ERR(db9_base[i])) {
 			err = PTR_ERR(db9_base[i]);
 			err = PTR_ERR(db9_base[i]);
 			break;
 			break;

+ 9 - 8
drivers/input/joystick/gamecon.c

@@ -48,16 +48,16 @@ MODULE_LICENSE("GPL");
 
 
 struct gc_config {
 struct gc_config {
 	int args[GC_MAX_DEVICES + 1];
 	int args[GC_MAX_DEVICES + 1];
-	int nargs;
+	unsigned int nargs;
 };
 };
 
 
-static struct gc_config gc[GC_MAX_PORTS] __initdata;
+static struct gc_config gc_cfg[GC_MAX_PORTS] __initdata;
 
 
-module_param_array_named(map, gc[0].args, int, &gc[0].nargs, 0);
+module_param_array_named(map, gc_cfg[0].args, int, &gc_cfg[0].nargs, 0);
 MODULE_PARM_DESC(map, "Describes first set of devices (<parport#>,<pad1>,<pad2>,..<pad5>)");
 MODULE_PARM_DESC(map, "Describes first set of devices (<parport#>,<pad1>,<pad2>,..<pad5>)");
-module_param_array_named(map2, gc[1].args, int, &gc[1].nargs, 0);
+module_param_array_named(map2, gc_cfg[1].args, int, &gc_cfg[1].nargs, 0);
 MODULE_PARM_DESC(map2, "Describes second set of devices");
 MODULE_PARM_DESC(map2, "Describes second set of devices");
-module_param_array_named(map3, gc[2].args, int, &gc[2].nargs, 0);
+module_param_array_named(map3, gc_cfg[2].args, int, &gc_cfg[2].nargs, 0);
 MODULE_PARM_DESC(map3, "Describes third set of devices");
 MODULE_PARM_DESC(map3, "Describes third set of devices");
 
 
 /* see also gs_psx_delay parameter in PSX support section */
 /* see also gs_psx_delay parameter in PSX support section */
@@ -810,16 +810,17 @@ static int __init gc_init(void)
 	int err = 0;
 	int err = 0;
 
 
 	for (i = 0; i < GC_MAX_PORTS; i++) {
 	for (i = 0; i < GC_MAX_PORTS; i++) {
-		if (gc[i].nargs == 0 || gc[i].args[0] < 0)
+		if (gc_cfg[i].nargs == 0 || gc_cfg[i].args[0] < 0)
 			continue;
 			continue;
 
 
-		if (gc[i].nargs < 2) {
+		if (gc_cfg[i].nargs < 2) {
 			printk(KERN_ERR "gamecon.c: at least one device must be specified\n");
 			printk(KERN_ERR "gamecon.c: at least one device must be specified\n");
 			err = -EINVAL;
 			err = -EINVAL;
 			break;
 			break;
 		}
 		}
 
 
-		gc_base[i] = gc_probe(gc[i].args[0], gc[i].args + 1, gc[i].nargs - 1);
+		gc_base[i] = gc_probe(gc_cfg[i].args[0],
+				      gc_cfg[i].args + 1, gc_cfg[i].nargs - 1);
 		if (IS_ERR(gc_base[i])) {
 		if (IS_ERR(gc_base[i])) {
 			err = PTR_ERR(gc_base[i]);
 			err = PTR_ERR(gc_base[i]);
 			break;
 			break;

+ 1 - 1
drivers/input/joystick/iforce/iforce.h

@@ -124,7 +124,7 @@ struct iforce {
 	/* Buffer used for asynchronous sending of bytes to the device */
 	/* Buffer used for asynchronous sending of bytes to the device */
 	struct circ_buf xmit;
 	struct circ_buf xmit;
 	unsigned char xmit_data[XMIT_SIZE];
 	unsigned char xmit_data[XMIT_SIZE];
-	long xmit_flags[1];
+	unsigned long xmit_flags[1];
 
 
 					/* Force Feedback */
 					/* Force Feedback */
 	wait_queue_head_t wait;
 	wait_queue_head_t wait;

+ 10 - 8
drivers/input/joystick/turbografx.c

@@ -48,16 +48,16 @@ MODULE_LICENSE("GPL");
 
 
 struct tgfx_config {
 struct tgfx_config {
 	int args[TGFX_MAX_DEVICES + 1];
 	int args[TGFX_MAX_DEVICES + 1];
-	int nargs;
+	unsigned int nargs;
 };
 };
 
 
-static struct tgfx_config tgfx[TGFX_MAX_PORTS] __initdata;
+static struct tgfx_config tgfx_cfg[TGFX_MAX_PORTS] __initdata;
 
 
-module_param_array_named(map, tgfx[0].args, int, &tgfx[0].nargs, 0);
+module_param_array_named(map, tgfx_cfg[0].args, int, &tgfx_cfg[0].nargs, 0);
 MODULE_PARM_DESC(map, "Describes first set of devices (<parport#>,<js1>,<js2>,..<js7>");
 MODULE_PARM_DESC(map, "Describes first set of devices (<parport#>,<js1>,<js2>,..<js7>");
-module_param_array_named(map2, tgfx[1].args, int, &tgfx[1].nargs, 0);
+module_param_array_named(map2, tgfx_cfg[1].args, int, &tgfx_cfg[1].nargs, 0);
 MODULE_PARM_DESC(map2, "Describes second set of devices");
 MODULE_PARM_DESC(map2, "Describes second set of devices");
-module_param_array_named(map3, tgfx[2].args, int, &tgfx[2].nargs, 0);
+module_param_array_named(map3, tgfx_cfg[2].args, int, &tgfx_cfg[2].nargs, 0);
 MODULE_PARM_DESC(map3, "Describes third set of devices");
 MODULE_PARM_DESC(map3, "Describes third set of devices");
 
 
 #define TGFX_REFRESH_TIME	HZ/100	/* 10 ms */
 #define TGFX_REFRESH_TIME	HZ/100	/* 10 ms */
@@ -283,16 +283,18 @@ static int __init tgfx_init(void)
 	int err = 0;
 	int err = 0;
 
 
 	for (i = 0; i < TGFX_MAX_PORTS; i++) {
 	for (i = 0; i < TGFX_MAX_PORTS; i++) {
-		if (tgfx[i].nargs == 0 || tgfx[i].args[0] < 0)
+		if (tgfx_cfg[i].nargs == 0 || tgfx_cfg[i].args[0] < 0)
 			continue;
 			continue;
 
 
-		if (tgfx[i].nargs < 2) {
+		if (tgfx_cfg[i].nargs < 2) {
 			printk(KERN_ERR "turbografx.c: at least one joystick must be specified\n");
 			printk(KERN_ERR "turbografx.c: at least one joystick must be specified\n");
 			err = -EINVAL;
 			err = -EINVAL;
 			break;
 			break;
 		}
 		}
 
 
-		tgfx_base[i] = tgfx_probe(tgfx[i].args[0], tgfx[i].args + 1, tgfx[i].nargs - 1);
+		tgfx_base[i] = tgfx_probe(tgfx_cfg[i].args[0],
+					  tgfx_cfg[i].args + 1,
+					  tgfx_cfg[i].nargs - 1);
 		if (IS_ERR(tgfx_base[i])) {
 		if (IS_ERR(tgfx_base[i])) {
 			err = PTR_ERR(tgfx_base[i]);
 			err = PTR_ERR(tgfx_base[i]);
 			break;
 			break;

+ 0 - 0
drivers/usb/input/xpad.c → drivers/input/joystick/xpad.c


+ 1 - 0
drivers/input/keyboard/Kconfig

@@ -226,6 +226,7 @@ config KEYBOARD_PXA27x
 config KEYBOARD_AAED2000
 config KEYBOARD_AAED2000
 	tristate "AAED-2000 keyboard"
 	tristate "AAED-2000 keyboard"
 	depends on MACH_AAED2000
 	depends on MACH_AAED2000
+	select INPUT_POLLDEV
 	default y
 	default y
 	help
 	help
 	  Say Y here to enable the keyboard on the Agilent AAED-2000
 	  Say Y here to enable the keyboard on the Agilent AAED-2000

+ 20 - 42
drivers/input/keyboard/aaed2000_kbd.c

@@ -14,12 +14,11 @@
 #include <linux/delay.h>
 #include <linux/delay.h>
 #include <linux/platform_device.h>
 #include <linux/platform_device.h>
 #include <linux/init.h>
 #include <linux/init.h>
-#include <linux/input.h>
+#include <linux/input-polldev.h>
 #include <linux/interrupt.h>
 #include <linux/interrupt.h>
 #include <linux/jiffies.h>
 #include <linux/jiffies.h>
 #include <linux/module.h>
 #include <linux/module.h>
 #include <linux/slab.h>
 #include <linux/slab.h>
-#include <linux/workqueue.h>
 
 
 #include <asm/arch/hardware.h>
 #include <asm/arch/hardware.h>
 #include <asm/arch/aaed2000.h>
 #include <asm/arch/aaed2000.h>
@@ -46,8 +45,7 @@ static unsigned char aaedkbd_keycode[NR_SCANCODES] = {
 
 
 struct aaedkbd {
 struct aaedkbd {
 	unsigned char keycode[ARRAY_SIZE(aaedkbd_keycode)];
 	unsigned char keycode[ARRAY_SIZE(aaedkbd_keycode)];
-	struct input_dev *input;
-	struct work_struct workq;
+	struct input_polled_dev *poll_dev;
 	int kbdscan_state[KB_COLS];
 	int kbdscan_state[KB_COLS];
 	int kbdscan_count[KB_COLS];
 	int kbdscan_count[KB_COLS];
 };
 };
@@ -64,14 +62,15 @@ static void aaedkbd_report_col(struct aaedkbd *aaedkbd,
 		scancode = SCANCODE(row, col);
 		scancode = SCANCODE(row, col);
 		pressed = rowd & KB_ROWMASK(row);
 		pressed = rowd & KB_ROWMASK(row);
 
 
-		input_report_key(aaedkbd->input, aaedkbd->keycode[scancode], pressed);
+		input_report_key(aaedkbd->poll_dev->input,
+				 aaedkbd->keycode[scancode], pressed);
 	}
 	}
 }
 }
 
 
 /* Scan the hardware keyboard and push any changes up through the input layer */
 /* Scan the hardware keyboard and push any changes up through the input layer */
-static void aaedkbd_work(void *data)
+static void aaedkbd_poll(struct input_polled_dev *dev)
 {
 {
-	struct aaedkbd *aaedkbd = data;
+	struct aaedkbd *aaedkbd = dev->private;
 	unsigned int col, rowd;
 	unsigned int col, rowd;
 
 
 	col = 0;
 	col = 0;
@@ -90,51 +89,34 @@ static void aaedkbd_work(void *data)
 	} while (col < KB_COLS);
 	} while (col < KB_COLS);
 
 
 	AAEC_GPIO_KSCAN = 0x07;
 	AAEC_GPIO_KSCAN = 0x07;
-	input_sync(aaedkbd->input);
-
-	schedule_delayed_work(&aaedkbd->workq, msecs_to_jiffies(SCAN_INTERVAL));
-}
-
-static int aaedkbd_open(struct input_dev *indev)
-{
-	struct aaedkbd *aaedkbd = input_get_drvdata(indev);
-
-	schedule_delayed_work(&aaedkbd->workq, msecs_to_jiffies(SCAN_INTERVAL));
-
-	return 0;
-}
-
-static void aaedkbd_close(struct input_dev *indev)
-{
-	struct aaedkbd *aaedkbd = input_get_drvdata(indev);
-
-	cancel_delayed_work(&aaedkbd->workq);
-	flush_scheduled_work();
+	input_sync(dev->input);
 }
 }
 
 
 static int __devinit aaedkbd_probe(struct platform_device *pdev)
 static int __devinit aaedkbd_probe(struct platform_device *pdev)
 {
 {
 	struct aaedkbd *aaedkbd;
 	struct aaedkbd *aaedkbd;
+	struct input_polled_dev *poll_dev;
 	struct input_dev *input_dev;
 	struct input_dev *input_dev;
 	int i;
 	int i;
 	int error;
 	int error;
 
 
 	aaedkbd = kzalloc(sizeof(struct aaedkbd), GFP_KERNEL);
 	aaedkbd = kzalloc(sizeof(struct aaedkbd), GFP_KERNEL);
-	input_dev = input_allocate_device();
-	if (!aaedkbd || !input_dev) {
+	poll_dev = input_allocate_polled_device();
+	if (!aaedkbd || !poll_dev) {
 		error = -ENOMEM;
 		error = -ENOMEM;
 		goto fail;
 		goto fail;
 	}
 	}
 
 
 	platform_set_drvdata(pdev, aaedkbd);
 	platform_set_drvdata(pdev, aaedkbd);
 
 
-	aaedkbd->input = input_dev;
-
-	/* Init keyboard rescan workqueue */
-	INIT_WORK(&aaedkbd->workq, aaedkbd_work, aaedkbd);
-
+	aaedkbd->poll_dev = poll_dev;
 	memcpy(aaedkbd->keycode, aaedkbd_keycode, sizeof(aaedkbd->keycode));
 	memcpy(aaedkbd->keycode, aaedkbd_keycode, sizeof(aaedkbd->keycode));
 
 
+	poll_dev->private = aaedkbd;
+	poll_dev->poll = aaedkbd_poll;
+	poll_dev->poll_interval = SCAN_INTERVAL;
+
+	input_dev = poll_dev->input;
 	input_dev->name = "AAED-2000 Keyboard";
 	input_dev->name = "AAED-2000 Keyboard";
 	input_dev->phys = "aaedkbd/input0";
 	input_dev->phys = "aaedkbd/input0";
 	input_dev->id.bustype = BUS_HOST;
 	input_dev->id.bustype = BUS_HOST;
@@ -143,8 +125,6 @@ static int __devinit aaedkbd_probe(struct platform_device *pdev)
 	input_dev->id.version = 0x0100;
 	input_dev->id.version = 0x0100;
 	input_dev->dev.parent = &pdev->dev;
 	input_dev->dev.parent = &pdev->dev;
 
 
-	input_set_drvdata(input_dev, aaedkbd);
-
 	input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_REP);
 	input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_REP);
 	input_dev->keycode = aaedkbd->keycode;
 	input_dev->keycode = aaedkbd->keycode;
 	input_dev->keycodesize = sizeof(unsigned char);
 	input_dev->keycodesize = sizeof(unsigned char);
@@ -154,17 +134,14 @@ static int __devinit aaedkbd_probe(struct platform_device *pdev)
 		set_bit(aaedkbd->keycode[i], input_dev->keybit);
 		set_bit(aaedkbd->keycode[i], input_dev->keybit);
 	clear_bit(0, input_dev->keybit);
 	clear_bit(0, input_dev->keybit);
 
 
-	input_dev->open = aaedkbd_open;
-	input_dev->close = aaedkbd_close;
-
-	error = input_register_device(aaedkbd->input);
+	error = input_register_polled_device(aaedkbd->poll_dev);
 	if (error)
 	if (error)
 		goto fail;
 		goto fail;
 
 
 	return 0;
 	return 0;
 
 
  fail:	kfree(aaedkbd);
  fail:	kfree(aaedkbd);
-	input_free_device(input_dev);
+	input_free_polled_device(poll_dev);
 	return error;
 	return error;
 }
 }
 
 
@@ -172,7 +149,8 @@ static int __devexit aaedkbd_remove(struct platform_device *pdev)
 {
 {
 	struct aaedkbd *aaedkbd = platform_get_drvdata(pdev);
 	struct aaedkbd *aaedkbd = platform_get_drvdata(pdev);
 
 
-	input_unregister_device(aaedkbd->input);
+	input_unregister_polled_device(aaedkbd->poll_dev);
+	input_free_polled_device(aaedkbd->poll_dev);
 	kfree(aaedkbd);
 	kfree(aaedkbd);
 
 
 	return 0;
 	return 0;

+ 81 - 7
drivers/input/misc/Kconfig

@@ -40,6 +40,18 @@ config INPUT_M68K_BEEP
 	tristate "M68k Beeper support"
 	tristate "M68k Beeper support"
 	depends on M68K
 	depends on M68K
 
 
+config INPUT_IXP4XX_BEEPER
+	tristate "IXP4XX Beeper support"
+	depends on ARCH_IXP4XX
+	help
+	  If you say yes here, you can connect a beeper to the
+	  ixp4xx gpio pins. This is used by the LinkSys NSLU2.
+
+	  If unsure, say Y.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called ixp4xx-beeper.
+
 config INPUT_COBALT_BTNS
 config INPUT_COBALT_BTNS
 	tristate "Cobalt button interface"
 	tristate "Cobalt button interface"
 	depends on MIPS_COBALT
 	depends on MIPS_COBALT
@@ -70,17 +82,79 @@ config INPUT_ATLAS_BTNS
 	  To compile this driver as a module, choose M here: the module will
 	  To compile this driver as a module, choose M here: the module will
 	  be called atlas_btns.
 	  be called atlas_btns.
 
 
-config INPUT_IXP4XX_BEEPER
-	tristate "IXP4XX Beeper support"
-	depends on ARCH_IXP4XX
+config INPUT_ATI_REMOTE
+	tristate "ATI / X10 USB RF remote control"
+	select USB
 	help
 	help
-	  If you say yes here, you can connect a beeper to the
-	  ixp4xx gpio pins. This is used by the LinkSys NSLU2.
+	  Say Y here if you want to use an ATI or X10 "Lola" USB remote control.
+	  These are RF remotes with USB receivers.
+	  The ATI remote comes with many of ATI's All-In-Wonder video cards.
+	  The X10 "Lola" remote is available at:
+	     <http://www.x10.com/products/lola_sg1.htm>
+	  This driver provides mouse pointer, left and right mouse buttons,
+	  and maps all the other remote buttons to keypress events.
+
+	  To compile this driver as a module, choose M here: the module will be
+	  called ati_remote.
+
+config INPUT_ATI_REMOTE2
+	tristate "ATI / Philips USB RF remote control"
+	select USB
+	help
+	  Say Y here if you want to use an ATI or Philips USB RF remote control.
+	  These are RF remotes with USB receivers.
+	  ATI Remote Wonder II comes with some ATI's All-In-Wonder video cards
+	  and is also available as a separate product.
+	  This driver provides mouse pointer, left and right mouse buttons,
+	  and maps all the other remote buttons to keypress events.
+
+	  To compile this driver as a module, choose M here: the module will be
+	  called ati_remote2.
+
+config INPUT_KEYSPAN_REMOTE
+	tristate "Keyspan DMR USB remote control (EXPERIMENTAL)"
+	depends on EXPERIMENTAL
+	select USB
+	help
+	  Say Y here if you want to use a Keyspan DMR USB remote control.
+	  Currently only the UIA-11 type of receiver has been tested.  The tag
+	  on the receiver that connects to the USB port should have a P/N that
+	  will tell you what type of DMR you have.  The UIA-10 type is not
+	  supported at this time.  This driver maps all buttons to keypress
+	  events.
 
 
-	  If unsure, say Y.
+	  To compile this driver as a module, choose M here: the module will
+	  be called keyspan_remote.
+
+config INPUT_POWERMATE
+	tristate "Griffin PowerMate and Contour Jog support"
+	select USB
+	help
+	  Say Y here if you want to use Griffin PowerMate or Contour Jog devices.
+	  These are aluminum dials which can measure clockwise and anticlockwise
+	  rotation.  The dial also acts as a pushbutton.  The base contains an LED
+	  which can be instructed to pulse or to switch to a particular intensity.
+
+	  You can download userspace tools from
+	  <http://sowerbutts.com/powermate/>.
 
 
 	  To compile this driver as a module, choose M here: the
 	  To compile this driver as a module, choose M here: the
-	  module will be called ixp4xx-beeper.
+	  module will be called powermate.
+
+config INPUT_YEALINK
+	tristate "Yealink usb-p1k voip phone"
+	depends EXPERIMENTAL
+	select USB
+	help
+	  Say Y here if you want to enable keyboard and LCD functions of the
+	  Yealink usb-p1k usb phones. The audio part is enabled by the generic
+	  usb sound driver, so you might want to enable that as well.
+
+	  For information about how to use these additional functions, see
+	  <file:Documentation/input/yealink.txt>.
+
+	  To compile this driver as a module, choose M here: the module will be
+	  called yealink.
 
 
 config INPUT_UINPUT
 config INPUT_UINPUT
 	tristate "User level driver support"
 	tristate "User level driver support"

+ 7 - 2
drivers/input/misc/Makefile

@@ -8,9 +8,14 @@ obj-$(CONFIG_INPUT_POLLDEV)		+= input-polldev.o
 obj-$(CONFIG_INPUT_SPARCSPKR)		+= sparcspkr.o
 obj-$(CONFIG_INPUT_SPARCSPKR)		+= sparcspkr.o
 obj-$(CONFIG_INPUT_PCSPKR)		+= pcspkr.o
 obj-$(CONFIG_INPUT_PCSPKR)		+= pcspkr.o
 obj-$(CONFIG_INPUT_M68K_BEEP)		+= m68kspkr.o
 obj-$(CONFIG_INPUT_M68K_BEEP)		+= m68kspkr.o
-obj-$(CONFIG_INPUT_UINPUT)		+= uinput.o
+obj-$(CONFIG_INPUT_IXP4XX_BEEPER)	+= ixp4xx-beeper.o
 obj-$(CONFIG_INPUT_COBALT_BTNS)		+= cobalt_btns.o
 obj-$(CONFIG_INPUT_COBALT_BTNS)		+= cobalt_btns.o
 obj-$(CONFIG_INPUT_WISTRON_BTNS)	+= wistron_btns.o
 obj-$(CONFIG_INPUT_WISTRON_BTNS)	+= wistron_btns.o
 obj-$(CONFIG_INPUT_ATLAS_BTNS)		+= atlas_btns.o
 obj-$(CONFIG_INPUT_ATLAS_BTNS)		+= atlas_btns.o
+obj-$(CONFIG_INPUT_ATI_REMOTE)		+= ati_remote.o
+obj-$(CONFIG_INPUT_ATI_REMOTE2)		+= ati_remote2.o
+obj-$(CONFIG_INPUT_KEYSPAN_REMOTE)	+= keyspan_remote.o
+obj-$(CONFIG_INPUT_POWERMATE)		+= powermate.o
+obj-$(CONFIG_INPUT_YEALINK)		+= yealink.o
 obj-$(CONFIG_HP_SDC_RTC)		+= hp_sdc_rtc.o
 obj-$(CONFIG_HP_SDC_RTC)		+= hp_sdc_rtc.o
-obj-$(CONFIG_INPUT_IXP4XX_BEEPER)	+= ixp4xx-beeper.o
+obj-$(CONFIG_INPUT_UINPUT)		+= uinput.o

+ 0 - 0
drivers/usb/input/ati_remote.c → drivers/input/misc/ati_remote.c


+ 1 - 3
drivers/usb/input/ati_remote2.c → drivers/input/misc/ati_remote2.c

@@ -405,9 +405,7 @@ static void ati_remote2_urb_cleanup(struct ati_remote2 *ar2)
 
 
 	for (i = 0; i < 2; i++) {
 	for (i = 0; i < 2; i++) {
 		usb_free_urb(ar2->urb[i]);
 		usb_free_urb(ar2->urb[i]);
-
-		if (ar2->buf[i])
-			usb_buffer_free(ar2->udev, 4, ar2->buf[i], ar2->buf_dma[i]);
+		usb_buffer_free(ar2->udev, 4, ar2->buf[i], ar2->buf_dma[i]);
 	}
 	}
 }
 }
 
 

+ 0 - 0
drivers/usb/input/keyspan_remote.c → drivers/input/misc/keyspan_remote.c


+ 0 - 0
drivers/usb/input/map_to_7segment.h → drivers/input/misc/map_to_7segment.h


+ 4 - 6
drivers/usb/input/powermate.c → drivers/input/misc/powermate.c

@@ -291,12 +291,10 @@ static int powermate_alloc_buffers(struct usb_device *udev, struct powermate_dev
 
 
 static void powermate_free_buffers(struct usb_device *udev, struct powermate_device *pm)
 static void powermate_free_buffers(struct usb_device *udev, struct powermate_device *pm)
 {
 {
-	if (pm->data)
-		usb_buffer_free(udev, POWERMATE_PAYLOAD_SIZE_MAX,
-				pm->data, pm->data_dma);
-	if (pm->configcr)
-		usb_buffer_free(udev, sizeof(*(pm->configcr)),
-				pm->configcr, pm->configcr_dma);
+	usb_buffer_free(udev, POWERMATE_PAYLOAD_SIZE_MAX,
+			pm->data, pm->data_dma);
+	usb_buffer_free(udev, sizeof(*(pm->configcr)),
+			pm->configcr, pm->configcr_dma);
 }
 }
 
 
 /* Called whenever a USB device matching one in our supported devices table is connected */
 /* Called whenever a USB device matching one in our supported devices table is connected */

+ 0 - 1
drivers/input/misc/uinput.c

@@ -33,7 +33,6 @@
 #include <linux/slab.h>
 #include <linux/slab.h>
 #include <linux/module.h>
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/init.h>
-#include <linux/input.h>
 #include <linux/smp_lock.h>
 #include <linux/smp_lock.h>
 #include <linux/fs.h>
 #include <linux/fs.h>
 #include <linux/miscdevice.h>
 #include <linux/miscdevice.h>

+ 12 - 13
drivers/usb/input/yealink.c → drivers/input/misc/yealink.c

@@ -29,7 +29,7 @@
  * This driver is based on:
  * This driver is based on:
  *   - the usbb2k-api	http://savannah.nongnu.org/projects/usbb2k-api/
  *   - the usbb2k-api	http://savannah.nongnu.org/projects/usbb2k-api/
  *   - information from	http://memeteau.free.fr/usbb2k
  *   - information from	http://memeteau.free.fr/usbb2k
- *   - the xpad-driver	drivers/usb/input/xpad.c
+ *   - the xpad-driver	drivers/input/joystick/xpad.c
  *
  *
  * Thanks to:
  * Thanks to:
  *   - Olivier Vandorpe, for providing the usbb2k-api.
  *   - Olivier Vandorpe, for providing the usbb2k-api.
@@ -818,18 +818,17 @@ static int usb_cleanup(struct yealink_dev *yld, int err)
 		else
 		else
 			input_unregister_device(yld->idev);
 			input_unregister_device(yld->idev);
 	}
 	}
-	if (yld->ctl_req)
-		usb_buffer_free(yld->udev, sizeof(*(yld->ctl_req)),
-				yld->ctl_req, yld->ctl_req_dma);
-	if (yld->ctl_data)
-		usb_buffer_free(yld->udev, USB_PKT_LEN,
-				yld->ctl_data, yld->ctl_dma);
-	if (yld->irq_data)
-		usb_buffer_free(yld->udev, USB_PKT_LEN,
-				yld->irq_data, yld->irq_dma);
-
-	usb_free_urb(yld->urb_irq);	/* parameter validation in core/urb */
-	usb_free_urb(yld->urb_ctl);	/* parameter validation in core/urb */
+
+	usb_free_urb(yld->urb_irq);
+	usb_free_urb(yld->urb_ctl);
+
+	usb_buffer_free(yld->udev, sizeof(*(yld->ctl_req)),
+			yld->ctl_req, yld->ctl_req_dma);
+	usb_buffer_free(yld->udev, USB_PKT_LEN,
+			yld->ctl_data, yld->ctl_dma);
+	usb_buffer_free(yld->udev, USB_PKT_LEN,
+			yld->irq_data, yld->irq_dma);
+
 	kfree(yld);
 	kfree(yld);
 	return err;
 	return err;
 }
 }

+ 0 - 0
drivers/usb/input/yealink.h → drivers/input/misc/yealink.h


+ 29 - 9
drivers/input/mouse/Kconfig

@@ -2,7 +2,7 @@
 # Mouse driver configuration
 # Mouse driver configuration
 #
 #
 menuconfig INPUT_MOUSE
 menuconfig INPUT_MOUSE
-	bool "Mouse"
+	bool "Mice"
 	default y
 	default y
 	help
 	help
 	  Say Y here, and a list of supported mice will be displayed.
 	  Say Y here, and a list of supported mice will be displayed.
@@ -19,7 +19,7 @@ config MOUSE_PS2
 	select SERIO_LIBPS2
 	select SERIO_LIBPS2
 	select SERIO_I8042 if X86_PC
 	select SERIO_I8042 if X86_PC
 	select SERIO_GSCPS2 if GSC
 	select SERIO_GSCPS2 if GSC
-	---help---
+	help
 	  Say Y here if you have a PS/2 mouse connected to your system. This
 	  Say Y here if you have a PS/2 mouse connected to your system. This
 	  includes the standard 2 or 3-button PS/2 mouse, as well as PS/2
 	  includes the standard 2 or 3-button PS/2 mouse, as well as PS/2
 	  mice with wheels and extra buttons, Microsoft, Logitech or Genius
 	  mice with wheels and extra buttons, Microsoft, Logitech or Genius
@@ -41,7 +41,7 @@ config MOUSE_PS2_ALPS
 	bool "ALPS PS/2 mouse protocol extension" if EMBEDDED
 	bool "ALPS PS/2 mouse protocol extension" if EMBEDDED
 	default y
 	default y
 	depends on MOUSE_PS2
 	depends on MOUSE_PS2
-	---help---
+	help
 	  Say Y here if you have an ALPS PS/2 touchpad connected to
 	  Say Y here if you have an ALPS PS/2 touchpad connected to
 	  your system.
 	  your system.
 
 
@@ -51,7 +51,7 @@ config MOUSE_PS2_LOGIPS2PP
 	bool "Logictech PS/2++ mouse protocol extension" if EMBEDDED
 	bool "Logictech PS/2++ mouse protocol extension" if EMBEDDED
 	default y
 	default y
 	depends on MOUSE_PS2
 	depends on MOUSE_PS2
-	---help---
+	help
 	  Say Y here if you have a Logictech PS/2++ mouse connected to
 	  Say Y here if you have a Logictech PS/2++ mouse connected to
 	  your system.
 	  your system.
 
 
@@ -61,7 +61,7 @@ config MOUSE_PS2_SYNAPTICS
 	bool "Synaptics PS/2 mouse protocol extension" if EMBEDDED
 	bool "Synaptics PS/2 mouse protocol extension" if EMBEDDED
 	default y
 	default y
 	depends on MOUSE_PS2
 	depends on MOUSE_PS2
-	---help---
+	help
 	  Say Y here if you have a Synaptics PS/2 TouchPad connected to
 	  Say Y here if you have a Synaptics PS/2 TouchPad connected to
 	  your system.
 	  your system.
 
 
@@ -71,7 +71,7 @@ config MOUSE_PS2_LIFEBOOK
 	bool "Fujitsu Lifebook PS/2 mouse protocol extension" if EMBEDDED
 	bool "Fujitsu Lifebook PS/2 mouse protocol extension" if EMBEDDED
 	default y
 	default y
 	depends on MOUSE_PS2
 	depends on MOUSE_PS2
-	---help---
+	help
 	  Say Y here if you have a Fujitsu B-series Lifebook PS/2
 	  Say Y here if you have a Fujitsu B-series Lifebook PS/2
 	  TouchScreen connected to your system.
 	  TouchScreen connected to your system.
 
 
@@ -81,7 +81,7 @@ config MOUSE_PS2_TRACKPOINT
 	bool "IBM Trackpoint PS/2 mouse protocol extension" if EMBEDDED
 	bool "IBM Trackpoint PS/2 mouse protocol extension" if EMBEDDED
 	default y
 	default y
 	depends on MOUSE_PS2
 	depends on MOUSE_PS2
-	---help---
+	help
 	  Say Y here if you have an IBM Trackpoint PS/2 mouse connected
 	  Say Y here if you have an IBM Trackpoint PS/2 mouse connected
 	  to your system.
 	  to your system.
 
 
@@ -90,7 +90,7 @@ config MOUSE_PS2_TRACKPOINT
 config MOUSE_PS2_TOUCHKIT
 config MOUSE_PS2_TOUCHKIT
 	bool "eGalax TouchKit PS/2 protocol extension"
 	bool "eGalax TouchKit PS/2 protocol extension"
 	depends on MOUSE_PS2
 	depends on MOUSE_PS2
-	---help---
+	help
 	  Say Y here if you have an eGalax TouchKit PS/2 touchscreen
 	  Say Y here if you have an eGalax TouchKit PS/2 touchscreen
 	  connected to your system.
 	  connected to your system.
 
 
@@ -99,7 +99,7 @@ config MOUSE_PS2_TOUCHKIT
 config MOUSE_SERIAL
 config MOUSE_SERIAL
 	tristate "Serial mouse"
 	tristate "Serial mouse"
 	select SERIO
 	select SERIO
-	---help---
+	help
 	  Say Y here if you have a serial (RS-232, COM port) mouse connected
 	  Say Y here if you have a serial (RS-232, COM port) mouse connected
 	  to your system. This includes Sun, MouseSystems, Microsoft,
 	  to your system. This includes Sun, MouseSystems, Microsoft,
 	  Logitech and all other compatible serial mice.
 	  Logitech and all other compatible serial mice.
@@ -109,6 +109,26 @@ config MOUSE_SERIAL
 	  To compile this driver as a module, choose M here: the
 	  To compile this driver as a module, choose M here: the
 	  module will be called sermouse.
 	  module will be called sermouse.
 
 
+config MOUSE_APPLETOUCH
+	tristate "Apple USB Touchpad support"
+	select USB
+	help
+	  Say Y here if you want to use an Apple USB Touchpad.
+
+	  These are the touchpads that can be found on post-February 2005
+	  Apple Powerbooks (prior models have a Synaptics touchpad connected
+	  to the ADB bus).
+
+	  This driver provides a basic mouse driver but can be interfaced
+	  with the synaptics X11 driver to provide acceleration and
+	  scrolling in X11.
+
+	  For further information, see
+	  <file:Documentation/input/appletouch.txt>.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called appletouch.
+
 config MOUSE_INPORT
 config MOUSE_INPORT
 	tristate "InPort/MS/ATIXL busmouse"
 	tristate "InPort/MS/ATIXL busmouse"
 	depends on ISA
 	depends on ISA

+ 1 - 0
drivers/input/mouse/Makefile

@@ -5,6 +5,7 @@
 # Each configuration option enables a list of files.
 # Each configuration option enables a list of files.
 
 
 obj-$(CONFIG_MOUSE_AMIGA)	+= amimouse.o
 obj-$(CONFIG_MOUSE_AMIGA)	+= amimouse.o
+obj-$(CONFIG_MOUSE_APPLETOUCH)	+= appletouch.o
 obj-$(CONFIG_MOUSE_ATARI)	+= atarimouse.o
 obj-$(CONFIG_MOUSE_ATARI)	+= atarimouse.o
 obj-$(CONFIG_MOUSE_RISCPC)	+= rpcmouse.o
 obj-$(CONFIG_MOUSE_RISCPC)	+= rpcmouse.o
 obj-$(CONFIG_MOUSE_INPORT)	+= inport.o
 obj-$(CONFIG_MOUSE_INPORT)	+= inport.o

+ 0 - 0
drivers/usb/input/appletouch.c → drivers/input/mouse/appletouch.c


+ 1 - 1
drivers/input/mouse/synaptics.c

@@ -185,7 +185,7 @@ static int synaptics_query_hardware(struct psmouse *psmouse)
 	int retries = 0;
 	int retries = 0;
 
 
 	while ((retries++ < 3) && psmouse_reset(psmouse))
 	while ((retries++ < 3) && psmouse_reset(psmouse))
-		printk(KERN_ERR "synaptics reset failed\n");
+		/* empty */;
 
 
 	if (synaptics_identify(psmouse))
 	if (synaptics_identify(psmouse))
 		return -1;
 		return -1;

+ 29 - 6
drivers/input/serio/i8042.c

@@ -526,6 +526,33 @@ static irqreturn_t __devinit i8042_aux_test_irq(int irq, void *dev_id)
 	return IRQ_HANDLED;
 	return IRQ_HANDLED;
 }
 }
 
 
+/*
+ * i8042_toggle_aux - enables or disables AUX port on i8042 via command and
+ * verifies success by readinng CTR. Used when testing for presence of AUX
+ * port.
+ */
+static int __devinit i8042_toggle_aux(int on)
+{
+	unsigned char param;
+	int i;
+
+	if (i8042_command(&param,
+			on ? I8042_CMD_AUX_ENABLE : I8042_CMD_AUX_DISABLE))
+		return -1;
+
+	/* some chips need some time to set the I8042_CTR_AUXDIS bit */
+	for (i = 0; i < 100; i++) {
+		udelay(50);
+
+		if (i8042_command(&param, I8042_CMD_CTL_RCTR))
+			return -1;
+
+		if (!(param & I8042_CTR_AUXDIS) == on)
+			return 0;
+	}
+
+	return -1;
+}
 
 
 /*
 /*
  * i8042_check_aux() applies as much paranoia as it can at detecting
  * i8042_check_aux() applies as much paranoia as it can at detecting
@@ -580,16 +607,12 @@ static int __devinit i8042_check_aux(void)
  * Bit assignment test - filters out PS/2 i8042's in AT mode
  * Bit assignment test - filters out PS/2 i8042's in AT mode
  */
  */
 
 
-	if (i8042_command(&param, I8042_CMD_AUX_DISABLE))
-		return -1;
-	if (i8042_command(&param, I8042_CMD_CTL_RCTR) || (~param & I8042_CTR_AUXDIS)) {
+	if (i8042_toggle_aux(0)) {
 		printk(KERN_WARNING "Failed to disable AUX port, but continuing anyway... Is this a SiS?\n");
 		printk(KERN_WARNING "Failed to disable AUX port, but continuing anyway... Is this a SiS?\n");
 		printk(KERN_WARNING "If AUX port is really absent please use the 'i8042.noaux' option.\n");
 		printk(KERN_WARNING "If AUX port is really absent please use the 'i8042.noaux' option.\n");
 	}
 	}
 
 
-	if (i8042_command(&param, I8042_CMD_AUX_ENABLE))
-		return -1;
-	if (i8042_command(&param, I8042_CMD_CTL_RCTR) || (param & I8042_CTR_AUXDIS))
+	if (i8042_toggle_aux(1))
 		return -1;
 		return -1;
 
 
 /*
 /*

+ 74 - 0
drivers/input/tablet/Kconfig

@@ -0,0 +1,74 @@
+#
+# Tablet driver configuration
+#
+menuconfig INPUT_TABLET
+	bool "Tablets"
+	help
+	  Say Y here, and a list of supported tablets will be displayed.
+	  This option doesn't affect the kernel.
+
+	  If unsure, say Y.
+
+if INPUT_TABLET
+
+config TABLET_USB_ACECAD
+	tristate "Acecad Flair tablet support (USB)"
+	select USB
+	help
+	  Say Y here if you want to use the USB version of the Acecad Flair
+	  tablet.  Make sure to say Y to "Mouse support"
+	  (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
+	  (CONFIG_INPUT_EVDEV) as well.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called acecad.
+
+config TABLET_USB_AIPTEK
+	tristate "Aiptek 6000U/8000U tablet support (USB)"
+	select USB
+	help
+	  Say Y here if you want to use the USB version of the Aiptek 6000U
+	  or Aiptek 8000U tablet.  Make sure to say Y to "Mouse support"
+	  (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
+	  (CONFIG_INPUT_EVDEV) as well.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called aiptek.
+
+config TABLET_USB_GTCO
+        tristate "GTCO CalComp/InterWrite USB Support"
+        depends on USB && INPUT
+        help
+          Say Y here if you want to use the USB version of the GTCO
+          CalComp/InterWrite Tablet.  Make sure to say Y to "Mouse support"
+          (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
+          (CONFIG_INPUT_EVDEV) as well.
+
+          To compile this driver as a module, choose M here: the
+          module will be called gtco.
+
+config TABLET_USB_KBTAB
+	tristate "KB Gear JamStudio tablet support (USB)"
+	select USB
+	help
+	  Say Y here if you want to use the USB version of the KB Gear
+	  JamStudio tablet.  Make sure to say Y to "Mouse support"
+	  (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
+	  (CONFIG_INPUT_EVDEV) as well.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called kbtab.
+
+config TABLET_USB_WACOM
+	tristate "Wacom Intuos/Graphire tablet support (USB)"
+	select USB
+	help
+	  Say Y here if you want to use the USB version of the Wacom Intuos
+	  or Graphire tablet.  Make sure to say Y to "Mouse support"
+	  (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
+	  (CONFIG_INPUT_EVDEV) as well.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called wacom.
+
+endif

+ 12 - 0
drivers/input/tablet/Makefile

@@ -0,0 +1,12 @@
+#
+# Makefile for the tablet drivers
+#
+
+# Multipart objects.
+wacom-objs	:= wacom_wac.o wacom_sys.o
+
+obj-$(CONFIG_TABLET_USB_ACECAD)	+= acecad.o
+obj-$(CONFIG_TABLET_USB_AIPTEK)	+= aiptek.o
+obj-$(CONFIG_TABLET_USB_GTCO)	+= gtco.o
+obj-$(CONFIG_TABLET_USB_KBTAB)	+= kbtab.o
+obj-$(CONFIG_TABLET_USB_WACOM)	+= wacom.o

+ 1 - 1
drivers/usb/input/acecad.c → drivers/input/tablet/acecad.c

@@ -54,7 +54,7 @@ struct usb_acecad {
 	struct input_dev *input;
 	struct input_dev *input;
 	struct urb *irq;
 	struct urb *irq;
 
 
-	signed char *data;
+	unsigned char *data;
 	dma_addr_t data_dma;
 	dma_addr_t data_dma;
 };
 };
 
 

+ 0 - 0
drivers/usb/input/aiptek.c → drivers/input/tablet/aiptek.c


+ 0 - 0
drivers/usb/input/gtco.c → drivers/input/tablet/gtco.c


+ 1 - 1
drivers/usb/input/kbtab.c → drivers/input/tablet/kbtab.c

@@ -29,7 +29,7 @@ module_param(kb_pressure_click, int, 0);
 MODULE_PARM_DESC(kb_pressure_click, "pressure threshold for clicks");
 MODULE_PARM_DESC(kb_pressure_click, "pressure threshold for clicks");
 
 
 struct kbtab {
 struct kbtab {
-	signed char *data;
+	unsigned char *data;
 	dma_addr_t data_dma;
 	dma_addr_t data_dma;
 	struct input_dev *dev;
 	struct input_dev *dev;
 	struct usb_device *usbdev;
 	struct usb_device *usbdev;

+ 1 - 1
drivers/usb/input/wacom.h → drivers/input/tablet/wacom.h

@@ -1,5 +1,5 @@
 /*
 /*
- * drivers/usb/input/wacom.h
+ * drivers/input/tablet/wacom.h
  *
  *
  *  USB Wacom Graphire and Wacom Intuos tablet support
  *  USB Wacom Graphire and Wacom Intuos tablet support
  *
  *

+ 1 - 1
drivers/usb/input/wacom_sys.c → drivers/input/tablet/wacom_sys.c

@@ -1,5 +1,5 @@
 /*
 /*
- * drivers/usb/input/wacom_sys.c
+ * drivers/input/tablet/wacom_sys.c
  *
  *
  *  USB Wacom Graphire and Wacom Intuos tablet support - system specific code
  *  USB Wacom Graphire and Wacom Intuos tablet support - system specific code
  */
  */

+ 1 - 1
drivers/usb/input/wacom_wac.c → drivers/input/tablet/wacom_wac.c

@@ -1,5 +1,5 @@
 /*
 /*
- * drivers/usb/input/wacom_wac.c
+ * drivers/input/tablet/wacom_wac.c
  *
  *
  *  USB Wacom Graphire and Wacom Intuos tablet support - Wacom specific code
  *  USB Wacom Graphire and Wacom Intuos tablet support - Wacom specific code
  *
  *

+ 2 - 2
drivers/usb/input/wacom_wac.h → drivers/input/tablet/wacom_wac.h

@@ -1,5 +1,5 @@
 /*
 /*
- * drivers/usb/input/wacom_wac.h
+ * drivers/input/tablet/wacom_wac.h
  *
  *
  * This program is free software; you can redistribute it and/or modify
  * 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
  * it under the terms of the GNU General Public License as published by
@@ -39,7 +39,7 @@ struct wacom_features {
 };
 };
 
 
 struct wacom_wac {
 struct wacom_wac {
-	signed char *data;
+	unsigned char *data;
         int tool[2];
         int tool[2];
         int id[2];
         int id[2];
         __u32 serial[2];
         __u32 serial[2];

+ 57 - 3
drivers/input/touchscreen/Kconfig

@@ -1,5 +1,5 @@
 #
 #
-# Mouse driver configuration
+# Touchscreen driver configuration
 #
 #
 menuconfig INPUT_TOUCHSCREEN
 menuconfig INPUT_TOUCHSCREEN
 	bool "Touchscreens"
 	bool "Touchscreens"
@@ -44,9 +44,9 @@ config TOUCHSCREEN_BITSY
 config TOUCHSCREEN_CORGI
 config TOUCHSCREEN_CORGI
 	tristate "SharpSL (Corgi and Spitz series) touchscreen driver"
 	tristate "SharpSL (Corgi and Spitz series) touchscreen driver"
 	depends on PXA_SHARPSL
 	depends on PXA_SHARPSL
-	default y	
+	default y
 	help
 	help
-	  Say Y here to enable the driver for the touchscreen on the 
+	  Say Y here to enable the driver for the touchscreen on the
 	  Sharp SL-C7xx and SL-Cxx00 series of PDAs.
 	  Sharp SL-C7xx and SL-Cxx00 series of PDAs.
 
 
 	  If unsure, say N.
 	  If unsure, say N.
@@ -164,4 +164,58 @@ config TOUCHSCREEN_UCB1400
 	  To compile this driver as a module, choose M here: the
 	  To compile this driver as a module, choose M here: the
 	  module will be called ucb1400_ts.
 	  module will be called ucb1400_ts.
 
 
+config TOUCHSCREEN_USB_COMPOSITE
+	tristate "USB Touchscreen Driver"
+	select USB
+	help
+	  USB Touchscreen driver for:
+	  - eGalax Touchkit USB (also includes eTurboTouch CT-410/510/700)
+	  - PanJit TouchSet USB
+	  - 3M MicroTouch USB (EX II series)
+	  - ITM
+	  - some other eTurboTouch
+	  - Gunze AHL61
+	  - DMC TSC-10/25
+
+	  Have a look at <http://linux.chapter7.ch/touchkit/> for
+	  a usage description and the required user-space stuff.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called usbtouchscreen.
+
+config TOUCHSCREEN_USB_EGALAX
+	default y
+	bool "eGalax, eTurboTouch CT-410/510/700 device support" if EMBEDDED
+	depends on TOUCHSCREEN_USB_COMPOSITE
+
+config TOUCHSCREEN_USB_PANJIT
+	default y
+	bool "PanJit device support" if EMBEDDED
+	depends on TOUCHSCREEN_USB_COMPOSITE
+
+config TOUCHSCREEN_USB_3M
+	default y
+	bool "3M/Microtouch EX II series device support" if EMBEDDED
+	depends on TOUCHSCREEN_USB_COMPOSITE
+
+config TOUCHSCREEN_USB_ITM
+	default y
+	bool "ITM device support" if EMBEDDED
+	depends on TOUCHSCREEN_USB_COMPOSITE
+
+config TOUCHSCREEN_USB_ETURBO
+	default y
+	bool "eTurboTouch (non-eGalax compatible) device support" if EMBEDDED
+	depends on TOUCHSCREEN_USB_COMPOSITE
+
+config TOUCHSCREEN_USB_GUNZE
+	default y
+	bool "Gunze AHL61 device support" if EMBEDDED
+	depends on TOUCHSCREEN_USB_COMPOSITE
+
+config TOUCHSCREEN_USB_DMC_TSC10
+	default y
+	bool "DMC TSC-10/25 device support" if EMBEDDED
+	depends on TOUCHSCREEN_USB_COMPOSITE
+
 endif
 endif

+ 9 - 8
drivers/input/touchscreen/Makefile

@@ -1,17 +1,18 @@
 #
 #
-# Makefile for the mouse drivers.
+# Makefile for the touchscreen drivers.
 #
 #
 
 
 # Each configuration option enables a list of files.
 # Each configuration option enables a list of files.
 
 
 obj-$(CONFIG_TOUCHSCREEN_ADS7846)	+= ads7846.o
 obj-$(CONFIG_TOUCHSCREEN_ADS7846)	+= ads7846.o
-obj-$(CONFIG_TOUCHSCREEN_BITSY)	+= h3600_ts_input.o
-obj-$(CONFIG_TOUCHSCREEN_CORGI)	+= corgi_ts.o
-obj-$(CONFIG_TOUCHSCREEN_GUNZE)	+= gunze.o
-obj-$(CONFIG_TOUCHSCREEN_ELO)	+= elo.o
-obj-$(CONFIG_TOUCHSCREEN_MTOUCH) += mtouch.o
-obj-$(CONFIG_TOUCHSCREEN_MK712)	+= mk712.o
-obj-$(CONFIG_TOUCHSCREEN_HP600)	+= hp680_ts_input.o
+obj-$(CONFIG_TOUCHSCREEN_BITSY)		+= h3600_ts_input.o
+obj-$(CONFIG_TOUCHSCREEN_CORGI)		+= corgi_ts.o
+obj-$(CONFIG_TOUCHSCREEN_GUNZE)		+= gunze.o
+obj-$(CONFIG_TOUCHSCREEN_ELO)		+= elo.o
+obj-$(CONFIG_TOUCHSCREEN_MTOUCH)	+= mtouch.o
+obj-$(CONFIG_TOUCHSCREEN_MK712)		+= mk712.o
+obj-$(CONFIG_TOUCHSCREEN_HP600)		+= hp680_ts_input.o
+obj-$(CONFIG_TOUCHSCREEN_USB_COMPOSITE)	+= usbtouchscreen.o
 obj-$(CONFIG_TOUCHSCREEN_PENMOUNT)	+= penmount.o
 obj-$(CONFIG_TOUCHSCREEN_PENMOUNT)	+= penmount.o
 obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT)	+= touchright.o
 obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT)	+= touchright.o
 obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN)	+= touchwin.o
 obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN)	+= touchwin.o

+ 2 - 3
drivers/usb/input/usbtouchscreen.c → drivers/input/touchscreen/usbtouchscreen.c

@@ -668,9 +668,8 @@ static void usbtouch_close(struct input_dev *input)
 static void usbtouch_free_buffers(struct usb_device *udev,
 static void usbtouch_free_buffers(struct usb_device *udev,
 				  struct usbtouch_usb *usbtouch)
 				  struct usbtouch_usb *usbtouch)
 {
 {
-	if (usbtouch->data)
-		usb_buffer_free(udev, usbtouch->type->rept_size,
-		                usbtouch->data, usbtouch->data_dma);
+	usb_buffer_free(udev, usbtouch->type->rept_size,
+	                usbtouch->data, usbtouch->data_dma);
 	kfree(usbtouch->buffer);
 	kfree(usbtouch->buffer);
 }
 }
 
 

+ 0 - 2
drivers/usb/Kconfig

@@ -85,8 +85,6 @@ source "drivers/usb/class/Kconfig"
 
 
 source "drivers/usb/storage/Kconfig"
 source "drivers/usb/storage/Kconfig"
 
 
-source "drivers/usb/input/Kconfig"
-
 source "drivers/usb/image/Kconfig"
 source "drivers/usb/image/Kconfig"
 
 
 source "drivers/usb/net/Kconfig"
 source "drivers/usb/net/Kconfig"

+ 0 - 9
drivers/usb/Makefile

@@ -23,15 +23,6 @@ obj-$(CONFIG_USB_PRINTER)	+= class/
 obj-$(CONFIG_USB_STORAGE)	+= storage/
 obj-$(CONFIG_USB_STORAGE)	+= storage/
 obj-$(CONFIG_USB)		+= storage/
 obj-$(CONFIG_USB)		+= storage/
 
 
-obj-$(CONFIG_USB_ACECAD)	+= input/
-obj-$(CONFIG_USB_AIPTEK)	+= input/
-obj-$(CONFIG_USB_ATI_REMOTE)	+= input/
-obj-$(CONFIG_USB_KBTAB)		+= input/
-obj-$(CONFIG_USB_MTOUCH)	+= input/
-obj-$(CONFIG_USB_POWERMATE)	+= input/
-obj-$(CONFIG_USB_WACOM)		+= input/
-obj-$(CONFIG_USB_XPAD)		+= input/
-
 obj-$(CONFIG_USB_CATC)		+= net/
 obj-$(CONFIG_USB_CATC)		+= net/
 obj-$(CONFIG_USB_KAWETH)	+= net/
 obj-$(CONFIG_USB_KAWETH)	+= net/
 obj-$(CONFIG_USB_PEGASUS)	+= net/
 obj-$(CONFIG_USB_PEGASUS)	+= net/

+ 0 - 225
drivers/usb/input/Kconfig

@@ -1,225 +0,0 @@
-#
-# USB Input driver configuration
-#
-comment "USB Input Devices"
-	depends on USB
-
-config USB_AIPTEK
-	tristate "Aiptek 6000U/8000U tablet support"
-	depends on USB && INPUT
-	help
-	  Say Y here if you want to use the USB version of the Aiptek 6000U
-	  or Aiptek 8000U tablet.  Make sure to say Y to "Mouse support"
-	  (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
-	  (CONFIG_INPUT_EVDEV) as well.
-
-	  To compile this driver as a module, choose M here: the
-	  module will be called aiptek.
-
-config USB_WACOM
-	tristate "Wacom Intuos/Graphire tablet support"
-	depends on USB && INPUT
-	help
-	  Say Y here if you want to use the USB version of the Wacom Intuos
-	  or Graphire tablet.  Make sure to say Y to "Mouse support"
-	  (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
-	  (CONFIG_INPUT_EVDEV) as well.
-
-	  To compile this driver as a module, choose M here: the
-	  module will be called wacom.
-
-config USB_ACECAD
-	tristate "Acecad Flair tablet support"
-	depends on USB && INPUT
-	help
-	  Say Y here if you want to use the USB version of the Acecad Flair
-	  tablet.  Make sure to say Y to "Mouse support"
-	  (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
-	  (CONFIG_INPUT_EVDEV) as well.
-
-	  To compile this driver as a module, choose M here: the
-	  module will be called acecad.
-
-config USB_KBTAB
-	tristate "KB Gear JamStudio tablet support"
-	depends on USB && INPUT
-	help
-	  Say Y here if you want to use the USB version of the KB Gear
-	  JamStudio tablet.  Make sure to say Y to "Mouse support"
-	  (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
-	  (CONFIG_INPUT_EVDEV) as well.
-
-	  To compile this driver as a module, choose M here: the
-	  module will be called kbtab.
-
-config USB_POWERMATE
-	tristate "Griffin PowerMate and Contour Jog support"
-	depends on USB && INPUT
-	---help---
-	  Say Y here if you want to use Griffin PowerMate or Contour Jog devices.
-	  These are aluminum dials which can measure clockwise and anticlockwise
-	  rotation.  The dial also acts as a pushbutton.  The base contains an LED
-	  which can be instructed to pulse or to switch to a particular intensity.
-
-	  You can download userspace tools from
-	  <http://sowerbutts.com/powermate/>.
-
-	  To compile this driver as a module, choose M here: the
-	  module will be called powermate.
-
-config USB_TOUCHSCREEN
-	tristate "USB Touchscreen Driver"
-	depends on USB && INPUT
-	---help---
-	  USB Touchscreen driver for:
-	  - eGalax Touchkit USB (also includes eTurboTouch CT-410/510/700)
-	  - PanJit TouchSet USB
-	  - 3M MicroTouch USB (EX II series)
-	  - ITM
-	  - some other eTurboTouch
-	  - Gunze AHL61
-	  - DMC TSC-10/25
-
-	  Have a look at <http://linux.chapter7.ch/touchkit/> for
-	  a usage description and the required user-space stuff.
-
-	  To compile this driver as a module, choose M here: the
-	  module will be called usbtouchscreen.
-
-config USB_TOUCHSCREEN_EGALAX
-	default y
-	bool "eGalax, eTurboTouch CT-410/510/700 device support" if EMBEDDED
-	depends on USB_TOUCHSCREEN
-
-config USB_TOUCHSCREEN_PANJIT
-	default y
-	bool "PanJit device support" if EMBEDDED
-	depends on USB_TOUCHSCREEN
-
-config USB_TOUCHSCREEN_3M
-	default y
-	bool "3M/Microtouch EX II series device support" if EMBEDDED
-	depends on USB_TOUCHSCREEN
-
-config USB_TOUCHSCREEN_ITM
-	default y
-	bool "ITM device support" if EMBEDDED
-	depends on USB_TOUCHSCREEN
-
-config USB_TOUCHSCREEN_ETURBO
-	default y
-	bool "eTurboTouch (non-eGalax compatible) device support" if EMBEDDED
-	depends on USB_TOUCHSCREEN
-
-config USB_TOUCHSCREEN_GUNZE
-	default y
-	bool "Gunze AHL61 device support" if EMBEDDED
-	depends on USB_TOUCHSCREEN
-
-config USB_TOUCHSCREEN_DMC_TSC10
-	default y
-	bool "DMC TSC-10/25 device support" if EMBEDDED
-	depends on USB_TOUCHSCREEN
-
-config USB_YEALINK
-	tristate "Yealink usb-p1k voip phone"
-	depends on USB && INPUT && EXPERIMENTAL
-	---help---
-	  Say Y here if you want to enable keyboard and LCD functions of the
-	  Yealink usb-p1k usb phones. The audio part is enabled by the generic
-	  usb sound driver, so you might want to enable that as well.
-
-	  For information about how to use these additional functions, see
-	  <file:Documentation/input/yealink.txt>.
-
-	  To compile this driver as a module, choose M here: the module will be
-	  called yealink.
-
-config USB_XPAD
-	tristate "X-Box gamepad support"
-	depends on USB && INPUT
-	---help---
-	  Say Y here if you want to use the X-Box pad with your computer.
-	  Make sure to say Y to "Joystick support" (CONFIG_INPUT_JOYDEV)
-	  and/or "Event interface support" (CONFIG_INPUT_EVDEV) as well.
-
-	  For information about how to connect the X-Box pad to USB, see
-	  <file:Documentation/input/xpad.txt>.
-
-	  To compile this driver as a module, choose M here: the
-	  module will be called xpad.
-	  
-config USB_ATI_REMOTE
-	tristate "ATI / X10 USB RF remote control"
-	depends on USB && INPUT
-	---help---
-	  Say Y here if you want to use an ATI or X10 "Lola" USB remote control.
-	  These are RF remotes with USB receivers. 
-	  The ATI remote comes with many of ATI's All-In-Wonder video cards.
-	  The X10 "Lola" remote is available at:
-	     <http://www.x10.com/products/lola_sg1.htm>
-	  This driver provides mouse pointer, left and right mouse buttons, 
-	  and maps all the other remote buttons to keypress events.
-	  
-	  To compile this driver as a module, choose M here: the module will be
-	  called ati_remote.
-
-config USB_ATI_REMOTE2
-	tristate "ATI / Philips USB RF remote control"
-	depends on USB && INPUT
-	---help---
-	  Say Y here if you want to use an ATI or Philips USB RF remote control.
-	  These are RF remotes with USB receivers.
-	  ATI Remote Wonder II comes with some ATI's All-In-Wonder video cards
-	  and is also available as a separate product.
-	  This driver provides mouse pointer, left and right mouse buttons,
-	  and maps all the other remote buttons to keypress events.
-
-	  To compile this driver as a module, choose M here: the module will be
-	  called ati_remote2.
-
-config USB_KEYSPAN_REMOTE
-	tristate "Keyspan DMR USB remote control (EXPERIMENTAL)"
-	depends on USB && INPUT && EXPERIMENTAL
-	---help---
-	  Say Y here if you want to use a Keyspan DMR USB remote control.
-	  Currently only the UIA-11 type of receiver has been tested.  The tag
-	  on the receiver that connects to the USB port should have a P/N that
-	  will tell you what type of DMR you have.  The UIA-10 type is not
-	  supported at this time.  This driver maps all buttons to keypress
-	  events.
-
-	  To compile this driver as a module, choose M here: the module will
-	  be called keyspan_remote.
-
-config USB_APPLETOUCH
-	tristate "Apple USB Touchpad support"
-	depends on USB && INPUT
-	---help---
-	  Say Y here if you want to use an Apple USB Touchpad.
-
-	  These are the touchpads that can be found on post-February 2005
-	  Apple Powerbooks (prior models have a Synaptics touchpad connected
-	  to the ADB bus).
-
-	  This driver provides a basic mouse driver but can be interfaced
-	  with the synaptics X11 driver to provide acceleration and
-	  scrolling in X11.
-
-	  For further information, see
-	  <file:Documentation/input/appletouch.txt>.
-
-	  To compile this driver as a module, choose M here: the
-	  module will be called appletouch.
-
-config USB_GTCO
-        tristate "GTCO CalComp/InterWrite USB Support"
-        depends on USB && INPUT
-        ---help---
-          Say Y here if you want to use the USB version of the GTCO
-          CalComp/InterWrite Tablet.  Make sure to say Y to "Mouse support"
-          (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
-          (CONFIG_INPUT_EVDEV) as well.
-
-          To compile this driver as a module, choose M here: the
-          module will be called gtco.

+ 0 - 24
drivers/usb/input/Makefile

@@ -1,24 +0,0 @@
-#
-# Makefile for the USB input drivers
-#
-
-# Multipart objects.
-wacom-objs	:= wacom_wac.o wacom_sys.o
-
-obj-$(CONFIG_USB_AIPTEK)	+= aiptek.o
-obj-$(CONFIG_USB_ATI_REMOTE)	+= ati_remote.o
-obj-$(CONFIG_USB_ATI_REMOTE2)	+= ati_remote2.o
-obj-$(CONFIG_USB_KBTAB)		+= kbtab.o
-obj-$(CONFIG_USB_KEYSPAN_REMOTE)	+= keyspan_remote.o
-obj-$(CONFIG_USB_TOUCHSCREEN)	+= usbtouchscreen.o
-obj-$(CONFIG_USB_POWERMATE)	+= powermate.o
-obj-$(CONFIG_USB_WACOM)		+= wacom.o
-obj-$(CONFIG_USB_ACECAD)	+= acecad.o
-obj-$(CONFIG_USB_YEALINK)	+= yealink.o
-obj-$(CONFIG_USB_XPAD)		+= xpad.o
-obj-$(CONFIG_USB_APPLETOUCH)	+= appletouch.o
-obj-$(CONFIG_USB_GTCO)		+= gtco.o
-
-ifeq ($(CONFIG_USB_DEBUG),y)
-EXTRA_CFLAGS += -DDEBUG
-endif

+ 2 - 0
include/linux/uinput.h

@@ -32,6 +32,8 @@
  *		- first public version
  *		- first public version
  */
  */
 
 
+#include <linux/input.h>
+
 #define UINPUT_VERSION		3
 #define UINPUT_VERSION		3
 
 
 #ifdef __KERNEL__
 #ifdef __KERNEL__