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

title: Dialog DA906{3L,3,2,1} Power Management Integrated Circuit (PMIC)

maintainers:
  - Steve Twiss <stwiss.opensource@diasemi.com>

description: |
  For device-tree bindings of other sub-modules refer to the binding documents
  under the respective sub-system directories.
  Using regulator-{uv,ov}-{warn,error,protection}-microvolt requires special
  handling: First, when GP_FB2 is used, it must be ensured that there is no
  moment where all voltage monitors are disabled. Next, as da9063 only supports
  UV *and* OV monitoring, both must be set to the same severity and value
  (0: disable, 1: enable).
  Product information for the DA906{3L,3,2,1} devices can be found here:
  - https://www.dialog-semiconductor.com/products/da9063l
  - https://www.dialog-semiconductor.com/products/da9063
  - https://www.dialog-semiconductor.com/products/da9062
  - https://www.dialog-semiconductor.com/products/da9061

properties:
  compatible:
    enum:
      - dlg,da9061
      - dlg,da9062
      - dlg,da9063
      - dlg,da9063l

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  interrupt-controller: true

  "#interrupt-cells":
    const: 2

  gpio-controller: true

  "#gpio-cells":
    const: 2

  gpio:
    type: object
    additionalProperties: false
    properties:
      compatible:
        const: dlg,da9062-gpio

  onkey:
    $ref: /schemas/input/dlg,da9062-onkey.yaml

  regulators:
    type: object
    additionalProperties: false
    patternProperties:
      "^(ldo([1-9]|1[01])|bcore([1-2]|s-merged)|b(pro|mem|io|peri)|bmem-bio-merged|buck[1-4])$":
        $ref: /schemas/regulator/regulator.yaml
        unevaluatedProperties: false

  rtc:
    type: object
    $ref: /schemas/rtc/rtc.yaml#
    unevaluatedProperties: false
    properties:
      compatible:
        enum:
          - dlg,da9062-rtc
          - dlg,da9063-rtc

  thermal:
    $ref: /schemas/thermal/dlg,da9062-thermal.yaml

  watchdog:
    $ref: /schemas/watchdog/dlg,da9062-watchdog.yaml

patternProperties:
  "^(.+-hog(-[0-9]+)?)$":
    type: object

    required:
      - gpio-hog

