# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/i2c/dongwoon,dw9719.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Dongwoon Anatech DW9719 Voice Coil Motor (VCM) Controller

maintainers:
  - André Apitzsch <git@apitzsch.eu>

description:
  The Dongwoon DW9718S/9719/9761 is a single 10-bit digital-to-analog converter
  with 100 mA output current sink capability, designed for linear control of
  voice coil motors (VCM) in camera lenses. This chip provides a Smart Actuator
  Control (SAC) mode intended for driving voice coil lenses in camera modules.

properties:
  compatible:
    enum:
      - dongwoon,dw9718s
      - dongwoon,dw9719
      - dongwoon,dw9761
      - dongwoon,dw9800k

  reg:
    maxItems: 1

  vdd-supply:
    description: VDD power supply

  dongwoon,sac-mode:
    description: |
      Slew Rate Control mode to use: direct, LSC (Linear Slope Control) or
      SAC1-SAC6 (Smart Actuator Control).
    $ref: /schemas/types.yaml#/definitions/uint32
    enum:
      - 0   # Direct mode
      - 1   # LSC mode
      - 2   # SAC1 mode (operation time# 0.32 x Tvib)
      - 3   # SAC2 mode (operation time# 0.48 x Tvib)
      - 4   # SAC3 mode (operation time# 0.72 x Tvib)
      - 5   # SAC4 mode (operation time# 1.20 x Tvib)
      - 6   # SAC5 mode (operation time# 1.64 x Tvib)
      - 7   # SAC6 mode (operation time# 1.88 x Tvib)
    default: 4

  dongwoon,vcm-prescale:
    description:
      Indication of VCM switching frequency dividing rate select.
    $ref: /schemas/types.yaml#/definitions/uint32

required:
  - compatible
  - reg
  - vdd-supply

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: dongwoon,dw9718s
    then:
      properties:
        dongwoon,vcm-prescale:
          description:
            The final frequency is 10 MHz divided by (value + 2).
          maximum: 15
          default: 0

additionalProperties: false

examples:
  - |
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        actuator@c {
            compatible = "dongwoon,dw9718s";
            reg = <0x0c>;

            vdd-supply = <&pm8937_l17>;

            dongwoon,sac-mode = <4>;
            dongwoon,vcm-prescale = <0>;
        };
    };
