# 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 <krzysztof.kozlowski@canonical.com>

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: ../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 triggerring 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: ../regulator/samsung,s2mps11.yaml
        samsung,s2mps11-wrstbi-ground: false

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

  - if:
      properties:
        compatible:
          contains:
            const: samsung,s2mps14-pmic
    then:
      properties:
        regulators:
          $ref: ../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: ../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: ../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;
                    };
                };

                // ...
            };
        };
    };
