diff mbox series

[v7,2/2] dt-bindings: input: Goodix SPI HID Touchscreen

Message ID 20240814024513.164199-3-charles.goodix@gmail.com (mailing list archive)
State Superseded
Headers show
Series HID: add initial support for Goodix HID-over-SPI touchscreen | expand

Commit Message

Charles Wang Aug. 14, 2024, 2:45 a.m. UTC
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.

Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
Signed-off-by: Charles Wang <charles.goodix@gmail.com>
---
 .../bindings/input/goodix,gt7986u.yaml        | 71 +++++++++++++++++++
 1 file changed, 71 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/input/goodix,gt7986u.yaml

Comments

Rob Herring (Arm) Sept. 6, 2024, 8:28 p.m. UTC | #1
On Tue, Aug 13, 2024 at 9:45 PM Charles Wang <charles.goodix@gmail.com> 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.
>
> Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
> Signed-off-by: Charles Wang <charles.goodix@gmail.com>
> ---
>  .../bindings/input/goodix,gt7986u.yaml        | 71 +++++++++++++++++++
>  1 file changed, 71 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
>
> diff --git a/Documentation/devicetree/bindings/input/goodix,gt7986u.yaml b/Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
> new file mode 100644
> index 000000000..a7d42a5d6
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
> @@ -0,0 +1,71 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/input/goodix,gt7986u.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: GOODIX GT7986U SPI HID Touchscreen
> +
> +maintainers:
> +  - Charles Wang <charles.goodix@gmail.com>
> +
> +description: Supports the Goodix GT7986U touchscreen.
> +  This touch controller reports data packaged according to the HID protocol,
> +  but is incompatible with Microsoft's HID-over-SPI protocol.
> +
> +allOf:
> +  - $ref: /schemas/spi/spi-peripheral-props.yaml#
> +
> +properties:
> +  compatible:
> +    enum:
> +      - goodix,gt7986u

This is already documented in goodix,gt7375p.yaml. Now linux-next has warnings:

/builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
touchscreen@0: compatible: 'oneOf' conditional failed, one must be
fixed:
        ['goodix,gt7986u'] is too short
        'goodix,gt7375p' was expected
        from schema $id:
http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
/builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
touchscreen@0: reg:0:0: 0 is not one of [93, 20]
        from schema $id:
http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
/builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
touchscreen@0: 'vdd-supply' is a required property
        from schema $id:
http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
/builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
touchscreen@0: 'goodix,hid-report-addr', 'spi-max-frequency' do not
match any of the regexes: 'pinctrl-[0-9]+'
        from schema $id:
http://devicetree.org/schemas/input/goodix,gt7375p.yaml#

Please sort this out and send a fix.

Rob
Rob Herring (Arm) Sept. 10, 2024, 10:41 p.m. UTC | #2
On Fri, Sep 6, 2024 at 3:28 PM Rob Herring <robh@kernel.org> wrote:
>
> On Tue, Aug 13, 2024 at 9:45 PM Charles Wang <charles.goodix@gmail.com> 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.
> >
> > Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
> > Signed-off-by: Charles Wang <charles.goodix@gmail.com>
> > ---
> >  .../bindings/input/goodix,gt7986u.yaml        | 71 +++++++++++++++++++
> >  1 file changed, 71 insertions(+)
> >  create mode 100644 Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
> >
> > diff --git a/Documentation/devicetree/bindings/input/goodix,gt7986u.yaml b/Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
> > new file mode 100644
> > index 000000000..a7d42a5d6
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
> > @@ -0,0 +1,71 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/input/goodix,gt7986u.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: GOODIX GT7986U SPI HID Touchscreen
> > +
> > +maintainers:
> > +  - Charles Wang <charles.goodix@gmail.com>
> > +
> > +description: Supports the Goodix GT7986U touchscreen.
> > +  This touch controller reports data packaged according to the HID protocol,
> > +  but is incompatible with Microsoft's HID-over-SPI protocol.
> > +
> > +allOf:
> > +  - $ref: /schemas/spi/spi-peripheral-props.yaml#
> > +
> > +properties:
> > +  compatible:
> > +    enum:
> > +      - goodix,gt7986u
>
> This is already documented in goodix,gt7375p.yaml. Now linux-next has warnings:
>
> /builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
> touchscreen@0: compatible: 'oneOf' conditional failed, one must be
> fixed:
>         ['goodix,gt7986u'] is too short
>         'goodix,gt7375p' was expected
>         from schema $id:
> http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
> /builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
> touchscreen@0: reg:0:0: 0 is not one of [93, 20]
>         from schema $id:
> http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
> /builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
> touchscreen@0: 'vdd-supply' is a required property
>         from schema $id:
> http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
> /builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
> touchscreen@0: 'goodix,hid-report-addr', 'spi-max-frequency' do not
> match any of the regexes: 'pinctrl-[0-9]+'
>         from schema $id:
> http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
>
> Please sort this out and send a fix.

