162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/mfd/samsung,s5m8767.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Samsung S5M8767 Power Management IC
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Krzysztof Kozlowski <krzk@kernel.org>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  This is a part of device tree bindings for S2M and S5M family of Power
1462306a36Sopenharmony_ci  Management IC (PMIC).
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci  The Samsung S5M8767 is a Power Management IC which includes voltage
1762306a36Sopenharmony_ci  and current regulators, RTC, clock outputs and other sub-blocks.
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ciproperties:
2062306a36Sopenharmony_ci  compatible:
2162306a36Sopenharmony_ci    const: samsung,s5m8767-pmic
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci  clocks:
2462306a36Sopenharmony_ci    $ref: ../clock/samsung,s2mps11.yaml
2562306a36Sopenharmony_ci    description:
2662306a36Sopenharmony_ci      Child node describing clock provider.
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci  interrupts:
2962306a36Sopenharmony_ci    maxItems: 1
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci  reg:
3262306a36Sopenharmony_ci    maxItems: 1
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci  regulators:
3562306a36Sopenharmony_ci    $ref: ../regulator/samsung,s5m8767.yaml
3662306a36Sopenharmony_ci    description:
3762306a36Sopenharmony_ci      List of child nodes that specify the regulators.
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci  s5m8767,pmic-buck2-dvs-voltage:
4062306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-array
4162306a36Sopenharmony_ci    minItems: 8
4262306a36Sopenharmony_ci    maxItems: 8
4362306a36Sopenharmony_ci    description: |
4462306a36Sopenharmony_ci      A set of 8 voltage values in micro-volt (uV) units for buck2 when
4562306a36Sopenharmony_ci      changing voltage using gpio dvs.
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci  s5m8767,pmic-buck3-dvs-voltage:
4862306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-array
4962306a36Sopenharmony_ci    minItems: 8
5062306a36Sopenharmony_ci    maxItems: 8
5162306a36Sopenharmony_ci    description: |
5262306a36Sopenharmony_ci      A set of 8 voltage values in micro-volt (uV) units for buck3 when
5362306a36Sopenharmony_ci      changing voltage using gpio dvs.
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci  s5m8767,pmic-buck4-dvs-voltage:
5662306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-array
5762306a36Sopenharmony_ci    minItems: 8
5862306a36Sopenharmony_ci    maxItems: 8
5962306a36Sopenharmony_ci    description: |
6062306a36Sopenharmony_ci      A set of 8 voltage values in micro-volt (uV) units for buck4 when
6162306a36Sopenharmony_ci      changing voltage using gpio dvs.
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci  s5m8767,pmic-buck-ds-gpios:
6462306a36Sopenharmony_ci    minItems: 3
6562306a36Sopenharmony_ci    maxItems: 3
6662306a36Sopenharmony_ci    description: |
6762306a36Sopenharmony_ci      GPIO specifiers for three host gpio's used for selecting GPIO DVS lines.
6862306a36Sopenharmony_ci      It is one-to-one mapped to dvs gpio lines.
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci  s5m8767,pmic-buck2-uses-gpio-dvs:
7162306a36Sopenharmony_ci    type: boolean
7262306a36Sopenharmony_ci    description: buck2 can be controlled by gpio dvs.
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci  s5m8767,pmic-buck3-uses-gpio-dvs:
7562306a36Sopenharmony_ci    type: boolean
7662306a36Sopenharmony_ci    description: buck3 can be controlled by gpio dvs.
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ci  s5m8767,pmic-buck4-uses-gpio-dvs:
7962306a36Sopenharmony_ci    type: boolean
8062306a36Sopenharmony_ci    description: buck4 can be controlled by gpio dvs.
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci  s5m8767,pmic-buck-default-dvs-idx:
8362306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-array
8462306a36Sopenharmony_ci    minimum: 0
8562306a36Sopenharmony_ci    maximum: 7
8662306a36Sopenharmony_ci    default: 0
8762306a36Sopenharmony_ci    description: |
8862306a36Sopenharmony_ci      Default voltage setting selected from the possible 8 options selectable
8962306a36Sopenharmony_ci      by the dvs gpios. The value of this property should be between 0 and 7.
9062306a36Sopenharmony_ci      If not specified or if out of range, the default value of this property
9162306a36Sopenharmony_ci      is set to 0.
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci  s5m8767,pmic-buck-dvs-gpios:
9462306a36Sopenharmony_ci    minItems: 3
9562306a36Sopenharmony_ci    maxItems: 3
9662306a36Sopenharmony_ci    description: |
9762306a36Sopenharmony_ci      GPIO specifiers for three host gpio's used for dvs.
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ci  vinb1-supply:
10062306a36Sopenharmony_ci    description: Power supply for buck1
10162306a36Sopenharmony_ci  vinb2-supply:
10262306a36Sopenharmony_ci    description: Power supply for buck2
10362306a36Sopenharmony_ci  vinb3-supply:
10462306a36Sopenharmony_ci    description: Power supply for buck3
10562306a36Sopenharmony_ci  vinb4-supply:
10662306a36Sopenharmony_ci    description: Power supply for buck4
10762306a36Sopenharmony_ci  vinb5-supply:
10862306a36Sopenharmony_ci    description: Power supply for buck5
10962306a36Sopenharmony_ci  vinb6-supply:
11062306a36Sopenharmony_ci    description: Power supply for buck6
11162306a36Sopenharmony_ci  vinb7-supply:
11262306a36Sopenharmony_ci    description: Power supply for buck7
11362306a36Sopenharmony_ci  vinb8-supply:
11462306a36Sopenharmony_ci    description: Power supply for buck8
11562306a36Sopenharmony_ci  vinb9-supply:
11662306a36Sopenharmony_ci    description: Power supply for buck9
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci  vinl1-supply:
11962306a36Sopenharmony_ci    description: Power supply for LDO3, LDO10, LDO26, LDO27
12062306a36Sopenharmony_ci  vinl2-supply:
12162306a36Sopenharmony_ci    description: Power supply for LDO13, LDO16, LDO25, LDO28
12262306a36Sopenharmony_ci  vinl3-supply:
12362306a36Sopenharmony_ci    description: Power supply for LDO11, LDO14
12462306a36Sopenharmony_ci  vinl4-supply:
12562306a36Sopenharmony_ci    description: Power supply for LDO4, LDO9
12662306a36Sopenharmony_ci  vinl5-supply:
12762306a36Sopenharmony_ci    description: Power supply for LDO12, LDO17, LDO19, LDO23
12862306a36Sopenharmony_ci  vinl6-supply:
12962306a36Sopenharmony_ci    description: Power supply for LDO18, LDO20, LDO21, LDO24
13062306a36Sopenharmony_ci  vinl7-supply:
13162306a36Sopenharmony_ci    description: Power supply for LDO5, LDO22
13262306a36Sopenharmony_ci  vinl8-supply:
13362306a36Sopenharmony_ci    description: Power supply for LDO1, LDO6, LDO7, LDO8, LDO15
13462306a36Sopenharmony_ci  vinl9-supply:
13562306a36Sopenharmony_ci    description: Power supply for LDO2
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ci  wakeup-source: true
13862306a36Sopenharmony_ci
13962306a36Sopenharmony_cirequired:
14062306a36Sopenharmony_ci  - compatible
14162306a36Sopenharmony_ci  - reg
14262306a36Sopenharmony_ci  - regulators
14362306a36Sopenharmony_ci  - s5m8767,pmic-buck-ds-gpios
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_cidependencies:
14662306a36Sopenharmony_ci  s5m8767,pmic-buck2-dvs-voltage: [ 's5m8767,pmic-buck-dvs-gpios' ]
14762306a36Sopenharmony_ci  s5m8767,pmic-buck3-dvs-voltage: [ 's5m8767,pmic-buck-dvs-gpios' ]
14862306a36Sopenharmony_ci  s5m8767,pmic-buck4-dvs-voltage: [ 's5m8767,pmic-buck-dvs-gpios' ]
14962306a36Sopenharmony_ci  s5m8767,pmic-buck2-uses-gpio-dvs: [ 's5m8767,pmic-buck-dvs-gpios', 's5m8767,pmic-buck2-dvs-voltage' ]
15062306a36Sopenharmony_ci  s5m8767,pmic-buck3-uses-gpio-dvs: [ 's5m8767,pmic-buck-dvs-gpios', 's5m8767,pmic-buck3-dvs-voltage' ]
15162306a36Sopenharmony_ci  s5m8767,pmic-buck4-uses-gpio-dvs: [ 's5m8767,pmic-buck-dvs-gpios', 's5m8767,pmic-buck4-dvs-voltage' ]
15262306a36Sopenharmony_ci
15362306a36Sopenharmony_ciadditionalProperties: false
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ciallOf:
15662306a36Sopenharmony_ci  - not:
15762306a36Sopenharmony_ci      required:
15862306a36Sopenharmony_ci        - s5m8767,pmic-buck2-uses-gpio-dvs
15962306a36Sopenharmony_ci        - s5m8767,pmic-buck3-uses-gpio-dvs
16062306a36Sopenharmony_ci  - not:
16162306a36Sopenharmony_ci      required:
16262306a36Sopenharmony_ci        - s5m8767,pmic-buck2-uses-gpio-dvs
16362306a36Sopenharmony_ci        - s5m8767,pmic-buck4-uses-gpio-dvs
16462306a36Sopenharmony_ci  - not:
16562306a36Sopenharmony_ci      required:
16662306a36Sopenharmony_ci        - s5m8767,pmic-buck3-uses-gpio-dvs
16762306a36Sopenharmony_ci        - s5m8767,pmic-buck4-uses-gpio-dvs
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ciexamples:
17062306a36Sopenharmony_ci  - |
17162306a36Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
17262306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
17362306a36Sopenharmony_ci
17462306a36Sopenharmony_ci    i2c {
17562306a36Sopenharmony_ci        #address-cells = <1>;
17662306a36Sopenharmony_ci        #size-cells = <0>;
17762306a36Sopenharmony_ci
17862306a36Sopenharmony_ci        pmic@66 {
17962306a36Sopenharmony_ci            compatible = "samsung,s5m8767-pmic";
18062306a36Sopenharmony_ci            reg = <0x66>;
18162306a36Sopenharmony_ci
18262306a36Sopenharmony_ci            interrupt-parent = <&gpx3>;
18362306a36Sopenharmony_ci            interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
18462306a36Sopenharmony_ci            pinctrl-names = "default";
18562306a36Sopenharmony_ci            pinctrl-0 = <&s5m8767_irq &s5m8767_dvs &s5m8767_ds>;
18662306a36Sopenharmony_ci            wakeup-source;
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_ci            s5m8767,pmic-buck-default-dvs-idx = <3>;
18962306a36Sopenharmony_ci            s5m8767,pmic-buck2-uses-gpio-dvs;
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ci            s5m8767,pmic-buck-dvs-gpios = <&gpd1 0 GPIO_ACTIVE_LOW>,
19262306a36Sopenharmony_ci                                          <&gpd1 1 GPIO_ACTIVE_LOW>,
19362306a36Sopenharmony_ci                                          <&gpd1 2 GPIO_ACTIVE_LOW>;
19462306a36Sopenharmony_ci
19562306a36Sopenharmony_ci            s5m8767,pmic-buck-ds-gpios = <&gpx2 3 GPIO_ACTIVE_LOW>,
19662306a36Sopenharmony_ci                                         <&gpx2 4 GPIO_ACTIVE_LOW>,
19762306a36Sopenharmony_ci                                         <&gpx2 5 GPIO_ACTIVE_LOW>;
19862306a36Sopenharmony_ci
19962306a36Sopenharmony_ci            s5m8767,pmic-buck2-dvs-voltage = <1350000>, <1300000>,
20062306a36Sopenharmony_ci                                             <1250000>, <1200000>,
20162306a36Sopenharmony_ci                                             <1150000>, <1100000>,
20262306a36Sopenharmony_ci                                             <1000000>, <950000>;
20362306a36Sopenharmony_ci
20462306a36Sopenharmony_ci            s5m8767,pmic-buck3-dvs-voltage = <1100000>, <1100000>,
20562306a36Sopenharmony_ci                                             <1100000>, <1100000>,
20662306a36Sopenharmony_ci                                             <1000000>, <1000000>,
20762306a36Sopenharmony_ci                                             <1000000>, <1000000>;
20862306a36Sopenharmony_ci
20962306a36Sopenharmony_ci            s5m8767,pmic-buck4-dvs-voltage = <1200000>, <1200000>,
21062306a36Sopenharmony_ci                                             <1200000>, <1200000>,
21162306a36Sopenharmony_ci                                             <1200000>, <1200000>,
21262306a36Sopenharmony_ci                                             <1200000>, <1200000>;
21362306a36Sopenharmony_ci
21462306a36Sopenharmony_ci            clocks {
21562306a36Sopenharmony_ci                compatible = "samsung,s5m8767-clk";
21662306a36Sopenharmony_ci                #clock-cells = <1>;
21762306a36Sopenharmony_ci                clock-output-names = "en32khz_ap", "en32khz_cp", "en32khz_bt";
21862306a36Sopenharmony_ci            };
21962306a36Sopenharmony_ci
22062306a36Sopenharmony_ci            regulators {
22162306a36Sopenharmony_ci                LDO1 {
22262306a36Sopenharmony_ci                    regulator-name = "VDD_ALIVE";
22362306a36Sopenharmony_ci                    regulator-min-microvolt = <1100000>;
22462306a36Sopenharmony_ci                    regulator-max-microvolt = <1100000>;
22562306a36Sopenharmony_ci                    regulator-always-on;
22662306a36Sopenharmony_ci                    regulator-boot-on;
22762306a36Sopenharmony_ci                    op_mode = <1>; /* Normal Mode */
22862306a36Sopenharmony_ci                };
22962306a36Sopenharmony_ci
23062306a36Sopenharmony_ci                // ...
23162306a36Sopenharmony_ci
23262306a36Sopenharmony_ci                BUCK1 {
23362306a36Sopenharmony_ci                    regulator-name = "VDD_MIF";
23462306a36Sopenharmony_ci                    regulator-min-microvolt = <950000>;
23562306a36Sopenharmony_ci                    regulator-max-microvolt = <1100000>;
23662306a36Sopenharmony_ci                    regulator-always-on;
23762306a36Sopenharmony_ci                    regulator-boot-on;
23862306a36Sopenharmony_ci                    op_mode = <1>; /* Normal Mode */
23962306a36Sopenharmony_ci                };
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_ci                BUCK2 {
24262306a36Sopenharmony_ci                    regulator-name = "VDD_ARM";
24362306a36Sopenharmony_ci                    regulator-min-microvolt = <900000>;
24462306a36Sopenharmony_ci                    regulator-max-microvolt = <1350000>;
24562306a36Sopenharmony_ci                    regulator-always-on;
24662306a36Sopenharmony_ci                    regulator-boot-on;
24762306a36Sopenharmony_ci                    op_mode = <1>; /* Normal Mode */
24862306a36Sopenharmony_ci                };
24962306a36Sopenharmony_ci
25062306a36Sopenharmony_ci                // ...
25162306a36Sopenharmony_ci            };
25262306a36Sopenharmony_ci        };
25362306a36Sopenharmony_ci    };
25462306a36Sopenharmony_ci
25562306a36Sopenharmony_ci  - |
25662306a36Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
25762306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
25862306a36Sopenharmony_ci
25962306a36Sopenharmony_ci    i2c {
26062306a36Sopenharmony_ci        #address-cells = <1>;
26162306a36Sopenharmony_ci        #size-cells = <0>;
26262306a36Sopenharmony_ci
26362306a36Sopenharmony_ci        pmic@66 {
26462306a36Sopenharmony_ci            compatible = "samsung,s5m8767-pmic";
26562306a36Sopenharmony_ci            reg = <0x66>;
26662306a36Sopenharmony_ci
26762306a36Sopenharmony_ci            interrupt-parent = <&gpx3>;
26862306a36Sopenharmony_ci            interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
26962306a36Sopenharmony_ci            pinctrl-names = "default";
27062306a36Sopenharmony_ci            pinctrl-0 = <&s5m8767_irq &s5m8767_dvs &s5m8767_ds>;
27162306a36Sopenharmony_ci            wakeup-source;
27262306a36Sopenharmony_ci
27362306a36Sopenharmony_ci            s5m8767,pmic-buck-ds-gpios = <&gpx2 3 GPIO_ACTIVE_LOW>,
27462306a36Sopenharmony_ci                                         <&gpx2 4 GPIO_ACTIVE_LOW>,
27562306a36Sopenharmony_ci                                         <&gpx2 5 GPIO_ACTIVE_LOW>;
27662306a36Sopenharmony_ci
27762306a36Sopenharmony_ci            clocks {
27862306a36Sopenharmony_ci                compatible = "samsung,s5m8767-clk";
27962306a36Sopenharmony_ci                #clock-cells = <1>;
28062306a36Sopenharmony_ci                clock-output-names = "en32khz_ap", "en32khz_cp", "en32khz_bt";
28162306a36Sopenharmony_ci            };
28262306a36Sopenharmony_ci
28362306a36Sopenharmony_ci            regulators {
28462306a36Sopenharmony_ci                LDO1 {
28562306a36Sopenharmony_ci                    regulator-name = "VDD_ALIVE";
28662306a36Sopenharmony_ci                    regulator-min-microvolt = <1100000>;
28762306a36Sopenharmony_ci                    regulator-max-microvolt = <1100000>;
28862306a36Sopenharmony_ci                    regulator-always-on;
28962306a36Sopenharmony_ci                    regulator-boot-on;
29062306a36Sopenharmony_ci                    op_mode = <1>; /* Normal Mode */
29162306a36Sopenharmony_ci                };
29262306a36Sopenharmony_ci
29362306a36Sopenharmony_ci                // ...
29462306a36Sopenharmony_ci            };
29562306a36Sopenharmony_ci        };
29662306a36Sopenharmony_ci    };
297