|
Takashi Iwai |
395498 |
From 29f316a1d7e0a570be9a47fa283ece53a67cebb7 Mon Sep 17 00:00:00 2001
|
|
Takashi Iwai |
395498 |
From: Takahiro Fujii <fujii@xaxxi.net>
|
|
Takashi Iwai |
395498 |
Date: Fri, 20 Jan 2023 03:30:02 +0900
|
|
Takashi Iwai |
395498 |
Subject: [PATCH] HID: elecom: add support for TrackBall 056E:011C
|
|
Takashi Iwai |
395498 |
Git-commit: 29f316a1d7e0a570be9a47fa283ece53a67cebb7
|
|
Takashi Iwai |
395498 |
Patch-mainline: v6.2-rc8
|
|
Takashi Iwai |
395498 |
References: git-fixes
|
|
Takashi Iwai |
395498 |
|
|
Takashi Iwai |
395498 |
Make function buttons on ELECOM M-HT1DRBK trackball mouse work. This model
|
|
Takashi Iwai |
395498 |
has two devices with different device IDs (010D and 011C). Both of
|
|
Takashi Iwai |
395498 |
them misreports the number of buttons as 5 in the report descriptor, even
|
|
Takashi Iwai |
395498 |
though they have 8 buttons. hid-elecom overwrites the report to fix them,
|
|
Takashi Iwai |
395498 |
but supports only on 010D and does not work on 011C. This patch fixes
|
|
Takashi Iwai |
395498 |
011C in the similar way but with specialized position parameters.
|
|
Takashi Iwai |
395498 |
In fact, it is sufficient to rewrite only 17th byte (05 -> 08). However I
|
|
Takashi Iwai |
395498 |
followed the existing way.
|
|
Takashi Iwai |
395498 |
|
|
Takashi Iwai |
395498 |
Signed-off-by: Takahiro Fujii <fujii@xaxxi.net>
|
|
Takashi Iwai |
395498 |
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
|
|
Takashi Iwai |
395498 |
Acked-by: Takashi Iwai <tiwai@suse.de>
|
|
Takashi Iwai |
395498 |
|
|
Takashi Iwai |
395498 |
---
|
|
Takashi Iwai |
395498 |
drivers/hid/hid-elecom.c | 16 ++++++++++++++--
|
|
Takashi Iwai |
395498 |
drivers/hid/hid-ids.h | 3 ++-
|
|
Takashi Iwai |
395498 |
drivers/hid/hid-quirks.c | 3 ++-
|
|
Takashi Iwai |
395498 |
3 files changed, 18 insertions(+), 4 deletions(-)
|
|
Takashi Iwai |
395498 |
|
|
Takashi Iwai |
395498 |
diff --git a/drivers/hid/hid-elecom.c b/drivers/hid/hid-elecom.c
|
|
Takashi Iwai |
395498 |
index e59e9911fc37..4fa45ee77503 100644
|
|
Takashi Iwai |
395498 |
--- a/drivers/hid/hid-elecom.c
|
|
Takashi Iwai |
395498 |
+++ b/drivers/hid/hid-elecom.c
|
|
Takashi Iwai |
395498 |
@@ -12,6 +12,7 @@
|
|
Takashi Iwai |
395498 |
* Copyright (c) 2017 Alex Manoussakis <amanou@gnu.org>
|
|
Takashi Iwai |
395498 |
* Copyright (c) 2017 Tomasz Kramkowski <tk@the-tk.com>
|
|
Takashi Iwai |
395498 |
* Copyright (c) 2020 YOSHIOKA Takuma <lo48576@hard-wi.red>
|
|
Takashi Iwai |
395498 |
+ * Copyright (c) 2022 Takahiro Fujii <fujii@xaxxi.net>
|
|
Takashi Iwai |
395498 |
*/
|
|
Takashi Iwai |
395498 |
|
|
Takashi Iwai |
395498 |
/*
|
|
Takashi Iwai |
395498 |
@@ -89,7 +90,7 @@ static __u8 *elecom_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
|
Takashi Iwai |
395498 |
case USB_DEVICE_ID_ELECOM_M_DT1URBK:
|
|
Takashi Iwai |
395498 |
case USB_DEVICE_ID_ELECOM_M_DT1DRBK:
|
|
Takashi Iwai |
395498 |
case USB_DEVICE_ID_ELECOM_M_HT1URBK:
|
|
Takashi Iwai |
395498 |
- case USB_DEVICE_ID_ELECOM_M_HT1DRBK:
|
|
Takashi Iwai |
395498 |
+ case USB_DEVICE_ID_ELECOM_M_HT1DRBK_010D:
|
|
Takashi Iwai |
395498 |
/*
|
|
Takashi Iwai |
395498 |
* Report descriptor format:
|
|
Takashi Iwai |
395498 |
* 12: button bit count
|
|
Takashi Iwai |
395498 |
@@ -99,6 +100,16 @@ static __u8 *elecom_report_fixup(struct hid_device *hdev, __u8 *rdesc,
|
|
Takashi Iwai |
395498 |
*/
|
|
Takashi Iwai |
395498 |
mouse_button_fixup(hdev, rdesc, *rsize, 12, 30, 14, 20, 8);
|
|
Takashi Iwai |
395498 |
break;
|
|
Takashi Iwai |
395498 |
+ case USB_DEVICE_ID_ELECOM_M_HT1DRBK_011C:
|
|
Takashi Iwai |
395498 |
+ /*
|
|
Takashi Iwai |
395498 |
+ * Report descriptor format:
|
|
Takashi Iwai |
395498 |
+ * 22: button bit count
|
|
Takashi Iwai |
395498 |
+ * 30: padding bit count
|
|
Takashi Iwai |
395498 |
+ * 24: button report size
|
|
Takashi Iwai |
395498 |
+ * 16: button usage maximum
|
|
Takashi Iwai |
395498 |
+ */
|
|
Takashi Iwai |
395498 |
+ mouse_button_fixup(hdev, rdesc, *rsize, 22, 30, 24, 16, 8);
|
|
Takashi Iwai |
395498 |
+ break;
|
|
Takashi Iwai |
395498 |
}
|
|
Takashi Iwai |
395498 |
return rdesc;
|
|
Takashi Iwai |
395498 |
}
|
|
Takashi Iwai |
395498 |
@@ -112,7 +123,8 @@ static const struct hid_device_id elecom_devices[] = {
|
|
Takashi Iwai |
395498 |
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT1URBK) },
|
|
Takashi Iwai |
395498 |
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT1DRBK) },
|
|
Takashi Iwai |
395498 |
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1URBK) },
|
|
Takashi Iwai |
395498 |
- { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK) },
|
|
Takashi Iwai |
395498 |
+ { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK_010D) },
|
|
Takashi Iwai |
395498 |
+ { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK_011C) },
|
|
Takashi Iwai |
395498 |
{ }
|
|
Takashi Iwai |
395498 |
};
|
|
Takashi Iwai |
395498 |
MODULE_DEVICE_TABLE(hid, elecom_devices);
|
|
Takashi Iwai |
395498 |
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
|
|
Takashi Iwai |
395498 |
index 0f8c11842a3a..d01d798ebedc 100644
|
|
Takashi Iwai |
395498 |
--- a/drivers/hid/hid-ids.h
|
|
Takashi Iwai |
395498 |
+++ b/drivers/hid/hid-ids.h
|
|
Takashi Iwai |
395498 |
@@ -428,7 +428,8 @@
|
|
Takashi Iwai |
395498 |
#define USB_DEVICE_ID_ELECOM_M_DT1URBK 0x00fe
|
|
Takashi Iwai |
395498 |
#define USB_DEVICE_ID_ELECOM_M_DT1DRBK 0x00ff
|
|
Takashi Iwai |
395498 |
#define USB_DEVICE_ID_ELECOM_M_HT1URBK 0x010c
|
|
Takashi Iwai |
395498 |
-#define USB_DEVICE_ID_ELECOM_M_HT1DRBK 0x010d
|
|
Takashi Iwai |
395498 |
+#define USB_DEVICE_ID_ELECOM_M_HT1DRBK_010D 0x010d
|
|
Takashi Iwai |
395498 |
+#define USB_DEVICE_ID_ELECOM_M_HT1DRBK_011C 0x011c
|
|
Takashi Iwai |
395498 |
|
|
Takashi Iwai |
395498 |
#define USB_VENDOR_ID_DREAM_CHEEKY 0x1d34
|
|
Takashi Iwai |
395498 |
#define USB_DEVICE_ID_DREAM_CHEEKY_WN 0x0004
|
|
Takashi Iwai |
395498 |
diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c
|
|
Takashi Iwai |
395498 |
index be3ad02573de..5bc91f68b374 100644
|
|
Takashi Iwai |
395498 |
--- a/drivers/hid/hid-quirks.c
|
|
Takashi Iwai |
395498 |
+++ b/drivers/hid/hid-quirks.c
|
|
Takashi Iwai |
395498 |
@@ -393,7 +393,8 @@ static const struct hid_device_id hid_have_special_driver[] = {
|
|
Takashi Iwai |
395498 |
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT1URBK) },
|
|
Takashi Iwai |
395498 |
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_DT1DRBK) },
|
|
Takashi Iwai |
395498 |
{ HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1URBK) },
|
|
Takashi Iwai |
395498 |
- { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK) },
|
|
Takashi Iwai |
395498 |
+ { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK_010D) },
|
|
Takashi Iwai |
395498 |
+ { HID_USB_DEVICE(USB_VENDOR_ID_ELECOM, USB_DEVICE_ID_ELECOM_M_HT1DRBK_011C) },
|
|
Takashi Iwai |
395498 |
#endif
|
|
Takashi Iwai |
395498 |
#if IS_ENABLED(CONFIG_HID_ELO)
|
|
Takashi Iwai |
395498 |
{ HID_USB_DEVICE(USB_VENDOR_ID_ELO, 0x0009) },
|
|
Takashi Iwai |
395498 |
--
|
|
Takashi Iwai |
395498 |
2.35.3
|
|
Takashi Iwai |
395498 |
|