Merge master.kernel.org:/pub/scm/linux/kernel/git/dtor/input
authorLinus Torvalds <torvalds@woody.linux-foundation.org>
Tue, 8 May 2007 18:51:43 +0000 (11:51 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Tue, 8 May 2007 18:51:43 +0000 (11:51 -0700)
* 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

47 files changed:
drivers/input/Kconfig
drivers/input/Makefile
drivers/input/evdev.c
drivers/input/ff-core.c
drivers/input/joystick/Kconfig
drivers/input/joystick/Makefile
drivers/input/joystick/analog.c
drivers/input/joystick/db9.c
drivers/input/joystick/gamecon.c
drivers/input/joystick/iforce/iforce.h
drivers/input/joystick/turbografx.c
drivers/input/joystick/xpad.c [moved from drivers/usb/input/xpad.c with 100% similarity]
drivers/input/keyboard/Kconfig
drivers/input/keyboard/aaed2000_kbd.c
drivers/input/misc/Kconfig
drivers/input/misc/Makefile
drivers/input/misc/ati_remote.c [moved from drivers/usb/input/ati_remote.c with 100% similarity]
drivers/input/misc/ati_remote2.c [moved from drivers/usb/input/ati_remote2.c with 99% similarity]
drivers/input/misc/keyspan_remote.c [moved from drivers/usb/input/keyspan_remote.c with 100% similarity]
drivers/input/misc/map_to_7segment.h [moved from drivers/usb/input/map_to_7segment.h with 100% similarity]
drivers/input/misc/powermate.c [moved from drivers/usb/input/powermate.c with 98% similarity]
drivers/input/misc/uinput.c
drivers/input/misc/yealink.c [moved from drivers/usb/input/yealink.c with 98% similarity]
drivers/input/misc/yealink.h [moved from drivers/usb/input/yealink.h with 100% similarity]
drivers/input/mouse/Kconfig
drivers/input/mouse/Makefile
drivers/input/mouse/appletouch.c [moved from drivers/usb/input/appletouch.c with 100% similarity]
drivers/input/mouse/synaptics.c
drivers/input/serio/i8042.c
drivers/input/tablet/Kconfig [new file with mode: 0644]
drivers/input/tablet/Makefile [new file with mode: 0644]
drivers/input/tablet/acecad.c [moved from drivers/usb/input/acecad.c with 99% similarity]
drivers/input/tablet/aiptek.c [moved from drivers/usb/input/aiptek.c with 100% similarity]
drivers/input/tablet/gtco.c [moved from drivers/usb/input/gtco.c with 100% similarity]
drivers/input/tablet/kbtab.c [moved from drivers/usb/input/kbtab.c with 99% similarity]
drivers/input/tablet/wacom.h [moved from drivers/usb/input/wacom.h with 99% similarity]
drivers/input/tablet/wacom_sys.c [moved from drivers/usb/input/wacom_sys.c with 99% similarity]
drivers/input/tablet/wacom_wac.c [moved from drivers/usb/input/wacom_wac.c with 99% similarity]
drivers/input/tablet/wacom_wac.h [moved from drivers/usb/input/wacom_wac.h with 93% similarity]
drivers/input/touchscreen/Kconfig
drivers/input/touchscreen/Makefile
drivers/input/touchscreen/usbtouchscreen.c [moved from drivers/usb/input/usbtouchscreen.c with 99% similarity]
drivers/usb/Kconfig
drivers/usb/Makefile
drivers/usb/input/Kconfig [deleted file]
drivers/usb/input/Makefile [deleted file]
include/linux/uinput.h

index 96232313b1b97fc277aeb4c67ebff59d205eb6aa..0e9b69535ad6990a0766b346412b352562860375 100644 (file)
@@ -153,6 +153,8 @@ source "drivers/input/mouse/Kconfig"
 
 source "drivers/input/joystick/Kconfig"
 
+source "drivers/input/tablet/Kconfig"
+
 source "drivers/input/touchscreen/Kconfig"
 
 source "drivers/input/misc/Kconfig"
index b4cd10653c4f4996e7dde138db36f1171070d504..8a2dd987546c3c86a4587d9e6de9cb6862a7e3d4 100644 (file)
@@ -18,6 +18,7 @@ obj-$(CONFIG_INPUT_EVBUG)     += evbug.o
 obj-$(CONFIG_INPUT_KEYBOARD)   += keyboard/
 obj-$(CONFIG_INPUT_MOUSE)      += mouse/
 obj-$(CONFIG_INPUT_JOYSTICK)   += joystick/
+obj-$(CONFIG_INPUT_TABLET)     += tablet/
 obj-$(CONFIG_INPUT_TOUCHSCREEN)        += touchscreen/
 obj-$(CONFIG_INPUT_MISC)       += misc/
 
index be3dbc1ae67d154bd879c7a7c5bf87f2a0425add..55a72592704cf5e1a497ae2805f6ff3c3f802c85 100644 (file)
@@ -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))) {
 
-                                       long *bits;
+                                       unsigned long *bits;
                                        int len;
 
                                        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))) {
 
-                                       int t = _IOC_NR(cmd) & ABS_MAX;
+                                       t = _IOC_NR(cmd) & ABS_MAX;
 
                                        abs.value = dev->abs[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))) {
 
-                                       int t = _IOC_NR(cmd) & ABS_MAX;
+                                       t = _IOC_NR(cmd) & ABS_MAX;
 
                                        if (copy_from_user(&abs, p, sizeof(struct input_absinfo)))
                                                return -EFAULT;
index 783b3412ceadad32b77430c483ce3375faafc481..eebc72465fc9beb44d2ecfa77a78d24cbd31f891 100644 (file)
@@ -281,7 +281,8 @@ int input_ff_event(struct input_dev *dev, unsigned int type,
                break;
 
        default:
-               ff->playback(dev, code, value);
+               if (check_effect_access(ff, code, NULL) == 0)
+                       ff->playback(dev, code, value);
                break;
        }
 
index 271263443c37c1405cf014fd43ba607cf70cbff5..82f563e24fdbc39e0e0945ff16f8fca980da05a8 100644 (file)
@@ -2,7 +2,7 @@
 # Joystick driver configuration
 #
 menuconfig INPUT_JOYSTICK
-       bool "Joysticks"
+       bool "Joysticks/Gamepads"
        help
          If you have a joystick, 6dof controller, gamepad, steering wheel,
          weapon control system or something like that you can say Y here
@@ -196,7 +196,7 @@ config JOYSTICK_TWIDJOY
 config JOYSTICK_DB9
        tristate "Multisystem, Sega Genesis, Saturn joysticks and gamepads"
        depends on PARPORT
-       ---help---
+       help
          Say Y here if you have a Sega Master System gamepad, Sega Genesis
          gamepad, Sega Saturn gamepad, or a Multisystem -- Atari, Amiga,
          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
          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
index 5231f6ff75b8a9dc281691ba70ddc67e0bb1f5df..e855abb0cc5175e0ffc9692e9e3f5b20efb937ef 100644 (file)
@@ -26,5 +26,6 @@ obj-$(CONFIG_JOYSTICK_TMDC)           += tmdc.o
 obj-$(CONFIG_JOYSTICK_TURBOGRAFX)      += turbografx.o
 obj-$(CONFIG_JOYSTICK_TWIDJOY)         += twidjoy.o
 obj-$(CONFIG_JOYSTICK_WARRIOR)         += warrior.o
+obj-$(CONFIG_JOYSTICK_XPAD)            += xpad.o
 
 obj-$(CONFIG_JOYSTICK_IFORCE)          += iforce/
index 1c1afb5d46842c5c3954275ca0cffcbb9e1a32de..bdd157c1ebf8929b763a9d56815ce209c5d906f2 100644 (file)
@@ -53,7 +53,7 @@ MODULE_LICENSE("GPL");
 #define ANALOG_PORTS           16
 
 static char *js[ANALOG_PORTS];
-static int js_nargs;
+static unsigned int js_nargs;
 static int analog_options[ANALOG_PORTS];
 module_param_array_named(map, js, charp, &js_nargs, 0);
 MODULE_PARM_DESC(map, "Describes analog joysticks type/capabilities");
index c27593bf99789fe148a907a29cf7befecf0cb7c5..86ad1027e12a1ceabeedc5df8911fdfd30fdbc12 100644 (file)
@@ -46,17 +46,17 @@ MODULE_LICENSE("GPL");
 
 struct db9_config {
        int args[2];
-       int nargs;
+       unsigned int nargs;
 };
 
 #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_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_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>)");
 
 #define DB9_ARG_PARPORT                0
@@ -680,17 +680,17 @@ static int __init db9_init(void)
        int err = 0;
 
        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;
 
-               if (db9[i].nargs < 2) {
+               if (db9_cfg[i].nargs < 2) {
                        printk(KERN_ERR "db9.c: Device type must be specified.\n");
                        err = -EINVAL;
                        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])) {
                        err = PTR_ERR(db9_base[i]);
                        break;
index c71b58fe225db3a05ded9186b82ee600db734534..1a452e0e5f25788e37c972998912245747ec1657 100644 (file)
@@ -48,16 +48,16 @@ MODULE_LICENSE("GPL");
 
 struct gc_config {
        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_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_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");
 
 /* see also gs_psx_delay parameter in PSX support section */
@@ -810,16 +810,17 @@ static int __init gc_init(void)
        int err = 0;
 
        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;
 
-               if (gc[i].nargs < 2) {
+               if (gc_cfg[i].nargs < 2) {
                        printk(KERN_ERR "gamecon.c: at least one device must be specified\n");
                        err = -EINVAL;
                        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])) {
                        err = PTR_ERR(gc_base[i]);
                        break;
index dadcf4fb92aefd9d5ab1357328937ced02e825cb..40a853ac21c795c2e3db467be967f203a91f1d0b 100644 (file)
@@ -124,7 +124,7 @@ struct iforce {
        /* Buffer used for asynchronous sending of bytes to the device */
        struct circ_buf xmit;
        unsigned char xmit_data[XMIT_SIZE];
-       long xmit_flags[1];
+       unsigned long xmit_flags[1];
 
                                        /* Force Feedback */
        wait_queue_head_t wait;
index 0f2c60823b0b81890c163d8a0f6998908819a1bf..8381c6f143735f69af27b714cfcd7d79d2a37ed7 100644 (file)
@@ -48,16 +48,16 @@ MODULE_LICENSE("GPL");
 
 struct tgfx_config {
        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_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_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");
 
 #define TGFX_REFRESH_TIME      HZ/100  /* 10 ms */
@@ -283,16 +283,18 @@ static int __init tgfx_init(void)
        int err = 0;
 
        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;
 
-               if (tgfx[i].nargs < 2) {
+               if (tgfx_cfg[i].nargs < 2) {
                        printk(KERN_ERR "turbografx.c: at least one joystick must be specified\n");
                        err = -EINVAL;
                        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])) {
                        err = PTR_ERR(tgfx_base[i]);
                        break;
index 9f42e4d3649efe83178e2e89a2b9fd6c9debef72..bd707b86c114a9b7fa323a46b51ccb15fd410b9f 100644 (file)
@@ -226,6 +226,7 @@ config KEYBOARD_PXA27x
 config KEYBOARD_AAED2000
        tristate "AAED-2000 keyboard"
        depends on MACH_AAED2000
+       select INPUT_POLLDEV
        default y
        help
          Say Y here to enable the keyboard on the Agilent AAED-2000
index 3a37505f067cc8cae3f551b1b26f0d7752133860..63d6ead6b877051baf18392140cd9e23a2df9f68 100644 (file)
 #include <linux/delay.h>
 #include <linux/platform_device.h>
 #include <linux/init.h>
-#include <linux/input.h>
+#include <linux/input-polldev.h>
 #include <linux/interrupt.h>
 #include <linux/jiffies.h>
 #include <linux/module.h>
 #include <linux/slab.h>
-#include <linux/workqueue.h>
 
 #include <asm/arch/hardware.h>
 #include <asm/arch/aaed2000.h>
@@ -46,8 +45,7 @@ static unsigned char aaedkbd_keycode[NR_SCANCODES] = {
 
 struct aaedkbd {
        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_count[KB_COLS];
 };
@@ -64,14 +62,15 @@ static void aaedkbd_report_col(struct aaedkbd *aaedkbd,
                scancode = SCANCODE(row, col);
                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 */
-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;
 
        col = 0;
@@ -90,51 +89,34 @@ static void aaedkbd_work(void *data)
        } while (col < KB_COLS);
 
        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)
 {
        struct aaedkbd *aaedkbd;
+       struct input_polled_dev *poll_dev;
        struct input_dev *input_dev;
        int i;
        int error;
 
        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;
                goto fail;
        }
 
        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));
 
+       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->phys = "aaedkbd/input0";
        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->dev.parent = &pdev->dev;
 
-       input_set_drvdata(input_dev, aaedkbd);
-
        input_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_REP);
        input_dev->keycode = aaedkbd->keycode;
        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);
        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)
                goto fail;
 
        return 0;
 
  fail: kfree(aaedkbd);
