Skip to content

Commit

Permalink
Merge master.kernel.org:/pub/scm/linux/kernel/git/dtor/input
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
Linus Torvalds committed May 8, 2007
2 parents df6d391 + ba0acb5 commit 393bfca
Show file tree
Hide file tree
Showing 47 changed files with 404 additions and 404 deletions.
2 changes: 2 additions & 0 deletions drivers/input/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
1 change: 1 addition & 0 deletions drivers/input/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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/

6 changes: 3 additions & 3 deletions drivers/input/evdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -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];
Expand All @@ -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;
Expand Down
3 changes: 2 additions & 1 deletion drivers/input/ff-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down
18 changes: 16 additions & 2 deletions drivers/input/joystick/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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
1 change: 1 addition & 0 deletions drivers/input/joystick/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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/
2 changes: 1 addition & 1 deletion drivers/input/joystick/analog.c
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down
18 changes: 9 additions & 9 deletions drivers/input/joystick/db9.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand Down
17 changes: 9 additions & 8 deletions drivers/input/joystick/gamecon.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion drivers/input/joystick/iforce/iforce.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
18 changes: 10 additions & 8 deletions drivers/input/joystick/turbografx.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand Down Expand Up @@ -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;
Expand Down
File renamed without changes.
1 change: 1 addition & 0 deletions drivers/input/keyboard/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
62 changes: 20 additions & 42 deletions drivers/input/keyboard/aaed2000_kbd.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,11 @@
#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>
Expand All @@ -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];
};
Expand All @@ -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;
Expand All @@ -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;
Expand All @@ -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);
Expand All @@ -154,25 +134,23 @@ 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;
}

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;
Expand Down
Loading

0 comments on commit 393bfca

Please sign in to comment.