# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/hisilicon,hi6421-spmi-pmic.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: HiSilicon 6421v600 SPMI PMIC

maintainers:
  - Mauro Carvalho Chehab <mchehab+huawei@kernel.org>

description: |
  HiSilicon 6421v600 should be connected inside a MIPI System Power Management
  (SPMI) bus. It provides interrupts and power supply.

  The GPIO and interrupt settings are represented as part of the top-level PMIC
  node.

  The SPMI controller part is provided by
  Documentation/devicetree/bindings/mfd/hisilicon,hi6421-spmi-pmic.yaml

properties:
  $nodename:
    pattern: "pmic@[0-9a-f]"

  compatible:
    const: hisilicon,hi6421v600-spmi

  reg:
    maxItems: 1

  '#interrupt-cells':
    const: 2

  interrupt-controller: true

  interrupts:
    maxItems: 1

  regulators:
    type: object

    additionalProperties: false

    properties:
      '#address-cells':
        const: 1

      '#size-cells':
        const: 0

    patternProperties:
      '^ldo[0-9]+$':
        type: object

        $ref: "/schemas/regulator/regulator.yaml#"

        unevaluatedProperties: false

required:
  - compatible
  - reg
  - regulators

additionalProperties: false

examples:
  - |

    pmic: pmic@0 {
      compatible = "hisilicon,hi6421v600-spmi";
      reg = <0 0>;

      #interrupt-cells = <2>;
      interrupt-controller;
      interrupt-parent = <&gpio28>;
      interrupts = <0 0>;

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

        ldo3: ldo3 {
          regulator-name = "ldo3";
          regulator-min-microvolt = <1500000>;
          regulator-max-microvolt = <2000000>;
          regulator-boot-on;
        };

        ldo4: ldo4 {
          regulator-name = "ldo4";
          regulator-min-microvolt = <1725000>;
          regulator-max-microvolt = <1900000>;
          regulator-boot-on;
        };

        ldo9: ldo9 {
          regulator-name = "ldo9";
          regulator-min-microvolt = <1750000>;
          regulator-max-microvolt = <3300000>;
          regulator-boot-on;
        };

        ldo15: ldo15 {
          regulator-name = "ldo15";
          regulator-min-microvolt = <1800000>;
          regulator-max-microvolt = <3000000>;
          regulator-always-on;
        };

        ldo16: ldo16 {
          regulator-name = "ldo16";
          regulator-min-microvolt = <1800000>;
          regulator-max-microvolt = <3000000>;
          regulator-boot-on;
        };

        ldo17: ldo17 {
          regulator-name = "ldo17";
          regulator-min-microvolt = <2500000>;
          regulator-max-microvolt = <3300000>;
        };

        ldo33: ldo33 {
          regulator-name = "ldo33";
          regulator-min-microvolt = <2500000>;
          regulator-max-microvolt = <3300000>;
          regulator-boot-on;
        };

        ldo34: ldo34 {
          regulator-name = "ldo34";
          regulator-min-microvolt = <2600000>;
          regulator-max-microvolt = <3300000>;
        };
      };
    };
