From: ait <ait@ait.place>
To: ait@ait.place
Cc: Jonathan Jansen <jonathanjansen@ait.place>,
Jiri Kosina <jikos@kernel.org>,
Benjamin Tissoires <bentiss@kernel.org>,
Dmitry Torokhov <dmitry.torokhov@gmail.com>,
linux-input@vger.kernel.org, linux-api@vger.kernel.org,
Your Name <you@example.com>
Subject: [PATCH] HID: input: map System Microphone Mute LED
Date: Fri, 4 Sep 2026 04:29:03 +0200 [thread overview]
Message-ID: <20260904022903.607880-1-ait@ait.place> (raw)
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
next reply other threads:[~2026-09-04 2:44 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-04 2:29 ait [this message]
2026-09-04 4:47 ` [PATCH v2] HID: input: map System Microphone Mute LED Jonathan Jansen
2026-09-11 15:58 ` Jiri Kosina
2026-09-11 16:36 ` Dmitry Torokhov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260904022903.607880-1-ait@ait.place \
--to=ait@ait.place \
--cc=bentiss@kernel.org \
--cc=dmitry.torokhov@gmail.com \
--cc=jikos@kernel.org \
--cc=jonathanjansen@ait.place \
--cc=linux-api@vger.kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=you@example.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.