Hi, On Tue, Oct 22, 2024 at 11:44 PM Charles Wang <charles.goodix@xxxxxxxxx> wrote: > > Hi, > > On Tue, Oct 22, 2024 at 09:12:33AM -0700, Doug Anderson wrote: > > Hi, > > > > On Tue, Oct 22, 2024 at 12:19 AM Charles Wang <charles.goodix@xxxxxxxxx> wrote: > > > > > > 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 <krzk@xxxxxxxxxx> wrote: > > > > > > > > > > On 19/10/2024 04:55, Charles Wang wrote: > > > > > > Hi Doug > > > > > > > > > > > > On Fri, Oct 18, 2024 at 01:48:56PM -0700, Doug Anderson wrote: > > > > > >> > > > > > >> On Thu, Oct 17, 2024 at 7:09 PM Charles Wang <charles.goodix@xxxxxxxxx> wrote: > > > > > >>> > > > > > >>> 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 <charles.goodix@xxxxxxxxx> > > > > > >>> --- > > > > > >>> .../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. > > > > Just to get clarity: how is GT7986U delivered? For instance: > > > > 1. Maybe Goodix produces touchscreen controller boards and ships them > > to customers for use in their products. In this case, does Goodix ship > > a single board with two connectors, or a separate board for SPI vs. > > I2C? I would have to believe that maybe a "dev" board might have both > > connectors and a bunch of jumpers/switches to choose which ones to > > use, but it feels unlikely someone would ship that in any quantity. > > > > 2. Maybe Goodix provides schematics for customers to produce their own > > touchscreen controller boards and they tell customers to either hook > > up the SPI lines and load the SPI firmware or hook up the I2C lines > > and load the I2C firmware. In this case the assumption is that > > customers using the same communication method are following the > > schematics closely enough that they all behave the same and thus we > > don't need some extra distinction. > > > > In either case it seems like a touchscreen controller board that talks > > over SPI and one that talks over I2C are two different products and > > thus (to me) should have two distinct compatible strings. This is not > > one device that merely has multiple interfaces. > > > > Goodix's approach is similar to Method 2. First, Goodix provides the > schematics and the chips (including initial firmware, no touch function) > to customers, and customers design their touchscreen controller boards and > decide whether to use the I2C or SPI interface. Then, Goodix modifies and > debugs the firmware based on the customer's design and provides the final > firmware for customers to upgrade. OK, thanks!