[PATCH 1/6] HID: hid-input: Add offhook and ring LEDs for headsets

From: Maxim Mikityanskiy
Date: Sat Jul 03 2021 - 18:04:37 EST


A lot of USBHID headsets available on the market have LEDs that indicate
ringing and off-hook states when used with VoIP applications. This
commit exposes these LEDs via the standard sysfs interface.

Signed-off-by: Maxim Mikityanskiy <maxtram95@xxxxxxxxx>
---
drivers/hid/hid-input.c | 2 ++
drivers/input/input-leds.c | 2 ++
include/uapi/linux/input-event-codes.h | 2 ++
3 files changed, 6 insertions(+)

diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
index 4286a51f7f16..44b8243f9924 100644
--- a/drivers/hid/hid-input.c
+++ b/drivers/hid/hid-input.c
@@ -798,6 +798,8 @@ static void hidinput_configure_usage(struct hid_input *hidinput, struct hid_fiel
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" */
+ case 0x17: map_led (LED_OFFHOOK); break; /* "Off-Hook" */
+ case 0x18: map_led (LED_RING); break; /* "Ring" */

default: goto ignore;
}
diff --git a/drivers/input/input-leds.c b/drivers/input/input-leds.c
index 0b11990ade46..bc6e25b9af25 100644
--- a/drivers/input/input-leds.c
+++ b/drivers/input/input-leds.c
@@ -33,6 +33,8 @@ static const struct {
[LED_MISC] = { "misc" },
[LED_MAIL] = { "mail" },
[LED_CHARGING] = { "charging" },
+ [LED_OFFHOOK] = { "offhook" },
+ [LED_RING] = { "ring" },
};

struct input_led {
diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
index 225ec87d4f22..dd785a5b5076 100644
--- a/include/uapi/linux/input-event-codes.h
+++ b/include/uapi/linux/input-event-codes.h
@@ -925,6 +925,8 @@
#define LED_MISC 0x08
#define LED_MAIL 0x09
#define LED_CHARGING 0x0a
+#define LED_OFFHOOK 0x0b
+#define LED_RING 0x0c
#define LED_MAX 0x0f
#define LED_CNT (LED_MAX+1)

--
2.32.0