All of lore.kernel.org
 help / color / mirror / Atom feed
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
> 

  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.