diff options
Diffstat (limited to 'drivers/input/mouse/atarimouse.c')
| -rw-r--r-- | drivers/input/mouse/atarimouse.c | 39 |
1 files changed, 18 insertions, 21 deletions
diff --git a/drivers/input/mouse/atarimouse.c b/drivers/input/mouse/atarimouse.c index 98a3561d4b0..d1c43236b12 100644 --- a/drivers/input/mouse/atarimouse.c +++ b/drivers/input/mouse/atarimouse.c @@ -47,7 +47,6 @@ #include <asm/irq.h> #include <asm/setup.h> -#include <asm/system.h> #include <asm/uaccess.h> #include <asm/atarihw.h> #include <asm/atarikb.h> @@ -57,15 +56,12 @@ MODULE_AUTHOR("Michael Schmitz <schmitz@biophys.uni-duesseldorf.de>"); MODULE_DESCRIPTION("Atari mouse driver"); MODULE_LICENSE("GPL"); -static int mouse_threshold[2] = {2,2}; +static int mouse_threshold[2] = {2, 2}; +module_param_array(mouse_threshold, int, NULL, 0); -#ifdef __MODULE__ -MODULE_PARM(mouse_threshold, "2i"); -#endif #ifdef FIXED_ATARI_JOYSTICK extern int atari_mouse_buttons; #endif -static int atamouse_used = 0; static struct input_dev *atamouse_dev; @@ -80,15 +76,15 @@ static void atamouse_interrupt(char *buf) #endif /* only relative events get here */ - dx = buf[1]; - dy = -buf[2]; + dx = buf[1]; + dy = buf[2]; input_report_rel(atamouse_dev, REL_X, dx); input_report_rel(atamouse_dev, REL_Y, dy); - input_report_key(atamouse_dev, BTN_LEFT, buttons & 0x1); + input_report_key(atamouse_dev, BTN_LEFT, buttons & 0x4); input_report_key(atamouse_dev, BTN_MIDDLE, buttons & 0x2); - input_report_key(atamouse_dev, BTN_RIGHT, buttons & 0x4); + input_report_key(atamouse_dev, BTN_RIGHT, buttons & 0x1); input_sync(atamouse_dev); @@ -97,9 +93,6 @@ static void atamouse_interrupt(char *buf) static int atamouse_open(struct input_dev *dev) { - if (atamouse_used++) - return 0; - #ifdef FIXED_ATARI_JOYSTICK atari_mouse_buttons = 0; #endif @@ -107,24 +100,26 @@ static int atamouse_open(struct input_dev *dev) ikbd_mouse_thresh(mouse_threshold[0], mouse_threshold[1]); ikbd_mouse_rel_pos(); atari_input_mouse_interrupt_hook = atamouse_interrupt; + return 0; } static void atamouse_close(struct input_dev *dev) { - if (!--atamouse_used) { - ikbd_mouse_disable(); - atari_mouse_interrupt_hook = NULL; - } + ikbd_mouse_disable(); + atari_input_mouse_interrupt_hook = NULL; } static int __init atamouse_init(void) { + int error; + if (!MACH_IS_ATARI || !ATARIHW_PRESENT(ST_MFP)) return -ENODEV; - if (!(atari_keyb_init())) - return -ENODEV; + error = atari_keyb_init(); + if (error) + return error; atamouse_dev = input_allocate_device(); if (!atamouse_dev) @@ -141,12 +136,14 @@ static int __init atamouse_init(void) atamouse_dev->relbit[0] = BIT_MASK(REL_X) | BIT_MASK(REL_Y); atamouse_dev->keybit[BIT_WORD(BTN_LEFT)] = BIT_MASK(BTN_LEFT) | BIT_MASK(BTN_MIDDLE) | BIT_MASK(BTN_RIGHT); + atamouse_dev->open = atamouse_open; atamouse_dev->close = atamouse_close; - if (input_register_device(atamouse_dev)) { + error = input_register_device(atamouse_dev); + if (error) { input_free_device(atamouse_dev); - return -ENOMEM; + return error; } return 0; |