I should add that it is intermittent whether you see this error or
not. The tools select a single schema based on the compatible string
and it is undefined which of the 2 schemas you will get.

Rob
Rob Herring (Arm) Sept. 25, 2024, 5:40 p.m. UTC | #3
On Tue, Sep 10, 2024 at 5:41 PM Rob Herring <robh@kernel.org> wrote:
>
> On Fri, Sep 6, 2024 at 3:28 PM Rob Herring <robh@kernel.org> wrote:
> >
> > On Tue, Aug 13, 2024 at 9:45 PM Charles Wang <charles.goodix@gmail.com> 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.
> > >
> > > Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
> > > Signed-off-by: Charles Wang <charles.goodix@gmail.com>
> > > ---
> > >  .../bindings/input/goodix,gt7986u.yaml        | 71 +++++++++++++++++++
> > >  1 file changed, 71 insertions(+)
> > >  create mode 100644 Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
> > >
> > > diff --git a/Documentation/devicetree/bindings/input/goodix,gt7986u.yaml b/Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
> > > new file mode 100644
> > > index 000000000..a7d42a5d6
> > > --- /dev/null
> > > +++ b/Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
> > > @@ -0,0 +1,71 @@
> > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > > +%YAML 1.2
> > > +---
> > > +$id: http://devicetree.org/schemas/input/goodix,gt7986u.yaml#
> > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > +
> > > +title: GOODIX GT7986U SPI HID Touchscreen
> > > +
> > > +maintainers:
> > > +  - Charles Wang <charles.goodix@gmail.com>
> > > +
> > > +description: Supports the Goodix GT7986U touchscreen.
> > > +  This touch controller reports data packaged according to the HID protocol,
> > > +  but is incompatible with Microsoft's HID-over-SPI protocol.
> > > +
> > > +allOf:
> > > +  - $ref: /schemas/spi/spi-peripheral-props.yaml#
> > > +
> > > +properties:
> > > +  compatible:
> > > +    enum:
> > > +      - goodix,gt7986u
> >
> > This is already documented in goodix,gt7375p.yaml. Now linux-next has warnings:
> >
> > /builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
> > touchscreen@0: compatible: 'oneOf' conditional failed, one must be
> > fixed:
> >         ['goodix,gt7986u'] is too short
> >         'goodix,gt7375p' was expected
> >         from schema $id:
> > http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
> > /builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
> > touchscreen@0: reg:0:0: 0 is not one of [93, 20]
> >         from schema $id:
> > http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
> > /builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
> > touchscreen@0: 'vdd-supply' is a required property
> >         from schema $id:
> > http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
> > /builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
> > touchscreen@0: 'goodix,hid-report-addr', 'spi-max-frequency' do not
> > match any of the regexes: 'pinctrl-[0-9]+'
> >         from schema $id:
> > http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
> >
> > Please sort this out and send a fix.
>
> I should add that it is intermittent whether you see this error or
> not. The tools select a single schema based on the compatible string
> and it is undefined which of the 2 schemas you will get.

Still an issue and no response. Please fix or revert the series.

Rob
Jiri Kosina Sept. 25, 2024, 8:51 p.m. UTC | #4
On Wed, 25 Sep 2024, Rob Herring wrote:

