| # 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; |
| }; |
| }; |
| |
| // ... |
| }; |
| }; |
| }; |