Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 945ef0d4 authored by Dmitry Torokhov's avatar Dmitry Torokhov
Browse files

Input: i8042 - add i8042.nokbd module option to allow supressing


       creation of keyboard port.

Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent c3d31e7f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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
+3 −1
Original line number Diff line number Diff line
@@ -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;
	}
+18 −4
Original line number Diff line number Diff line
@@ -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;
	}

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