# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/regulator/richtek,rt5190a-regulator.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Richtek RT5190A PMIC Regulator

maintainers:
  - ChiYuan Huang <cy_huang@richtek.com>

description: |
  The RT5190A integrates 1 channel buck controller, 3 channels high efficiency
  synchronous buck converters, 1 LDO, I2C control interface and peripheral
  logical control.

  It also supports mute AC OFF depop sound and quick setting storage while
  input power is removed.

properties:
  compatible:
    enum:
      - richtek,rt5190a

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  vin2-supply:
    description: phandle to buck2 input voltage.

  vin3-supply:
    description: phandle to buck3 input voltage.

  vin4-supply:
    description: phandle to buck4 input voltage.

  vinldo-supply:
    description: phandle to ldo input voltage

  richtek,mute-enable:
    description: |
      The mute function uses 'mutein', 'muteout', and 'vdet' pins as the control
      signal. When enabled, The normal behavior is to bypass the 'mutein' signal
      'muteout'. But if the power source removal is detected from 'vdet',
      whatever the 'mutein' signal is, it will pull down the 'muteout' to force
      speakers mute. this function is commonly used to prevent the speaker pop
      noise during AC power turned off in the modern TV system design.
    type: boolean

  regulators:
    type: object

    patternProperties:
      "^buck[1-4]$|^ldo$":
        type: object
        $ref: regulator.yaml#
        description: |
          regulator description for buck1 to buck4, and ldo.

        properties:
          regulator-allowed-modes:
            description: |
             buck operating mode, only buck1/4 support mode operating.
              0: auto mode
              1: force pwm mode
            items:
              enum: [0, 1]

          richtek,latchup-enable:
            type: boolean
            description: |
              If specified, undervolt protection mode changes from the default
              hiccup to latchup.

        unevaluatedProperties: false

    additionalProperties: false

required:
  - compatible
  - reg
  - regulators

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/regulator/richtek,rt5190a-regulator.h>

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

      pmic@64 {
        compatible = "richtek,rt5190a";
        reg = <0x64>;
        interrupts-extended = <&gpio26 0 IRQ_TYPE_LEVEL_LOW>;
        vin2-supply = <&rt5190_buck1>;
        vin3-supply = <&rt5190_buck1>;
        vin4-supply = <&rt5190_buck1>;

        regulators {
          rt5190_buck1: buck1 {
            regulator-name = "rt5190a-buck1";
            regulator-min-microvolt = <5090000>;
            regulator-max-microvolt = <5090000>;
            regulator-allowed-modes = <RT5190A_OPMODE_AUTO RT5190A_OPMODE_FPWM>;
            regulator-boot-on;
          };
          buck2 {
            regulator-name = "rt5190a-buck2";
            regulator-min-microvolt = <600000>;
            regulator-max-microvolt = <1400000>;
            regulator-boot-on;
          };
          buck3 {
            regulator-name = "rt5190a-buck3";
            regulator-min-microvolt = <600000>;
            regulator-max-microvolt = <1400000>;
            regulator-boot-on;
          };
          buck4 {
            regulator-name = "rt5190a-buck4";
            regulator-min-microvolt = <850000>;
            regulator-max-microvolt = <850000>;
            regulator-allowed-modes = <RT5190A_OPMODE_AUTO RT5190A_OPMODE_FPWM>;
            regulator-boot-on;
          };
          ldo {
            regulator-name = "rt5190a-ldo";
            regulator-min-microvolt = <1200000>;
            regulator-max-microvolt = <1200000>;
            regulator-boot-on;
          };
        };
      };
    };