mbox series

[v5,0/3] Input: add Hycon HY46XX Touchscreen controller

Message ID 20210411114804.151754-1-giulio.benetti@benettiengineering.com
Headers show
Series Input: add Hycon HY46XX Touchscreen controller | expand

Message

Giulio Benetti April 11, 2021, 11:48 a.m. UTC
This patchset adds Hycon vendor, HY46XX touchscreen controller driver
and its .yaml binding.

---
V1->V2:
* changed authorship and SoBs to @benettiengineering.com domain
* fixed vendor commit log according to Jonathan Neuschäfer's suggestion
* fixed hy46xx bindings according to Rob Herring's suggestions
* fixed hy46xx driver according to Dmitry Torokhov's suggestions
further details are listed in single patches
V2->V3:
* fixed hy46xx bindings according to Jonathan Neuschäfer's suggestion
* fixed hy46xx driver according to Jonathan Neuschäfer's suggestion
further details are listed in single patches
V3->V4:
* fixed binding compatible string as suggested by Jonathan Neuschäfer
V4->V5:
* fixed hy46xx bindings and driver according to Rob Herring's suggestions
further details are listed in single patches
---

Giulio Benetti (3):
  dt-bindings: Add Hycon Technology vendor prefix
  dt-bindings: touchscreen: Add HY46XX bindings
  Input: add driver for the Hycon HY46XX touchpanel series

 .../input/touchscreen/hycon,hy46xx.yaml       | 119 ++++
 .../devicetree/bindings/vendor-prefixes.yaml  |   2 +
 MAINTAINERS                                   |   7 +
 drivers/input/touchscreen/Kconfig             |  11 +
 drivers/input/touchscreen/Makefile            |   1 +
 drivers/input/touchscreen/hycon-hy46xx.c      | 591 ++++++++++++++++++
 6 files changed, 731 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/input/touchscreen/hycon,hy46xx.yaml
 create mode 100644 drivers/input/touchscreen/hycon-hy46xx.c

Comments

Rob Herring April 12, 2021, 1:20 p.m. UTC | #1
On Sun, 11 Apr 2021 13:48:03 +0200, Giulio Benetti wrote:
> This adds device tree bindings for the Hycon HY46XX touchscreen series.

> 

> Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>

> ---

> V1->V2:

> As suggested by Rob Herring:

> * fixed $id: address

> * added "hycon," in front of every custom property

> * changed all possible property to boolean type

> * removed proximity-sensor-switch property since it's not handled in driver

> V2->V3:

> As suggested by Jonathan Neuschäfer:

> * fixed some typo

> * fixed description indentation

> * improved boolean properties descriptions

> * improved hycon,report-speed description

> V3->V4:

> * fixed binding compatible string in example as suggested by Jonathan Neuschäfer

> V4->V5:

> As suggested by Rob Herring:

> * drop hycon- prefix from compatible

> * use Hertz unit suffix for hycon,report-speed instead of u32

> * set hycon,report-speed minimum to 1Hz, 0Hz make controller to do nothing

> * change hycon,power-noise-enable property name to hycon,noise-filter-enable

> * improve hycon,filter-data property description

> * use generic touchscreen node name in example

> ---

>  .../input/touchscreen/hycon,hy46xx.yaml       | 119 ++++++++++++++++++

>  MAINTAINERS                                   |   6 +

>  2 files changed, 125 insertions(+)

>  create mode 100644 Documentation/devicetree/bindings/input/touchscreen/hycon,hy46xx.yaml

> 


My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check'
on your patch (DT_CHECKER_FLAGS is new in v5.13):

yamllint warnings/errors:

dtschema/dtc warnings/errors:
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/input/touchscreen/hycon,hy46xx.yaml: properties:hycon,report-speed: 'oneOf' conditional failed, one must be fixed:
	'type' is a required property
	Additional properties are not allowed ('minimum', 'maximum' were unexpected)
	/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/input/touchscreen/hycon,hy46xx.yaml: properties:hycon,report-speed: 'oneOf' conditional failed, one must be fixed:
		'enum' is a required property
		'const' is a required property
	/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/input/touchscreen/hycon,hy46xx.yaml: properties:hycon,report-speed: 'oneOf' conditional failed, one must be fixed:
		'$ref' is a required property
		'allOf' is a required property
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/input/touchscreen/hycon,hy46xx.yaml: ignoring, error in schema: properties: hycon,report-speed
warning: no schema found in file: ./Documentation/devicetree/bindings/input/touchscreen/hycon,hy46xx.yaml
Documentation/devicetree/bindings/input/touchscreen/hycon,hy46xx.example.dt.yaml:0:0: /example-0/i2c/touchscreen@1c: failed to match any schema with compatible: ['hycon,hy4633']

