# SPDX-License-Identifier: GPL-2.0-only
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/samsung,s2mps11.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Samsung S2MPS11/13/14/15 and S2MPU02 Power Management IC

maintainers:
  - Krzysztof Kozlowski <krzk@kernel.org>

description: |
  This is a part of device tree bindings for S2M and S5M family of Power
  Management IC (PMIC).

  The Samsung S2MPS11/13/14/15 and S2MPU02 is a family of Power Management IC
  which include voltage and current regulators, RTC, clock outputs and other
  sub-blocks.

properties:
  compatible:
    enum:
      - samsung,s2mps11-pmic
      - samsung,s2mps13-pmic
      - samsung,s2mps14-pmic
      - samsung,s2mps15-pmic
      - samsung,s2mpu02-pmic

  clocks:
    $ref: /schemas/clock/samsung,s2mps11.yaml
    description:
      Child node describing clock provider.

  interrupts:
    maxItems: 1

  reg:
    maxItems: 1

  regulators:
    type: object
    description:
      List of child nodes that specify the regulators.

  samsung,s2mps11-acokb-ground:
    description: |
      Indicates that ACOKB pin of S2MPS11 PMIC is connected to the ground so
      the PMIC must manually set PWRHOLD bit in CTRL1 register to turn off the
      power. Usually the ACOKB is pulled up to VBATT so when PWRHOLD pin goes
      low, the rising ACOKB will trigger power off.
    type: boolean

  samsung,s2mps11-wrstbi-ground:
    description: |
      Indicates that WRSTBI pin of PMIC is pulled down. When the system is
      suspended it will always go down thus triggering unwanted buck warm
      reset (setting buck voltages to default values).
    type: boolean

  wakeup-source: true

required:
  - compatible
  - reg
  - regulators

additionalProperties: false

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: samsung,s2mps11-pmic
    then:
      properties:
        regulators:
          $ref: /schemas/regulator/samsung,s2mps11.yaml
        samsung,s2mps11-wrstbi-ground: false

  - if:
      properties:
        compatible:
          contains:
            const: samsung,s2mps13-pmic
    then:
      properties:
        regulators:
          $ref: /schemas/regulator/samsung,s2mps13.yaml
        samsung,s2mps11-acokb-ground: false

  - if:
      properties:
        compatible:
          contains:
            const: samsung,s2mps14-pmic
    then:
      properties:
        regulators:
          $ref: /schemas/regulator/samsung,s2mps14.yaml
        samsung,s2mps11-acokb-ground: false
        samsung,s2mps11-wrstbi-ground: false

  - if:
      properties:
        compatible:
          contains:
            const: samsung,s2mps15-pmic
    then:
      properties:
        regulators:
          $ref: /schemas/regulator/samsung,s2mps15.yaml
        samsung,s2mps11-acokb-ground: false
        samsung,s2mps11-wrstbi-ground: false

  - if:
      properties:
        compatible:
          contains:
            const: samsung,s2mpu02-pmic
    then:
      properties:
        regulators:
          $ref: /schemas/regulator/samsung,s2mpu02.yaml
        samsung,s2mps11-acokb-ground: false
        samsung,s2mps11-wrstbi-ground: false

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

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

        pmic@66 {
            compatible = "samsung,s2mps11-pmic";
            reg = <0x66>;

            interrupt-parent = <&gpx0>;
            interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
            pinctrl-names = "default";
            pinctrl-0 = <&s2mps11_irq>;
            samsung,s2mps11-acokb-ground;
            wakeup-source;

            clocks {
                compatible = "samsung,s2mps11-clk";
                #clock-cells = <1>;
                clock-output-names = "s2mps11_ap", "s2mps11_cp", "s2mps11_bt";
            };

            regulators {
                LDO1 {
                    regulator-name = "vdd_ldo1";
                    regulator-min-microvolt = <1000000>;
                    regulator-max-microvolt = <1000000>;
                    regulator-always-on;
                };

                LDO4 {
                    regulator-name = "vdd_adc";
                    regulator-min-microvolt = <1800000>;
                    regulator-max-microvolt = <1800000>;

                    regulator-state-mem {
                        regulator-off-in-suspend;
                    };
                };

                // ....

                BUCK1 {
                    regulator-name = "vdd_mif";
                    regulator-min-microvolt = <800000>;
                    regulator-max-microvolt = <1300000>;
                    regulator-always-on;
                    regulator-boot-on;

                    regulator-state-mem {
                        regulator-off-in-suspend;
                    };
                };

                BUCK2 {
                    regulator-name = "vdd_arm";
                    regulator-min-microvolt = <800000>;
                    regulator-max-microvolt = <1500000>;
                    regulator-always-on;
                    regulator-boot-on;
                    regulator-coupled-with = <&buck3_reg>;
                    regulator-coupled-max-spread = <300000>;

                    regulator-state-mem {
                        regulator-off-in-suspend;
                    };
                };

                BUCK3 {
                    regulator-name = "vdd_int";
                    regulator-min-microvolt = <800000>;
                    regulator-max-microvolt = <1400000>;
                    regulator-always-on;
                    regulator-boot-on;
                    regulator-coupled-with = <&buck2_reg>;
                    regulator-coupled-max-spread = <300000>;

                    regulator-state-mem {
                        regulator-off-in-suspend;
                    };
                };

                // ...
            };
        };
    };

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

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

        pmic@66 {
            compatible = "samsung,s2mps14-pmic";
            reg = <0x66>;

            interrupt-parent = <&gpx0>;
            interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
            wakeup-source;

            clocks {
                compatible = "samsung,s2mps14-clk";
                #clock-cells = <1>;
                clock-output-names = "s2mps14_ap", "unused", "s2mps14_bt";
            };

            regulators {
                LDO1 {
                    regulator-name = "VLDO1_1.0V";
                    regulator-min-microvolt = <1000000>;
                    regulator-max-microvolt = <1000000>;
                    regulator-always-on;

                    regulator-state-mem {
                        regulator-on-in-suspend;
                    };
                };

                // ...

                BUCK1 {
                    regulator-name = "VBUCK1_1.0V";
                    regulator-min-microvolt = <800000>;
                    regulator-max-microvolt = <1000000>;
                    regulator-always-on;

                    regulator-state-mem {
                        regulator-off-in-suspend;
                    };
                };

                // ...
            };
        };
    };