-       input_free_device(input_dev);
+       input_free_polled_device(poll_dev);
        return error;
 }
 
@@ -172,7 +149,8 @@ static int __devexit aaedkbd_remove(struct platform_device *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);
 
        return 0;
index 1d0d3e765db67a1ee0919dcbf2202b88c505a3db..6013ace94d98675a1ba1b47781d9470db82ca161 100644 (file)
@@ -40,6 +40,18 @@ config INPUT_M68K_BEEP
        tristate "M68k Beeper support"
        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
        tristate "Cobalt button interface"
        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
          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
-         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
-         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
        tristate "User level driver support"
index 21e3cca0d33e13667c0cb90661d1d82a1b04b893..8b2f7799e25c98e2e33668b6cdfb6d0299c796ce 100644 (file)
@@ -8,9 +8,14 @@ obj-$(CONFIG_INPUT_POLLDEV)            += input-polldev.o
 obj-$(CONFIG_INPUT_SPARCSPKR)          += sparcspkr.o
 obj-$(CONFIG_INPUT_PCSPKR)             += pcspkr.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_WISTRON_BTNS)       += wistron_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_INPUT_IXP4XX_BEEPER)      += ixp4xx-beeper.o
+obj-$(CONFIG_INPUT_UINPUT)             += uinput.o
similarity index 99%
rename from drivers/usb/input/ati_remote2.c
rename to drivers/input/misc/ati_remote2.c
index a9032aa3465f7bb5d70806af6bb4d55b0cee041a..1031543e5c3f3e1f71e4e15bcae5ae600aa0f087 100644 (file)
@@ -405,9 +405,7 @@ static void ati_remote2_urb_cleanup(struct ati_remote2 *ar2)
 
        for (i = 0; i < 2; 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]);
        }
 }
 
