* [PATCH] HID: input: map System Microphone Mute LED
@ 2026-09-04 2:29 ait
2026-09-04 4:47 ` [PATCH v2] " Jonathan Jansen
0 siblings, 1 reply; 4+ messages in thread
From: ait @ 2026-09-04 2:29 UTC (permalink / raw)
To: ait
Cc: Jonathan Jansen, Jiri Kosina, Benjamin Tissoires, Dmitry Torokhov,
linux-input, linux-api, Your Name
From: Jonathan Jansen <jonathanjansen@ait.place>
HUTRR110 (approved 2022, part of HID Usage Tables since v1.4) defines:
Generic Desktop (0x01) 0xa9 System Microphone Mute OOC (input)
LED Page (0x08) 0x57 System Microphone Mute OOC (output)
The input usage already maps to KEY_MICMUTE, so the button works on
HUTRR110 devices. The LED output usage is ignored, though, so the
indicator stays dark and userspace depends on per-vendor hacks
(hid-lenovo, hid-lg-g15, hid-playstation, hid-plantronics) or platform
drivers instead.
Map LED page usage 0x57 to a new LED_MICMUTE input LED. It shows up
as /sys/class/leds/inputN::micmute with the "audio-micmute" trigger
that snd-ctl-led registers, so the LED tracks the audio stack's
system-wide microphone mute state, like the existing "Mute" (LED page
0x09) mapping does for speaker mute.
LED_MICMUTE takes the next free input LED code (0x0b, below LED_MAX
0x0f), so nothing existing breaks.
Link: https://www.usb.org/sites/default/files/hutrr110-systemmicrophonemute.pdf
Cc: Jiri Kosina <jikos@kernel.org>
Cc: Benjamin Tissoires <bentiss@kernel.org>
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: linux-input@vger.kernel.org
Cc: linux-api@vger.kernel.org
Signed-off-by: Your Name <you@example.com>
---
drivers/hid/hid-debug.c | 2 +-
drivers/hid/hid-input.c | 1 +
drivers/input/input-leds.c | 1 +
include/uapi/linux/input-event-codes.h | 1 +
4 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/hid/hid-debug.c b/drivers/hid/hid-debug.c
index f44e6e708..92a950105 100644
--- a/drivers/hid/hid-debug.c
+++ b/drivers/hid/hid-debug.c
@@ -3550,7 +3550,7 @@ static const char *leds[LED_MAX + 1] = {
[LED_KANA] = "Kana", [LED_SLEEP] = "Sleep",
[LED_SUSPEND] = "Suspend", [LED_MUTE] = "Mute",
[LED_MISC] = "Misc", [LED_MAIL] = "Mail",
- [LED_CHARGING] = "Charging",
+ [LED_CHARGING] = "Charging", [LED_MICMUTE] = "Mic Mute",
};
static const char *repeats[REP_MAX + 1] = {
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
index edd6bbf83..727374dd5 100644
--- a/drivers/hid/hid-input.c
+++ b/drivers/hid/hid-input.c
@@ -990,6 +990,7 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
case 0x27: map_led (LED_SLEEP); break; /* "Stand-By" */
case 0x4c: map_led (LED_SUSPEND); break; /* "System Suspend" */
case 0x09: map_led (LED_MUTE); break; /* "Mute" */
+ case 0x57: map_led (LED_MICMUTE); break; /* "System Microphone Mute" */
case 0x4b: map_led (LED_MISC); break; /* "Generic Indicator" */
case 0x19: map_led (LED_MAIL); break; /* "Message Waiting" */
case 0x4d: map_led (LED_CHARGING); break; /* "External Power Connected" */
diff --git a/drivers/input/input-leds.c b/drivers/input/input-leds.c
index b08d1d08d..6522079a4 100644
--- a/drivers/input/input-leds.c
+++ b/drivers/input/input-leds.c
@@ -36,6 +36,7 @@ static const struct {
[LED_SLEEP] = { "sleep" } ,
[LED_SUSPEND] = { "suspend" },
[LED_MUTE] = { "mute", AUDIO_TRIGGER("audio-mute") },
+ [LED_MICMUTE] = { "micmute", AUDIO_TRIGGER("audio-micmute") },
[LED_MISC] = { "misc" },
[LED_MAIL] = { "mail" },
[LED_CHARGING] = { "charging" },
diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
index 3528168f7..bc374821c 100644
--- a/include/uapi/linux/input-event-codes.h
+++ b/include/uapi/linux/input-event-codes.h
@@ -983,6 +983,7 @@
#define LED_MISC 0x08
#define LED_MAIL 0x09
#define LED_CHARGING 0x0a
+#define LED_MICMUTE 0x0b
#define LED_MAX 0x0f
#define LED_CNT (LED_MAX+1)
--
2.51.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v2] HID: input: map System Microphone Mute LED
2026-09-04 2:29 [PATCH] HID: input: map System Microphone Mute LED ait
@ 2026-09-04 4:47 ` Jonathan Jansen
2026-09-11 15:58 ` Jiri Kosina
0 siblings, 1 reply; 4+ messages in thread
From: Jonathan Jansen @ 2026-09-04 4:47 UTC (permalink / raw)
To: linux-input
Cc: linux-kernel, jikos, bentiss, dmitry.torokhov, linux-api,
jonathanjansen
HUTRR110 defines LED page usage 0x57 as System Microphone Mute.
The usage is currently ignored, so the indicator stays dark and
userspace falls back to per-vendor code in hid-lenovo,
hid-playstation, hid-plantronics.
Map it to a new LED_MICMUTE. It appears as
/sys/class/leds/inputN::micmute and uses the "audio-micmute"
trigger from snd-ctl-led, so the LED follows the system-wide
mic mute state the same way LED_MUTE (page 0x09) already does
for speaker mute.
LED_MICMUTE takes the next free code (0x0b).
Link: https://www.usb.org/sites/default/files/hutrr110-systemmicrophonemute.pdf
Signed-off-by: Jonathan Jansen <jonathanjansen@ait.place>
---
Notes:
Changes since v1: rewrote the commit message; no functional changes.
drivers/hid/hid-debug.c | 2 +-
drivers/hid/hid-input.c | 1 +
drivers/input/input-leds.c | 1 +
include/uapi/linux/input-event-codes.h | 1 +
4 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/hid/hid-debug.c b/drivers/hid/hid-debug.c
index f44e6e708..92a950105 100644
--- a/drivers/hid/hid-debug.c
+++ b/drivers/hid/hid-debug.c
@@ -3550,7 +3550,7 @@ static const char *leds[LED_MAX + 1] = {
[LED_KANA] = "Kana", [LED_SLEEP] = "Sleep",
[LED_SUSPEND] = "Suspend", [LED_MUTE] = "Mute",
[LED_MISC] = "Misc", [LED_MAIL] = "Mail",
- [LED_CHARGING] = "Charging",
+ [LED_CHARGING] = "Charging", [LED_MICMUTE] = "Mic Mute",
};
static const char *repeats[REP_MAX + 1] = {
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
index edd6bbf83..727374dd5 100644
--- a/drivers/hid/hid-input.c
+++ b/drivers/hid/hid-input.c
@@ -990,6 +990,7 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
case 0x27: map_led (LED_SLEEP); break; /* "Stand-By" */
case 0x4c: map_led (LED_SUSPEND); break; /* "System Suspend" */
case 0x09: map_led (LED_MUTE); break; /* "Mute" */
+ case 0x57: map_led (LED_MICMUTE); break; /* "System Microphone Mute" */
case 0x4b: map_led (LED_MISC); break; /* "Generic Indicator" */
case 0x19: map_led (LED_MAIL); break; /* "Message Waiting" */
case 0x4d: map_led (LED_CHARGING); break; /* "External Power Connected" */
diff --git a/drivers/input/input-leds.c b/drivers/input/input-leds.c
index b08d1d08d..6522079a4 100644
--- a/drivers/input/input-leds.c
+++ b/drivers/input/input-leds.c
@@ -36,6 +36,7 @@ static const struct {
[LED_SLEEP] = { "sleep" } ,
[LED_SUSPEND] = { "suspend" },
[LED_MUTE] = { "mute", AUDIO_TRIGGER("audio-mute") },
+ [LED_MICMUTE] = { "micmute", AUDIO_TRIGGER("audio-micmute") },
[LED_MISC] = { "misc" },
[LED_MAIL] = { "mail" },
[LED_CHARGING] = { "charging" },
diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
index 3528168f7..bc374821c 100644
--- a/include/uapi/linux/input-event-codes.h
+++ b/include/uapi/linux/input-event-codes.h
@@ -983,6 +983,7 @@
#define LED_MISC 0x08
#define LED_MAIL 0x09
#define LED_CHARGING 0x0a
+#define LED_MICMUTE 0x0b
#define LED_MAX 0x0f
#define LED_CNT (LED_MAX+1)
--
2.55.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v2] HID: input: map System Microphone Mute LED
2026-09-04 4:47 ` [PATCH v2] " Jonathan Jansen
@ 2026-09-11 15:58 ` Jiri Kosina
2026-09-11 16:36 ` Dmitry Torokhov
0 siblings, 1 reply; 4+ messages in thread
From: Jiri Kosina @ 2026-09-11 15:58 UTC (permalink / raw)
To: Jonathan Jansen
Cc: linux-input, linux-kernel, bentiss, dmitry.torokhov, linux-api
On Fri, 4 Sep 2026, Jonathan Jansen wrote:
> HUTRR110 defines LED page usage 0x57 as System Microphone Mute.
>
> The usage is currently ignored, so the indicator stays dark and
> userspace falls back to per-vendor code in hid-lenovo,
> hid-playstation, hid-plantronics.
>
> Map it to a new LED_MICMUTE. It appears as
> /sys/class/leds/inputN::micmute and uses the "audio-micmute"
> trigger from snd-ctl-led, so the LED follows the system-wide
> mic mute state the same way LED_MUTE (page 0x09) already does
> for speaker mute.
>
> LED_MICMUTE takes the next free code (0x0b).
>
> Link: https://www.usb.org/sites/default/files/hutrr110-systemmicrophonemute.pdf
>
> Signed-off-by: Jonathan Jansen <jonathanjansen@ait.place>
> ---
>
> Notes:
> Changes since v1: rewrote the commit message; no functional changes.
>
> drivers/hid/hid-debug.c | 2 +-
> drivers/hid/hid-input.c | 1 +
Acked-by: Jiri Kosina <jkosina@suse.com>
for the drivers/hid changes.
Dmitry, will you take this through your tree, please?
Thanks,
--
Jiri Kosina
SUSE Labs
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2] HID: input: map System Microphone Mute LED
2026-09-11 15:58 ` Jiri Kosina
@ 2026-09-11 16:36 ` Dmitry Torokhov
0 siblings, 0 replies; 4+ messages in thread
From: Dmitry Torokhov @ 2026-09-11 16:36 UTC (permalink / raw)
To: Jiri Kosina
Cc: Jonathan Jansen, linux-input, linux-kernel, bentiss, linux-api
On Fri, Sep 11, 2026 at 05:58:24PM +0200, Jiri Kosina wrote:
> On Fri, 4 Sep 2026, Jonathan Jansen wrote:
>
> > HUTRR110 defines LED page usage 0x57 as System Microphone Mute.
> >
> > The usage is currently ignored, so the indicator stays dark and
> > userspace falls back to per-vendor code in hid-lenovo,
> > hid-playstation, hid-plantronics.
> >
> > Map it to a new LED_MICMUTE. It appears as
> > /sys/class/leds/inputN::micmute and uses the "audio-micmute"
> > trigger from snd-ctl-led, so the LED follows the system-wide
> > mic mute state the same way LED_MUTE (page 0x09) already does
> > for speaker mute.
> >
> > LED_MICMUTE takes the next free code (0x0b).
> >
> > Link: https://www.usb.org/sites/default/files/hutrr110-systemmicrophonemute.pdf
> >
> > Signed-off-by: Jonathan Jansen <jonathanjansen@ait.place>
> > ---
> >
> > Notes:
> > Changes since v1: rewrote the commit message; no functional changes.
> >
> > drivers/hid/hid-debug.c | 2 +-
> > drivers/hid/hid-input.c | 1 +
>
> Acked-by: Jiri Kosina <jkosina@suse.com>
>
> for the drivers/hid changes.
>
> Dmitry, will you take this through your tree, please?
Hi Jiri, Jonathan,
Sorry but we should not add any new LED definitions to input since we
have proper LED subsystem now. The existing LED definitions are strictly
legacy now and input core has a bridge to LEDs (in input-leds.c).
I see we had similar submissions in '23 and '24 at the very least. I
should add a comment to that effect to input-event-codes.h.
Thanks.
--
Dmitry
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-09-11 16:37 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-04 2:29 [PATCH] HID: input: map System Microphone Mute LED ait
2026-09-04 4:47 ` [PATCH v2] " Jonathan Jansen
2026-09-11 15:58 ` Jiri Kosina
2026-09-11 16:36 ` Dmitry Torokhov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox