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

title: Richtek RT5120 PMIC

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

description: |
  The RT5120 provides four high-efficiency buck converters and one LDO voltage
  regulator. The device is targeted at providingthe processor voltage, memory,
  I/O, and peripheral rails in home entertainment devices. The I2C interface is
  used for dynamic voltage scaling of the processor voltage, power rails on/off
  sequence control, operation mode selection.

properties:
  compatible:
    enum:
      - richtek,rt5120

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  interrupt-controller: true

  "#interrupt-cells":
    const: 1

  wakeup-source: true

  richtek,enable-undervolt-hiccup:
    type: boolean
    description: |
      If used, under voltage protection trigger hiccup behavior, else latchup as
      default

  richtek,enable-overvolt-hiccup:
    type: boolean
    description:
      Like as 'enable-uv-hiccup', it configures over voltage protection to
      hiccup, else latchup as default

  vin1-supply:
    description: phandle for buck1 input power source

  vin2-supply:
    description: phandle for buck2 input power source

  vin3-supply:
    description: phandle for buck3 input power source

  vin4-supply:
    description: phandle for buck4 input power source

  vinldo-supply:
    description: phandle for ldo input power source

  regulators:
    type: object

    patternProperties:
      "^buck[1-4]$":
        type: object
        $ref: /schemas/regulator/regulator.yaml#
        unevaluatedProperties: false

        properties:
          regulator-allowed-modes:
            description: |
              Used to specify the allowed buck converter operating mode
              mode mapping:
                0: auto mode
                1: force pwm mode
            items:
              enum: [0, 1]

      "^(ldo|exten)$":
        type: object
        $ref: /schemas/regulator/regulator.yaml#
        unevaluatedProperties: false

    additionalProperties: false

  powerkey:
    type: object
    description:
      PON key that connected to RT5120 PMIC.

    properties:
      compatible:
        enum:
          - richtek,rt5120-pwrkey

    required:
      - compatible

    additionalProperties: false

required:
  - compatible
  - reg
  - interrupts
  - '#interrupt-cells'
  - interrupt-controller
  - regulators
  - powerkey

additionalProperties: false

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

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

      pmic@62 {
        compatible = "richtek,rt5120";
        reg = <0x62>;
        interrupts-extended = <&gpio_intc 32 IRQ_TYPE_LEVEL_LOW>;
        interrupt-controller;
        #interrupt-cells = <1>;
        wakeup-source;

        regulators {
          buck1 {
            regulator-name = "rt5120-buck1";
            regulator-min-microvolt = <600000>;
            regulator-max-microvolt = <1393750>;
            regulator-allowed-modes = <0 1>;
            regulator-boot-on;
          };
          buck2 {
            regulator-name = "rt5120-buck2";
            regulator-min-microvolt = <1100000>;
            regulator-max-microvolt = <1100000>;
            regulator-allowed-modes = <0 1>;
            regulator-always-on;
          };
          buck3 {
            regulator-name = "rt5120-buck3";
            regulator-min-microvolt = <1800000>;
            regulator-max-microvolt = <1800000>;
            regulator-allowed-modes = <0 1>;
            regulator-always-on;
          };
          buck4 {
            regulator-name = "rt5120-buck4";
            regulator-min-microvolt = <3300000>;
            regulator-max-microvolt = <3300000>;
            regulator-allowed-modes = <0 1>;
            regulator-always-on;
          };
          ldo {
            regulator-name = "rt5120-ldo";
            regulator-min-microvolt = <1800000>;
            regulator-max-microvolt = <1800000>;
            regulator-always-on;
          };
          exten {
            regulator-name = "rt5120-exten";
            regulator-min-microvolt = <3000000>;
            regulator-max-microvolt = <3000000>;
            regulator-always-on;
          };
        };
        powerkey {
          compatible = "richtek,rt5120-pwrkey";
        };
      };
    };