See https://patchwork.ozlabs.org/patch/1464803

This check can fail if there are any dependencies. The base for a patch
series is generally the most recent rc1.

If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:

pip3 install dtschema --upgrade

Please check and re-submit.
Rob Herring April 12, 2021, 2:46 p.m. UTC | #2
On Sun, Apr 11, 2021 at 01:48:03PM +0200, Giulio Benetti wrote:
> This adds device tree bindings for the Hycon HY46XX touchscreen series.

> 

> Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>

> ---

> V1->V2:

> As suggested by Rob Herring:

> * fixed $id: address

> * added "hycon," in front of every custom property

> * changed all possible property to boolean type

> * removed proximity-sensor-switch property since it's not handled in driver

> V2->V3:

> As suggested by Jonathan Neuschäfer:

> * fixed some typo

> * fixed description indentation

> * improved boolean properties descriptions

> * improved hycon,report-speed description

> V3->V4:

> * fixed binding compatible string in example as suggested by Jonathan Neuschäfer

> V4->V5:

> As suggested by Rob Herring:

> * drop hycon- prefix from compatible

> * use Hertz unit suffix for hycon,report-speed instead of u32


hycon,report-speed-hz

> * set hycon,report-speed minimum to 1Hz, 0Hz make controller to do nothing

> * change hycon,power-noise-enable property name to hycon,noise-filter-enable

> * improve hycon,filter-data property description

> * use generic touchscreen node name in example

> ---

>  .../input/touchscreen/hycon,hy46xx.yaml       | 119 ++++++++++++++++++

>  MAINTAINERS                                   |   6 +

>  2 files changed, 125 insertions(+)

>  create mode 100644 Documentation/devicetree/bindings/input/touchscreen/hycon,hy46xx.yaml

> 

> diff --git a/Documentation/devicetree/bindings/input/touchscreen/hycon,hy46xx.yaml b/Documentation/devicetree/bindings/input/touchscreen/hycon,hy46xx.yaml

> new file mode 100644

> index 000000000000..ae792e3716ff

> --- /dev/null

> +++ b/Documentation/devicetree/bindings/input/touchscreen/hycon,hy46xx.yaml

> @@ -0,0 +1,119 @@

> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)

> +%YAML 1.2

> +---

> +$id: http://devicetree.org/schemas/input/touchscreen/hycon,hy46xx.yaml#

> +$schema: http://devicetree.org/meta-schemas/core.yaml#

> +

> +title: Hycon HY46XX series touchscreen controller bindings

> +

> +description: |

> +  There are 6 variants of the chip for various touch panel sizes and cover lens material

> +   Glass: 0.3mm--4.0mm

> +    PET/PMMA: 0.2mm--2.0mm

> +    HY4613(B)-N048  < 6"

> +    HY4614(B)-N068  7" .. 10.1"

> +    HY4621-NS32  < 5"

> +    HY4623-NS48  5.1" .. 7"

> +   Glass: 0.3mm--8.0mm

> +    PET/PMMA: 0.2mm--4.0mm

> +    HY4633(B)-N048  < 6"

> +    HY4635(B)-N048  < 7" .. 10.1"

> +

> +maintainers:

> +  - Giulio Benetti <giulio.benetti@benettiengineering.com>

> +

> +allOf:

> +  - $ref: touchscreen.yaml#

> +

> +properties:

> +  compatible:

> +    enum:

> +      - hycon,hy4613

> +      - hycon,hy4614

> +      - hycon,hy4621

> +      - hycon,hy4623

> +      - hycon,hy4633

> +      - hycon,hy4635

> +

> +  reg:

> +    maxItems: 1

> +

> +  interrupts:

> +    maxItems: 1

> +

> +  reset-gpios:

> +    maxItems: 1

> +

> +  vcc-supply: true

> +

> +  hycon,threshold:

> +    description: Allows setting the sensitivity in the range from 0 to 255.

> +    $ref: /schemas/types.yaml#/definitions/uint32

> +    minimum: 0

> +    maximum: 255

> +

> +  hycon,glove-enable:

> +    type: boolean

> +    description: Allows enabling glove setting.

> +

> +  hycon,report-speed:

> +    description: Allows setting the report speed in Hertz.

> +    minimum: 1

> +    maximum: 255

> +

> +  hycon,noise-filter-enable:

> +    type: boolean

> +    description: Allows enabling power noise filter.

> +

> +  hycon,filter-data:

> +    description: Allows setting how many samples throw before reporting touch

