diff options
| -rw-r--r-- | drivers/char/keyboard.c | 5 | ||||
| -rw-r--r-- | drivers/input/evbug.c | 3 | ||||
| -rw-r--r-- | drivers/input/evdev.c | 3 | ||||
| -rw-r--r-- | drivers/input/input.c | 12 | ||||
| -rw-r--r-- | drivers/input/joydev.c | 3 | ||||
| -rw-r--r-- | drivers/input/mousedev.c | 21 | ||||
| -rw-r--r-- | drivers/input/power.c | 3 | ||||
| -rw-r--r-- | drivers/input/tsdev.c | 4 | ||||
| -rw-r--r-- | include/linux/input.h | 2 |
9 files changed, 34 insertions, 22 deletions
diff --git a/drivers/char/keyboard.c b/drivers/char/keyboard.c index 797480768b4e..bf2339c869ea 100644 --- a/drivers/char/keyboard.c +++ b/drivers/char/keyboard.c | |||
| @@ -1362,6 +1362,7 @@ static struct input_handler kbd_handler = { | |||
| 1362 | int __init kbd_init(void) | 1362 | int __init kbd_init(void) |
| 1363 | { | 1363 | { |
| 1364 | int i; | 1364 | int i; |
| 1365 | int error; | ||
| 1365 | 1366 | ||
| 1366 | for (i = 0; i < MAX_NR_CONSOLES; i++) { | 1367 | for (i = 0; i < MAX_NR_CONSOLES; i++) { |
| 1367 | kbd_table[i].ledflagstate = KBD_DEFLEDS; | 1368 | kbd_table[i].ledflagstate = KBD_DEFLEDS; |
| @@ -1373,7 +1374,9 @@ int __init kbd_init(void) | |||
| 1373 | kbd_table[i].kbdmode = VC_XLATE; | 1374 | kbd_table[i].kbdmode = VC_XLATE; |
| 1374 | } | 1375 | } |
| 1375 | 1376 | ||
| 1376 | input_register_handler(&kbd_handler); | 1377 | error = input_register_handler(&kbd_handler); |
| 1378 | if (error) | ||
| 1379 | return error; | ||
| 1377 | 1380 | ||
| 1378 | tasklet_enable(&keyboard_tasklet); | 1381 | tasklet_enable(&keyboard_tasklet); |
| 1379 | tasklet_schedule(&keyboard_tasklet); | 1382 | tasklet_schedule(&keyboard_tasklet); |
diff --git a/drivers/input/evbug.c b/drivers/input/evbug.c index 1d8ce7a1ec30..5a9653c3128a 100644 --- a/drivers/input/evbug.c +++ b/drivers/input/evbug.c | |||
| @@ -91,8 +91,7 @@ static struct input_handler evbug_handler = { | |||
| 91 | 91 | ||
| 92 | static int __init evbug_init(void) | 92 | static int __init evbug_init(void) |
| 93 | { | 93 | { |
| 94 | input_register_handler(&evbug_handler); | 94 | return input_register_handler(&evbug_handler); |
| 95 | return 0; | ||
| 96 | } | 95 | } |
| 97 | 96 | ||
| 98 | static void __exit evbug_exit(void) | 97 | static void __exit evbug_exit(void) |
diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c index 154e423167b9..6439f378f6cc 100644 --- a/drivers/input/evdev.c +++ b/drivers/input/evdev.c | |||
| @@ -695,8 +695,7 @@ static struct input_handler evdev_handler = { | |||
| 695 | 695 | ||
| 696 | static int __init evdev_init(void) | 696 | static int __init evdev_init(void) |
| 697 | { | 697 | { |
| 698 | input_register_handler(&evdev_handler); | 698 | return input_register_handler(&evdev_handler); |
| 699 | return 0; | ||
| 700 | } | 699 | } |
| 701 | 700 | ||
| 702 | static void __exit evdev_exit(void) | 701 | static void __exit evdev_exit(void) |
diff --git a/drivers/input/input.c b/drivers/input/input.c index c3448364cc73..1c8c8a5bc4a9 100644 --- a/drivers/input/input.c +++ b/drivers/input/input.c | |||
| @@ -1037,19 +1037,20 @@ void input_unregister_device(struct input_dev *dev) | |||
| 1037 | } | 1037 | } |
| 1038 | EXPORT_SYMBOL(input_unregister_device); | 1038 | EXPORT_SYMBOL(input_unregister_device); |
| 1039 | 1039 | ||
| 1040 | void input_register_handler(struct input_handler *handler) | 1040 | int input_register_handler(struct input_handler *handler) |
| 1041 | { | 1041 | { |
| 1042 | struct input_dev *dev; | 1042 | struct input_dev *dev; |
| 1043 | struct input_handle *handle; | 1043 | struct input_handle *handle; |
| 1044 | const struct input_device_id *id; | 1044 | const struct input_device_id *id; |
| 1045 | 1045 | ||
| 1046 | if (!handler) | ||
| 1047 | return; | ||
| 1048 | |||
| 1049 | INIT_LIST_HEAD(&handler->h_list); | 1046 | INIT_LIST_HEAD(&handler->h_list); |
| 1050 | 1047 | ||
| 1051 | if (handler->fops != NULL) | 1048 | if (handler->fops != NULL) { |
| 1049 | if (input_table[handler->minor >> 5]) | ||
| 1050 | return -EBUSY; | ||
| 1051 | |||
| 1052 | input_table[handler->minor >> 5] = handler; | 1052 | input_table[handler->minor >> 5] = handler; |
| 1053 | } | ||
| 1053 | 1054 | ||
| 1054 | list_add_tail(&handler->node, &input_handler_list); | 1055 | list_add_tail(&handler->node, &input_handler_list); |
| 1055 | 1056 | ||
| @@ -1063,6 +1064,7 @@ void input_register_handler(struct input_handler *handler) | |||
| 1063 | } | 1064 | } |
| 1064 | 1065 | ||
| 1065 | input_wakeup_procfs_readers(); | 1066 | input_wakeup_procfs_readers(); |
| 1067 | return 0; | ||
| 1066 | } | 1068 | } |
| 1067 | EXPORT_SYMBOL(input_register_handler); | 1069 | EXPORT_SYMBOL(input_register_handler); |
| 1068 | 1070 | ||
diff --git a/drivers/input/joydev.c b/drivers/input/joydev.c index 033e3aac92a3..9f3529ad3fda 100644 --- a/drivers/input/joydev.c +++ b/drivers/input/joydev.c | |||
| @@ -606,8 +606,7 @@ static struct input_handler joydev_handler = { | |||
| 606 | 606 | ||
| 607 | static int __init joydev_init(void) | 607 | static int __init joydev_init(void) |
| 608 | { | 608 | { |
| 609 | input_register_handler(&joydev_handler); | 609 | return input_register_handler(&joydev_handler); |
| 610 | return 0; | ||
| 611 | } | 610 | } |
| 612 | 611 | ||
| 613 | static void __exit joydev_exit(void) | 612 | static void __exit joydev_exit(void) |
diff --git a/drivers/input/mousedev.c b/drivers/input/mousedev.c index cd02f1b62b66..a22a74a2a3dc 100644 --- a/drivers/input/mousedev.c +++ b/drivers/input/mousedev.c | |||
| @@ -738,7 +738,12 @@ static int psaux_registered; | |||
| 738 | 738 | ||
| 739 | static int __init mousedev_init(void) | 739 | static int __init mousedev_init(void) |
| 740 | { | 740 | { |
| 741 | input_register_handler(&mousedev_handler); | 741 | struct class_device *cdev; |
| 742 | int error; | ||
| 743 | |||
| 744 | error = input_register_handler(&mousedev_handler); | ||
| 745 | if (error) | ||
| 746 | return error; | ||
| 742 | 747 | ||
| 743 | memset(&mousedev_mix, 0, sizeof(struct mousedev)); | 748 | memset(&mousedev_mix, 0, sizeof(struct mousedev)); |
| 744 | INIT_LIST_HEAD(&mousedev_mix.list); | 749 | INIT_LIST_HEAD(&mousedev_mix.list); |
| @@ -747,12 +752,20 @@ static int __init mousedev_init(void) | |||
| 747 | mousedev_mix.exist = 1; | 752 | mousedev_mix.exist = 1; |
| 748 | mousedev_mix.minor = MOUSEDEV_MIX; | 753 | mousedev_mix.minor = MOUSEDEV_MIX; |
| 749 | 754 | ||
| 750 | class_device_create(&input_class, NULL, | 755 | cdev = class_device_create(&input_class, NULL, |
| 751 | MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + MOUSEDEV_MIX), NULL, "mice"); | 756 | MKDEV(INPUT_MAJOR, MOUSEDEV_MINOR_BASE + MOUSEDEV_MIX), NULL, "mice"); |
| 757 | if (IS_ERR(cdev)) { | ||
| 758 | input_unregister_handler(&mousedev_handler); | ||
| 759 | return PTR_ERR(cdev); | ||
| 760 | } | ||
| 752 | 761 | ||
| 753 | #ifdef CONFIG_INPUT_MOUSEDEV_PSAUX | 762 | #ifdef CONFIG_INPUT_MOUSEDEV_PSAUX |
| 754 | if (!(psaux_registered = !misc_register(&psaux_mouse))) | 763 | error = misc_register(&psaux_mouse); |
| 755 | printk(KERN_WARNING "mice: could not misc_register the device\n"); | 764 | if (error) |
| 765 | printk(KERN_WARNING "mice: could not register psaux device, " | ||
| 766 | "error: %d\n", error); | ||
| 767 | else | ||
| 768 | psaux_registered = 1; | ||
| 756 | #endif | 769 | #endif |
| 757 | 770 | ||
| 758 | printk(KERN_INFO "mice: PS/2 mouse device common for all mice\n"); | 771 | printk(KERN_INFO "mice: PS/2 mouse device common for all mice\n"); |
diff --git a/drivers/input/power.c b/drivers/input/power.c index 75d018759cd5..ee82464a2fa7 100644 --- a/drivers/input/power.c +++ b/drivers/input/power.c | |||
| @@ -150,8 +150,7 @@ static struct input_handler power_handler = { | |||
| 150 | 150 | ||
| 151 | static int __init power_init(void) | 151 | static int __init power_init(void) |
| 152 | { | 152 | { |
| 153 | input_register_handler(&power_handler); | 153 | return input_register_handler(&power_handler); |
| 154 | return 0; | ||
| 155 | } | 154 | } |
| 156 | 155 | ||
| 157 | static void __exit power_exit(void) | 156 | static void __exit power_exit(void) |
diff --git a/drivers/input/tsdev.c b/drivers/input/tsdev.c index 162ee08223a9..a730c461227f 100644 --- a/drivers/input/tsdev.c +++ b/drivers/input/tsdev.c | |||
| @@ -479,9 +479,7 @@ static struct input_handler tsdev_handler = { | |||
| 479 | 479 | ||
| 480 | static int __init tsdev_init(void) | 480 | static int __init tsdev_init(void) |
| 481 | { | 481 | { |
| 482 | input_register_handler(&tsdev_handler); | 482 | return input_register_handler(&tsdev_handler); |
| 483 | printk(KERN_INFO "ts: Compaq touchscreen protocol output\n"); | ||
| 484 | return 0; | ||
| 485 | } | 483 | } |
| 486 | 484 | ||
| 487 | static void __exit tsdev_exit(void) | 485 | static void __exit tsdev_exit(void) |
diff --git a/include/linux/input.h b/include/linux/input.h index 155b2bc96842..7025432350fa 100644 --- a/include/linux/input.h +++ b/include/linux/input.h | |||
| @@ -1106,7 +1106,7 @@ static inline void input_put_device(struct input_dev *dev) | |||
| 1106 | int input_register_device(struct input_dev *); | 1106 | int input_register_device(struct input_dev *); |
| 1107 | void input_unregister_device(struct input_dev *); | 1107 | void input_unregister_device(struct input_dev *); |
| 1108 | 1108 | ||
| 1109 | void input_register_handler(struct input_handler *); | 1109 | int input_register_handler(struct input_handler *); |
| 1110 | void input_unregister_handler(struct input_handler *); | 1110 | void input_unregister_handler(struct input_handler *); |
| 1111 | 1111 | ||
| 1112 | int input_grab_device(struct input_handle *); | 1112 | int input_grab_device(struct input_handle *); |
