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

title: Dongwoon Anatech DW9768 Voice Coil Motor (VCM) Lens

maintainers:
  - Dongchun Zhu <dongchun.zhu@mediatek.com>

description: |-
  The Dongwoon DW9768 is a single 10-bit digital-to-analog (DAC) converter
  with 100 mA output current sink capability. VCM current is controlled with
  a linear mode driver. The DAC is controlled via a 2-wire (I2C-compatible)
  serial interface that operates at clock rates up to 1MHz. This chip
  integrates Advanced Actuator Control (AAC) technology and is intended for
  driving voice coil lenses in camera modules.

properties:
  compatible:
    enum:
      - dongwoon,dw9768 # for DW9768 VCM
      - giantec,gt9769  # for GT9769 VCM

  reg:
    maxItems: 1

  vin-supply:
    description:
      Definition of the regulator used as Digital I/O voltage supply.

  vdd-supply:
    description:
      Definition of the regulator used as Digital core voltage supply.

  dongwoon,aac-mode:
    description:
      Indication of AAC mode select.
    $ref: /schemas/types.yaml#/definitions/uint32
    enum:
      - 1    #  AAC2 mode(operation time# 0.48 x Tvib)
      - 2    #  AAC3 mode(operation time# 0.70 x Tvib)
      - 3    #  AAC4 mode(operation time# 0.75 x Tvib)
      - 5    #  AAC8 mode(operation time# 1.13 x Tvib)
    default: 2

  dongwoon,aac-timing:
    description:
      Number of AAC Timing count that controlled by one 6-bit period of
      vibration register AACT[5:0], the unit of which is 100 us.
    $ref: /schemas/types.yaml#/definitions/uint32
    default: 0x20
    minimum: 0x00
    maximum: 0x3f

  dongwoon,clock-presc:
    description:
      Indication of VCM internal clock dividing rate select, as one multiple
      factor to calculate VCM ring periodic time Tvib.
    $ref: /schemas/types.yaml#/definitions/uint32
    enum:
      - 0    #  Dividing Rate -  2
      - 1    #  Dividing Rate -  1
      - 2    #  Dividing Rate -  1/2
      - 3    #  Dividing Rate -  1/4
      - 4    #  Dividing Rate -  8
      - 5    #  Dividing Rate -  4
    default: 1

required:
  - compatible
  - reg
  - vin-supply
  - vdd-supply

additionalProperties: false

examples:
  - |

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

        dw9768: camera-lens@c {
            compatible = "dongwoon,dw9768";
            reg = <0x0c>;

            vin-supply = <&mt6358_vcamio_reg>;
            vdd-supply = <&mt6358_vcama2_reg>;
            dongwoon,aac-timing = <0x39>;
        };
    };

...