> Still an issue and no response. Please fix or revert the series.

Reverts are now queued in hid.git#for-6.12/upstream-fixes and I will be 
sending them to Linus ASAP.

Sorry for the delay,
Dmitry Torokhov Sept. 25, 2024, 9:45 p.m. UTC | #5
On Wed, Sep 25, 2024 at 12:40:56PM -0500, Rob Herring wrote:
> On Tue, Sep 10, 2024 at 5:41 PM Rob Herring <robh@kernel.org> wrote:
> >
> > On Fri, Sep 6, 2024 at 3:28 PM Rob Herring <robh@kernel.org> wrote:
> > >
> > > On Tue, Aug 13, 2024 at 9:45 PM Charles Wang <charles.goodix@gmail.com> 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.
> > > >
> > > > Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
> > > > Signed-off-by: Charles Wang <charles.goodix@gmail.com>
> > > > ---
> > > >  .../bindings/input/goodix,gt7986u.yaml        | 71 +++++++++++++++++++
> > > >  1 file changed, 71 insertions(+)
> > > >  create mode 100644 Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
> > > >
> > > > diff --git a/Documentation/devicetree/bindings/input/goodix,gt7986u.yaml b/Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
> > > > new file mode 100644
> > > > index 000000000..a7d42a5d6
> > > > --- /dev/null
> > > > +++ b/Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
> > > > @@ -0,0 +1,71 @@
> > > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > > > +%YAML 1.2
> > > > +---
> > > > +$id: http://devicetree.org/schemas/input/goodix,gt7986u.yaml#
> > > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > > +
> > > > +title: GOODIX GT7986U SPI HID Touchscreen
> > > > +
> > > > +maintainers:
> > > > +  - Charles Wang <charles.goodix@gmail.com>
> > > > +
> > > > +description: Supports the Goodix GT7986U touchscreen.
> > > > +  This touch controller reports data packaged according to the HID protocol,
> > > > +  but is incompatible with Microsoft's HID-over-SPI protocol.
> > > > +
> > > > +allOf:
> > > > +  - $ref: /schemas/spi/spi-peripheral-props.yaml#
> > > > +
> > > > +properties:
> > > > +  compatible:
> > > > +    enum:
> > > > +      - goodix,gt7986u
> > >
> > > This is already documented in goodix,gt7375p.yaml. Now linux-next has warnings:
> > >
> > > /builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
> > > touchscreen@0: compatible: 'oneOf' conditional failed, one must be
> > > fixed:
> > >         ['goodix,gt7986u'] is too short
> > >         'goodix,gt7375p' was expected
> > >         from schema $id:
> > > http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
> > > /builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
> > > touchscreen@0: reg:0:0: 0 is not one of [93, 20]
> > >         from schema $id:
> > > http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
> > > /builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
> > > touchscreen@0: 'vdd-supply' is a required property
> > >         from schema $id:
> > > http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
> > > /builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
> > > touchscreen@0: 'goodix,hid-report-addr', 'spi-max-frequency' do not
> > > match any of the regexes: 'pinctrl-[0-9]+'
> > >         from schema $id:
> > > http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
> > >
> > > Please sort this out and send a fix.
> >
> > I should add that it is intermittent whether you see this error or
> > not. The tools select a single schema based on the compatible string
> > and it is undefined which of the 2 schemas you will get.
> 
> Still an issue and no response. Please fix or revert the series.

I see that Krzysztof sent a revert, but what a proper fix would be?
Apparently Goodix is using the same product ID gt7986u for both I2C and
SPI parts, and covering them in one binding is not really easy (well, I
guess it is possible with a big ugly "if"). Do we just slap "-spi"
suffix on the compatible, so it becomes "goodix,gt7986u-spi" and go on
on our merry way? Is there a better option for such products that
support multiple interfaces/transports?

Thanks.
Jiri Kosina Sept. 25, 2024, 9:48 p.m. UTC | #6
On Wed, 25 Sep 2024, Dmitry Torokhov wrote:

> I see that Krzysztof sent a revert, but what a proper fix would be?
> Apparently Goodix is using the same product ID gt7986u for both I2C and
> SPI parts, and covering them in one binding is not really easy (well, I
> guess it is possible with a big ugly "if"). Do we just slap "-spi"
> suffix on the compatible, so it becomes "goodix,gt7986u-spi" and go on
> on our merry way? 

I actually see this as a viable option, given the circumstances.

However, given the non-responsiveness of the original author, I am now 
proceeding with the revert, and we can try to sort it out later.

> Is there a better option for such products that support multiple 
> interfaces/transports?

I unfortunately currently don't see one.
Dmitry Torokhov Sept. 25, 2024, 9:57 p.m. UTC | #7
On Wed, Sep 25, 2024 at 11:48:50PM +0200, Jiri Kosina wrote:
> On Wed, 25 Sep 2024, Dmitry Torokhov wrote:
> 
> > I see that Krzysztof sent a revert, but what a proper fix would be?
> > Apparently Goodix is using the same product ID gt7986u for both I2C and
> > SPI parts, and covering them in one binding is not really easy (well, I
> > guess it is possible with a big ugly "if"). Do we just slap "-spi"
> > suffix on the compatible, so it becomes "goodix,gt7986u-spi" and go on
> > on our merry way? 
> 
> I actually see this as a viable option, given the circumstances.
> 
> However, given the non-responsiveness of the original author, I am now 
> proceeding with the revert, and we can try to sort it out later.

Yeah, no objections there.

Thanks.
Rob Herring (Arm) Sept. 26, 2024, 1:51 a.m. UTC | #8
On Wed, Sep 25, 2024 at 4:46 PM Dmitry Torokhov
<dmitry.torokhov@gmail.com> wrote:
>
> On Wed, Sep 25, 2024 at 12:40:56PM -0500, Rob Herring wrote:
> > On Tue, Sep 10, 2024 at 5:41 PM Rob Herring <robh@kernel.org> wrote:
> > >
> > > On Fri, Sep 6, 2024 at 3:28 PM Rob Herring <robh@kernel.org> wrote:
> > > >
> > > > On Tue, Aug 13, 2024 at 9:45 PM Charles Wang <charles.goodix@gmail.com> 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.
> > > > >
> > > > > Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
> > > > > Signed-off-by: Charles Wang <charles.goodix@gmail.com>
> > > > > ---
> > > > >  .../bindings/input/goodix,gt7986u.yaml        | 71 +++++++++++++++++++
> > > > >  1 file changed, 71 insertions(+)
> > > > >  create mode 100644 Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
> > > > >
> > > > > diff --git a/Documentation/devicetree/bindings/input/goodix,gt7986u.yaml b/Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
> > > > > new file mode 100644
> > > > > index 000000000..a7d42a5d6
> > > > > --- /dev/null
> > > > > +++ b/Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
> > > > > @@ -0,0 +1,71 @@
> > > > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > > > > +%YAML 1.2
> > > > > +---
> > > > > +$id: http://devicetree.org/schemas/input/goodix,gt7986u.yaml#
> > > > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > > > +
> > > > > +title: GOODIX GT7986U SPI HID Touchscreen
> > > > > +
> > > > > +maintainers:
> > > > > +  - Charles Wang <charles.goodix@gmail.com>
> > > > > +
> > > > > +description: Supports the Goodix GT7986U touchscreen.
> > > > > +  This touch controller reports data packaged according to the HID protocol,
> > > > > +  but is incompatible with Microsoft's HID-over-SPI protocol.
> > > > > +
> > > > > +allOf:
> > > > > +  - $ref: /schemas/spi/spi-peripheral-props.yaml#
> > > > > +
> > > > > +properties:
> > > > > +  compatible:
> > > > > +    enum:
> > > > > +      - goodix,gt7986u
> > > >
> > > > This is already documented in goodix,gt7375p.yaml. Now linux-next has warnings:
> > > >
> > > > /builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
> > > > touchscreen@0: compatible: 'oneOf' conditional failed, one must be
> > > > fixed:
> > > >         ['goodix,gt7986u'] is too short
> > > >         'goodix,gt7375p' was expected
> > > >         from schema $id:
> > > > http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
> > > > /builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
> > > > touchscreen@0: reg:0:0: 0 is not one of [93, 20]
> > > >         from schema $id:
> > > > http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
> > > > /builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
> > > > touchscreen@0: 'vdd-supply' is a required property
> > > >         from schema $id:
> > > > http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
> > > > /builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
> > > > touchscreen@0: 'goodix,hid-report-addr', 'spi-max-frequency' do not
> > > > match any of the regexes: 'pinctrl-[0-9]+'
> > > >         from schema $id:
> > > > http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
> > > >
> > > > Please sort this out and send a fix.
> > >
> > > I should add that it is intermittent whether you see this error or
> > > not. The tools select a single schema based on the compatible string
> > > and it is undefined which of the 2 schemas you will get.
> >
> > Still an issue and no response. Please fix or revert the series.
>
> I see that Krzysztof sent a revert, but what a proper fix would be?
> Apparently Goodix is using the same product ID gt7986u for both I2C and
> SPI parts, and covering them in one binding is not really easy (well, I
> guess it is possible with a big ugly "if"). Do we just slap "-spi"
> suffix on the compatible, so it becomes "goodix,gt7986u-spi" and go on
> on our merry way? Is there a better option for such products that
> support multiple interfaces/transports?