similarity index 98%
rename from drivers/usb/input/powermate.c
rename to drivers/input/misc/powermate.c
index 4f93a760faeed74c699c23704178341359d2cdad..448a470d28f264d4ee6f666438d162a17225f694 100644 (file)
@@ -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)
 {
-       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 */
index 031467eadd31c28a4e0a614588681c3cb7307990..a56ad4ba8fe2eb482ee4a26f1f36baa56753e1c5 100644 (file)
@@ -33,7 +33,6 @@
 #include <linux/slab.h>
 #include <linux/module.h>
 #include <linux/init.h>
-#include <linux/input.h>
 #include <linux/smp_lock.h>
 #include <linux/fs.h>
 #include <linux/miscdevice.h>
similarity index 98%
rename from drivers/usb/input/yealink.c
rename to drivers/input/misc/yealink.c
index c54f1a5dcb4a480ba19fe04d907fa0a9184f4503..ab15880fd5663ab63cd0bbbc085dbea617eb7410 100644 (file)
@@ -29,7 +29,7 @@
  * This driver is based on:
  *   - the usbb2k-api  http://savannah.nongnu.org/projects/usbb2k-api/
  *   - 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:
  *   - Olivier Vandorpe, for providing the usbb2k-api.
@@ -818,18 +818,17 @@ static int usb_cleanup(struct yealink_dev *yld, int err)
                else
                        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);
        return err;
 }
