Re: [RFC/RFT] Raw access to serio ports (2/2)

From: Dmitry Torokhov
Date: Wed Jun 02 2004 - 02:22:16 EST



===================================================================


ChangeSet@xxxxxx, 2004-06-02 02:00:12-05:00, dtor_core@xxxxxxxxxxxxx
Input: add i8042.raw option to mark AUX ports as raw so they can be
bound to rawdev device.

Signed-off-by: Dmitry Torokhov <dtor@xxxxxxx>


Documentation/kernel-parameters.txt | 2 ++
drivers/input/serio/i8042.c | 15 +++++++++++++--
2 files changed, 15 insertions(+), 2 deletions(-)


===================================================================



diff -Nru a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
--- a/Documentation/kernel-parameters.txt 2004-06-02 02:15:49 -05:00
+++ b/Documentation/kernel-parameters.txt 2004-06-02 02:15:49 -05:00
@@ -464,6 +464,8 @@
i8042.noaux [HW] Don't check for auxiliary (== mouse) port
i8042.nomux [HW] Don't check presence of an active multiplexing
controller
+ i8042.raw [HW] Specifies which AUX ports should be marked as raw
+ Format: <aux1>,<aux2>,<aux3>,<aux4>
i8042.reset [HW] Reset the controller during init and cleanup
i8042.unlock [HW] Unlock (ignore) the keylock

diff -Nru a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c
--- a/drivers/input/serio/i8042.c 2004-06-02 02:15:49 -05:00
+++ b/drivers/input/serio/i8042.c 2004-06-02 02:15:49 -05:00
@@ -52,6 +52,11 @@
module_param_named(dumbkbd, i8042_dumbkbd, bool, 0);
MODULE_PARM_DESC(dumbkbd, "Pretend that controller can only read data from keyboard");

+static unsigned int i8042_aux_raw[4];
+static unsigned int i8042_aux_raw_nargs;
+module_param_array_named(raw, i8042_aux_raw, bool, i8042_aux_raw_nargs, 0);
+MODULE_PARM_DESC(raw, "Specifies which AUX ports should be marked as RAW");
+
__obsolete_setup("i8042_noaux");
__obsolete_setup("i8042_nomux");
__obsolete_setup("i8042_unlock");
@@ -652,8 +657,9 @@
return -1;
}

- printk(KERN_INFO "serio: i8042 %s port at %#lx,%#lx irq %d\n",
+ printk(KERN_INFO "serio: i8042 %s port%s at %#lx,%#lx irq %d\n",
values->name,
+ port->type == SERIO_8042_RAW ? " (raw)" : "",
(unsigned long) I8042_DATA_REG,
(unsigned long) I8042_COMMAND_REG,
values->irq);
@@ -940,6 +946,8 @@
sprintf(i8042_mux_names[index], "i8042 Aux-%d Port", index);
sprintf(i8042_mux_phys[index], I8042_MUX_PHYS_DESC, index + 1);
sprintf(i8042_mux_short[index], "AUX%d", index);
+ if (i8042_aux_raw[index])
+ port->type = SERIO_8042_RAW;
port->name = i8042_mux_names[index];
port->phys = i8042_mux_phys[index];
port->driver = values;
@@ -974,8 +982,11 @@
i8042_init_mux_values(i8042_mux_values + i, i8042_mux_port + i, i);
i8042_port_register(i8042_mux_values + i, i8042_mux_port + i);
}
- else
+ else {
+ if (i8042_aux_raw[0])
+ i8042_aux_port.type = SERIO_8042_RAW;
i8042_port_register(&i8042_aux_values, &i8042_aux_port);
+ }
}

i8042_port_register(&i8042_kbd_values, &i8042_kbd_port);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/