required:
  - compatible
  - reg

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - dlg,da9063
              - dlg,da9063l
    then:
      properties:
        gpio-controller: false
        "#gpio-cells": false
        gpio: false
        regulators:
          patternProperties:
            "^buck[1-4]$": false
        thermal: false
      required:
        - interrupts
        - interrupt-controller
        - '#interrupt-cells'

  - if:
      properties:
        compatible:
          contains:
            enum:
              - dlg,da9062
    then:
      properties:
        regulators:
          patternProperties:
            "^(ldo([5-9]|10|11)|bcore([1-2]|s-merged)|b(pro|mem|io|peri)|bmem-bio-merged)$": false
      required:
        - gpio
        - onkey
        - rtc
        - thermal
        - watchdog

  - if:
      properties:
        compatible:
          contains:
            enum:
              - dlg,da9061
    then:
      properties:
        gpio-controller: false
        "#gpio-cells": false
        gpio: false
        regulators:
          patternProperties:
            "^(ldo([5-9]|10|11)|bcore([1-2]|s-merged)|b(pro|mem|io|peri)|bmem-bio-merged|buck4)$": false
        rtc: false
      required:
        - onkey
        - thermal
        - watchdog

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    i2c {
      #address-cells = <1>;
      #size-cells = <0>;
      pmic@58 {
        compatible = "dlg,da9063";
        reg = <0x58>;
        interrupt-parent = <&gpio6>;
        interrupts = <11 IRQ_TYPE_LEVEL_LOW>;
        interrupt-controller;
        #interrupt-cells = <2>;

        rtc {
          compatible = "dlg,da9063-rtc";
        };

        watchdog {
          compatible = "dlg,da9063-watchdog";
        };

        onkey {
          compatible = "dlg,da9063-onkey";
          dlg,disable-key-power;
        };

        regulators {
          bcore1 {
            regulator-name = "BCORE1";
            regulator-min-microvolt = <300000>;
            regulator-max-microvolt = <1570000>;
            regulator-min-microamp = <500000>;
            regulator-max-microamp = <2000000>;
            regulator-boot-on;
          };
          ldo6 {
            /* UNUSED */
            regulator-name = "LDO_6";
            regulator-uv-protection-microvolt = <0>;
            regulator-ov-protection-microvolt = <0>;
          };
          ldo11 {
            regulator-name = "LDO_11";
            regulator-min-microvolt = <900000>;
            regulator-max-microvolt = <900000>;
            regulator-uv-protection-microvolt = <1>;
            regulator-ov-protection-microvolt = <1>;
            regulator-always-on;
          };
        };
      };
    };

  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/regulator/dlg,da9063-regulator.h>
    i2c {
      #address-cells = <1>;
      #size-cells = <0>;
      pmic@58 {
        compatible = "dlg,da9062";
        reg = <0x58>;
        gpio-controller;
        #gpio-cells = <2>;

        sd0-pwr-sel-hog {
          gpio-hog;
          gpios = <1 0>;
          input;
          line-name = "SD0_PWR_SEL";
        };

        sd1-pwr-sel-hog {
          gpio-hog;
          gpios = <2 0>;
          input;
          line-name = "SD1_PWR_SEL";
        };

        sw-et0-en-hog {
          gpio-hog;
          gpios = <3 0>;
          input;
          line-name = "SW_ET0_EN#";
        };

        pmic-good-hog {
          gpio-hog;
          gpios = <4 0>;
          output-high;
          line-name = "PMIC_PGOOD";
        };

        gpio {
          compatible = "dlg,da9062-gpio";
        };

        onkey {
          compatible = "dlg,da9062-onkey";
        };

        regulators {
          buck1 {
            regulator-name = "vdd_arm";
            regulator-min-microvolt = <925000>;
            regulator-max-microvolt = <1380000>;
            regulator-initial-mode = <DA9063_BUCK_MODE_SYNC>;
            regulator-always-on;
          };
          buck2 {
            regulator-name = "vdd_soc";
            regulator-min-microvolt = <1150000>;
            regulator-max-microvolt = <1380000>;
            regulator-initial-mode = <DA9063_BUCK_MODE_SYNC>;
            regulator-always-on;
          };
          buck3 {
            regulator-name = "vdd_ddr3";
            regulator-min-microvolt = <1500000>;
            regulator-max-microvolt = <1500000>;
            regulator-initial-mode = <DA9063_BUCK_MODE_SYNC>;
            regulator-always-on;
          };
          buck4 {
            regulator-name = "vdd_eth";
            regulator-min-microvolt = <1200000>;
            regulator-max-microvolt = <1200000>;
            regulator-initial-mode = <DA9063_BUCK_MODE_SYNC>;
            regulator-always-on;
          };
          ldo1 {
            regulator-name = "vdd_snvs";
            regulator-min-microvolt = <3000000>;
            regulator-max-microvolt = <3000000>;
            regulator-always-on;
          };
          ldo2 {
            regulator-name = "vdd_high";
            regulator-min-microvolt = <3000000>;
            regulator-max-microvolt = <3000000>;
            regulator-always-on;
          };
          ldo3 {
            regulator-name = "vdd_eth_io";
            regulator-min-microvolt = <2500000>;
            regulator-max-microvolt = <2500000>;
          };
          ldo4 {
            regulator-name = "vdd_emmc";
            regulator-min-microvolt = <1800000>;
            regulator-max-microvolt = <1800000>;
            regulator-always-on;
          };
        };

        rtc {
          compatible = "dlg,da9062-rtc";
        };

        thermal {
          compatible = "dlg,da9062-thermal";
        };

        watchdog {
          compatible = "dlg,da9062-watchdog";
          dlg,use-sw-pm;
        };
      };
    };
...
