Input: userio - allow setting other id values

Previously, only the type value was settable. The proto value is used
internally for choosing the right drivers, so we should expose it. The
other values make sense to expose as well.

Signed-off-by: Vicki Pfau <vi@endrift.com>
Link: https://patch.msgid.link/20260522015040.3953472-2-vi@endrift.com
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
This commit is contained in:
Vicki Pfau 2026-05-21 18:50:40 -07:00 committed by Dmitry Torokhov
parent 37340ac2c7
commit c6f1363abb
3 changed files with 55 additions and 3 deletions

View File

@ -66,8 +66,27 @@ USERIO_CMD_SET_PORT_TYPE
~~~~~~~~~~~~~~~~~~~~~~~~
Sets the type of port we're emulating, where ``data`` is the port type being
set. Can be any of the macros from <linux/serio.h>. For example: SERIO_8042
would set the port type to be a normal PS/2 port.
set. Can be any of the serio type macros from <linux/serio.h>. For example:
SERIO_8042 would set the port type to be a normal PS/2 port.
USERIO_CMD_SET_PORT_PROTO
~~~~~~~~~~~~~~~~~~~~~~~~~
Sets the protocol of port we're emulating, where ``data`` is the protocol being
set. Can be any of the serio proto macros from <linux/serio.h>. For example:
SERIO_IFORCE would set the port type to be an I-Force serial joystick.
USERIO_CMD_SET_PORT_ID
~~~~~~~~~~~~~~~~~~~~~~
Sets the ``id`` value on the identification of port we're emulating, where
``data`` is the value being set.
USERIO_CMD_SET_PORT_EXTRA
~~~~~~~~~~~~~~~~~~~~~~~~~
Sets the ``extra`` value on the identification of port we're emulating, where
``data`` is the value being set.
USERIO_CMD_SEND_INTERRUPT
~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@ -206,6 +206,36 @@ static int userio_execute_cmd(struct userio_device *userio,
userio->serio->id.type = cmd->data;
break;
case USERIO_CMD_SET_PORT_EXTRA:
if (userio->running) {
dev_warn(userio_misc.this_device,
"Can't change port extra on an already running userio instance\n");
return -EBUSY;
}
userio->serio->id.extra = cmd->data;
break;
case USERIO_CMD_SET_PORT_ID:
if (userio->running) {
dev_warn(userio_misc.this_device,
"Can't change port id on an already running userio instance\n");
return -EBUSY;
}
userio->serio->id.id = cmd->data;
break;
case USERIO_CMD_SET_PORT_PROTO:
if (userio->running) {
dev_warn(userio_misc.this_device,
"Can't change port proto on an already running userio instance\n");
return -EBUSY;
}
userio->serio->id.proto = cmd->data;
break;
case USERIO_CMD_SEND_INTERRUPT:
if (!userio->running) {
dev_warn(userio_misc.this_device,

View File

@ -27,7 +27,10 @@
enum userio_cmd_type {
USERIO_CMD_REGISTER = 0,
USERIO_CMD_SET_PORT_TYPE = 1,
USERIO_CMD_SEND_INTERRUPT = 2
USERIO_CMD_SEND_INTERRUPT = 2,
USERIO_CMD_SET_PORT_EXTRA = 3,
USERIO_CMD_SET_PORT_ID = 4,
USERIO_CMD_SET_PORT_PROTO = 5,
};
/*