Generally we just have 1 compatible and 1 schema for both. The schema
can reference spi-peripheral-props.yaml unconditionally. If someone
wants to put SPI properties in a node for I2C connected device, then
that would be allowed, but who cares.

There's been some discussion about having some sort of pseudo property
similar to $nodename to define the bus for a node and then we could
use that.

Rob
Charles Wang Sept. 26, 2024, 4:54 a.m. UTC | #9
Hi Rob,

Very sorry for the late response. A fiexd version with compatible
"goodix,gt7986u-spi" has been submitted.

On Wed, Sep 25, 2024 at 08:51:14PM -0500, Rob Herring wrote:
> On Wed, Sep 25, 2024 at 4:46 PM Dmitry Torokhov
> <dmitry.torokhov@gmail.com> wrote:
> >
> > On Wed, Sep 25, 2024 at 12:40:56PM -0500, Rob Herring wrote:
> > > On Tue, Sep 10, 2024 at 5:41 PM Rob Herring <robh@kernel.org> wrote:
> > > >
> > > > On Fri, Sep 6, 2024 at 3:28 PM Rob Herring <robh@kernel.org> wrote:
> > > > >
> > > > > On Tue, Aug 13, 2024 at 9:45 PM Charles Wang <charles.goodix@gmail.com> 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.
> > > > > >
> > > > > > Reviewed-by: Conor Dooley <conor.dooley@microchip.com>
> > > > > > Signed-off-by: Charles Wang <charles.goodix@gmail.com>
> > > > > > ---
> > > > > >  .../bindings/input/goodix,gt7986u.yaml        | 71 +++++++++++++++++++
> > > > > >  1 file changed, 71 insertions(+)
> > > > > >  create mode 100644 Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
> > > > > >
> > > > > > diff --git a/Documentation/devicetree/bindings/input/goodix,gt7986u.yaml b/Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
> > > > > > new file mode 100644
> > > > > > index 000000000..a7d42a5d6
> > > > > > --- /dev/null
> > > > > > +++ b/Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
> > > > > > @@ -0,0 +1,71 @@
> > > > > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > > > > > +%YAML 1.2
> > > > > > +---
> > > > > > +$id: http://devicetree.org/schemas/input/goodix,gt7986u.yaml#
> > > > > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > > > > +
> > > > > > +title: GOODIX GT7986U SPI HID Touchscreen
> > > > > > +
> > > > > > +maintainers:
> > > > > > +  - Charles Wang <charles.goodix@gmail.com>
> > > > > > +
> > > > > > +description: Supports the Goodix GT7986U touchscreen.
> > > > > > +  This touch controller reports data packaged according to the HID protocol,
> > > > > > +  but is incompatible with Microsoft's HID-over-SPI protocol.
> > > > > > +
> > > > > > +allOf:
> > > > > > +  - $ref: /schemas/spi/spi-peripheral-props.yaml#
> > > > > > +
> > > > > > +properties:
> > > > > > +  compatible:
> > > > > > +    enum:
> > > > > > +      - goodix,gt7986u
> > > > >
> > > > > This is already documented in goodix,gt7375p.yaml. Now linux-next has warnings:
> > > > >
> > > > > /builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
> > > > > touchscreen@0: compatible: 'oneOf' conditional failed, one must be
> > > > > fixed:
> > > > >         ['goodix,gt7986u'] is too short
> > > > >         'goodix,gt7375p' was expected
> > > > >         from schema $id:
> > > > > http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
> > > > > /builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
> > > > > touchscreen@0: reg:0:0: 0 is not one of [93, 20]
> > > > >         from schema $id:
> > > > > http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
> > > > > /builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
> > > > > touchscreen@0: 'vdd-supply' is a required property
> > > > >         from schema $id:
> > > > > http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
> > > > > /builds/robherring/linux-dt/Documentation/devicetree/bindings/input/goodix,gt7986u.example.dtb:
> > > > > touchscreen@0: 'goodix,hid-report-addr', 'spi-max-frequency' do not
> > > > > match any of the regexes: 'pinctrl-[0-9]+'
> > > > >         from schema $id:
> > > > > http://devicetree.org/schemas/input/goodix,gt7375p.yaml#
> > > > >
> > > > > Please sort this out and send a fix.
> > > >
> > > > I should add that it is intermittent whether you see this error or
> > > > not. The tools select a single schema based on the compatible string
> > > > and it is undefined which of the 2 schemas you will get.
> > >
> > > Still an issue and no response. Please fix or revert the series.
> >
> > I see that Krzysztof sent a revert, but what a proper fix would be?
> > Apparently Goodix is using the same product ID gt7986u for both I2C and
> > SPI parts, and covering them in one binding is not really easy (well, I
> > guess it is possible with a big ugly "if"). Do we just slap "-spi"
> > suffix on the compatible, so it becomes "goodix,gt7986u-spi" and go on
> > on our merry way? Is there a better option for such products that
> > support multiple interfaces/transports?
> 
> Generally we just have 1 compatible and 1 schema for both. The schema
> can reference spi-peripheral-props.yaml unconditionally. If someone
> wants to put SPI properties in a node for I2C connected device, then
> that would be allowed, but who cares.
> 
> There's been some discussion about having some sort of pseudo property
> similar to $nodename to define the bus for a node and then we could
> use that.
> 

