# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/input/touchscreen/toradex,vf50-touchscreen.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Toradex Colibri VF50 Touchscreen

maintainers:
  - Dmitry Torokhov <dmitry.torokhov@gmail.com>
  - Sanchayan Maity <maitysanchayan@gmail.com>

properties:
  compatible:
    const: toradex,vf50-touchscreen

  interrupts:
    maxItems: 1

  io-channels:
    maxItems: 4
    description:
      adc channels being used by the Colibri VF50 module
      IIO ADC for Y-, X-, Y+, X+ connections

  xp-gpios:
    description: FET gate driver for input of X+

  xm-gpios:
    description: FET gate driver for input of X-

  yp-gpios:
    description: FET gate driver for input of Y+

  ym-gpios:
    description: FET gate driver for input of Y-

  vf50-ts-min-pressure:
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 50
    maximum: 2000
    description: pressure level at which to stop measuring X/Y values

required:
  - compatible
  - io-channels
  - xp-gpios
  - xm-gpios
  - yp-gpios
  - ym-gpios
  - interrupts
  - vf50-ts-min-pressure

allOf:
  - $ref: touchscreen.yaml#

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/gpio/gpio.h>

    touchscreen {
        compatible = "toradex,vf50-touchscreen";
        interrupt-parent = <&gpio0>;
        interrupts = <8 IRQ_TYPE_LEVEL_LOW>;
        io-channels = <&adc1 0>, <&adc0 0>, <&adc0 1>, <&adc1 2>;
        xp-gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
        xm-gpios = <&gpio2 29 GPIO_ACTIVE_HIGH>;
        yp-gpios = <&gpio0 12 GPIO_ACTIVE_LOW>;
        ym-gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>;
        pinctrl-names = "idle", "default";
        pinctrl-0 = <&pinctrl_touchctrl_idle>, <&pinctrl_touchctrl_gpios>;
        pinctrl-1 = <&pinctrl_touchctrl_default>, <&pinctrl_touchctrl_gpios>;
        vf50-ts-min-pressure = <200>;
    };