> +                 in the range from 0 to 5.

> +    $ref: /schemas/types.yaml#/definitions/uint32

> +    minimum: 0

> +    maximum: 5

> +

> +  hycon,gain:

> +    description: Allows setting the sensitivity distance in the range from 0 to 5.

> +    $ref: /schemas/types.yaml#/definitions/uint32

> +    minimum: 0

> +    maximum: 5

> +

> +  hycon,edge-offset:

> +    description: Allows setting the edge compensation in the range from 0 to 16.

> +    $ref: /schemas/types.yaml#/definitions/uint32

> +    minimum: 0

> +    maximum: 16

> +

> +  touchscreen-size-x: true

> +  touchscreen-size-y: true

> +  touchscreen-fuzz-x: true

> +  touchscreen-fuzz-y: true

> +  touchscreen-inverted-x: true

> +  touchscreen-inverted-y: true

> +  touchscreen-swapped-x-y: true

> +  interrupt-controller: true

> +

> +additionalProperties: false

> +

> +required:

> +  - compatible

> +  - reg

> +  - interrupts

> +

> +examples:

> +  - |

> +    #include <dt-bindings/gpio/gpio.h>

> +    #include <dt-bindings/interrupt-controller/arm-gic.h>

> +    i2c {

> +      #address-cells = <1>;

> +      #size-cells = <0>;

> +      touchscreen@1c {

> +        compatible = "hycon,hy4633";

> +        reg = <0x1c>;

> +        interrupt-parent = <&gpio2>;

> +        interrupts = <5 IRQ_TYPE_EDGE_FALLING>;

> +        reset-gpios = <&gpio2 6 GPIO_ACTIVE_LOW>;

> +      };

> +    };

> +

> +...

> diff --git a/MAINTAINERS b/MAINTAINERS

> index 7fdc513392f4..18a50942c019 100644

> --- a/MAINTAINERS

> +++ b/MAINTAINERS

> @@ -8250,6 +8250,12 @@ S:	Maintained

>  F:	mm/hwpoison-inject.c

>  F:	mm/memory-failure.c

>  

> +HYCON HY46XX TOUCHSCREEN SUPPORT

> +M:	Giulio Benetti <giulio.benetti@benettiengineering.com>

> +L:	linux-input@vger.kernel.org

> +S:	Maintained

> +F:	Documentation/devicetree/bindings/input/touchscreen/hycon,hy46xx.yaml

> +

>  HYGON PROCESSOR SUPPORT

>  M:	Pu Wen <puwen@hygon.cn>

>  L:	linux-kernel@vger.kernel.org

> -- 

> 2.25.1

>
Giulio Benetti April 12, 2021, 2:49 p.m. UTC | #3
> Il giorno 12 apr 2021, alle ore 16:46, Rob Herring <robh@kernel.org> ha scritto:

> 

> On Sun, Apr 11, 2021 at 01:48:03PM +0200, Giulio Benetti wrote:

>> This adds device tree bindings for the Hycon HY46XX touchscreen series.

>> 

>> Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>

>> ---

>> V1->V2:

>> As suggested by Rob Herring:

>> * fixed $id: address

>> * added "hycon," in front of every custom property

>> * changed all possible property to boolean type

>> * removed proximity-sensor-switch property since it's not handled in driver

>> V2->V3:

>> As suggested by Jonathan Neuschäfer:

>> * fixed some typo

>> * fixed description indentation

>> * improved boolean properties descriptions

>> * improved hycon,report-speed description

>> V3->V4:

>> * fixed binding compatible string in example as suggested by Jonathan Neuschäfer

>> V4->V5:

>> As suggested by Rob Herring:

>> * drop hycon- prefix from compatible

>> * use Hertz unit suffix for hycon,report-speed instead of u32

> 

> hycon,report-speed-hz


Thank you, I’m going to send V6 series.

Giulio

> 

>> * set hycon,report-speed minimum to 1Hz, 0Hz make controller to do nothing

>> * change hycon,power-noise-enable property name to hycon,noise-filter-enable

>> * improve hycon,filter-data property description

>> * use generic touchscreen node name in example

>> ---

>> .../input/touchscreen/hycon,hy46xx.yaml       | 119 ++++++++++++++++++

>> MAINTAINERS                                   |   6 +

>> 2 files changed, 125 insertions(+)

>> create mode 100644 Documentation/devicetree/bindings/input/touchscreen/hycon,hy46xx.yaml

>> 

>> diff --git a/Documentation/devicetree/bindings/input/touchscreen/hycon,hy46xx.yaml b/Documentation/devicetree/bindings/input/touchscreen/hycon,hy46xx.yaml

