]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Input: i8042 - add i8042.nokbd module option to allow supressing
authorDmitry Torokhov <dtor_core@ameritech.net>
Sun, 4 Sep 2005 06:42:00 +0000 (01:42 -0500)
committerDmitry Torokhov <dtor_core@ameritech.net>
Sun, 4 Sep 2005 06:42:00 +0000 (01:42 -0500)
       creation of keyboard port.

Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Documentation/kernel-parameters.txt
drivers/input/serio/i8042-x86ia64io.h
drivers/input/serio/i8042.c

index 3d5cd7a09b2fc1aa56b6c197ee8d35df7116ec4d..111e98056195d05b59a83e6b88e4d4993ed52e91 100644 (file)
@@ -549,6 +549,7 @@ running once the system is up.
                             keyboard and can not control its state
                             (Don't attempt to blink the leds)
        i8042.noaux     [HW] Don't check for auxiliary (== mouse) port
+       i8042.nokbd     [HW] Don't check/create keyboard port
        i8042.nomux     [HW] Don't check presence of an active multiplexing
                             controller
        i8042.nopnp     [HW] Don't use ACPIPnP / PnPBIOS to discover KBD/AUX
index 84a73bc6afdc88fd7f18f46512dcaa8af2202409..d5ea3cf094694ecf08c4707ba78475520e864d19 100644 (file)
@@ -297,6 +297,8 @@ static int __init i8042_pnp_init(void)
                aux_irq_str);
 
 #if defined(__ia64__)
+       if (result_kbd <= 0)
+               i8042_nokbd = 1;
        if (result_aux <= 0)
                i8042_noaux = 1;
 #endif
@@ -315,7 +317,7 @@ static int __init i8042_pnp_init(void)
                i8042_pnp_command_reg = i8042_command_reg;
        }
 
-       if (!i8042_pnp_kbd_irq) {
+       if (!i8042_nokbd && !i8042_pnp_kbd_irq) {
                printk(KERN_WARNING "PNP: PS/2 controller doesn't have KBD irq; using default %d\n", i8042_kbd_irq);
                i8042_pnp_kbd_irq = i8042_kbd_irq;
        }
index 2a76d08c4d3e55f306bc704d398e611887e54612..19ef35db342eea38d5e6b0191e843db92e6da6ae 100644 (file)
@@ -27,6 +27,10 @@ MODULE_AUTHOR("Vojtech Pavlik <vojtech@suse.cz>");
 MODULE_DESCRIPTION("i8042 keyboard and mouse controller driver");
 MODULE_LICENSE("GPL");
 
+static unsigned int i8042_nokbd;
+module_param_named(nokbd, i8042_nokbd, bool, 0);
+MODULE_PARM_DESC(nokbd, "Do not probe or use KBD port.");
+
 static unsigned int i8042_noaux;
 module_param_named(noaux, i8042_noaux, bool, 0);
 MODULE_PARM_DESC(noaux, "Do not probe or use AUX (mouse) port.");
@@ -1058,7 +1062,7 @@ static int __init i8042_create_mux_port(int index)
 
 static int __init i8042_init(void)
 {
-       int i;
+       int i, have_ports = 0;
        int err;
 
        dbg_init();
@@ -1100,11 +1104,20 @@ static int __init i8042_init(void)
                        if (err)
                                goto err_unregister_ports;
                }
+               have_ports = 1;
        }
 
-       err = i8042_create_kbd_port();
-       if (err)
-               goto err_unregister_ports;
+       if (!i8042_nokbd) {
+               err = i8042_create_kbd_port();
+               if (err)
+                       goto err_unregister_ports;
+               have_ports = 1;
+       }
+
+       if (!have_ports) {
+               err = -ENODEV;
+               goto err_unregister_device;
+       }
 
        mod_timer(&i8042_timer, jiffies + I8042_POLL_PERIOD);
 
@@ -1114,6 +1127,7 @@ static int __init i8042_init(void)
        for (i = 0; i < I8042_NUM_PORTS; i++)
                if (i8042_ports[i].serio)
                        serio_unregister_port(i8042_ports[i].serio);
+ err_unregister_device:
        platform_device_unregister(i8042_platform_device);
  err_unregister_driver:
        driver_unregister(&i8042_driver);