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 *); |