>> new file mode 100644

>> index 000000000000..ae792e3716ff

>> --- /dev/null

>> +++ b/Documentation/devicetree/bindings/input/touchscreen/hycon,hy46xx.yaml

>> @@ -0,0 +1,119 @@

>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)

>> +%YAML 1.2

>> +---

>> +$id: http://devicetree.org/schemas/input/touchscreen/hycon,hy46xx.yaml#

>> +$schema: http://devicetree.org/meta-schemas/core.yaml#

>> +

>> +title: Hycon HY46XX series touchscreen controller bindings

>> +

>> +description: |

>> +  There are 6 variants of the chip for various touch panel sizes and cover lens material

>> +   Glass: 0.3mm--4.0mm

>> +    PET/PMMA: 0.2mm--2.0mm

>> +    HY4613(B)-N048  < 6"

>> +    HY4614(B)-N068  7" .. 10.1"

>> +    HY4621-NS32  < 5"

>> +    HY4623-NS48  5.1" .. 7"

>> +   Glass: 0.3mm--8.0mm

>> +    PET/PMMA: 0.2mm--4.0mm

>> +    HY4633(B)-N048  < 6"

>> +    HY4635(B)-N048  < 7" .. 10.1"

>> +

>> +maintainers:

>> +  - Giulio Benetti <giulio.benetti@benettiengineering.com>

>> +

>> +allOf:

>> +  - $ref: touchscreen.yaml#

>> +

>> +properties:

>> +  compatible:

>> +    enum:

>> +      - hycon,hy4613

>> +      - hycon,hy4614

>> +      - hycon,hy4621

>> +      - hycon,hy4623

>> +      - hycon,hy4633

>> +      - hycon,hy4635

>> +

>> +  reg:

>> +    maxItems: 1

>> +

>> +  interrupts:

>> +    maxItems: 1

>> +

>> +  reset-gpios:

>> +    maxItems: 1

>> +

>> +  vcc-supply: true

>> +

>> +  hycon,threshold:

>> +    description: Allows setting the sensitivity in the range from 0 to 255.

>> +    $ref: /schemas/types.yaml#/definitions/uint32

>> +    minimum: 0

>> +    maximum: 255

>> +

>> +  hycon,glove-enable:

>> +    type: boolean

>> +    description: Allows enabling glove setting.

>> +

>> +  hycon,report-speed:

>> +    description: Allows setting the report speed in Hertz.

>> +    minimum: 1

>> +    maximum: 255

>> +

>> +  hycon,noise-filter-enable:

>> +    type: boolean

>> +    description: Allows enabling power noise filter.

>> +

>> +  hycon,filter-data:

>> +    description: Allows setting how many samples throw before reporting touch

>> +                 in the range from 0 to 5.

>> +    $ref: /schemas/types.yaml#/definitions/uint32

>> +    minimum: 0

>> +    maximum: 5

>> +

>> +  hycon,gain:

>> +    description: Allows setting the sensitivity distance in the range from 0 to 5.

>> +    $ref: /schemas/types.yaml#/definitions/uint32

>> +    minimum: 0

>> +    maximum: 5

>> +

>> +  hycon,edge-offset:

>> +    description: Allows setting the edge compensation in the range from 0 to 16.

>> +    $ref: /schemas/types.yaml#/definitions/uint32

>> +    minimum: 0

>> +    maximum: 16

>> +

>> +  touchscreen-size-x: true

>> +  touchscreen-size-y: true

>> +  touchscreen-fuzz-x: true

>> +  touchscreen-fuzz-y: true

>> +  touchscreen-inverted-x: true

>> +  touchscreen-inverted-y: true

>> +  touchscreen-swapped-x-y: true

>> +  interrupt-controller: true

>> +

>> +additionalProperties: false

>> +

>> +required:

>> +  - compatible

>> +  - reg

>> +  - interrupts

>> +

>> +examples:

>> +  - |

>> +    #include <dt-bindings/gpio/gpio.h>

>> +    #include <dt-bindings/interrupt-controller/arm-gic.h>

>> +    i2c {

>> +      #address-cells = <1>;

>> +      #size-cells = <0>;

>> +      touchscreen@1c {

>> +        compatible = "hycon,hy4633";

>> +        reg = <0x1c>;

>> +        interrupt-parent = <&gpio2>;

>> +        interrupts = <5 IRQ_TYPE_EDGE_FALLING>;

>> +        reset-gpios = <&gpio2 6 GPIO_ACTIVE_LOW>;

>> +      };

>> +    };

>> +

