# Copyright (c) 2024 Ilia Kharin
# SPDX-License-Identifier: Apache-2.0

description: Cirque Pinnacle 1CA027 ASIC trackpad

properties:
  data-ready-gpios:
    type: phandle-array
    description: |
      Data Ready (DR) GPIO pin. The DR pin is connected to Pinnacle HW_DR
      which is active high when SW_DR or SW_CC are asserted. If connected
      directly, the MCU pin should be configured as active low.

  sensitivity:
    type: string
    default: "4x"
    description: |
      ADC attenuation, 1x is the most sensitive and 4x is the least sensitive.
    enum:
      - "1x"
      - "2x"
      - "3x"
      - "4x"

  data-mode:
    type: string
    default: "relative"
    description: |
      Data output mode in which position is reported. In the relative mode
      each position is reported as relative to the last position. In the
      absolute mode absolute coordinates are reported.
    enum:
      - "absolute"
      - "relative"

  idle-packets-count:
    type: int
    default: 0
    description: |
      The number of empty packets where both X and Y are set to 0. They are
      started to be sent when a finger presence is detected missing (no touch
      detected) every 10 ms. They are stopped to be sent when a finger presence
      it detected. An application can count these packets in order to detect
      taps. When set to 0, no empty packets are sent. Supported values from 0
      to 255.

  clipping-enable:
    type: boolean
    description: |
      In the absolute mode enable clipping of reported coordinates which are
      outside of the active range.

  active-range-x-min:
    type: int
    default: 128
    description: |
      The minimum X value which can be reported.

  active-range-x-max:
    type: int
    default: 1920
    description: |
      The maximum X value which can be reported.

  active-range-y-min:
    type: int
    default: 64
    description: |
      The minimum Y value which can be reported.

  active-range-y-max:
    type: int
    default: 1472
    description: |
      The maximum Y value which can be reported.

  scaling-enable:
    type: boolean
    description: |
      In the absolute mode enable scaling of coordinates according to
      the specified resolution for X and Y axises. The scaling is applied only
      when the clipping is enabled.

  scaling-x-resolution:
    type: int
    default: 1024
    description: Resolution for the X axis.

  scaling-y-resolution:
    type: int
    default: 1024
    description: Resolution for the Y axis.

  invert-x:
    type: boolean
    description: |
      In the absolute mode invert X coordinate.

  invert-y:
    type: boolean
    description: |
      In the absolute mode invert Y coordinate.

  primary-tap-enable:
    type: boolean
    description: |
      In the relative mode enable the primary tap.

  swap-xy:
    type: boolean
    description: |
      In the relative mode swap X and Y coordinates. This is equivalent for
      rotating coordinates by 90 degrees.
