Merge https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf
[sfrench/cifs-2.6.git] / Documentation / devicetree / bindings / mfd / samsung,s5m8767.yaml
1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/mfd/samsung,s5m8767.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Samsung S5M8767 Power Management IC
8
9 maintainers:
10   - Krzysztof Kozlowski <krzk@kernel.org>
11
12 description: |
13   This is a part of device tree bindings for S2M and S5M family of Power
14   Management IC (PMIC).
15
16   The Samsung S5M8767 is a Power Management IC which includes voltage
17   and current regulators, RTC, clock outputs and other sub-blocks.
18
19 properties:
20   compatible:
21     const: samsung,s5m8767-pmic
22
23   clocks:
24     $ref: ../clock/samsung,s2mps11.yaml
25     description:
26       Child node describing clock provider.
27
28   interrupts:
29     maxItems: 1
30
31   reg:
32     maxItems: 1
33
34   regulators:
35     $ref: ../regulator/samsung,s5m8767.yaml
36     description:
37       List of child nodes that specify the regulators.
38
39   s5m8767,pmic-buck2-dvs-voltage:
40     $ref: /schemas/types.yaml#/definitions/uint32-array
41     minItems: 8
42     maxItems: 8
43     description: |
44       A set of 8 voltage values in micro-volt (uV) units for buck2 when
45       changing voltage using gpio dvs.
46
47   s5m8767,pmic-buck3-dvs-voltage:
48     $ref: /schemas/types.yaml#/definitions/uint32-array
49     minItems: 8
50     maxItems: 8
51     description: |
52       A set of 8 voltage values in micro-volt (uV) units for buck3 when
53       changing voltage using gpio dvs.
54
55   s5m8767,pmic-buck4-dvs-voltage:
56     $ref: /schemas/types.yaml#/definitions/uint32-array
57     minItems: 8
58     maxItems: 8
59     description: |
60       A set of 8 voltage values in micro-volt (uV) units for buck4 when
61       changing voltage using gpio dvs.
62
63   s5m8767,pmic-buck-ds-gpios:
64     minItems: 3
65     maxItems: 3
66     description: |
67       GPIO specifiers for three host gpio's used for selecting GPIO DVS lines.
68       It is one-to-one mapped to dvs gpio lines.
69
70   s5m8767,pmic-buck2-uses-gpio-dvs:
71     type: boolean
72     description: buck2 can be controlled by gpio dvs.
73
74   s5m8767,pmic-buck3-uses-gpio-dvs:
75     type: boolean
76     description: buck3 can be controlled by gpio dvs.
77
78   s5m8767,pmic-buck4-uses-gpio-dvs:
79     type: boolean
80     description: buck4 can be controlled by gpio dvs.
81
82   s5m8767,pmic-buck-default-dvs-idx:
83     $ref: /schemas/types.yaml#/definitions/uint32-array
84     minimum: 0
85     maximum: 7
86     default: 0
87     description: |
88       Default voltage setting selected from the possible 8 options selectable
89       by the dvs gpios. The value of this property should be between 0 and 7.
90       If not specified or if out of range, the default value of this property
91       is set to 0.
92
93   s5m8767,pmic-buck-dvs-gpios:
94     minItems: 3
95     maxItems: 3
96     description: |
97       GPIO specifiers for three host gpio's used for dvs.
98
99   vinb1-supply:
100     description: Power supply for buck1
101   vinb2-supply:
102     description: Power supply for buck2
103   vinb3-supply:
104     description: Power supply for buck3
105   vinb4-supply:
106     description: Power supply for buck4
107   vinb5-supply:
108     description: Power supply for buck5
109   vinb6-supply:
110     description: Power supply for buck6
111   vinb7-supply:
112     description: Power supply for buck7
113   vinb8-supply:
114     description: Power supply for buck8
115   vinb9-supply:
116     description: Power supply for buck9
117
118   vinl1-supply:
119     description: Power supply for LDO3, LDO10, LDO26, LDO27
120   vinl2-supply:
121     description: Power supply for LDO13, LDO16, LDO25, LDO28
122   vinl3-supply:
123     description: Power supply for LDO11, LDO14
124   vinl4-supply:
125     description: Power supply for LDO4, LDO9
126   vinl5-supply:
127     description: Power supply for LDO12, LDO17, LDO19, LDO23
128   vinl6-supply:
129     description: Power supply for LDO18, LDO20, LDO21, LDO24
130   vinl7-supply:
131     description: Power supply for LDO5, LDO22
132   vinl8-supply:
133     description: Power supply for LDO1, LDO6, LDO7, LDO8, LDO15
134   vinl9-supply:
135     description: Power supply for LDO2
136
137   wakeup-source: true
138
139 required:
140   - compatible
141   - reg
142   - regulators
143   - s5m8767,pmic-buck-ds-gpios
144
145 dependencies:
146   s5m8767,pmic-buck2-dvs-voltage: [ 's5m8767,pmic-buck-dvs-gpios' ]
147   s5m8767,pmic-buck3-dvs-voltage: [ 's5m8767,pmic-buck-dvs-gpios' ]
148   s5m8767,pmic-buck4-dvs-voltage: [ 's5m8767,pmic-buck-dvs-gpios' ]
149   s5m8767,pmic-buck2-uses-gpio-dvs: [ 's5m8767,pmic-buck-dvs-gpios', 's5m8767,pmic-buck2-dvs-voltage' ]
150   s5m8767,pmic-buck3-uses-gpio-dvs: [ 's5m8767,pmic-buck-dvs-gpios', 's5m8767,pmic-buck3-dvs-voltage' ]
151   s5m8767,pmic-buck4-uses-gpio-dvs: [ 's5m8767,pmic-buck-dvs-gpios', 's5m8767,pmic-buck4-dvs-voltage' ]
152
153 additionalProperties: false
154
155 allOf:
156   - if:
157       required:
158         - s5m8767,pmic-buck2-uses-gpio-dvs
159     then:
160       properties:
161         s5m8767,pmic-buck3-uses-gpio-dvs: false
162         s5m8767,pmic-buck4-uses-gpio-dvs: false
163
164   - if:
165       required:
166         - s5m8767,pmic-buck3-uses-gpio-dvs
167     then:
168       properties:
169         s5m8767,pmic-buck2-uses-gpio-dvs: false
170         s5m8767,pmic-buck4-uses-gpio-dvs: false
171
172   - if:
173       required:
174         - s5m8767,pmic-buck4-uses-gpio-dvs
175     then:
176       properties:
177         s5m8767,pmic-buck2-uses-gpio-dvs: false
178         s5m8767,pmic-buck3-uses-gpio-dvs: false
179
180 examples:
181   - |
182     #include <dt-bindings/gpio/gpio.h>
183     #include <dt-bindings/interrupt-controller/irq.h>
184
185     i2c {
186         #address-cells = <1>;
187         #size-cells = <0>;
188
189         pmic@66 {
190             compatible = "samsung,s5m8767-pmic";
191             reg = <0x66>;
192
193             interrupt-parent = <&gpx3>;
194             interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
195             pinctrl-names = "default";
196             pinctrl-0 = <&s5m8767_irq &s5m8767_dvs &s5m8767_ds>;
197             wakeup-source;
198
199             s5m8767,pmic-buck-default-dvs-idx = <3>;
200             s5m8767,pmic-buck2-uses-gpio-dvs;
201
202             s5m8767,pmic-buck-dvs-gpios = <&gpd1 0 GPIO_ACTIVE_LOW>,
203                                           <&gpd1 1 GPIO_ACTIVE_LOW>,
204                                           <&gpd1 2 GPIO_ACTIVE_LOW>;
205
206             s5m8767,pmic-buck-ds-gpios = <&gpx2 3 GPIO_ACTIVE_LOW>,
207                                          <&gpx2 4 GPIO_ACTIVE_LOW>,
208                                          <&gpx2 5 GPIO_ACTIVE_LOW>;
209
210             s5m8767,pmic-buck2-dvs-voltage = <1350000>, <1300000>,
211                                              <1250000>, <1200000>,
212                                              <1150000>, <1100000>,
213                                              <1000000>, <950000>;
214
215             s5m8767,pmic-buck3-dvs-voltage = <1100000>, <1100000>,
216                                              <1100000>, <1100000>,
217                                              <1000000>, <1000000>,
218                                              <1000000>, <1000000>;
219
220             s5m8767,pmic-buck4-dvs-voltage = <1200000>, <1200000>,
221                                              <1200000>, <1200000>,
222                                              <1200000>, <1200000>,
223                                              <1200000>, <1200000>;
224
225             clocks {
226                 compatible = "samsung,s5m8767-clk";
227                 #clock-cells = <1>;
228                 clock-output-names = "en32khz_ap", "en32khz_cp", "en32khz_bt";
229             };
230
231             regulators {
232                 LDO1 {
233                     regulator-name = "VDD_ALIVE";
234                     regulator-min-microvolt = <1100000>;
235                     regulator-max-microvolt = <1100000>;
236                     regulator-always-on;
237                     regulator-boot-on;
238                     op_mode = <1>; /* Normal Mode */
239                 };
240
241                 // ...
242
243                 BUCK1 {
244                     regulator-name = "VDD_MIF";
245                     regulator-min-microvolt = <950000>;
246                     regulator-max-microvolt = <1100000>;
247                     regulator-always-on;
248                     regulator-boot-on;
249                     op_mode = <1>; /* Normal Mode */
250                 };
251
252                 BUCK2 {
253                     regulator-name = "VDD_ARM";
254                     regulator-min-microvolt = <900000>;
255                     regulator-max-microvolt = <1350000>;
256                     regulator-always-on;
257                     regulator-boot-on;
258                     op_mode = <1>; /* Normal Mode */
259                 };
260
261                 // ...
262             };
263         };
264     };
265
266   - |
267     #include <dt-bindings/gpio/gpio.h>
268     #include <dt-bindings/interrupt-controller/irq.h>
269
270     i2c {
271         #address-cells = <1>;
272         #size-cells = <0>;
273
274         pmic@66 {
275             compatible = "samsung,s5m8767-pmic";
276             reg = <0x66>;
277
278             interrupt-parent = <&gpx3>;
279             interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
280             pinctrl-names = "default";
281             pinctrl-0 = <&s5m8767_irq &s5m8767_dvs &s5m8767_ds>;
282             wakeup-source;
283
284             s5m8767,pmic-buck-ds-gpios = <&gpx2 3 GPIO_ACTIVE_LOW>,
285                                          <&gpx2 4 GPIO_ACTIVE_LOW>,
286                                          <&gpx2 5 GPIO_ACTIVE_LOW>;
287
288             clocks {
289                 compatible = "samsung,s5m8767-clk";
290                 #clock-cells = <1>;
291                 clock-output-names = "en32khz_ap", "en32khz_cp", "en32khz_bt";
292             };
293
294             regulators {
295                 LDO1 {
296                     regulator-name = "VDD_ALIVE";
297                     regulator-min-microvolt = <1100000>;
298                     regulator-max-microvolt = <1100000>;
299                     regulator-always-on;
300                     regulator-boot-on;
301                     op_mode = <1>; /* Normal Mode */
302                 };
303
304                 // ...
305             };
306         };
307     };