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

title: RK805 Power Management Integrated Circuit

maintainers:
  - Chris Zhong <zyw@rock-chips.com>
  - Zhang Qing <zhangqing@rock-chips.com>

description: |
  Rockchip RK805 series PMIC. This device consists of an i2c controlled MFD
  that includes multiple switchable regulators.

properties:
  compatible:
    enum:
      - rockchip,rk805

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  '#clock-cells':
    description:
      See <dt-bindings/clock/rockchip,rk808.h> for clock IDs.
    minimum: 0
    maximum: 1

  clock-output-names:
    description:
      From common clock binding to override the default output clock name.

  gpio-controller: true

  '#gpio-cells':
    const: 2

  rockchip,system-power-controller:
    type: boolean
    description:
      Telling whether or not this PMIC is controlling the system power.

  wakeup-source:
    type: boolean
    description:
      Device can be used as a wakeup source.

  vcc1-supply:
    description:
      The input supply for DCDC_REG1.

  vcc2-supply:
    description:
      The input supply for DCDC_REG2.

  vcc3-supply:
    description:
      The input supply for DCDC_REG3.

  vcc4-supply:
    description:
      The input supply for DCDC_REG4.

  vcc5-supply:
    description:
      The input supply for LDO_REG1 and LDO_REG2.

  vcc6-supply:
    description:
      The input supply for LDO_REG3.

  regulators:
    type: object
    patternProperties:
      "^(DCDC_REG[1-4]|LDO_REG[1-3])$":
        type: object
        $ref: ../regulator/regulator.yaml#
    unevaluatedProperties: false

allOf:
  - if:
      properties:
        '#clock-cells':
          const: 0

    then:
      properties:
        clock-output-names:
          maxItems: 1

    else:
      properties:
        clock-output-names:
          maxItems: 2

required:
  - compatible
  - reg
  - interrupts
  - "#clock-cells"

additionalProperties: false

examples:
  - |
    #include <dt-bindings/pinctrl/rockchip.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/gpio/gpio.h>
    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        pmic@18 {
            compatible = "rockchip,rk805";
            reg = <0x18>;
            interrupt-parent = <&gpio2>;
            interrupts = <RK_PA6 IRQ_TYPE_LEVEL_LOW>;
            pinctrl-names = "default";
            pinctrl-0 = <&pmic_int_l>;
            rockchip,system-power-controller;
            wakeup-source;
            #clock-cells = <0>;

            vcc1-supply = <&vcc_sys>;
            vcc2-supply = <&vcc_sys>;
            vcc3-supply = <&vcc_sys>;
            vcc4-supply = <&vcc_sys>;
            vcc5-supply = <&vcc_io>;
            vcc6-supply = <&vcc_io>;

            regulators {
                vdd_logic: DCDC_REG1 {
                    regulator-name = "vdd_logic";
                    regulator-min-microvolt = <700000>;
                    regulator-max-microvolt = <1350000>;
                    regulator-always-on;
                    regulator-boot-on;
                    regulator-state-mem {
                        regulator-on-in-suspend;
                        regulator-suspend-microvolt = <1000000>;
                    };
                };

                vdd_arm: DCDC_REG2 {
                    regulator-name = "vdd_arm";
                    regulator-min-microvolt = <700000>;
                    regulator-max-microvolt = <1350000>;
                    regulator-always-on;
                    regulator-boot-on;
                    regulator-state-mem {
                        regulator-on-in-suspend;
                        regulator-suspend-microvolt = <950000>;
                    };
                };

                vcc_ddr: DCDC_REG3 {
                    regulator-name = "vcc_ddr";
                    regulator-always-on;
                    regulator-boot-on;
                    regulator-state-mem {
                        regulator-on-in-suspend;
                    };
                };

                vcc_io: DCDC_REG4 {
                    regulator-name = "vcc_io";
                    regulator-min-microvolt = <3300000>;
                    regulator-max-microvolt = <3300000>;
                    regulator-always-on;
                    regulator-boot-on;
                    regulator-state-mem {
                        regulator-on-in-suspend;
                        regulator-suspend-microvolt = <3300000>;
                    };
                };

                vdd_18: LDO_REG1 {
                    regulator-name = "vdd_18";
                    regulator-min-microvolt = <1800000>;
                    regulator-max-microvolt = <1800000>;
                    regulator-always-on;
                    regulator-boot-on;
                    regulator-state-mem {
                        regulator-on-in-suspend;
                        regulator-suspend-microvolt = <1800000>;
                    };
                };

                vcc18_emmc: LDO_REG2 {
                    regulator-name = "vcc_18emmc";
                    regulator-min-microvolt = <1800000>;
                    regulator-max-microvolt = <1800000>;
                    regulator-always-on;
                    regulator-boot-on;
                    regulator-state-mem {
                        regulator-on-in-suspend;
                        regulator-suspend-microvolt = <1800000>;
                    };
                };

                vdd_11: LDO_REG3 {
                    regulator-name = "vdd_11";
                    regulator-min-microvolt = <1100000>;
                    regulator-max-microvolt = <1100000>;
                    regulator-always-on;
                    regulator-boot-on;
                    regulator-state-mem {
                        regulator-on-in-suspend;
                        regulator-suspend-microvolt = <1100000>;
                    };
                };
            };
        };
    };