From: Benjamin Tissoires <bentiss@kernel.org>
To: Ruzal Daminov <daminovruzal7@gmail.com>
Cc: jikos@kernel.org, linux-input@vger.kernel.org,
linux-kernel@vger.kernel.org, Рузаль <daminovruzal7@gmail.com>
Subject: Re: [PATCH v4] HID: multitouch: add support for Goodix GXTP7863 touchpad
Date: Thu, 17 Sep 2026 09:30:06 +0200 [thread overview]
Message-ID: <aquWNXpJuQr8HLBU@beelink> (raw)
In-Reply-To: <20260819123326.3242-1-daminovruzal7@gmail.com>
Hi,
sorry it looks like this one fell through the cracks.
On Aug 19 2026, Ruzal Daminov wrote:
> The Goodix GXTP7863 touchpad controller (VID: 0x27c6, PID: 0x01e0)
> found on Honor MagicBook laptops (e.g. FMI-76 / X14 Plus)
> was missing from the mt_devices[] table.
>
> As a result, it was claimed by hid-generic, which erroneously mapped
> the vendor telemetry collection (0xFF01) to an input node, translating
> the 1-Hz heartbeat timestamp into an endless loop of phantom
> KEY_BRIGHTNESSUP autorepeat events.
>
> Fix this by:
> 1. Adding I2C_DEVICE_ID_GOODIX_01E0 to hid-ids.h.
> 2. Adding the device to mt_devices[] with MT_CLS_WIN_8 so hid-multitouch
> claims the touchpad and retains full Win8 PTP quirks.
> 3. Filtering out the 0xFF01 vendor collection in mt_input_mapping()
> so the telemetry report is ignored and no phantom input node is
> created.
FWIW, ou should not describe exactly what the patch does in the commit
description. We can read the code :)
>
> Tested on Honor MagicBook X14 Plus (FMI-76, AMD Ryzen 8845HS).
>
> Signed-off-by: Ruzal Daminov <daminovruzal7@gmail.com>
> ---
> v3 -> v4:
> - Retain MT_CLS_WIN_8 to preserve Win8 PTP quirks, while explicitly
> filtering out field->application == 0xff010001 in mt_input_mapping()
> to ignore the vendor telemetry collection.
> v2 -> v3:
> - Use MT_CLS_DEFAULT to keep export_all_inputs false.
> v1 -> v2:
> - Move entry to alphabetical order in the Goodix section.
> - Declare I2C_DEVICE_ID_GOODIX_01E0 in hid-ids.h.
>
> drivers/hid/hid-ids.h | 1 +
> drivers/hid/hid-multitouch.c | 11 +++++++++++
> 2 files changed, 12 insertions(+)
>
> diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
> index 1059922baaacd2..60d9d524cd2e15 100644
> --- a/drivers/hid/hid-ids.h
> +++ b/drivers/hid/hid-ids.h
> @@ -562,6 +562,7 @@
> #define USB_DEVICE_ID_GENERAL_TOUCH_WIN8_PIT_E100 0xe100
>
> #define I2C_VENDOR_ID_GOODIX 0x27c6
> +#define I2C_DEVICE_ID_GOODIX_01E0 0x01e0
> #define I2C_DEVICE_ID_GOODIX_01E8 0x01e8
> #define I2C_DEVICE_ID_GOODIX_01E9 0x01e9
> #define I2C_DEVICE_ID_GOODIX_01F0 0x01f0
> diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
> index edb37b4c867e4b..d2ada08a6b01bf 100644
> --- a/drivers/hid/hid-multitouch.c
> +++ b/drivers/hid/hid-multitouch.c
> @@ -1543,6 +1543,12 @@ static int mt_input_mapping(struct hid_device *hdev, struct hid_input *hi,
> if (ret != 0)
> return ret;
>
> + /* Ignore Goodix FreeTouch vendor telemetry collection */
> + if (hdev->vendor == I2C_VENDOR_ID_GOODIX &&
> + hdev->product == I2C_DEVICE_ID_GOODIX_01E0 &&
> + field->application == 0xff010001)
> + return -1;
> +
> /* let hid-core decide for the others */
> return 0;
> }
> @@ -2460,6 +2466,11 @@ static const struct hid_device_id mt_devices[] = {
> MT_BT_DEVICE(USB_VENDOR_ID_FRUCTEL,
> USB_DEVICE_ID_GAMETEL_MT_MODE) },
>
> + /* Goodix GXTP7863 Touchpad */
> + { .driver_data = MT_CLS_WIN_8,
> + HID_DEVICE(BUS_I2C, HID_GROUP_ANY, I2C_VENDOR_ID_GOODIX,
I'm puzzled here: HID_GROUP_ANY? How can this even be working with hid-multitouch?
Are you sure the touchpad part is not already handled by hid-multitouch, but only
the telemetry/phantom event gets assigned to hid-generic?
Can you share the report descriptors of all nodes with hid-recorder so I
can understand why we suddenly have to map to non multitouch devices.
Cheers,
Benjamin
> + I2C_DEVICE_ID_GOODIX_01E0) },
> +
> /* Goodix GT7868Q devices */
> { .driver_data = MT_CLS_WIN_8_FORCE_MULTI_INPUT_NSMU,
> HID_DEVICE(BUS_I2C, HID_GROUP_ANY, I2C_VENDOR_ID_GOODIX,
> --
> 2.45.2
>
next prev parent reply other threads:[~2026-09-17 7:30 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-14 17:12 [PATCH 1/2] HID: multitouch: add support for Goodix GXTP7863 touchpad Ruzal Daminov
2026-08-19 9:15 ` [PATCH v2] " Ruzal Daminov
2026-08-19 9:28 ` sashiko-bot
2026-08-19 9:39 ` [PATCH v3] " Ruzal Daminov
2026-08-19 9:50 ` sashiko-bot
2026-08-19 12:33 ` [PATCH v4] " Ruzal Daminov
2026-09-17 7:30 ` Benjamin Tissoires [this message]
2026-09-17 12:51 ` Ruzal
2026-09-18 16:18 ` Benjamin Tissoires
2026-09-18 18:01 ` Ruzal
2026-09-19 9:23 ` Ruzal
2026-09-22 13:24 ` Benjamin Tissoires
2026-09-22 16:39 ` Ruzal
2026-09-23 13:31 ` Benjamin Tissoires
2026-09-23 15:05 ` Ruzal
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=aquWNXpJuQr8HLBU@beelink \
--to=bentiss@kernel.org \
--cc=daminovruzal7@gmail.com \
--cc=jikos@kernel.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/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.