Raw access to serio ports (2/2)
Subsystems (2)
===================================================================
[email protected], 2004-06-02 02:00:12-05:00, [email protected]
Input: add i8042.raw option to mark AUX ports as raw so they can be
bound to rawdev device.
Signed-off-by Dmitry Torokhov <[email protected]>
Documentation/kernel-parameters.txt | 2 ++ drivers/input/serio/i8042.c | 15 +++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-)
===================================================================
Documentation/kernel-parameters.txt +2 -0
@@ -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
drivers/input/serio/i8042.c +13 -2
@@ -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);