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

title: Samsung S2MPG10 Power Management IC

maintainers:
  - André Draszik <andre.draszik@linaro.org>

description: |
  This is part of the device tree bindings for the S2MPG10 Power Management IC
  (PMIC).

  The Samsung S2MPG10 is a Power Management IC for mobile applications with buck
  converters, various LDOs, power meters, RTC, clock outputs, and additional
  GPIO interfaces and is typically complemented by S2MPG10 PMIC in a main/sub
  configuration as the main PMIC.

properties:
  compatible:
    const: samsung,s2mpg10-pmic

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

  interrupts:
    maxItems: 1

  regulators:
    type: object
    $ref: /schemas/regulator/samsung,s2mpg10-regulator.yaml
    description:
      List of child nodes that specify the regulators.

  system-power-controller: true

  wakeup-source: true

patternProperties:
  "^vinb([1-9]|10)m-supply$":
    description:
      Phandle to the power supply for each buck rail of this PMIC. There is a
      1:1 mapping of supply to rail, e.g. vinb1m-supply supplies buck1m.

  "^vinl([1-9]|1[0-5])m-supply$":
    description: |
      Phandle to the power supply for one or multiple LDO rails of this PMIC.
      The mapping of supply to rail(s) is as follows:
        vinl1m - ldo13m
        vinl2m - ldo15m
        vinl3m - ldo1m, ldo5m, ldo7m
        vinl4m - ldo3m, ldo8m
        vinl5m - ldo16m
        vinl6m - ldo17m
        vinl7m - ldo6m, ldo11m, ldo24m, ldo28m
        vinl8m - ldo12m
        vinl9m - ldo2m, ldo4m
        vinl10m - ldo9m, ldo14m, ldo18m, 19m, ldo20m, ldo25m
        vinl11m - ldo23m, ldo31m
        vinl12m - ldo29m
        vinl13m - ldo30m
        vinl14m - ldo21m
        vinl15m - ldo10m, ldo22m, ldo26m, ldo27m

required:
  - compatible
  - interrupts
  - regulators

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/regulator/samsung,s2mpg10-regulator.h>

    pmic {
        compatible = "samsung,s2mpg10-pmic";
        interrupts-extended = <&gpa0 6 IRQ_TYPE_LEVEL_LOW>;
        pinctrl-names = "default";
        pinctrl-0 = <&pmic_int>;
        system-power-controller;
        wakeup-source;

        vinl3m-supply = <&buck8m>;

        clocks {
            compatible = "samsung,s2mpg10-clk";
            #clock-cells = <1>;
            clock-output-names = "rtc32k_ap", "peri32k1", "peri32k2";
        };

        regulators {
            buck8m {
                regulator-name = "vdd_mif";
                regulator-min-microvolt = <450000>;
                regulator-max-microvolt = <1300000>;
                regulator-ramp-delay = <6250>;
            };

            ldo1m {
                regulator-name = "vdd_ldo1";
                regulator-min-microvolt = <700000>;
                regulator-max-microvolt = <1300000>;
            };

            ldo20m {
                regulator-name = "vdd_dmics";
                regulator-min-microvolt = <700000>;
                regulator-max-microvolt = <1300000>;
                regulator-always-on;
                samsung,ext-control = <S2MPG10_EXTCTRL_LDO20M_EN2>;
            };
        };
    };
