Input: initialize serio and gameport at subsystem level
Serio and gameport cores do not depend on other drivers and are
used by code living outside of drivers/input/{gameport|serio}.
Registering them at subsystem level guarantees that they are
fully initialized before anyone tries to use them.
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
diff --git a/drivers/Makefile b/drivers/Makefile
index 5c69b86..6495411 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -25,9 +25,6 @@
obj-$(CONFIG_FB_I810) += video/i810/
obj-$(CONFIG_FB_INTEL) += video/intelfb/
-# we also need input/serio early so serio bus is initialized by the time
-# serial drivers start registering their serio ports
-obj-$(CONFIG_SERIO) += input/serio/
obj-y += serial/
obj-$(CONFIG_PARPORT) += parport/
obj-y += base/ block/ misc/ mfd/ net/ media/
@@ -53,6 +50,7 @@
obj-$(CONFIG_USB) += usb/
obj-$(CONFIG_PCI) += usb/
obj-$(CONFIG_USB_GADGET) += usb/gadget/
+obj-$(CONFIG_SERIO) += input/serio/
obj-$(CONFIG_GAMEPORT) += input/gameport/
obj-$(CONFIG_INPUT) += input/
obj-$(CONFIG_I2O) += message/
diff --git a/drivers/input/gameport/gameport.c b/drivers/input/gameport/gameport.c
index 9444702..bcfd700 100644
--- a/drivers/input/gameport/gameport.c
+++ b/drivers/input/gameport/gameport.c
@@ -797,5 +797,5 @@
kthread_stop(gameport_task);
}
-module_init(gameport_init);
+subsys_initcall(gameport_init);
module_exit(gameport_exit);
diff --git a/drivers/input/serio/serio.c b/drivers/input/serio/serio.c
index 79e5e77..9666007 100644
--- a/drivers/input/serio/serio.c
+++ b/drivers/input/serio/serio.c
@@ -924,5 +924,5 @@
kthread_stop(serio_task);
}
-module_init(serio_init);
+subsys_initcall(serio_init);
module_exit(serio_exit);