blob: 10c7b408f33aa3d815578fcf1134ed5a9a94eec6 [file] [log] [blame]
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/samsung,s5m8767.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Samsung S5M8767 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 S5M8767 is a Power Management IC which includes voltage
and current regulators, RTC, clock outputs and other sub-blocks.
properties:
compatible:
const: samsung,s5m8767-pmic
clocks:
$ref: ../clock/samsung,s2mps11.yaml
description:
Child node describing clock provider.
interrupts:
maxItems: 1
reg:
maxItems: 1
regulators:
$ref: ../regulator/samsung,s5m8767.yaml
description:
List of child nodes that specify the regulators.
s5m8767,pmic-buck2-dvs-voltage:
$ref: /schemas/types.yaml#/definitions/uint32-array
minItems: 8
maxItems: 8
description: |
A set of 8 voltage values in micro-volt (uV) units for buck2 when
changing voltage using gpio dvs.
s5m8767,pmic-buck3-dvs-voltage:
$ref: /schemas/types.yaml#/definitions/uint32-array
minItems: 8
maxItems: 8
description: |
A set of 8 voltage values in micro-volt (uV) units for buck3 when
changing voltage using gpio dvs.
s5m8767,pmic-buck4-dvs-voltage:
$ref: /schemas/types.yaml#/definitions/uint32-array
minItems: 8
maxItems: 8
description: |
A set of 8 voltage values in micro-volt (uV) units for buck4 when
changing voltage using gpio dvs.
s5m8767,pmic-buck-ds-gpios:
minItems: 3
maxItems: 3
description: |
GPIO specifiers for three host gpio's used for selecting GPIO DVS lines.
It is one-to-one mapped to dvs gpio lines.
s5m8767,pmic-buck2-uses-gpio-dvs:
type: boolean
description: buck2 can be controlled by gpio dvs.
s5m8767,pmic-buck3-uses-gpio-dvs:
type: boolean
description: buck3 can be controlled by gpio dvs.
s5m8767,pmic-buck4-uses-gpio-dvs:
type: boolean
description: buck4 can be controlled by gpio dvs.
s5m8767,pmic-buck-default-dvs-idx:
$ref: /schemas/types.yaml#/definitions/uint32-array
minimum: 0
maximum: 7
default: 0
description: |
Default voltage setting selected from the possible 8 options selectable
by the dvs gpios. The value of this property should be between 0 and 7.
If not specified or if out of range, the default value of this property
is set to 0.
s5m8767,pmic-buck-dvs-gpios:
minItems: 3
maxItems: 3
description: |
GPIO specifiers for three host gpio's used for dvs.
vinb1-supply:
description: Power supply for buck1
vinb2-supply:
description: Power supply for buck2
vinb3-supply:
description: Power supply for buck3
vinb4-supply:
description: Power supply for buck4
vinb5-supply:
description: Power supply for buck5
vinb6-supply:
description: Power supply for buck6
vinb7-supply:
description: Power supply for buck7
vinb8-supply:
description: Power supply for buck8
vinb9-supply:
description: Power supply for buck9
vinl1-supply:
description: Power supply for LDO3, LDO10, LDO26, LDO27
vinl2-supply:
description: Power supply for LDO13, LDO16, LDO25, LDO28
vinl3-supply:
description: Power supply for LDO11, LDO14
vinl4-supply:
description: Power supply for LDO4, LDO9
vinl5-supply:
description: Power supply for LDO12, LDO17, LDO19, LDO23
vinl6-supply:
description: Power supply for LDO18, LDO20, LDO21, LDO24
vinl7-supply:
description: Power supply for LDO5, LDO22
vinl8-supply:
description: Power supply for LDO1, LDO6, LDO7, LDO8, LDO15
vinl9-supply:
description: Power supply for LDO2
wakeup-source: true
required:
- compatible
- reg
- regulators
- s5m8767,pmic-buck-ds-gpios
dependencies:
s5m8767,pmic-buck2-dvs-voltage: [ 's5m8767,pmic-buck-dvs-gpios' ]
s5m8767,pmic-buck3-dvs-voltage: [ 's5m8767,pmic-buck-dvs-gpios' ]
s5m8767,pmic-buck4-dvs-voltage: [ 's5m8767,pmic-buck-dvs-gpios' ]
s5m8767,pmic-buck2-uses-gpio-dvs: [ 's5m8767,pmic-buck-dvs-gpios', 's5m8767,pmic-buck2-dvs-voltage' ]
s5m8767,pmic-buck3-uses-gpio-dvs: [ 's5m8767,pmic-buck-dvs-gpios', 's5m8767,pmic-buck3-dvs-voltage' ]
s5m8767,pmic-buck4-uses-gpio-dvs: [ 's5m8767,pmic-buck-dvs-gpios', 's5m8767,pmic-buck4-dvs-voltage' ]
additionalProperties: false
allOf:
- if:
required:
- s5m8767,pmic-buck2-uses-gpio-dvs
then:
properties:
s5m8767,pmic-buck3-uses-gpio-dvs: false
s5m8767,pmic-buck4-uses-gpio-dvs: false
- if:
required:
- s5m8767,pmic-buck3-uses-gpio-dvs
then:
properties:
s5m8767,pmic-buck2-uses-gpio-dvs: false
s5m8767,pmic-buck4-uses-gpio-dvs: false
- if:
required:
- s5m8767,pmic-buck4-uses-gpio-dvs
then:
properties:
s5m8767,pmic-buck2-uses-gpio-dvs: false
s5m8767,pmic-buck3-uses-gpio-dvs: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
pmic@66 {
compatible = "samsung,s5m8767-pmic";
reg = <0x66>;
interrupt-parent = <&gpx3>;
interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&s5m8767_irq &s5m8767_dvs &s5m8767_ds>;
wakeup-source;
s5m8767,pmic-buck-default-dvs-idx = <3>;
s5m8767,pmic-buck2-uses-gpio-dvs;
s5m8767,pmic-buck-dvs-gpios = <&gpd1 0 GPIO_ACTIVE_LOW>,
<&gpd1 1 GPIO_ACTIVE_LOW>,
<&gpd1 2 GPIO_ACTIVE_LOW>;
s5m8767,pmic-buck-ds-gpios = <&gpx2 3 GPIO_ACTIVE_LOW>,
<&gpx2 4 GPIO_ACTIVE_LOW>,
<&gpx2 5 GPIO_ACTIVE_LOW>;
s5m8767,pmic-buck2-dvs-voltage = <1350000>, <1300000>,
<1250000>, <1200000>,
<1150000>, <1100000>,
<1000000>, <950000>;
s5m8767,pmic-buck3-dvs-voltage = <1100000>, <1100000>,
<1100000>, <1100000>,
<1000000>, <1000000>,
<1000000>, <1000000>;
s5m8767,pmic-buck4-dvs-voltage = <1200000>, <1200000>,
<1200000>, <1200000>,
<1200000>, <1200000>,
<1200000>, <1200000>;
clocks {
compatible = "samsung,s5m8767-clk";
#clock-cells = <1>;
clock-output-names = "en32khz_ap", "en32khz_cp", "en32khz_bt";
};
regulators {
LDO1 {
regulator-name = "VDD_ALIVE";
regulator-min-microvolt = <1100000>;
regulator-max-microvolt = <1100000>;
regulator-always-on;
regulator-boot-on;
op_mode = <1>; /* Normal Mode */
};
// ...
BUCK1 {
regulator-name = "VDD_MIF";
regulator-min-microvolt = <950000>;
regulator-max-microvolt = <1100000>;
regulator-always-on;
regulator-boot-on;
op_mode = <1>; /* Normal Mode */
};
BUCK2 {
regulator-name = "VDD_ARM";
regulator-min-microvolt = <900000>;
regulator-max-microvolt = <1350000>;
regulator-always-on;
regulator-boot-on;
op_mode = <1>; /* Normal Mode */
};
// ...
};
};
};
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
pmic@66 {
compatible = "samsung,s5m8767-pmic";
reg = <0x66>;
interrupt-parent = <&gpx3>;
interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
pinctrl-names = "default";
pinctrl-0 = <&s5m8767_irq &s5m8767_dvs &s5m8767_ds>;
wakeup-source;
s5m8767,pmic-buck-ds-gpios = <&gpx2 3 GPIO_ACTIVE_LOW>,
<&gpx2 4 GPIO_ACTIVE_LOW>,
<&gpx2 5 GPIO_ACTIVE_LOW>;
clocks {
compatible = "samsung,s5m8767-clk";
#clock-cells = <1>;
clock-output-names = "en32khz_ap", "en32khz_cp", "en32khz_bt";
};
regulators {
LDO1 {
regulator-name = "VDD_ALIVE";
regulator-min-microvolt = <1100000>;
regulator-max-microvolt = <1100000>;
regulator-always-on;
regulator-boot-on;
op_mode = <1>; /* Normal Mode */
};
// ...
};
};
};