index 81dd8c7211a74f66feccb86342bd9f9ad1ec2c8b..2ccc114b3ff6b612e94d2ce6ac92c70126c3cdda 100644 (file)
@@ -2,7 +2,7 @@
 # Mouse driver configuration
 #
 menuconfig INPUT_MOUSE
-       bool "Mouse"
+       bool "Mice"
        default y
        help
          Say Y here, and a list of supported mice will be displayed.
@@ -19,7 +19,7 @@ config MOUSE_PS2
        select SERIO_LIBPS2
        select SERIO_I8042 if X86_PC
        select SERIO_GSCPS2 if GSC
-       ---help---
+       help
          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
          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
        default y
        depends on MOUSE_PS2
-       ---help---
+       help
          Say Y here if you have an ALPS PS/2 touchpad connected to
          your system.
 
@@ -51,7 +51,7 @@ config MOUSE_PS2_LOGIPS2PP
        bool "Logictech PS/2++ mouse protocol extension" if EMBEDDED
        default y
        depends on MOUSE_PS2
-       ---help---
+       help
          Say Y here if you have a Logictech PS/2++ mouse connected to
          your system.
 
@@ -61,7 +61,7 @@ config MOUSE_PS2_SYNAPTICS
        bool "Synaptics PS/2 mouse protocol extension" if EMBEDDED
        default y
        depends on MOUSE_PS2
