# Copyright (c) 2023 Espressif Systems (Shanghai) Co., Ltd.
# SPDX-License-Identifier: Apache-2.0

description: |
  Zephyr input touch sensor parent node

  This defines a group of touch sensors that can generate input events. Each touch
  sensor is defined in a child node of the touch-sensor node and defines a specific key
  code.

  For example:

  #include <zephyr/dt-bindings/input/input-event-codes.h>
  #include <zephyr/dt-bindings/input/esp32-touch-sensor-input.h>

  &touch {
         compatible = "espressif,esp32-touch";
         status = "okay";

         debounce-interval-ms = <30>;
         href-microvolt = <27000000>;
         lref-microvolt = <500000>;
         href-atten-microvolt = <1000000>;
         filter-mode = <ESP32_TOUCH_FILTER_MODE_IIR_16>;
         filter-debounce-cnt = <1>;
         filter-noise-thr = <ESP32_TOUCH_FILTER_NOISE_THR_4_8TH>;
         filter-jitter-step = <4>;
         filter-smooth-level = <ESP32_TOUCH_FILTER_SMOOTH_MODE_IIR_2>;

         touch_sensor_0 {
                 channel_num = <1>;
                 channel_sens = <20>;
                 zephyr,code = <INPUT_KEY_0>;
         };
  };


compatible: "espressif,esp32-touch"

include: base.yaml

properties:
  debounce-interval-ms:
    type: int
    default: 30
    description: Debouncing interval time in milliseconds.

  href-microvolt:
    type: int
    enum:
      - 2400000
      - 2500000
      - 2500000
      - 2700000
    default: 2700000
    description: Touch sensor high reference voltage.

  lref-microvolt:
    type: int
    enum:
      - 500000
      - 600000
      - 700000
      - 800000
    default: 500000
    description: Touch sensor low reference voltage.

  href-atten-microvolt:
    type: int
    enum:
      - 1500000
      - 1000000
      - 500000
      - 0
    default: 1000000
    description: Touch sensor high reference attenuation voltage.

  filter-mode:
    type: int
    default: 2
    description: |
       Touch sensor IIR filter coefficient.
       If not specified defaults to ESP32_TOUCH_FILTER_MODE_IIR_16.

  filter-debounce-cnt:
    type: int
    default: 1
    description: |
       Touch sensor debounce count.
       If not specified defaults to 1.

  filter-noise-thr:
    type: int
    default: 0
    description: |
       Touch sensor noise threshold coefficient.
       If not specified defaults to ESP32_TOUCH_FILTER_NOISE_THR_4_8TH.

  filter-jitter-step:
    type: int
    default: 4
    description: |
       Touch sensor jitter filter step size.
       If not specified defaults to 4.

  filter-smooth-level:
    type: int
    default: 1
    description: |
       Touch sensor level of filter applied on the original data against large noise interference.
       If not specified defaults to ESP32_TOUCH_FILTER_SMOOTH_MODE_IIR_2.

child-binding:
  description: Touch sensor child node
  properties:
    channel-num:
      type: int
      required: true
      description: Touch sensor channel number

    channel-sens:
      type: int
      default: 20
      description: |
         Touch sensor channel sensibility in 100th.
         If not specified defaults to 20.

    zephyr,code:
      type: int
      required: true
      description: Key code to emit.
