# Copyright (c) 2024 Cirrus Logic, Inc.
# SPDX-License-Identifier: Apache-2.0

description: |
  DRV2605 Haptic Driver for ERM and LRA with built-in library and smart-loop
  architecture.

compatible: "ti,drv2605"

include: i2c-device.yaml

properties:
  actuator-mode:
    required: true
    type: string
    enum:
      - "ERM"
      - "LRA"
  feedback-brake-factor:
    type: string
    enum:
      - "1X"
      - "2X"
      - "3X"
      - "4X"
      - "6X"
      - "8X"
      - "16X"
      - "DISABLED"
    default: "3X"
    description: |
      Selects the feedback gain ratio between braking gain and driving gain.
      According to the datasheet, a value of 2 ("3X") is valid for most
      actuators.
  loop-gain:
    type: string
    enum:
      - "LOW"
      - "MEDIUM"
      - "HIGH"
      - "VERY_HIGH"
    default: "HIGH"
    description: |
      Selects a loop gain for the feedback control. According to the datasheet,
      a value of 2 ("HIGH") is valid for most actuators.
  vib-rated-mv:
    type: int
    default: 3200
    description: |
      Sets the reference voltage for full-scale output during closed-loop
      operation. The default value is inherited from ti,drv260x.yaml in Linux.
  vib-overdrive-mv:
    type: int
    default: 3200
    description: |
      Sets a clamp so that the automatic overdrive is bounded. The default
      value is inherited from ti,drv260x.yaml in Linux.
  en-gpios:
    type: phandle-array
    description: GPIO to enable and disable the device.
  in-trig-gpios:
    type: phandle-array
    description: GPIO to trigger ROM waveforms or drive an input signal.