>> +...

>> diff --git a/MAINTAINERS b/MAINTAINERS

>> index 7fdc513392f4..18a50942c019 100644

>> --- a/MAINTAINERS

>> +++ b/MAINTAINERS

>> @@ -8250,6 +8250,12 @@ S:    Maintained

>> F:    mm/hwpoison-inject.c

>> F:    mm/memory-failure.c

>> 

>> +HYCON HY46XX TOUCHSCREEN SUPPORT

>> +M:    Giulio Benetti <giulio.benetti@benettiengineering.com>

>> +L:    linux-input@vger.kernel.org

>> +S:    Maintained

>> +F:    Documentation/devicetree/bindings/input/touchscreen/hycon,hy46xx.yaml

>> +

>> HYGON PROCESSOR SUPPORT

>> M:    Pu Wen <puwen@hygon.cn>

>> L:    linux-kernel@vger.kernel.org

>> -- 

>> 2.25.1

>>
Rob Herring April 12, 2021, 3:05 p.m. UTC | #4
On Sun, 11 Apr 2021 13:48:02 +0200, Giulio Benetti wrote:
> Update Documentation/devicetree/bindings/vendor-prefixes.yaml to

> include "hycon" as a vendor prefix for "Hycon Technology".

> Company website: https://www.hycontek.com/

> 

> Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>

> Reviewed-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net>

> ---

>  Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++

>  1 file changed, 2 insertions(+)

> 



Please add Acked-by/Reviewed-by tags when posting new versions. However,
there's no need to repost patches *only* to add the tags. The upstream
maintainer will do that for acks received on the version they apply.

If a tag was not added on purpose, please state why and what changed.
Rob Herring April 13, 2021, 1:35 p.m. UTC | #5
On Mon, Apr 12, 2021 at 10:12 AM Giulio Benetti
<giulio.benetti@benettiengineering.com> wrote:
>

> On 4/12/21 5:05 PM, Rob Herring wrote:

> > On Sun, 11 Apr 2021 13:48:02 +0200, Giulio Benetti wrote:

> >> Update Documentation/devicetree/bindings/vendor-prefixes.yaml to

> >> include "hycon" as a vendor prefix for "Hycon Technology".

> >> Company website: https://www.hycontek.com/

> >>

> >> Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>

> >> Reviewed-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net>

> >> ---

> >>   Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++

> >>   1 file changed, 2 insertions(+)

> >>

> >

> >

> > Please add Acked-by/Reviewed-by tags when posting new versions. However,

> > there's no need to repost patches *only* to add the tags. The upstream

> > maintainer will do that for acks received on the version they apply.

> >

> > If a tag was not added on purpose, please state why and what changed.

> >

>

> Ok, so on V6 series I'll send only patches 2 and 3 without this one.


No, send the whole series and add any tags. Just don't resend a series
for the sole purpose of adding tags.

Rob
Rob Herring April 13, 2021, 4:36 p.m. UTC | #6
On Tue, 13 Apr 2021 16:44:45 +0200, Giulio Benetti wrote:
> This adds device tree bindings for the Hycon HY46XX touchscreen series.

> 

> Signed-off-by: Giulio Benetti <giulio.benetti@benettiengineering.com>

> ---

> V1->V2:

> As suggested by Rob Herring:

> * fixed $id: address

> * added "hycon," in front of every custom property

> * changed all possible property to boolean type

> * removed proximity-sensor-switch property since it's not handled in driver

> V2->V3:

> As suggested by Jonathan Neuschäfer:

> * fixed some typo

> * fixed description indentation

> * improved boolean properties descriptions

> * improved hycon,report-speed description

> V3->V4:

> * fixed binding compatible string in example as suggested by Jonathan Neuschäfer

> V4->V5:

> As suggested by Rob Herring:

> * drop hycon- prefix from compatible

> * use Hertz unit suffix for hycon,report-speed instead of u32

> * set hycon,report-speed minimum to 1Hz, 0Hz make controller to do nothing

> * change hycon,power-noise-enable property name to hycon,noise-filter-enable

> * improve hycon,filter-data property description

> * use generic touchscreen node name in example

> V5->V6:

> * changed report-speed property name into report-speed-hz according to

> Rob Herring's suggestion

> ---

>  .../input/touchscreen/hycon,hy46xx.yaml       | 119 ++++++++++++++++++

>  MAINTAINERS                                   |   6 +

>  2 files changed, 125 insertions(+)

>  create mode 100644 Documentation/devicetree/bindings/input/touchscreen/hycon,hy46xx.yaml

> 


Reviewed-by: Rob Herring <robh@kernel.org>