-       ---help---
+       help
          Say Y here if you have a Synaptics PS/2 TouchPad connected to
          your system.
 
@@ -71,7 +71,7 @@ config MOUSE_PS2_LIFEBOOK
        bool "Fujitsu Lifebook PS/2 mouse protocol extension" if EMBEDDED
        default y
        depends on MOUSE_PS2
-       ---help---
+       help
          Say Y here if you have a Fujitsu B-series Lifebook PS/2
          TouchScreen connected to your system.
 
@@ -81,7 +81,7 @@ config MOUSE_PS2_TRACKPOINT
        bool "IBM Trackpoint PS/2 mouse protocol extension" if EMBEDDED
        default y
        depends on MOUSE_PS2
-       ---help---
+       help
          Say Y here if you have an IBM Trackpoint PS/2 mouse connected
          to your system.
 
@@ -90,7 +90,7 @@ config MOUSE_PS2_TRACKPOINT
 config MOUSE_PS2_TOUCHKIT
        bool "eGalax TouchKit PS/2 protocol extension"
        depends on MOUSE_PS2
-       ---help---
+       help
          Say Y here if you have an eGalax TouchKit PS/2 touchscreen
          connected to your system.
 
@@ -99,7 +99,7 @@ config MOUSE_PS2_TOUCHKIT
 config MOUSE_SERIAL
        tristate "Serial mouse"
        select SERIO
-       ---help---
+       help
          Say Y here if you have a serial (RS-232, COM port) mouse connected
          to your system. This includes Sun, MouseSystems, Microsoft,
          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
          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
        tristate "InPort/MS/ATIXL busmouse"
        depends on ISA
index 6a8f622927f25710250f16a1c733ef8092096a2a..aa4ba878533f13956b7afe867639fc43714fc894 100644 (file)
@@ -5,6 +5,7 @@
 # Each configuration option enables a list of files.
 
 obj-$(CONFIG_MOUSE_AMIGA)      += amimouse.o
