Re: [PATCH v2 0/3] Input: add initial support for Goodix GTX8 touchscreen ICs

From: Hans de Goede

Date: Sat Feb 28 2026 - 06:23:44 EST


Hi,

On 28-Feb-26 02:56, Aelin Reidel wrote:
> These ICs support SPI and I2C interfaces, up to 10 finger touch, stylus
> and gesture events.
>
> This driver is derived from the Goodix gtx8_driver_linux available at
> [1] and only supports the GT9886 and GT9896 ICs present in the Xiaomi
> Mi 9T and Xiaomi Redmi Note 10 Pro smartphones.
>
> The current implementation only supports Normandy and Yellowstone type
> ICs, aka only GT9886 and GT9896. It is also limited to I2C only, since I
> don't have a device with GTX8 over SPI at hand. Adding support for SPI
> should be fairly easy in the future, since the code uses a regmap.
>
> Support for advanced features like:
> - Firmware updates
> - Stylus events
> - Gesture events
> - Nanjing IC support
> is not included in current version.
>
> The current support requires a previously flashed firmware to be
> present.
>
> As I did not have access to datasheets for these ICs, I extracted the
> addresses from a couple of config files using a small tool [2]. The
> addresses are identical for the same IC families in all configs I
> observed, however not all of them make sense and I stubbed out firmware
> request support due to this.
>
> I've taken a lot of inspiration from the goodix_berlin driver, but the
> Berlin and GTX8 series of touchscreen ICs differ quite a bit. The driver
> architecture is the same overall, i.e. the power-up sequence and general
> concepts are the mostly same, but it is very clear that they are
> different generations when looking at it in more detail.

Right, this answers my main question about this driver which was:
"why another goodix driver?" (this would be the third one).

I've also compared this driver with the original goodix.c touchscreen
driver (which I know well) and the protocol is somewhat closer
to the original goodix.c driver then it is to goodix_berlin, but still
different enough that having a separate driver is the best option IMHO.

...

> From what I can tell, the evolution seems to be:
> Normandy -> Yellowstone -> Berlin
> since Normandy and Yellowstone are already quite different (especially
> with the way checksums work) and Yellowstone has a couple of things
> (checksum, fw_version) that appear similar to Berlin series ICs.

You forgot the original goodix.c driver, adding that it seems
the evolution is:

GTx1/GTx2/GTx6 -> Normandy -> Yellowstone -> Berlin

With GTx1/GTx2/GTx6 having no checksum at all (and 16 bit
registers) and some of the original GTx1/GTx2/GTx6 don't have
nvram for the firmware, so Linux must upload firmware every boot.

Anyways I agree that these are different enough from the existing
goodix and goodix_berlin drivers, so based on that (and only on that):

Acked-by: Hans de Goede <johannes.goede@xxxxxxxxxxxxxxxx>

Regards,

Hans