aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/input/Kconfig2
-rw-r--r--drivers/input/Makefile1
-rw-r--r--drivers/input/evdev.c6
-rw-r--r--drivers/input/ff-core.c3
-rw-r--r--drivers/input/joystick/Kconfig18
-rw-r--r--drivers/input/joystick/Makefile1
-rw-r--r--drivers/input/joystick/analog.c2
-rw-r--r--drivers/input/joystick/db9.c18
-rw-r--r--drivers/input/joystick/gamecon.c17
-rw-r--r--drivers/input/joystick/iforce/iforce.h2
-rw-r--r--drivers/input/joystick/turbografx.c18
-rw-r--r--drivers/input/joystick/xpad.c (renamed from drivers/usb/input/xpad.c)0
-rw-r--r--drivers/input/keyboard/Kconfig1
-rw-r--r--drivers/input/keyboard/aaed2000_kbd.c62
-rw-r--r--drivers/input/misc/Kconfig88
-rw-r--r--drivers/input/misc/Makefile9
-rw-r--r--drivers/input/misc/ati_remote.c (renamed from drivers/usb/input/ati_remote.c)0
-rw-r--r--drivers/input/misc/ati_remote2.c (renamed from drivers/usb/input/ati_remote2.c)4
-rw-r--r--drivers/input/misc/keyspan_remote.c (renamed from drivers/usb/input/keyspan_remote.c)0
-rw-r--r--drivers/input/misc/map_to_7segment.h (renamed from drivers/usb/input/map_to_7segment.h)0
-rw-r--r--drivers/input/misc/powermate.c (renamed from drivers/usb/input/powermate.c)10
-rw-r--r--drivers/input/misc/uinput.c1
-rw-r--r--drivers/input/misc/yealink.c (renamed from drivers/usb/input/yealink.c)25
-rw-r--r--drivers/input/misc/yealink.h (renamed from drivers/usb/input/yealink.h)0
-rw-r--r--drivers/input/mouse/Kconfig38
-rw-r--r--drivers/input/mouse/Makefile1
-rw-r--r--drivers/input/mouse/appletouch.c (renamed from drivers/usb/input/appletouch.c)0
-rw-r--r--drivers/input/mouse/synaptics.c2
-rw-r--r--drivers/input/serio/i8042.c35
-rw-r--r--drivers/input/tablet/Kconfig74
-rw-r--r--drivers/input/tablet/Makefile12
-rw-r--r--drivers/input/tablet/acecad.c (renamed from drivers/usb/input/acecad.c)2
-rw-r--r--drivers/input/tablet/aiptek.c (renamed from drivers/usb/input/aiptek.c)0
-rw-r--r--drivers/input/tablet/gtco.c (renamed from drivers/usb/input/gtco.c)0
-rw-r--r--drivers/input/tablet/kbtab.c (renamed from drivers/usb/input/kbtab.c)2
-rw-r--r--drivers/input/tablet/wacom.h (renamed from drivers/usb/input/wacom.h)2
-rw-r--r--drivers/input/tablet/wacom_sys.c (renamed from drivers/usb/input/wacom_sys.c)2
-rw-r--r--drivers/input/tablet/wacom_wac.c (renamed from drivers/usb/input/wacom_wac.c)2
-rw-r--r--drivers/input/tablet/wacom_wac.h (renamed from drivers/usb/input/wacom_wac.h)4
-rw-r--r--drivers/input/touchscreen/Kconfig60
-rw-r--r--drivers/input/touchscreen/Makefile17
-rw-r--r--drivers/input/touchscreen/usbtouchscreen.c (renamed from drivers/usb/input/usbtouchscreen.c)5
-rw-r--r--drivers/usb/Kconfig2
-rw-r--r--drivers/usb/Makefile9
-rw-r--r--drivers/usb/input/Kconfig225
-rw-r--r--drivers/usb/input/Makefile24
-rw-r--r--include/linux/uinput.h2
47 files changed, 404 insertions, 404 deletions
diff --git a/drivers/input/Kconfig b/drivers/input/Kconfig
index 96232313b1b9..0e9b69535ad6 100644
--- a/drivers/input/Kconfig
+++ b/drivers/input/Kconfig
@@ -153,6 +153,8 @@ source "drivers/input/mouse/Kconfig"
153 153
154source "drivers/input/joystick/Kconfig" 154source "drivers/input/joystick/Kconfig"
155 155
156source "drivers/input/tablet/Kconfig"
157
156source "drivers/input/touchscreen/Kconfig" 158source "drivers/input/touchscreen/Kconfig"
157 159
158source "drivers/input/misc/Kconfig" 160source "drivers/input/misc/Kconfig"
diff --git a/drivers/input/Makefile b/drivers/input/Makefile
index b4cd10653c4f..8a2dd987546c 100644
--- a/drivers/input/Makefile
+++ b/drivers/input/Makefile
@@ -18,6 +18,7 @@ obj-$(CONFIG_INPUT_EVBUG) += evbug.o
18obj-$(CONFIG_INPUT_KEYBOARD) += keyboard/ 18obj-$(CONFIG_INPUT_KEYBOARD) += keyboard/
19obj-$(CONFIG_INPUT_MOUSE) += mouse/ 19obj-$(CONFIG_INPUT_MOUSE) += mouse/
20obj-$(CONFIG_INPUT_JOYSTICK) += joystick/ 20obj-$(CONFIG_INPUT_JOYSTICK) += joystick/
21obj-$(CONFIG_INPUT_TABLET) += tablet/
21obj-$(CONFIG_INPUT_TOUCHSCREEN) += touchscreen/ 22obj-$(CONFIG_INPUT_TOUCHSCREEN) += touchscreen/
22obj-$(CONFIG_INPUT_MISC) += misc/ 23obj-$(CONFIG_INPUT_MISC) += misc/
23 24
diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
index be3dbc1ae67d..55a72592704c 100644
--- a/drivers/input/evdev.c
+++ b/drivers/input/evdev.c
@@ -511,7 +511,7 @@ static long evdev_ioctl_handler(struct file *file, unsigned int cmd,
511 511
512 if ((_IOC_NR(cmd) & ~EV_MAX) == _IOC_NR(EVIOCGBIT(0,0))) { 512 if ((_IOC_NR(cmd) & ~EV_MAX) == _IOC_NR(EVIOCGBIT(0,0))) {
513 513
514 long *bits; 514 unsigned long *bits;
515 int len; 515 int len;
516 516
517 switch (_IOC_NR(cmd) & EV_MAX) { 517 switch (_IOC_NR(cmd) & EV_MAX) {
@@ -556,7 +556,7 @@ static long evdev_ioctl_handler(struct file *file, unsigned int cmd,
556 556
557 if ((_IOC_NR(cmd) & ~ABS_MAX) == _IOC_NR(EVIOCGABS(0))) { 557 if ((_IOC_NR(cmd) & ~ABS_MAX) == _IOC_NR(EVIOCGABS(0))) {
558 558
559 int t = _IOC_NR(cmd) & ABS_MAX; 559 t = _IOC_NR(cmd) & ABS_MAX;
560 560
561 abs.value = dev->abs[t]; 561 abs.value = dev->abs[t];
562 abs.minimum = dev->absmin[t]; 562 abs.minimum = dev->absmin[t];
@@ -576,7 +576,7 @@ static long evdev_ioctl_handler(struct file *file, unsigned int cmd,
576 576
577 if ((_IOC_NR(cmd) & ~ABS_MAX) == _IOC_NR(EVIOCSABS(0))) { 577 if ((_IOC_NR(cmd) & ~ABS_MAX) == _IOC_NR(EVIOCSABS(0))) {
578 578
579 int t = _IOC_NR(cmd) & ABS_MAX; 579 t = _IOC_NR(cmd) & ABS_MAX;
580 580
581 if (copy_from_user(&abs, p, sizeof(struct input_absinfo))) 581 if (copy_from_user(&abs, p, sizeof(struct input_absinfo)))
582 return -EFAULT; 582 return -EFAULT;
diff --git a/drivers/input/ff-core.c b/drivers/input/ff-core.c
index 783b3412cead..eebc72465fc9 100644
--- a/drivers/input/ff-core.c
+++ b/drivers/input/ff-core.c
@@ -281,7 +281,8 @@ int input_ff_event(struct input_dev *dev, unsigned int type,
281 break; 281 break;
282 282
283 default: 283 default:
284 ff->playback(dev, code, value); 284 if (check_effect_access(ff, code, NULL) == 0)
285 ff->playback(dev, code, value);
285 break; 286 break;
286 } 287 }
287 288
diff --git a/drivers/input/joystick/Kconfig b/drivers/input/joystick/Kconfig
index 271263443c37..82f563e24fdb 100644
--- a/drivers/input/joystick/Kconfig
+++ b/drivers/input/joystick/Kconfig
@@ -2,7 +2,7 @@
2# Joystick driver configuration 2# Joystick driver configuration
3# 3#
4menuconfig INPUT_JOYSTICK 4menuconfig INPUT_JOYSTICK
5 bool "Joysticks" 5 bool "Joysticks/Gamepads"
6 help 6 help
7 If you have a joystick, 6dof controller, gamepad, steering wheel, 7 If you have a joystick, 6dof controller, gamepad, steering wheel,
8 weapon control system or something like that you can say Y here 8 weapon control system or something like that you can say Y here
@@ -196,7 +196,7 @@ config JOYSTICK_TWIDJOY
196config JOYSTICK_DB9 196config JOYSTICK_DB9
197 tristate "Multisystem, Sega Genesis, Saturn joysticks and gamepads" 197 tristate "Multisystem, Sega Genesis, Saturn joysticks and gamepads"
198 depends on PARPORT 198 depends on PARPORT
199 ---help--- 199 help
200 Say Y here if you have a Sega Master System gamepad, Sega Genesis 200 Say Y here if you have a Sega Master System gamepad, Sega Genesis
201 gamepad, Sega Saturn gamepad, or a Multisystem -- Atari, Amiga, 201 gamepad, Sega Saturn gamepad, or a Multisystem -- Atari, Amiga,
202 Commodore, Amstrad CPC joystick connected to your parallel port. 202 Commodore, Amstrad CPC joystick connected to your parallel port.
@@ -253,4 +253,18 @@ config JOYSTICK_JOYDUMP
253 To compile this driver as a module, choose M here: the 253 To compile this driver as a module, choose M here: the
254 module will be called joydump. 254 module will be called joydump.
255 255
256config JOYSTICK_XPAD
257 tristate "X-Box gamepad support"
258 select USB
259 help
260 Say Y here if you want to use the X-Box pad with your computer.
261 Make sure to say Y to "Joystick support" (CONFIG_INPUT_JOYDEV)
262 and/or "Event interface support" (CONFIG_INPUT_EVDEV) as well.
263
264 For information about how to connect the X-Box pad to USB, see
265 <file:Documentation/input/xpad.txt>.
266
267 To compile this driver as a module, choose M here: the
268 module will be called xpad.
269
256endif 270endif
diff --git a/drivers/input/joystick/Makefile b/drivers/input/joystick/Makefile
index 5231f6ff75b8..e855abb0cc51 100644
--- a/drivers/input/joystick/Makefile
+++ b/drivers/input/joystick/Makefile
@@ -26,5 +26,6 @@ obj-$(CONFIG_JOYSTICK_TMDC) += tmdc.o
26obj-$(CONFIG_JOYSTICK_TURBOGRAFX) += turbografx.o 26obj-$(CONFIG_JOYSTICK_TURBOGRAFX) += turbografx.o
27obj-$(CONFIG_JOYSTICK_TWIDJOY) += twidjoy.o 27obj-$(CONFIG_JOYSTICK_TWIDJOY) += twidjoy.o
28obj-$(CONFIG_JOYSTICK_WARRIOR) += warrior.o 28obj-$(CONFIG_JOYSTICK_WARRIOR) += warrior.o
29obj-$(CONFIG_JOYSTICK_XPAD) += xpad.o
29 30
30obj-$(CONFIG_JOYSTICK_IFORCE) += iforce/ 31obj-$(CONFIG_JOYSTICK_IFORCE) += iforce/
diff --git a/drivers/input/joystick/analog.c b/drivers/input/joystick/analog.c
index 1c1afb5d4684..bdd157c1ebf8 100644
--- a/drivers/input/joystick/analog.c
+++ b/drivers/input/joystick/analog.c
@@ -53,7 +53,7 @@ MODULE_LICENSE("GPL");
53#define ANALOG_PORTS 16 53#define ANALOG_PORTS 16
54 54
55static char *js[ANALOG_PORTS]; 55static char *js[ANALOG_PORTS];
56static int js_nargs; 56static unsigned int js_nargs;
57static int analog_options[ANALOG_PORTS]; 57static int analog_options[ANALOG_PORTS];
58module_param_array_named(map, js, charp, &js_nargs, 0); 58module_param_array_named(map, js, charp, &js_nargs, 0);
59MODULE_PARM_DESC(map, "Describes analog joysticks type/capabilities"); 59MODULE_PARM_DESC(map, "Describes analog joysticks type/capabilities");
diff --git a/drivers/input/joystick/db9.c b/drivers/input/joystick/db9.c
index c27593bf9978..86ad1027e12a 100644
--- a/drivers/input/joystick/db9.c
+++ b/drivers/input/joystick/db9.c
@@ -46,17 +46,17 @@ MODULE_LICENSE("GPL");
46 46
47struct db9_config { 47struct db9_config {
48 int args[2]; 48 int args[2];
49 int nargs; 49 unsigned int nargs;
50}; 50};
51 51
52#define DB9_MAX_PORTS 3 52#define DB9_MAX_PORTS 3
53static struct db9_config db9[DB9_MAX_PORTS] __initdata; 53static struct db9_config db9_cfg[DB9_MAX_PORTS] __initdata;
54 54
55module_param_array_named(dev, db9[0].args, int, &db9[0].nargs, 0); 55module_param_array_named(dev, db9_cfg[0].args, int, &db9_cfg[0].nargs, 0);
56MODULE_PARM_DESC(dev, "Describes first attached device (<parport#>,<type>)"); 56MODULE_PARM_DESC(dev, "Describes first attached device (<parport#>,<type>)");
57module_param_array_named(dev2, db9[1].args, int, &db9[0].nargs, 0); 57module_param_array_named(dev2, db9_cfg[1].args, int, &db9_cfg[0].nargs, 0);
58MODULE_PARM_DESC(dev2, "Describes second attached device (<parport#>,<type>)"); 58MODULE_PARM_DESC(dev2, "Describes second attached device (<parport#>,<type>)");
59module_param_array_named(dev3, db9[2].args, int, &db9[2].nargs, 0); 59module_param_array_named(dev3, db9_cfg[2].args, int, &db9_cfg[2].nargs, 0);
60MODULE_PARM_DESC(dev3, "Describes third attached device (<parport#>,<type>)"); 60MODULE_PARM_DESC(dev3, "Describes third attached device (<parport#>,<type>)");
61 61
62#define DB9_ARG_PARPORT 0 62#define DB9_ARG_PARPORT 0
@@ -680,17 +680,17 @@ static int __init db9_init(void)
680 int err = 0; 680 int err = 0;
681 681
682 for (i = 0; i < DB9_MAX_PORTS; i++) { 682 for (i = 0; i < DB9_MAX_PORTS; i++) {
683 if (db9[i].nargs == 0 || db9[i].args[DB9_ARG_PARPORT] < 0) 683 if (db9_cfg[i].nargs == 0 || db9_cfg[i].args[DB9_ARG_PARPORT] < 0)
684 continue; 684 continue;
685 685
686 if (db9[i].nargs < 2) { 686 if (db9_cfg[i].nargs < 2) {
687 printk(KERN_ERR "db9.c: Device type must be specified.\n"); 687 printk(KERN_ERR "db9.c: Device type must be specified.\n");
688 err = -EINVAL; 688 err = -EINVAL;
689 break; 689 break;
690 } 690 }
691 691
692 db9_base[i] = db9_probe(db9[i].args[DB9_ARG_PARPORT], 692 db9_base[i] = db9_probe(db9_cfg[i].args[DB9_ARG_PARPORT],
693 db9[i].args[DB9_ARG_MODE]); 693 db9_cfg[i].args[DB9_ARG_MODE]);
694 if (IS_ERR(db9_base[i])) { 694 if (IS_ERR(db9_base[i])) {
695 err = PTR_ERR(db9_base[i]); 695 err = PTR_ERR(db9_base[i]);
696 break; 696 break;
diff --git a/drivers/input/joystick/gamecon.c b/drivers/input/joystick/gamecon.c
index c71b58fe225d..1a452e0e5f25 100644
--- a/drivers/input/joystick/gamecon.c
+++ b/drivers/input/joystick/gamecon.c
@@ -48,16 +48,16 @@ MODULE_LICENSE("GPL");
48 48
49struct gc_config { 49struct gc_config {
50 int args[GC_MAX_DEVICES + 1]; 50 int args[GC_MAX_DEVICES + 1];
51 int nargs; 51 unsigned int nargs;
52}; 52};
53 53
54static struct gc_config gc[GC_MAX_PORTS] __initdata; 54static struct gc_config gc_cfg[GC_MAX_PORTS] __initdata;
55 55
56module_param_array_named(map, gc[0].args, int, &gc[0].nargs, 0); 56module_param_array_named(map, gc_cfg[0].args, int, &gc_cfg[0].nargs, 0);
57MODULE_PARM_DESC(map, "Describes first set of devices (<parport#>,<pad1>,<pad2>,..<pad5>)"); 57MODULE_PARM_DESC(map, "Describes first set of devices (<parport#>,<pad1>,<pad2>,..<pad5>)");
58module_param_array_named(map2, gc[1].args, int, &gc[1].nargs, 0); 58module_param_array_named(map2, gc_cfg[1].args, int, &gc_cfg[1].nargs, 0);
59MODULE_PARM_DESC(map2, "Describes second set of devices"); 59MODULE_PARM_DESC(map2, "Describes second set of devices");
60module_param_array_named(map3, gc[2].args, int, &gc[2].nargs, 0); 60module_param_array_named(map3, gc_cfg[2].args, int, &gc_cfg[2].nargs, 0);
61MODULE_PARM_DESC(map3, "Describes third set of devices"); 61MODULE_PARM_DESC(map3, "Describes third set of devices");
62 62
63/* see also gs_psx_delay parameter in PSX support section */ 63/* see also gs_psx_delay parameter in PSX support section */
@@ -810,16 +810,17 @@ static int __init gc_init(void)
810 int err = 0; 810 int err = 0;
811 811
812 for (i = 0; i < GC_MAX_PORTS; i++) { 812 for (i = 0; i < GC_MAX_PORTS; i++) {
813 if (gc[i].nargs == 0 || gc[i].args[0] < 0) 813 if (gc_cfg[i].nargs == 0 || gc_cfg[i].args[0] < 0)
814 continue; 814 continue;
815 815
816 if (gc[i].nargs < 2) { 816 if (gc_cfg[i].nargs < 2) {
817 printk(KERN_ERR "gamecon.c: at least one device must be specified\n"); 817 printk(KERN_ERR "gamecon.c: at least one device must be specified\n");
818 err = -EINVAL; 818 err = -EINVAL;
819 break; 819 break;
820 } 820 }
821 821
822 gc_base[i] = gc_probe(gc[i].args[0], gc[i].args + 1, gc[i].nargs - 1); 822 gc_base[i] = gc_probe(gc_cfg[i].args[0],
823 gc_cfg[i].args + 1, gc_cfg[i].nargs - 1);
823 if (IS_ERR(gc_base[i])) { 824 if (IS_ERR(gc_base[i])) {
824 err = PTR_ERR(gc_base[i]); 825 err = PTR_ERR(gc_base[i]);
825 break; 826 break;
diff --git a/drivers/input/joystick/iforce/iforce.h b/drivers/input/joystick/iforce/iforce.h
index dadcf4fb92ae..40a853ac21c7 100644
--- a/drivers/input/joystick/iforce/iforce.h
+++ b/drivers/input/joystick/iforce/iforce.h
@@ -124,7 +124,7 @@ struct iforce {
124 /* Buffer used for asynchronous sending of bytes to the device */ 124 /* Buffer used for asynchronous sending of bytes to the device */
125 struct circ_buf xmit; 125 struct circ_buf xmit;
126 unsigned char xmit_data[XMIT_SIZE]; 126 unsigned char xmit_data[XMIT_SIZE];
127 long xmit_flags[1]; 127 unsigned long xmit_flags[1];
128 128
129 /* Force Feedback */ 129 /* Force Feedback */
130 wait_queue_head_t wait; 130 wait_queue_head_t wait;
diff --git a/drivers/input/joystick/turbografx.c b/drivers/input/joystick/turbografx.c
index 0f2c60823b0b..8381c6f14373 100644
--- a/drivers/input/joystick/turbografx.c
+++ b/drivers/input/joystick/turbografx.c
@@ -48,16 +48,16 @@ MODULE_LICENSE("GPL");
48 48
49struct tgfx_config { 49struct tgfx_config {
50 int args[TGFX_MAX_DEVICES + 1]; 50 int args[TGFX_MAX_DEVICES + 1];
51 int nargs; 51 unsigned int nargs;
52}; 52};
53 53
54static struct tgfx_config tgfx[TGFX_MAX_PORTS] __initdata; 54static struct tgfx_config tgfx_cfg[TGFX_MAX_PORTS] __initdata;
55 55
56module_param_array_named(map, tgfx[0].args, int, &tgfx[0].nargs, 0); 56module_param_array_named(map, tgfx_cfg[0].args, int, &tgfx_cfg[0].nargs, 0);
57MODULE_PARM_DESC(map, "Describes first set of devices (<parport#>,<js1>,<js2>,..<js7>"); 57MODULE_PARM_DESC(map, "Describes first set of devices (<parport#>,<js1>,<js2>,..<js7>");
58module_param_array_named(map2, tgfx[1].args, int, &tgfx[1].nargs, 0); 58module_param_array_named(map2, tgfx_cfg[1].args, int, &tgfx_cfg[1].nargs, 0);
59MODULE_PARM_DESC(map2, "Describes second set of devices"); 59MODULE_PARM_DESC(map2, "Describes second set of devices");
60module_param_array_named(map3, tgfx[2].args, int, &tgfx[2].nargs, 0); 60module_param_array_named(map3, tgfx_cfg[2].args, int, &tgfx_cfg[2].nargs, 0);
61MODULE_PARM_DESC(map3, "Describes third set of devices"); 61MODULE_PARM_DESC(map3, "Describes third set of devices");
62 62
63#define TGFX_REFRESH_TIME HZ/100 /* 10 ms */ 63#define TGFX_REFRESH_TIME HZ/100 /* 10 ms */
@@ -283,16 +283,18 @@ static int __init tgfx_init(void)
283 int err = 0; 283 int err = 0;
284 284
285 for (i = 0; i < TGFX_MAX_PORTS; i++) { 285 for (i = 0; i < TGFX_MAX_PORTS; i++) {
286 if (tgfx[i].nargs == 0 || tgfx[i].args[0] < 0) 286 if (tgfx_cfg[i].nargs == 0 || tgfx_cfg[i].args[0] < 0)
287 continue; 287 continue;
288 288
289 if (tgfx[i].nargs < 2) { 289 if (tgfx_cfg[i].nargs < 2) {
290 printk(KERN_ERR "turbografx.c: at least one joystick must be specified\n"); 290 printk(KERN_ERR "turbografx.c: at least one joystick must be specified\n");
291 err = -EINVAL; 291 err = -EINVAL;
292 break; 292 break;
293 } 293 }
294 294
295 tgfx_base[i] = tgfx_probe(tgfx[i].args[0], tgfx[i].args + 1, tgfx[i].nargs - 1); 295 tgfx_base[i] = tgfx_probe(tgfx_cfg[i].args[0],
296 tgfx_cfg[i].args + 1,
297 tgfx_cfg[i].nargs - 1);
296 if (IS_ERR(tgfx_base[i])) { 298 if (IS_ERR(tgfx_base[i])) {
297 err = PTR_ERR(tgfx_base[i]); 299 err = PTR_ERR(tgfx_base[i]);
298 break; 300 break;
diff --git a/drivers/usb/input/xpad.c b/drivers/input/joystick/xpad.c
index 8c8cd95a6989..8c8cd95a6989 100644
--- a/drivers/usb/input/xpad.c
+++ b/drivers/input/joystick/xpad.c
diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig
index 9f42e4d3649e..bd707b86c114 100644
--- a/drivers/input/keyboard/Kconfig
+++ b/drivers/input/keyboard/Kconfig
@@ -226,6 +226,7 @@ config KEYBOARD_PXA27x
226config KEYBOARD_AAED2000 226config KEYBOARD_AAED2000
227 tristate "AAED-2000 keyboard" 227 tristate "AAED-2000 keyboard"
228 depends on MACH_AAED2000 228 depends on MACH_AAED2000
229 select INPUT_POLLDEV
229 default y 230 default y
230 help 231 help
231 Say Y here to enable the keyboard on the Agilent AAED-2000 232 Say Y here to enable the keyboard on the Agilent AAED-2000
diff --git a/drivers/input/keyboard/aaed2000_kbd.c b/drivers/input/keyboard/aaed2000_kbd.c
index 3a37505f067c..63d6ead6b877 100644
--- a/drivers/input/keyboard/aaed2000_kbd.c
+++ b/drivers/input/keyboard/aaed2000_kbd.c
@@ -14,12 +14,11 @@
14#include <linux/delay.h> 14#include <linux/delay.h>
15#include <linux/platform_device.h> 15#include <linux/platform_device.h>
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/input.h> 17#include <linux/input-polldev.h>
18#include <linux/interrupt.h> 18#include <linux/interrupt.h>
19#include <linux/jiffies.h> 19#include <linux/jiffies.h>
20#include <linux/module.h> 20#include <linux/module.h>
21#include <linux/slab.h> 21#include <linux/slab.h>
22#include <linux/workqueue.h>
23 22
24#include <asm/arch/hardware.h> 23#include <asm/arch/hardware.h>
25#include <asm/arch/aaed2000.h> 24#include <asm/arch/aaed2000.h>
@@ -46,8 +45,7 @@ static unsigned char aaedkbd_keycode[NR_SCANCODES] = {
46 45
47struct aaedkbd { 46struct aaedkbd {
48 unsigned char keycode[ARRAY_SIZE(aaedkbd_keycode)]; 47 unsigned char keycode[ARRAY_SIZE(aaedkbd_keycode)];
49 struct input_dev *input; 48 struct input_polled_dev *poll_dev;
50 struct work_struct workq;
51 int kbdscan_state[KB_COLS]; 49 int kbdscan_state[KB_COLS];
52 int kbdscan_count[KB_COLS]; 50 int kbdscan_count[KB_COLS];
53}; 51};
@@ -64,14 +62,15 @@ static void aaedkbd_report_col(struct aaedkbd *aaedkbd,
64 scancode = SCANCODE(row, col); 62 scancode = SCANCODE(row, col);
65 pressed = rowd & KB_ROWMASK(row); 63 pressed = rowd & KB_ROWMASK(row);
66 64
67 input_report_key(aaedkbd->input, aaedkbd->keycode[scancode], pressed); 65 input_report_key(aaedkbd->poll_dev->input,
66 aaedkbd->keycode[scancode], pressed);
68 } 67 }
69} 68}
70 69
71/* Scan the hardware keyboard and push any changes up through the input layer */ 70/* Scan the hardware keyboard and push any changes up through the input layer */
72static void aaedkbd_work(void *data) 71static void aaedkbd_poll(struct input_polled_dev *dev)
73{ 72{
74 struct aaedkbd *aaedkbd = data; 73 struct aaedkbd *aaedkbd = dev->private;
75 unsigned int col, rowd; 74 unsigned int col, rowd;
76 75
77 col = 0; 76 col = 0;
@@ -90,51 +89,34 @@ static void aaedkbd_work(void *data)
90 } while (col < KB_COLS); 89 } while (col < KB_COLS);
91 90
92 AAEC_GPIO_KSCAN = 0x07; 91 AAEC_GPIO_KSCAN = 0x07;
93 input_sync(aaedkbd->input); 92 input_sync(dev->input);
94
95 schedule_delayed_work(&aaedkbd->workq, msecs_to_jiffies(SCAN_INTERVAL));
96}
97
98static int aaedkbd_open(struct input_dev *indev)
99{
100 struct aaedkbd *aaedkbd = input_get_drvdata(indev);
101
102 schedule_delayed_work(&aaedkbd->workq, msecs_to_jiffies(SCAN_INTERVAL));
103
104 return 0;
105}
106
107static void aaedkbd_close(struct input_dev *indev)
108{
109 struct aaedkbd *aaedkbd = input_get_drvdata(indev);
110
111 cancel_delayed_work(&aaedkbd->workq);
112 flush_scheduled_work();
113} 93}
114 94
115static int __devinit aaedkbd_probe(struct platform_device *pdev) 95static int __devinit aaedkbd_probe(struct platform_device *pdev)
116{ 96{
117 struct aaedkbd *aaedkbd; 97 struct aaedkbd *aaedkbd;
98 struct input_polled_dev *poll_dev;
118 struct input_dev *input_dev; 99 struct input_dev *input_dev;
119 int i; 100 int i;
120 int error; 101 int error;
121 102
122 aaedkbd = kzalloc(sizeof(struct aaedkbd), GFP_KERNEL); 103 aaedkbd = kzalloc(sizeof(struct aaedkbd), GFP_KERNEL);
123 input_dev = input_allocate_device(); 104 poll_dev = input_allocate_polled_device();
124 if (!aaedkbd || !input_dev) { 105 if (!aaedkbd || !poll_dev) {
125 error = -ENOMEM; 106 error = -ENOMEM;
126 goto fail; 107 goto fail;
127 } 108 }
128 109
129 platform_set_drvdata(pdev, aaedkbd); 110 platform_set_drvdata(pdev, aaedkbd);
130 111
131 aaedkbd->input = input_dev; 112 aaedkbd->poll_dev = poll_dev;
132
133 /* Init keyboard rescan workqueue */
134 INIT_WORK(&aaedkbd->workq, aaedkbd_work, aaedkbd);
135
136 memcpy(aaedkbd->keycode, aaedkbd_keycode, sizeof(aaedkbd->keycode)); 113 memcpy(aaedkbd->keycode, aaedkbd_keycode, sizeof(aaedkbd->keycode));
137 114
115 poll_dev->private = aaedkbd;
116 poll_dev->poll = aaedkbd_poll;
117 poll_dev->poll_interval = SCAN_INTERVAL;
118
119 input_dev = poll_dev->input;
138 input_dev->name = "AAED-2000 Keyboard"; 120 input_dev->name = "AAED-2000 Keyboard";
139 input_dev->phys = "aaedkbd/input0"; 121 input_dev->phys = "aaedkbd/input0";
140 input_dev->id.bustype = BUS_HOST; 122 input_dev->id.bustype = BUS_HOST;
@@ -143,8 +125,6 @@ static int __devinit aaedkbd_probe(struct platform_device *pdev)
143 input_dev->id.version = 0x0100; 125 input_dev->id.version = 0x0100;
144 input_dev->dev.parent = &pdev->dev; 126 input_dev->dev.parent = &pdev->dev;
145 127
146 input_set_drvdata(input_dev, aaedkbd);
147
148 input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_REP); 128 input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_REP);
149 input_dev->keycode = aaedkbd->keycode; 129 input_dev->keycode = aaedkbd->keycode;
150 input_dev->keycodesize = sizeof(unsigned char); 130 input_dev->keycodesize = sizeof(unsigned char);
@@ -154,17 +134,14 @@ static int __devinit aaedkbd_probe(struct platform_device *pdev)
154 set_bit(aaedkbd->keycode[i], input_dev->keybit); 134 set_bit(aaedkbd->keycode[i], input_dev->keybit);
155 clear_bit(0, input_dev->keybit); 135 clear_bit(0, input_dev->keybit);
156 136
157 input_dev->open = aaedkbd_open; 137 error = input_register_polled_device(aaedkbd->poll_dev);
158 input_dev->close = aaedkbd_close;
159
160 error = input_register_device(aaedkbd->input);
161 if (error) 138 if (error)
162 goto fail; 139 goto fail;
163 140
164 return 0; 141 return 0;
165 142
166 fail: kfree(aaedkbd); 143 fail: kfree(aaedkbd);
167 input_free_device(input_dev); 144 input_free_polled_device(poll_dev);
168 return error; 145 return error;
169} 146}
170 147
@@ -172,7 +149,8 @@ static int __devexit aaedkbd_remove(struct platform_device *pdev)
172{ 149{
173 struct aaedkbd *aaedkbd = platform_get_drvdata(pdev); 150 struct aaedkbd *aaedkbd = platform_get_drvdata(pdev);
174 151
175 input_unregister_device(aaedkbd->input); 152 input_unregister_polled_device(aaedkbd->poll_dev);
153 input_free_polled_device(aaedkbd->poll_dev);
176 kfree(aaedkbd); 154 kfree(aaedkbd);
177 155
178 return 0; 156 return 0;
diff --git a/drivers/input/misc/Kconfig b/drivers/input/misc/Kconfig
index 1d0d3e765db6..6013ace94d98 100644
--- a/drivers/input/misc/Kconfig
+++ b/drivers/input/misc/Kconfig
@@ -40,6 +40,18 @@ config INPUT_M68K_BEEP
40 tristate "M68k Beeper support" 40 tristate "M68k Beeper support"
41 depends on M68K 41 depends on M68K
42 42
43config INPUT_IXP4XX_BEEPER
44 tristate "IXP4XX Beeper support"
45 depends on ARCH_IXP4XX
46 help
47 If you say yes here, you can connect a beeper to the
48 ixp4xx gpio pins. This is used by the LinkSys NSLU2.
49
50 If unsure, say Y.
51
52 To compile this driver as a module, choose M here: the
53 module will be called ixp4xx-beeper.
54
43config INPUT_COBALT_BTNS 55config INPUT_COBALT_BTNS
44 tristate "Cobalt button interface" 56 tristate "Cobalt button interface"
45 depends on MIPS_COBALT 57 depends on MIPS_COBALT
@@ -70,17 +82,79 @@ config INPUT_ATLAS_BTNS
70 To compile this driver as a module, choose M here: the module will 82 To compile this driver as a module, choose M here: the module will
71 be called atlas_btns. 83 be called atlas_btns.
72 84
73config INPUT_IXP4XX_BEEPER 85config INPUT_ATI_REMOTE
74 tristate "IXP4XX Beeper support" 86 tristate "ATI / X10 USB RF remote control"
75 depends on ARCH_IXP4XX 87 select USB
76 help 88 help
77 If you say yes here, you can connect a beeper to the 89 Say Y here if you want to use an ATI or X10 "Lola" USB remote control.
78 ixp4xx gpio pins. This is used by the LinkSys NSLU2. 90 These are RF remotes with USB receivers.
91 The ATI remote comes with many of ATI's All-In-Wonder video cards.
92 The X10 "Lola" remote is available at:
93 <http://www.x10.com/products/lola_sg1.htm>
94 This driver provides mouse pointer, left and right mouse buttons,
95 and maps all the other remote buttons to keypress events.
96
97 To compile this driver as a module, choose M here: the module will be
98 called ati_remote.
99
100config INPUT_ATI_REMOTE2
101 tristate "ATI / Philips USB RF remote control"
102 select USB
103 help
104 Say Y here if you want to use an ATI or Philips USB RF remote control.
105 These are RF remotes with USB receivers.
106 ATI Remote Wonder II comes with some ATI's All-In-Wonder video cards
107 and is also available as a separate product.
108 This driver provides mouse pointer, left and right mouse buttons,
109 and maps all the other remote buttons to keypress events.
110
111 To compile this driver as a module, choose M here: the module will be
112 called ati_remote2.
113
114config INPUT_KEYSPAN_REMOTE
115 tristate "Keyspan DMR USB remote control (EXPERIMENTAL)"
116 depends on EXPERIMENTAL
117 select USB
118 help
119 Say Y here if you want to use a Keyspan DMR USB remote control.
120 Currently only the UIA-11 type of receiver has been tested. The tag
121 on the receiver that connects to the USB port should have a P/N that
122 will tell you what type of DMR you have. The UIA-10 type is not
123 supported at this time. This driver maps all buttons to keypress
124 events.
79 125
80 If unsure, say Y. 126 To compile this driver as a module, choose M here: the module will
127 be called keyspan_remote.
128
129config INPUT_POWERMATE
130 tristate "Griffin PowerMate and Contour Jog support"
131 select USB
132 help
133 Say Y here if you want to use Griffin PowerMate or Contour Jog devices.
134 These are aluminum dials which can measure clockwise and anticlockwise
135 rotation. The dial also acts as a pushbutton. The base contains an LED
136 which can be instructed to pulse or to switch to a particular intensity.
137
138 You can download userspace tools from
139 <http://sowerbutts.com/powermate/>.
81 140
82 To compile this driver as a module, choose M here: the 141 To compile this driver as a module, choose M here: the
83 module will be called ixp4xx-beeper. 142 module will be called powermate.
143
144config INPUT_YEALINK
145 tristate "Yealink usb-p1k voip phone"
146 depends EXPERIMENTAL
147 select USB
148 help
149 Say Y here if you want to enable keyboard and LCD functions of the
150 Yealink usb-p1k usb phones. The audio part is enabled by the generic
151 usb sound driver, so you might want to enable that as well.
152
153 For information about how to use these additional functions, see
154 <file:Documentation/input/yealink.txt>.
155
156 To compile this driver as a module, choose M here: the module will be
157 called yealink.
84 158
85config INPUT_UINPUT 159config INPUT_UINPUT
86 tristate "User level driver support" 160 tristate "User level driver support"
diff --git a/drivers/input/misc/Makefile b/drivers/input/misc/Makefile
index 21e3cca0d33e..8b2f7799e25c 100644
--- a/drivers/input/misc/Makefile
+++ b/drivers/input/misc/Makefile
@@ -8,9 +8,14 @@ obj-$(CONFIG_INPUT_POLLDEV) += input-polldev.o
8obj-$(CONFIG_INPUT_SPARCSPKR) += sparcspkr.o 8obj-$(CONFIG_INPUT_SPARCSPKR) += sparcspkr.o
9obj-$(CONFIG_INPUT_PCSPKR) += pcspkr.o 9obj-$(CONFIG_INPUT_PCSPKR) += pcspkr.o
10obj-$(CONFIG_INPUT_M68K_BEEP) += m68kspkr.o 10obj-$(CONFIG_INPUT_M68K_BEEP) += m68kspkr.o
11obj-$(CONFIG_INPUT_UINPUT) += uinput.o 11obj-$(CONFIG_INPUT_IXP4XX_BEEPER) += ixp4xx-beeper.o
12obj-$(CONFIG_INPUT_COBALT_BTNS) += cobalt_btns.o 12obj-$(CONFIG_INPUT_COBALT_BTNS) += cobalt_btns.o
13obj-$(CONFIG_INPUT_WISTRON_BTNS) += wistron_btns.o 13obj-$(CONFIG_INPUT_WISTRON_BTNS) += wistron_btns.o
14obj-$(CONFIG_INPUT_ATLAS_BTNS) += atlas_btns.o 14obj-$(CONFIG_INPUT_ATLAS_BTNS) += atlas_btns.o
15obj-$(CONFIG_INPUT_ATI_REMOTE) += ati_remote.o
16obj-$(CONFIG_INPUT_ATI_REMOTE2) += ati_remote2.o
17obj-$(CONFIG_INPUT_KEYSPAN_REMOTE) += keyspan_remote.o
18obj-$(CONFIG_INPUT_POWERMATE) += powermate.o
19obj-$(CONFIG_INPUT_YEALINK) += yealink.o
15obj-$(CONFIG_HP_SDC_RTC) += hp_sdc_rtc.o 20obj-$(CONFIG_HP_SDC_RTC) += hp_sdc_rtc.o
16obj-$(CONFIG_INPUT_IXP4XX_BEEPER) += ixp4xx-beeper.o 21obj-$(CONFIG_INPUT_UINPUT) += uinput.o
diff --git a/drivers/usb/input/ati_remote.c b/drivers/input/misc/ati_remote.c
index 471aab206443..471aab206443 100644
--- a/drivers/usb/input/ati_remote.c
+++ b/drivers/input/misc/ati_remote.c
diff --git a/drivers/usb/input/ati_remote2.c b/drivers/input/misc/ati_remote2.c
index a9032aa3465f..1031543e5c3f 100644
--- a/drivers/usb/input/ati_remote2.c
+++ b/drivers/input/misc/ati_remote2.c
@@ -405,9 +405,7 @@ static void ati_remote2_urb_cleanup(struct ati_remote2 *ar2)
405 405
406 for (i = 0; i < 2; i++) { 406 for (i = 0; i < 2; i++) {
407 usb_free_urb(ar2->urb[i]); 407 usb_free_urb(ar2->urb[i]);
408 408 usb_buffer_free(ar2->udev, 4, ar2->buf[i], ar2->buf_dma[i]);
409 if (ar2->buf[i])
410 usb_buffer_free(ar2->udev, 4, ar2->buf[i], ar2->buf_dma[i]);
411 } 409 }
412} 410}
413 411
diff --git a/drivers/usb/input/keyspan_remote.c b/drivers/input/misc/keyspan_remote.c
index 1bffc9fa98c2..1bffc9fa98c2 100644
--- a/drivers/usb/input/keyspan_remote.c
+++ b/drivers/input/misc/keyspan_remote.c
diff --git a/drivers/usb/input/map_to_7segment.h b/drivers/input/misc/map_to_7segment.h
index a424094d9fe2..a424094d9fe2 100644
--- a/drivers/usb/input/map_to_7segment.h
+++ b/drivers/input/misc/map_to_7segment.h
diff --git a/drivers/usb/input/powermate.c b/drivers/input/misc/powermate.c
index 4f93a760faee..448a470d28f2 100644
--- a/drivers/usb/input/powermate.c
+++ b/drivers/input/misc/powermate.c
@@ -291,12 +291,10 @@ static int powermate_alloc_buffers(struct usb_device *udev, struct powermate_dev
291 291
292static void powermate_free_buffers(struct usb_device *udev, struct powermate_device *pm) 292static void powermate_free_buffers(struct usb_device *udev, struct powermate_device *pm)
293{ 293{
294 if (pm->data) 294 usb_buffer_free(udev, POWERMATE_PAYLOAD_SIZE_MAX,
295 usb_buffer_free(udev, POWERMATE_PAYLOAD_SIZE_MAX, 295 pm->data, pm->data_dma);
296 pm->data, pm->data_dma); 296 usb_buffer_free(udev, sizeof(*(pm->configcr)),
297 if (pm->configcr) 297 pm->configcr, pm->configcr_dma);
298 usb_buffer_free(udev, sizeof(*(pm->configcr)),
299 pm->configcr, pm->configcr_dma);
300} 298}
301 299
302/* Called whenever a USB device matching one in our supported devices table is connected */ 300/* Called whenever a USB device matching one in our supported devices table is connected */
diff --git a/drivers/input/misc/uinput.c b/drivers/input/misc/uinput.c
index 031467eadd31..a56ad4ba8fe2 100644
--- a/drivers/input/misc/uinput.c
+++ b/drivers/input/misc/uinput.c
@@ -33,7 +33,6 @@
33#include <linux/slab.h> 33#include <linux/slab.h>
34#include <linux/module.h> 34#include <linux/module.h>
35#include <linux/init.h> 35#include <linux/init.h>
36#include <linux/input.h>
37#include <linux/smp_lock.h> 36#include <linux/smp_lock.h>
38#include <linux/fs.h> 37#include <linux/fs.h>
39#include <linux/miscdevice.h> 38#include <linux/miscdevice.h>
diff --git a/drivers/usb/input/yealink.c b/drivers/input/misc/yealink.c
index c54f1a5dcb4a..ab15880fd566 100644
--- a/drivers/usb/input/yealink.c
+++ b/drivers/input/misc/yealink.c
@@ -29,7 +29,7 @@
29 * This driver is based on: 29 * This driver is based on:
30 * - the usbb2k-api http://savannah.nongnu.org/projects/usbb2k-api/ 30 * - the usbb2k-api http://savannah.nongnu.org/projects/usbb2k-api/
31 * - information from http://memeteau.free.fr/usbb2k 31 * - information from http://memeteau.free.fr/usbb2k
32 * - the xpad-driver drivers/usb/input/xpad.c 32 * - the xpad-driver drivers/input/joystick/xpad.c
33 * 33 *
34 * Thanks to: 34 * Thanks to:
35 * - Olivier Vandorpe, for providing the usbb2k-api. 35 * - Olivier Vandorpe, for providing the usbb2k-api.
@@ -818,18 +818,17 @@ static int usb_cleanup(struct yealink_dev *yld, int err)
818 else 818 else
819 input_unregister_device(yld->idev); 819 input_unregister_device(yld->idev);
820 } 820 }
821 if (yld->ctl_req) 821
822 usb_buffer_free(yld->udev, sizeof(*(yld->ctl_req)), 822 usb_free_urb(yld->urb_irq);
823 yld->ctl_req, yld->ctl_req_dma); 823 usb_free_urb(yld->urb_ctl);
824 if (yld->ctl_data) 824
825 usb_buffer_free(yld->udev, USB_PKT_LEN, 825 usb_buffer_free(yld->udev, sizeof(*(yld->ctl_req)),
826 yld->ctl_data, yld->ctl_dma); 826 yld->ctl_req, yld->ctl_req_dma);
827 if (yld->irq_data) 827 usb_buffer_free(yld->udev, USB_PKT_LEN,
828 usb_buffer_free(yld->udev, USB_PKT_LEN, 828 yld->ctl_data, yld->ctl_dma);
829 yld->irq_data, yld->irq_dma); 829 usb_buffer_free(yld->udev, USB_PKT_LEN,
830 830 yld->irq_data, yld->irq_dma);
831 usb_free_urb(yld->urb_irq); /* parameter validation in core/urb */ 831
832 usb_free_urb(yld->urb_ctl); /* parameter validation in core/urb */
833 kfree(yld); 832 kfree(yld);
834 return err; 833 return err;
835} 834}
diff --git a/drivers/usb/input/yealink.h b/drivers/input/misc/yealink.h
index 48af0be9cbdf..48af0be9cbdf 100644
--- a/drivers/usb/input/yealink.h
+++ b/drivers/input/misc/yealink.h
diff --git a/drivers/input/mouse/Kconfig b/drivers/input/mouse/Kconfig
index 81dd8c7211a7..2ccc114b3ff6 100644
--- a/drivers/input/mouse/Kconfig
+++ b/drivers/input/mouse/Kconfig
@@ -2,7 +2,7 @@
2# Mouse driver configuration 2# Mouse driver configuration
3# 3#
4menuconfig INPUT_MOUSE 4menuconfig INPUT_MOUSE
5 bool "Mouse" 5 bool "Mice"
6 default y 6 default y
7 help 7 help
8 Say Y here, and a list of supported mice will be displayed. 8 Say Y here, and a list of supported mice will be displayed.
@@ -19,7 +19,7 @@ config MOUSE_PS2
19 select SERIO_LIBPS2 19 select SERIO_LIBPS2
20 select SERIO_I8042 if X86_PC 20 select SERIO_I8042 if X86_PC
21 select SERIO_GSCPS2 if GSC 21 select SERIO_GSCPS2 if GSC
22 ---help--- 22 help
23 Say Y here if you have a PS/2 mouse connected to your system. This 23 Say Y here if you have a PS/2 mouse connected to your system. This
24 includes the standard 2 or 3-button PS/2 mouse, as well as PS/2 24 includes the standard 2 or 3-button PS/2 mouse, as well as PS/2
25 mice with wheels and extra buttons, Microsoft, Logitech or Genius 25 mice with wheels and extra buttons, Microsoft, Logitech or Genius
@@ -41,7 +41,7 @@ config MOUSE_PS2_ALPS
41 bool "ALPS PS/2 mouse protocol extension" if EMBEDDED 41 bool "ALPS PS/2 mouse protocol extension" if EMBEDDED
42 default y 42 default y
43 depends on MOUSE_PS2 43 depends on MOUSE_PS2
44 ---help--- 44 help
45 Say Y here if you have an ALPS PS/2 touchpad connected to 45 Say Y here if you have an ALPS PS/2 touchpad connected to
46 your system. 46 your system.
47 47
@@ -51,7 +51,7 @@ config MOUSE_PS2_LOGIPS2PP
51 bool "Logictech PS/2++ mouse protocol extension" if EMBEDDED 51 bool "Logictech PS/2++ mouse protocol extension" if EMBEDDED
52 default y 52 default y
53 depends on MOUSE_PS2 53 depends on MOUSE_PS2
54 ---help--- 54 help
55 Say Y here if you have a Logictech PS/2++ mouse connected to 55 Say Y here if you have a Logictech PS/2++ mouse connected to
56 your system. 56 your system.
57 57
@@ -61,7 +61,7 @@ config MOUSE_PS2_SYNAPTICS
61 bool "Synaptics PS/2 mouse protocol extension" if EMBEDDED 61 bool "Synaptics PS/2 mouse protocol extension" if EMBEDDED
62 default y 62 default y
63 depends on MOUSE_PS2 63 depends on MOUSE_PS2
64 ---help--- 64 help
65 Say Y here if you have a Synaptics PS/2 TouchPad connected to 65 Say Y here if you have a Synaptics PS/2 TouchPad connected to
66 your system. 66 your system.
67 67
@@ -71,7 +71,7 @@ config MOUSE_PS2_LIFEBOOK
71 bool "Fujitsu Lifebook PS/2 mouse protocol extension" if EMBEDDED 71 bool "Fujitsu Lifebook PS/2 mouse protocol extension" if EMBEDDED
72 default y 72 default y
73 depends on MOUSE_PS2 73 depends on MOUSE_PS2
74 ---help--- 74 help
75 Say Y here if you have a Fujitsu B-series Lifebook PS/2 75 Say Y here if you have a Fujitsu B-series Lifebook PS/2
76 TouchScreen connected to your system. 76 TouchScreen connected to your system.
77 77
@@ -81,7 +81,7 @@ config MOUSE_PS2_TRACKPOINT
81 bool "IBM Trackpoint PS/2 mouse protocol extension" if EMBEDDED 81 bool "IBM Trackpoint PS/2 mouse protocol extension" if EMBEDDED
82 default y 82 default y
83 depends on MOUSE_PS2 83 depends on MOUSE_PS2
84 ---help--- 84 help
85 Say Y here if you have an IBM Trackpoint PS/2 mouse connected 85 Say Y here if you have an IBM Trackpoint PS/2 mouse connected
86 to your system. 86 to your system.
87 87
@@ -90,7 +90,7 @@ config MOUSE_PS2_TRACKPOINT
90config MOUSE_PS2_TOUCHKIT 90config MOUSE_PS2_TOUCHKIT
91 bool "eGalax TouchKit PS/2 protocol extension" 91 bool "eGalax TouchKit PS/2 protocol extension"
92 depends on MOUSE_PS2 92 depends on MOUSE_PS2
93 ---help--- 93 help
94 Say Y here if you have an eGalax TouchKit PS/2 touchscreen 94 Say Y here if you have an eGalax TouchKit PS/2 touchscreen
95 connected to your system. 95 connected to your system.
96 96
@@ -99,7 +99,7 @@ config MOUSE_PS2_TOUCHKIT
99config MOUSE_SERIAL 99config MOUSE_SERIAL
100 tristate "Serial mouse" 100 tristate "Serial mouse"
101 select SERIO 101 select SERIO
102 ---help--- 102 help
103 Say Y here if you have a serial (RS-232, COM port) mouse connected 103 Say Y here if you have a serial (RS-232, COM port) mouse connected
104 to your system. This includes Sun, MouseSystems, Microsoft, 104 to your system. This includes Sun, MouseSystems, Microsoft,
105 Logitech and all other compatible serial mice. 105 Logitech and all other compatible serial mice.
@@ -109,6 +109,26 @@ config MOUSE_SERIAL
109 To compile this driver as a module, choose M here: the 109 To compile this driver as a module, choose M here: the
110 module will be called sermouse. 110 module will be called sermouse.
111 111
112config MOUSE_APPLETOUCH
113 tristate "Apple USB Touchpad support"
114 select USB
115 help
116 Say Y here if you want to use an Apple USB Touchpad.
117
118 These are the touchpads that can be found on post-February 2005
119 Apple Powerbooks (prior models have a Synaptics touchpad connected
120 to the ADB bus).
121
122 This driver provides a basic mouse driver but can be interfaced
123 with the synaptics X11 driver to provide acceleration and
124 scrolling in X11.
125
126 For further information, see
127 <file:Documentation/input/appletouch.txt>.
128
129 To compile this driver as a module, choose M here: the
130 module will be called appletouch.
131
112config MOUSE_INPORT 132config MOUSE_INPORT
113 tristate "InPort/MS/ATIXL busmouse" 133 tristate "InPort/MS/ATIXL busmouse"
114 depends on ISA 134 depends on ISA
diff --git a/drivers/input/mouse/Makefile b/drivers/input/mouse/Makefile
index 6a8f622927f2..aa4ba878533f 100644
--- a/drivers/input/mouse/Makefile
+++ b/drivers/input/mouse/Makefile
@@ -5,6 +5,7 @@
5# Each configuration option enables a list of files. 5# Each configuration option enables a list of files.
6 6
7obj-$(CONFIG_MOUSE_AMIGA) += amimouse.o 7obj-$(CONFIG_MOUSE_AMIGA) += amimouse.o
8obj-$(CONFIG_MOUSE_APPLETOUCH) += appletouch.o
8obj-$(CONFIG_MOUSE_ATARI) += atarimouse.o 9obj-$(CONFIG_MOUSE_ATARI) += atarimouse.o
9obj-$(CONFIG_MOUSE_RISCPC) += rpcmouse.o 10obj-$(CONFIG_MOUSE_RISCPC) += rpcmouse.o
10obj-$(CONFIG_MOUSE_INPORT) += inport.o 11obj-$(CONFIG_MOUSE_INPORT) += inport.o
diff --git a/drivers/usb/input/appletouch.c b/drivers/input/mouse/appletouch.c
index e3215267db11..e3215267db11 100644
--- a/drivers/usb/input/appletouch.c
+++ b/drivers/input/mouse/appletouch.c
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
index c77788bf932d..666ad3a53fdb 100644
--- a/drivers/input/mouse/synaptics.c
+++ b/drivers/input/mouse/synaptics.c
@@ -185,7 +185,7 @@ static int synaptics_query_hardware(struct psmouse *psmouse)
185 int retries = 0; 185 int retries = 0;
186 186
187 while ((retries++ < 3) && psmouse_reset(psmouse)) 187 while ((retries++ < 3) && psmouse_reset(psmouse))
188 printk(KERN_ERR "synaptics reset failed\n"); 188 /* empty */;
189 189
190 if (synaptics_identify(psmouse)) 190 if (synaptics_identify(psmouse))
191 return -1; 191 return -1;
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
index 7c17377a65b9..3888dc307e0c 100644
--- a/drivers/input/serio/i8042.c
+++ b/drivers/input/serio/i8042.c
@@ -526,6 +526,33 @@ static irqreturn_t __devinit i8042_aux_test_irq(int irq, void *dev_id)
526 return IRQ_HANDLED; 526 return IRQ_HANDLED;
527} 527}
528 528
529/*
530 * i8042_toggle_aux - enables or disables AUX port on i8042 via command and
531 * verifies success by readinng CTR. Used when testing for presence of AUX
532 * port.
533 */
534static int __devinit i8042_toggle_aux(int on)
535{
536 unsigned char param;
537 int i;
538
539 if (i8042_command(&param,
540 on ? I8042_CMD_AUX_ENABLE : I8042_CMD_AUX_DISABLE))
541 return -1;
542
543 /* some chips need some time to set the I8042_CTR_AUXDIS bit */
544 for (i = 0; i < 100; i++) {
545 udelay(50);
546
547 if (i8042_command(&param, I8042_CMD_CTL_RCTR))
548 return -1;
549
550 if (!(param & I8042_CTR_AUXDIS) == on)
551 return 0;
552 }
553
554 return -1;
555}
529 556
530/* 557/*
531 * i8042_check_aux() applies as much paranoia as it can at detecting 558 * i8042_check_aux() applies as much paranoia as it can at detecting
@@ -580,16 +607,12 @@ static int __devinit i8042_check_aux(void)
580 * Bit assignment test - filters out PS/2 i8042's in AT mode 607 * Bit assignment test - filters out PS/2 i8042's in AT mode
581 */ 608 */
582 609
583 if (i8042_command(&param, I8042_CMD_AUX_DISABLE)) 610 if (i8042_toggle_aux(0)) {
584 return -1;
585 if (i8042_command(&param, I8042_CMD_CTL_RCTR) || (~param & I8042_CTR_AUXDIS)) {
586 printk(KERN_WARNING "Failed to disable AUX port, but continuing anyway... Is this a SiS?\n"); 611 printk(KERN_WARNING "Failed to disable AUX port, but continuing anyway... Is this a SiS?\n");
587 printk(KERN_WARNING "If AUX port is really absent please use the 'i8042.noaux' option.\n"); 612 printk(KERN_WARNING "If AUX port is really absent please use the 'i8042.noaux' option.\n");
588 } 613 }
589 614
590 if (i8042_command(&param, I8042_CMD_AUX_ENABLE)) 615 if (i8042_toggle_aux(1))
591 return -1;
592 if (i8042_command(&param, I8042_CMD_CTL_RCTR) || (param & I8042_CTR_AUXDIS))
593 return -1; 616 return -1;
594 617
595/* 618/*
diff --git a/drivers/input/tablet/Kconfig b/drivers/input/tablet/Kconfig
new file mode 100644
index 000000000000..12dfb0eb3262
--- /dev/null
+++ b/drivers/input/tablet/Kconfig
@@ -0,0 +1,74 @@
1#
2# Tablet driver configuration
3#
4menuconfig INPUT_TABLET
5 bool "Tablets"
6 help
7 Say Y here, and a list of supported tablets will be displayed.
8 This option doesn't affect the kernel.
9
10 If unsure, say Y.
11
12if INPUT_TABLET
13
14config TABLET_USB_ACECAD
15 tristate "Acecad Flair tablet support (USB)"
16 select USB
17 help
18 Say Y here if you want to use the USB version of the Acecad Flair
19 tablet. Make sure to say Y to "Mouse support"
20 (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
21 (CONFIG_INPUT_EVDEV) as well.
22
23 To compile this driver as a module, choose M here: the
24 module will be called acecad.
25
26config TABLET_USB_AIPTEK
27 tristate "Aiptek 6000U/8000U tablet support (USB)"
28 select USB
29 help
30 Say Y here if you want to use the USB version of the Aiptek 6000U
31 or Aiptek 8000U tablet. Make sure to say Y to "Mouse support"
32 (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
33 (CONFIG_INPUT_EVDEV) as well.
34
35 To compile this driver as a module, choose M here: the
36 module will be called aiptek.
37
38config TABLET_USB_GTCO
39 tristate "GTCO CalComp/InterWrite USB Support"
40 depends on USB && INPUT
41 help
42 Say Y here if you want to use the USB version of the GTCO
43 CalComp/InterWrite Tablet. Make sure to say Y to "Mouse support"
44 (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
45 (CONFIG_INPUT_EVDEV) as well.
46
47 To compile this driver as a module, choose M here: the
48 module will be called gtco.
49
50config TABLET_USB_KBTAB
51 tristate "KB Gear JamStudio tablet support (USB)"
52 select USB
53 help
54 Say Y here if you want to use the USB version of the KB Gear
55 JamStudio tablet. Make sure to say Y to "Mouse support"
56 (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
57 (CONFIG_INPUT_EVDEV) as well.
58
59 To compile this driver as a module, choose M here: the
60 module will be called kbtab.
61
62config TABLET_USB_WACOM
63 tristate "Wacom Intuos/Graphire tablet support (USB)"
64 select USB
65 help
66 Say Y here if you want to use the USB version of the Wacom Intuos
67 or Graphire tablet. Make sure to say Y to "Mouse support"
68 (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
69 (CONFIG_INPUT_EVDEV) as well.
70
71 To compile this driver as a module, choose M here: the
72 module will be called wacom.
73
74endif
diff --git a/drivers/input/tablet/Makefile b/drivers/input/tablet/Makefile
new file mode 100644
index 000000000000..ce8b9a9cfa40
--- /dev/null
+++ b/drivers/input/tablet/Makefile
@@ -0,0 +1,12 @@
1#
2# Makefile for the tablet drivers
3#
4
5# Multipart objects.
6wacom-objs := wacom_wac.o wacom_sys.o
7
8obj-$(CONFIG_TABLET_USB_ACECAD) += acecad.o
9obj-$(CONFIG_TABLET_USB_AIPTEK) += aiptek.o
10obj-$(CONFIG_TABLET_USB_GTCO) += gtco.o
11obj-$(CONFIG_TABLET_USB_KBTAB) += kbtab.o
12obj-$(CONFIG_TABLET_USB_WACOM) += wacom.o
diff --git a/drivers/usb/input/acecad.c b/drivers/input/tablet/acecad.c
index be8e9243c062..dd2310458c46 100644
--- a/drivers/usb/input/acecad.c
+++ b/drivers/input/tablet/acecad.c
@@ -54,7 +54,7 @@ struct usb_acecad {
54 struct input_dev *input; 54 struct input_dev *input;
55 struct urb *irq; 55 struct urb *irq;
56 56
57 signed char *data; 57 unsigned char *data;
58 dma_addr_t data_dma; 58 dma_addr_t data_dma;
59}; 59};
60 60
diff --git a/drivers/usb/input/aiptek.c b/drivers/input/tablet/aiptek.c
index cc0a498763d8..cc0a498763d8 100644
--- a/drivers/usb/input/aiptek.c
+++ b/drivers/input/tablet/aiptek.c
diff --git a/drivers/usb/input/gtco.c b/drivers/input/tablet/gtco.c
index b2ca10f2fe0e..b2ca10f2fe0e 100644
--- a/drivers/usb/input/gtco.c
+++ b/drivers/input/tablet/gtco.c
diff --git a/drivers/usb/input/kbtab.c b/drivers/input/tablet/kbtab.c
index c4781b9d1297..91e6d00d4a43 100644
--- a/drivers/usb/input/kbtab.c
+++ b/drivers/input/tablet/kbtab.c
@@ -29,7 +29,7 @@ module_param(kb_pressure_click, int, 0);
29MODULE_PARM_DESC(kb_pressure_click, "pressure threshold for clicks"); 29MODULE_PARM_DESC(kb_pressure_click, "pressure threshold for clicks");
30 30
31struct kbtab { 31struct kbtab {
32 signed char *data; 32 unsigned char *data;
33 dma_addr_t data_dma; 33 dma_addr_t data_dma;
34 struct input_dev *dev; 34 struct input_dev *dev;
35 struct usb_device *usbdev; 35 struct usb_device *usbdev;
diff --git a/drivers/usb/input/wacom.h b/drivers/input/tablet/wacom.h
index d85abfc5ab58..ef01a807ec0f 100644
--- a/drivers/usb/input/wacom.h
+++ b/drivers/input/tablet/wacom.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * drivers/usb/input/wacom.h 2 * drivers/input/tablet/wacom.h
3 * 3 *
4 * USB Wacom Graphire and Wacom Intuos tablet support 4 * USB Wacom Graphire and Wacom Intuos tablet support
5 * 5 *
diff --git a/drivers/usb/input/wacom_sys.c b/drivers/input/tablet/wacom_sys.c
index 1fe48208c2f4..83bddef66067 100644
--- a/drivers/usb/input/wacom_sys.c
+++ b/drivers/input/tablet/wacom_sys.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * drivers/usb/input/wacom_sys.c 2 * drivers/input/tablet/wacom_sys.c
3 * 3 *
4 * USB Wacom Graphire and Wacom Intuos tablet support - system specific code 4 * USB Wacom Graphire and Wacom Intuos tablet support - system specific code
5 */ 5 */
diff --git a/drivers/usb/input/wacom_wac.c b/drivers/input/tablet/wacom_wac.c
index 4f3e9bc7177d..7661f03a2db2 100644
--- a/drivers/usb/input/wacom_wac.c
+++ b/drivers/input/tablet/wacom_wac.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * drivers/usb/input/wacom_wac.c 2 * drivers/input/tablet/wacom_wac.c
3 * 3 *
4 * USB Wacom Graphire and Wacom Intuos tablet support - Wacom specific code 4 * USB Wacom Graphire and Wacom Intuos tablet support - Wacom specific code
5 * 5 *
diff --git a/drivers/usb/input/wacom_wac.h b/drivers/input/tablet/wacom_wac.h
index a23022287248..a5e12e8756de 100644
--- a/drivers/usb/input/wacom_wac.h
+++ b/drivers/input/tablet/wacom_wac.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * drivers/usb/input/wacom_wac.h 2 * drivers/input/tablet/wacom_wac.h
3 * 3 *
4 * This program is free software; you can redistribute it and/or modify 4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by 5 * it under the terms of the GNU General Public License as published by
@@ -39,7 +39,7 @@ struct wacom_features {
39}; 39};
40 40
41struct wacom_wac { 41struct wacom_wac {
42 signed char *data; 42 unsigned char *data;
43 int tool[2]; 43 int tool[2];
44 int id[2]; 44 int id[2];
45 __u32 serial[2]; 45 __u32 serial[2];
diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
index 971618059a6f..5e640aeb03cd 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -1,5 +1,5 @@
1# 1#
2# Mouse driver configuration 2# Touchscreen driver configuration
3# 3#
4menuconfig INPUT_TOUCHSCREEN 4menuconfig INPUT_TOUCHSCREEN
5 bool "Touchscreens" 5 bool "Touchscreens"
@@ -44,9 +44,9 @@ config TOUCHSCREEN_BITSY
44config TOUCHSCREEN_CORGI 44config TOUCHSCREEN_CORGI
45 tristate "SharpSL (Corgi and Spitz series) touchscreen driver" 45 tristate "SharpSL (Corgi and Spitz series) touchscreen driver"
46 depends on PXA_SHARPSL 46 depends on PXA_SHARPSL
47 default y 47 default y
48 help 48 help
49 Say Y here to enable the driver for the touchscreen on the 49 Say Y here to enable the driver for the touchscreen on the
50 Sharp SL-C7xx and SL-Cxx00 series of PDAs. 50 Sharp SL-C7xx and SL-Cxx00 series of PDAs.
51 51
52 If unsure, say N. 52 If unsure, say N.
@@ -164,4 +164,58 @@ config TOUCHSCREEN_UCB1400
164 To compile this driver as a module, choose M here: the 164 To compile this driver as a module, choose M here: the
165 module will be called ucb1400_ts. 165 module will be called ucb1400_ts.
166 166
167config TOUCHSCREEN_USB_COMPOSITE
168 tristate "USB Touchscreen Driver"
169 select USB
170 help
171 USB Touchscreen driver for:
172 - eGalax Touchkit USB (also includes eTurboTouch CT-410/510/700)
173 - PanJit TouchSet USB
174 - 3M MicroTouch USB (EX II series)
175 - ITM
176 - some other eTurboTouch
177 - Gunze AHL61
178 - DMC TSC-10/25
179
180 Have a look at <http://linux.chapter7.ch/touchkit/> for
181 a usage description and the required user-space stuff.
182
183 To compile this driver as a module, choose M here: the
184 module will be called usbtouchscreen.
185
186config TOUCHSCREEN_USB_EGALAX
187 default y
188 bool "eGalax, eTurboTouch CT-410/510/700 device support" if EMBEDDED
189 depends on TOUCHSCREEN_USB_COMPOSITE
190
191config TOUCHSCREEN_USB_PANJIT
192 default y
193 bool "PanJit device support" if EMBEDDED
194 depends on TOUCHSCREEN_USB_COMPOSITE
195
196config TOUCHSCREEN_USB_3M
197 default y
198 bool "3M/Microtouch EX II series device support" if EMBEDDED
199 depends on TOUCHSCREEN_USB_COMPOSITE
200
201config TOUCHSCREEN_USB_ITM
202 default y
203 bool "ITM device support" if EMBEDDED
204 depends on TOUCHSCREEN_USB_COMPOSITE
205
206config TOUCHSCREEN_USB_ETURBO
207 default y
208 bool "eTurboTouch (non-eGalax compatible) device support" if EMBEDDED
209 depends on TOUCHSCREEN_USB_COMPOSITE
210
211config TOUCHSCREEN_USB_GUNZE
212 default y
213 bool "Gunze AHL61 device support" if EMBEDDED
214 depends on TOUCHSCREEN_USB_COMPOSITE
215
216config TOUCHSCREEN_USB_DMC_TSC10
217 default y
218 bool "DMC TSC-10/25 device support" if EMBEDDED
219 depends on TOUCHSCREEN_USB_COMPOSITE
220
167endif 221endif
diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile
index 30e6e2217a15..2f86d6ad06d3 100644
--- a/drivers/input/touchscreen/Makefile
+++ b/drivers/input/touchscreen/Makefile
@@ -1,17 +1,18 @@
1# 1#
2# Makefile for the mouse drivers. 2# Makefile for the touchscreen drivers.
3# 3#
4 4
5# Each configuration option enables a list of files. 5# Each configuration option enables a list of files.
6 6
7obj-$(CONFIG_TOUCHSCREEN_ADS7846) += ads7846.o 7obj-$(CONFIG_TOUCHSCREEN_ADS7846) += ads7846.o
8obj-$(CONFIG_TOUCHSCREEN_BITSY) += h3600_ts_input.o 8obj-$(CONFIG_TOUCHSCREEN_BITSY) += h3600_ts_input.o
9obj-$(CONFIG_TOUCHSCREEN_CORGI) += corgi_ts.o 9obj-$(CONFIG_TOUCHSCREEN_CORGI) += corgi_ts.o
10obj-$(CONFIG_TOUCHSCREEN_GUNZE) += gunze.o 10obj-$(CONFIG_TOUCHSCREEN_GUNZE) += gunze.o
11obj-$(CONFIG_TOUCHSCREEN_ELO) += elo.o 11obj-$(CONFIG_TOUCHSCREEN_ELO) += elo.o
12obj-$(CONFIG_TOUCHSCREEN_MTOUCH) += mtouch.o 12obj-$(CONFIG_TOUCHSCREEN_MTOUCH) += mtouch.o
13obj-$(CONFIG_TOUCHSCREEN_MK712) += mk712.o 13obj-$(CONFIG_TOUCHSCREEN_MK712) += mk712.o
14obj-$(CONFIG_TOUCHSCREEN_HP600) += hp680_ts_input.o 14obj-$(CONFIG_TOUCHSCREEN_HP600) += hp680_ts_input.o
15obj-$(CONFIG_TOUCHSCREEN_USB_COMPOSITE) += usbtouchscreen.o
15obj-$(CONFIG_TOUCHSCREEN_PENMOUNT) += penmount.o 16obj-$(CONFIG_TOUCHSCREEN_PENMOUNT) += penmount.o
16obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT) += touchright.o 17obj-$(CONFIG_TOUCHSCREEN_TOUCHRIGHT) += touchright.o
17obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN) += touchwin.o 18obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN) += touchwin.o
diff --git a/drivers/usb/input/usbtouchscreen.c b/drivers/input/touchscreen/usbtouchscreen.c
index e0829413336b..8e18e6c64777 100644
--- a/drivers/usb/input/usbtouchscreen.c
+++ b/drivers/input/touchscreen/usbtouchscreen.c
@@ -668,9 +668,8 @@ static void usbtouch_close(struct input_dev *input)
668static void usbtouch_free_buffers(struct usb_device *udev, 668static void usbtouch_free_buffers(struct usb_device *udev,
669 struct usbtouch_usb *usbtouch) 669 struct usbtouch_usb *usbtouch)
670{ 670{
671 if (usbtouch->data) 671 usb_buffer_free(udev, usbtouch->type->rept_size,
672 usb_buffer_free(udev, usbtouch->type->rept_size, 672 usbtouch->data, usbtouch->data_dma);
673 usbtouch->data, usbtouch->data_dma);
674 kfree(usbtouch->buffer); 673 kfree(usbtouch->buffer);
675} 674}
676 675
diff --git a/drivers/usb/Kconfig b/drivers/usb/Kconfig
index 9980a4ddfed9..b847bbc8b0e1 100644
--- a/drivers/usb/Kconfig
+++ b/drivers/usb/Kconfig
@@ -85,8 +85,6 @@ source "drivers/usb/class/Kconfig"
85 85
86source "drivers/usb/storage/Kconfig" 86source "drivers/usb/storage/Kconfig"
87 87
88source "drivers/usb/input/Kconfig"
89
90source "drivers/usb/image/Kconfig" 88source "drivers/usb/image/Kconfig"
91 89
92source "drivers/usb/net/Kconfig" 90source "drivers/usb/net/Kconfig"
diff --git a/drivers/usb/Makefile b/drivers/usb/Makefile
index f5de58a63f2b..0ef090b1b37c 100644
--- a/drivers/usb/Makefile
+++ b/drivers/usb/Makefile
@@ -23,15 +23,6 @@ obj-$(CONFIG_USB_PRINTER) += class/
23obj-$(CONFIG_USB_STORAGE) += storage/ 23obj-$(CONFIG_USB_STORAGE) += storage/
24obj-$(CONFIG_USB) += storage/ 24obj-$(CONFIG_USB) += storage/
25 25
26obj-$(CONFIG_USB_ACECAD) += input/
27obj-$(CONFIG_USB_AIPTEK) += input/
28obj-$(CONFIG_USB_ATI_REMOTE) += input/
29obj-$(CONFIG_USB_KBTAB) += input/
30obj-$(CONFIG_USB_MTOUCH) += input/
31obj-$(CONFIG_USB_POWERMATE) += input/
32obj-$(CONFIG_USB_WACOM) += input/
33obj-$(CONFIG_USB_XPAD) += input/
34
35obj-$(CONFIG_USB_CATC) += net/ 26obj-$(CONFIG_USB_CATC) += net/
36obj-$(CONFIG_USB_KAWETH) += net/ 27obj-$(CONFIG_USB_KAWETH) += net/
37obj-$(CONFIG_USB_PEGASUS) += net/ 28obj-$(CONFIG_USB_PEGASUS) += net/
diff --git a/drivers/usb/input/Kconfig b/drivers/usb/input/Kconfig
deleted file mode 100644
index a792e42f58af..000000000000
--- a/drivers/usb/input/Kconfig
+++ /dev/null
@@ -1,225 +0,0 @@
1#
2# USB Input driver configuration
3#
4comment "USB Input Devices"
5 depends on USB
6
7config USB_AIPTEK
8 tristate "Aiptek 6000U/8000U tablet support"
9 depends on USB && INPUT
10 help
11 Say Y here if you want to use the USB version of the Aiptek 6000U
12 or Aiptek 8000U tablet. Make sure to say Y to "Mouse support"
13 (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
14 (CONFIG_INPUT_EVDEV) as well.
15
16 To compile this driver as a module, choose M here: the
17 module will be called aiptek.
18
19config USB_WACOM
20 tristate "Wacom Intuos/Graphire tablet support"
21 depends on USB && INPUT
22 help
23 Say Y here if you want to use the USB version of the Wacom Intuos
24 or Graphire tablet. Make sure to say Y to "Mouse support"
25 (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
26 (CONFIG_INPUT_EVDEV) as well.
27
28 To compile this driver as a module, choose M here: the
29 module will be called wacom.
30
31config USB_ACECAD
32 tristate "Acecad Flair tablet support"
33 depends on USB && INPUT
34 help
35 Say Y here if you want to use the USB version of the Acecad Flair
36 tablet. Make sure to say Y to "Mouse support"
37 (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
38 (CONFIG_INPUT_EVDEV) as well.
39
40 To compile this driver as a module, choose M here: the
41 module will be called acecad.
42
43config USB_KBTAB
44 tristate "KB Gear JamStudio tablet support"
45 depends on USB && INPUT
46 help
47 Say Y here if you want to use the USB version of the KB Gear
48 JamStudio tablet. Make sure to say Y to "Mouse support"
49 (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
50 (CONFIG_INPUT_EVDEV) as well.
51
52 To compile this driver as a module, choose M here: the
53 module will be called kbtab.
54
55config USB_POWERMATE
56 tristate "Griffin PowerMate and Contour Jog support"
57 depends on USB && INPUT
58 ---help---
59 Say Y here if you want to use Griffin PowerMate or Contour Jog devices.
60 These are aluminum dials which can measure clockwise and anticlockwise
61 rotation. The dial also acts as a pushbutton. The base contains an LED
62 which can be instructed to pulse or to switch to a particular intensity.
63
64 You can download userspace tools from
65 <http://sowerbutts.com/powermate/>.
66
67 To compile this driver as a module, choose M here: the
68 module will be called powermate.
69
70config USB_TOUCHSCREEN
71 tristate "USB Touchscreen Driver"
72 depends on USB && INPUT
73 ---help---
74 USB Touchscreen driver for:
75 - eGalax Touchkit USB (also includes eTurboTouch CT-410/510/700)
76 - PanJit TouchSet USB
77 - 3M MicroTouch USB (EX II series)
78 - ITM
79 - some other eTurboTouch
80 - Gunze AHL61
81 - DMC TSC-10/25
82
83 Have a look at <http://linux.chapter7.ch/touchkit/> for
84 a usage description and the required user-space stuff.
85
86 To compile this driver as a module, choose M here: the
87 module will be called usbtouchscreen.
88
89config USB_TOUCHSCREEN_EGALAX
90 default y
91 bool "eGalax, eTurboTouch CT-410/510/700 device support" if EMBEDDED
92 depends on USB_TOUCHSCREEN
93
94config USB_TOUCHSCREEN_PANJIT
95 default y
96 bool "PanJit device support" if EMBEDDED
97 depends on USB_TOUCHSCREEN
98
99config USB_TOUCHSCREEN_3M
100 default y
101 bool "3M/Microtouch EX II series device support" if EMBEDDED
102 depends on USB_TOUCHSCREEN
103
104config USB_TOUCHSCREEN_ITM
105 default y
106 bool "ITM device support" if EMBEDDED
107 depends on USB_TOUCHSCREEN
108
109config USB_TOUCHSCREEN_ETURBO
110 default y
111 bool "eTurboTouch (non-eGalax compatible) device support" if EMBEDDED
112 depends on USB_TOUCHSCREEN
113
114config USB_TOUCHSCREEN_GUNZE
115 default y
116 bool "Gunze AHL61 device support" if EMBEDDED
117 depends on USB_TOUCHSCREEN
118
119config USB_TOUCHSCREEN_DMC_TSC10
120 default y
121 bool "DMC TSC-10/25 device support" if EMBEDDED
122 depends on USB_TOUCHSCREEN
123
124config USB_YEALINK
125 tristate "Yealink usb-p1k voip phone"
126 depends on USB && INPUT && EXPERIMENTAL
127 ---help---
128 Say Y here if you want to enable keyboard and LCD functions of the
129 Yealink usb-p1k usb phones. The audio part is enabled by the generic
130 usb sound driver, so you might want to enable that as well.
131
132 For information about how to use these additional functions, see
133 <file:Documentation/input/yealink.txt>.
134
135 To compile this driver as a module, choose M here: the module will be
136 called yealink.
137
138config USB_XPAD
139 tristate "X-Box gamepad support"
140 depends on USB && INPUT
141 ---help---
142 Say Y here if you want to use the X-Box pad with your computer.
143 Make sure to say Y to "Joystick support" (CONFIG_INPUT_JOYDEV)
144 and/or "Event interface support" (CONFIG_INPUT_EVDEV) as well.
145
146 For information about how to connect the X-Box pad to USB, see
147 <file:Documentation/input/xpad.txt>.
148
149 To compile this driver as a module, choose M here: the
150 module will be called xpad.
151
152config USB_ATI_REMOTE
153 tristate "ATI / X10 USB RF remote control"
154 depends on USB && INPUT
155 ---help---
156 Say Y here if you want to use an ATI or X10 "Lola" USB remote control.
157 These are RF remotes with USB receivers.
158 The ATI remote comes with many of ATI's All-In-Wonder video cards.
159 The X10 "Lola" remote is available at:
160 <http://www.x10.com/products/lola_sg1.htm>
161 This driver provides mouse pointer, left and right mouse buttons,
162 and maps all the other remote buttons to keypress events.
163
164 To compile this driver as a module, choose M here: the module will be
165 called ati_remote.
166
167config USB_ATI_REMOTE2
168 tristate "ATI / Philips USB RF remote control"
169 depends on USB && INPUT
170 ---help---
171 Say Y here if you want to use an ATI or Philips USB RF remote control.
172 These are RF remotes with USB receivers.
173 ATI Remote Wonder II comes with some ATI's All-In-Wonder video cards
174 and is also available as a separate product.
175 This driver provides mouse pointer, left and right mouse buttons,
176 and maps all the other remote buttons to keypress events.
177
178 To compile this driver as a module, choose M here: the module will be
179 called ati_remote2.
180
181config USB_KEYSPAN_REMOTE
182 tristate "Keyspan DMR USB remote control (EXPERIMENTAL)"
183 depends on USB && INPUT && EXPERIMENTAL
184 ---help---
185 Say Y here if you want to use a Keyspan DMR USB remote control.
186 Currently only the UIA-11 type of receiver has been tested. The tag
187 on the receiver that connects to the USB port should have a P/N that
188 will tell you what type of DMR you have. The UIA-10 type is not
189 supported at this time. This driver maps all buttons to keypress
190 events.
191
192 To compile this driver as a module, choose M here: the module will
193 be called keyspan_remote.
194
195config USB_APPLETOUCH
196 tristate "Apple USB Touchpad support"
197 depends on USB && INPUT
198 ---help---
199 Say Y here if you want to use an Apple USB Touchpad.
200
201 These are the touchpads that can be found on post-February 2005
202 Apple Powerbooks (prior models have a Synaptics touchpad connected
203 to the ADB bus).
204
205 This driver provides a basic mouse driver but can be interfaced
206 with the synaptics X11 driver to provide acceleration and
207 scrolling in X11.
208
209 For further information, see
210 <file:Documentation/input/appletouch.txt>.
211
212 To compile this driver as a module, choose M here: the
213 module will be called appletouch.
214
215config USB_GTCO
216 tristate "GTCO CalComp/InterWrite USB Support"
217 depends on USB && INPUT
218 ---help---
219 Say Y here if you want to use the USB version of the GTCO
220 CalComp/InterWrite Tablet. Make sure to say Y to "Mouse support"
221 (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
222 (CONFIG_INPUT_EVDEV) as well.
223
224 To compile this driver as a module, choose M here: the
225 module will be called gtco.
diff --git a/drivers/usb/input/Makefile b/drivers/usb/input/Makefile
deleted file mode 100644
index 284a0734e0cd..000000000000
--- a/drivers/usb/input/Makefile
+++ /dev/null
@@ -1,24 +0,0 @@
1#
2# Makefile for the USB input drivers
3#
4
5# Multipart objects.
6wacom-objs := wacom_wac.o wacom_sys.o
7
8obj-$(CONFIG_USB_AIPTEK) += aiptek.o
9obj-$(CONFIG_USB_ATI_REMOTE) += ati_remote.o
10obj-$(CONFIG_USB_ATI_REMOTE2) += ati_remote2.o
11obj-$(CONFIG_USB_KBTAB) += kbtab.o
12obj-$(CONFIG_USB_KEYSPAN_REMOTE) += keyspan_remote.o
13obj-$(CONFIG_USB_TOUCHSCREEN) += usbtouchscreen.o
14obj-$(CONFIG_USB_POWERMATE) += powermate.o
15obj-$(CONFIG_USB_WACOM) += wacom.o
16obj-$(CONFIG_USB_ACECAD) += acecad.o
17obj-$(CONFIG_USB_YEALINK) += yealink.o
18obj-$(CONFIG_USB_XPAD) += xpad.o
19obj-$(CONFIG_USB_APPLETOUCH) += appletouch.o
20obj-$(CONFIG_USB_GTCO) += gtco.o
21
22ifeq ($(CONFIG_USB_DEBUG),y)
23EXTRA_CFLAGS += -DDEBUG
24endif
diff --git a/include/linux/uinput.h b/include/linux/uinput.h
index 1fd61eeed664..a6c1e8eed226 100644
--- a/include/linux/uinput.h
+++ b/include/linux/uinput.h
@@ -32,6 +32,8 @@
32 * - first public version 32 * - first public version
33 */ 33 */
34 34
35#include <linux/input.h>
36
35#define UINPUT_VERSION 3 37#define UINPUT_VERSION 3
36 38
37#ifdef __KERNEL__ 39#ifdef __KERNEL__