Thread (15 messages) 15 messages, 3 authors, 2024-10-25

Re: [PATCH] dt-bindings: input: Goodix SPI HID Touchscreen

From: Charles Wang <hidden>
Date: 2024-10-22 07:19:20
Also in: linux-devicetree, lkml

Hi Doug,

On Mon, Oct 21, 2024 at 08:37:32AM -0700, Doug Anderson wrote:
Hi,

On Mon, Oct 21, 2024 at 2:43 AM Krzysztof Kozlowski [off-list ref] wrote:
quoted
On 19/10/2024 04:55, Charles Wang wrote:
quoted
Hi Doug

On Fri, Oct 18, 2024 at 01:48:56PM -0700, Doug Anderson wrote:
quoted
On Thu, Oct 17, 2024 at 7:09 PM Charles Wang [off-list ref] wrote:
quoted
The Goodix GT7986U touch controller report touch data according to the
HID protocol through the SPI bus. However, it is incompatible with
Microsoft's HID-over-SPI protocol.

Signed-off-by: Charles Wang <redacted>
---
 .../bindings/input/goodix,gt7375p.yaml        | 68 ++++++++++++++++---
 1 file changed, 58 insertions(+), 10 deletions(-)
I'm happy to let device tree folks make the call here, but IMO it
would be much cleaner to just consider the I2C-connected GT7986U and
the SPI-connected GT7986U to be different things and just use a
Same device, you cannot have different compatibles. The way how the same
(literally same chip) device sits on the bus is not part of the binding,
thus no different compatibles.
I don't want to belabour the point too much, but this doesn't feel
completely black and white here.

"Same chip": a whole lot of laptops and phones all use the "same chip"
(same SoC) yet are different products. ...or you can look at the fact
that many peripherals have the same STM32 or Nuvoton chip in them but
are wildly different peripherals.

In this case, Goodix may have made an ASIC called "GT7986U" that has
some type of CPU on it that can run firmware that can talk as an I2C
device or a SPI device. This ASIC may be intended to be used as a
touchscreen controller, but fundamentally it doesn't feel that
different from an STM32. You can build different boards designs with
the "GT7986U" on it and those boards are intended to run different
firmware.

People manufacturing touch controller boards presumably put this
"GT7986U" on their touch controller board, maybe set certain
strappings telling it that it's talking over SPI or I2C or maybe just
decide which pins they're going to wire out to the board-to-board
connector on the touch controller board. A touch controller board
intended to talk over SPI may look 98% the same as a touch controller
board intended to talk over I2C, but what percentage of "sameness"
means that we need the same compatible string?

Would things be different if Goodix decided to manufacture touch
controller boards themselves and sold two SKUs: a GT7986U-S and a
GT7986U-I?

I would also note that (reading back in previous conversations) I
think Charles said that they run different firmware on the SPI vs. I2C
touch controllers. As I understand it, the firmware running on a
device can make it a different device from a device tree perspective.
The device tree does its best to describe just the hardware but it can
get fuzzy. For instance the "VID/PID" of a USB device is usually
something programmable and could be updateable by a firmware change
but we still may need to encode the VID/PID of the firmware that is
intended to run on the device in the device tree.

Anyway, I'm happy to be quiet about this and fine if folks want to
continue to work towards a "unified" binding. It makes me a little
uncomfortable that I'll still end up listed as a "maintainer" of the
unified binding because I don't totally agree with it, but I'm also
pragmatic and I'd rather have something that can land.
Thank you very much for your attention. Your understanding of the GT7986U
SPI and I2C devices is correct. There is no fundamental difference between
them and the STM32, as they are all ASIC devices. The functionality of the
device is determined by the firmware that is loaded, although the GT7986U
is an ASIC specifically designed for touchscreens.

Additionally, the firmware and devices are generally bound to specific touch
panels, meaning that firmware intended for SPI will not function properly on
an I2C touch panel.

Best regards,
Charles
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help