Charles
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/input/goodix,gt7986u.yaml b/Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
new file mode 100644
index 000000000..a7d42a5d6
--- /dev/null
+++ b/Documentation/devicetree/bindings/input/goodix,gt7986u.yaml
@@ -0,0 +1,71 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/input/goodix,gt7986u.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: GOODIX GT7986U SPI HID Touchscreen
+
+maintainers:
+  - Charles Wang <charles.goodix@gmail.com>
+
+description: Supports the Goodix GT7986U touchscreen.
+  This touch controller reports data packaged according to the HID protocol,
+  but is incompatible with Microsoft's HID-over-SPI protocol.
+
+allOf:
+  - $ref: /schemas/spi/spi-peripheral-props.yaml#
+
+properties:
+  compatible:
+    enum:
+      - goodix,gt7986u
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  reset-gpios:
+    maxItems: 1
+
+  goodix,hid-report-addr:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      The register address for retrieving HID report data.
+      This address is related to the device firmware and may
+      change after a firmware update.
+
+  spi-max-frequency: true
+
+additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - reset-gpios
+  - goodix,hid-report-addr
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/gpio/gpio.h>
+
+    spi {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      touchscreen@0 {
+        compatible = "goodix,gt7986u";
+        reg = <0>;
+        interrupt-parent = <&gpio>;
+        interrupts = <25 IRQ_TYPE_LEVEL_LOW>;
+        reset-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
+        spi-max-frequency = <10000000>;
+        goodix,hid-report-addr = <0x22c8c>;
+      };
+    };
+
+...