+obj-$(CONFIG_MOUSE_APPLETOUCH) += appletouch.o
 obj-$(CONFIG_MOUSE_ATARI)      += atarimouse.o
 obj-$(CONFIG_MOUSE_RISCPC)     += rpcmouse.o
 obj-$(CONFIG_MOUSE_INPORT)     += inport.o
index c77788bf932dfc586506c6784a8643eb78ffc86c..666ad3a53fdbfe74b9d978cd5cbdd22763075c78 100644 (file)
@@ -185,7 +185,7 @@ static int synaptics_query_hardware(struct psmouse *psmouse)
        int retries = 0;
 
        while ((retries++ < 3) && psmouse_reset(psmouse))
-               printk(KERN_ERR "synaptics reset failed\n");
+               /* empty */;
 
        if (synaptics_identify(psmouse))
                return -1;
index 7c17377a65b96b99cb342158ad449d60c7f8619d..3888dc307e0ce09d47aebc89eeb983df02be5f40 100644 (file)
@@ -526,6 +526,33 @@ static irqreturn_t __devinit i8042_aux_test_irq(int irq, void *dev_id)
        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
@@ -580,16 +607,12 @@ static int __devinit i8042_check_aux(void)
  * 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 "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;
 
 /*
diff --git a/drivers/input/tablet/Kconfig b/drivers/input/tablet/Kconfig
new file mode 100644 (file)
index 0000000..12dfb0e
--- /dev/null
@@ -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
diff --git a/drivers/input/tablet/Makefile b/drivers/input/tablet/Makefile
new file mode 100644 (file)
index 0000000..ce8b9a9
--- /dev/null
@@ -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
similarity index 99%
rename from drivers/usb/input/acecad.c
rename to drivers/input/tablet/acecad.c
index be8e9243c06203579e81b2e5a2ccff27c7a8fe8b..dd2310458c46a87aafaf0d2873a54f535dde0781 100644 (file)
@@ -54,7 +54,7 @@ struct usb_acecad {
        struct input_dev *input;
        struct urb *irq;
 
-       signed char *data;
+       unsigned char *data;
        dma_addr_t data_dma;
 };
 
similarity index 99%
rename from drivers/usb/input/kbtab.c
rename to drivers/input/tablet/kbtab.c
index c4781b9d1297c025778f2cc5324816ffb2b62b6d..91e6d00d4a43ffdc4a8a26e21ea1ca9bd6e9df90 100644 (file)
@@ -29,7 +29,7 @@ module_param(kb_pressure_click, int, 0);
 MODULE_PARM_DESC(kb_pressure_click, "pressure threshold for clicks");
 
 struct kbtab {
-       signed char *data;
+       unsigned char *data;
        dma_addr_t data_dma;
        struct input_dev *dev;
        struct usb_device *usbdev;
similarity index 99%
rename from drivers/usb/input/wacom.h
rename to drivers/input/tablet/wacom.h
index d85abfc5ab58be24059330f91e1fcc1c96a0740a..ef01a807ec0f9b6e0cd95eaafacc5030e0f2a308 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * drivers/usb/input/wacom.h
+ * drivers/input/tablet/wacom.h
  *
  *  USB Wacom Graphire and Wacom Intuos tablet support
  *
similarity index 99%
rename from drivers/usb/input/wacom_sys.c
rename to drivers/input/tablet/wacom_sys.c
index 1fe48208c2f4cd6d5aa875a31f1e907fd2607d10..83bddef6606770a536048c6a9250dbd084627c88 100644 (file)
@@ -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
  */
similarity index 99%
rename from drivers/usb/input/wacom_wac.c
rename to drivers/input/tablet/wacom_wac.c
index 4f3e9bc7177d236e9c1575111c0f9b4162d1c359..7661f03a2db2ab3cbb51e6d40e28db54db9ac32b 100644 (file)
@@ -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
  *
