[PATCH AUTOSEL 6.19-5.10] HID: multitouch: add eGalaxTouch EXC3188 support

Sasha Levin
2026-02-14T01:02:58Z

From: Thorsten Schmelzer <tschmelzer@topcon.com>

[ Upstream commit 8e4ac86b2ddd36fe501e20ecfcc080e536df1f48 ]

Add support for the for the EXC3188 touchscreen from eGalaxy.

Signed-off-by: Thorsten Schmelzer <tschmelzer@topcon.com>
Signed-off-by: Michael Tretter <m.tretter@pengutronix.de>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---

LLM Generated explanations, may be completely bogus:

## Analysis

### Commit Message Analysis

The commit adds support for the eGalaxTouch EXC3188 touchscreen device
by adding a new USB device ID (0xC000) to the existing HID multitouch
driver. The commit message is straightforward: "Add support for the
EXC3188 touchscreen from eGalaxy."

### Code Change Analysis

The changes are minimal and confined to two files:

1. **`drivers/hid/hid-ids.h`**: Adds a single `#define` for the new
device ID:
```c
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_C000 0xc000
```

2. **`drivers/hid/hid-multitouch.c`**: Adds a 3-line entry to the
`mt_devices[]` device ID table:
```c
{ .driver_data = MT_CLS_EGALAX_SERIAL,
MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_C000) },
```

The new device uses `MT_CLS_EGALAX_SERIAL`, which is an existing device
class already used by several other eGalax devices (A001, 73F7, 7349).
No new code paths, no new driver logic, no behavioral changes.

### Classification: New Device ID Addition

This falls squarely into the **"New Device IDs"** exception category for
stable backports:
- The driver (`hid-multitouch`) already exists in stable trees
- Only the device ID is new
- It uses an existing device class (`MT_CLS_EGALAX_SERIAL`)
- The pattern is identical to many other eGalax entries already in the
table

### Risk Assessment

- **Risk: Extremely low** — This is a pure device ID addition to an
existing table. It cannot affect any existing device. The new entry
only matches the specific USB vendor/product ID pair (0x0aec/0xc000).
- **Scope: Minimal** — 4 lines added across 2 files (1 define + 3 lines
in device table)
- **Dependencies: None** — Completely self-contained, no other commits
needed

### User Impact

Without this patch, users with the eGalaxTouch EXC3188 touchscreen have
a non-functional device. With this patch, the touchscreen works using
the existing, well-tested eGalax serial multitouch driver class. This is
exactly the kind of hardware enablement that stable users need — their
hardware simply doesn't work without it.

### Stability Indicators

- Uses existing driver infrastructure (no new code paths)
- Follows the exact same pattern as ~20 other eGalax device entries
- Signed off by the HID subsystem maintainer (Jiri Kosina)
- Has been reviewed and accepted through the normal HID subsystem
process

### Conclusion

This is a textbook example of a device ID addition that should be
backported to stable. It enables real hardware for real users, has zero
risk of regression, requires no dependencies, and follows established
patterns in the driver. These types of commits are explicitly called out
in stable kernel rules as appropriate for backporting.

**YES**

drivers/hid/hid-ids.h | 1 +
drivers/hid/hid-multitouch.c | 3 +++
2 files changed, 4 insertions(+)

diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index 5a18cb41e6d79..6d8b64872cefe 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -437,6 +437,7 @@
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_7349 0x7349
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_73F7 0x73f7
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_A001 0xa001
+#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_C000 0xc000
#define USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_C002 0xc002

#define USB_VENDOR_ID_EDIFIER 0x2d99
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
index f21850f7d89e4..7daa8f6d81870 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
@@ -2212,6 +2212,9 @@ static const struct hid_device_id mt_devices[] = {
{ .driver_data = MT_CLS_EGALAX_SERIAL,
MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_A001) },
+ { .driver_data = MT_CLS_EGALAX_SERIAL,
+ MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
+ USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_C000) },
{ .driver_data = MT_CLS_EGALAX,
MT_USB_DEVICE(USB_VENDOR_ID_DWAV,
USB_DEVICE_ID_DWAV_EGALAX_MULTITOUCH_C002) },
--
2.51.0