similarity index 93%
rename from drivers/usb/input/wacom_wac.h
rename to drivers/input/tablet/wacom_wac.h
index a23022287248e12805f1250de2f0a41c3a079ae8..a5e12e8756de046e9bcf62ddeaaba165183246ad 100644 (file)
@@ -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
  * it under the terms of the GNU General Public License as published by
@@ -39,7 +39,7 @@ struct wacom_features {
 };
 
 struct wacom_wac {
-       signed char *data;
+       unsigned char *data;
         int tool[2];
         int id[2];
         __u32 serial[2];
index 971618059a6f6a25648cf3f031548f1d5bc4a20d..5e640aeb03cdfa0ac1eb781c6232c6b3b117ff0c 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Mouse driver configuration
+# Touchscreen driver configuration
 #
 menuconfig INPUT_TOUCHSCREEN
        bool "Touchscreens"
@@ -44,9 +44,9 @@ config TOUCHSCREEN_BITSY
 config TOUCHSCREEN_CORGI
        tristate "SharpSL (Corgi and Spitz series) touchscreen driver"
        depends on PXA_SHARPSL
-       default y       
+       default y
        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.
 
          If unsure, say N.
@@ -164,4 +164,58 @@ config TOUCHSCREEN_UCB1400
          To compile this driver as a module, choose M here: the
          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
index 30e6e2217a15d86d72f153ca2fa3af9086f7ca70..2f86d6ad06d3a193fedcdd01b2a4dd7dbb498491 100644 (file)
@@ -1,17 +1,18 @@
 #
-# Makefile for the mouse drivers.
+# Makefile for the touchscreen drivers.
 #
 
 # Each configuration option enables a list of files.
 
 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_TOUCHRIGHT)   += touchright.o
 obj-$(CONFIG_TOUCHSCREEN_TOUCHWIN)     += touchwin.o
similarity index 99%
rename from drivers/usb/input/usbtouchscreen.c
rename to drivers/input/touchscreen/usbtouchscreen.c
index e0829413336b669a3d152681982930ec2480e013..8e18e6c6477771566a33b52e12ffbc9f28b8d098 100644 (file)
@@ -668,9 +668,8 @@ static void usbtouch_close(struct input_dev *input)
 static void usbtouch_free_buffers(struct usb_device *udev,
                                  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);
 }
 
index 9980a4ddfed934617a7726c6c612a24edebb4d27..b847bbc8b0e1a5730bb493ed5644d2a2a278cfe0 100644 (file)
@@ -85,8 +85,6 @@ source "drivers/usb/class/Kconfig"
 
 source "drivers/usb/storage/Kconfig"
 
-source "drivers/usb/input/Kconfig"
-
 source "drivers/usb/image/Kconfig"
 
 source "drivers/usb/net/Kconfig"
index f5de58a63f2bfdac82319fad26e6d616a77c441a..0ef090b1b37c31f761520c1c25fbfad7ac68e0b7 100644 (file)
@@ -23,15 +23,6 @@ obj-$(CONFIG_USB_PRINTER)    += class/
 obj-$(CONFIG_USB_STORAGE)      += 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_KAWETH)       += net/
 obj-$(CONFIG_USB_PEGASUS)      += net/
diff --git a/drivers/usb/input/Kconfig b/drivers/usb/input/Kconfig
deleted file mode 100644 (file)
index a792e42..0000000
+++ /dev/null
@@ -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.
diff --git a/drivers/usb/input/Makefile b/drivers/usb/input/Makefile
deleted file mode 100644 (file)
index 284a073..0000000
+++ /dev/null
@@ -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
index 1fd61eeed664c6958e4595aa455f4c3228807712..a6c1e8eed2265e914f90b6611902974eed726fa0 100644 (file)
@@ -32,6 +32,8 @@
  *             - first public version
  */
 
+#include <linux/input.h>
+
 #define UINPUT_VERSION         3
 
 #ifdef __KERNEL__