]> git.sur5r.net Git - u-boot/blob - arch/arm/dts/stm32mp157c-ed1.dts
ARM: dts: stm32mp157c-ed1: Add regulator node
[u-boot] / arch / arm / dts / stm32mp157c-ed1.dts
1 /* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
2 /*
3  * Copyright (C) STMicroelectronics 2017 - All Rights Reserved
4  * Author: Ludovic Barre <ludovic.barre@st.com> for STMicroelectronics.
5  */
6
7 /dts-v1/;
8
9 #include "stm32mp157.dtsi"
10 #include <dt-bindings/gpio/gpio.h>
11 #include <dt-bindings/input/input.h>
12 #include <dt-bindings/pinctrl/stm32-pinfunc.h>
13 #include <dt-bindings/mfd/st,stpmu1.h>
14
15 / {
16         model = "STMicroelectronics STM32MP157C pmic eval daughter";
17         compatible = "st,stm32mp157c-ed1", "st,stm32mp157";
18
19         chosen {
20                 bootargs = "earlyprintk console=ttyS3,115200 root=/dev/ram";
21                 stdout-path = "serial3:115200n8";
22         };
23
24         memory {
25                 reg = <0xC0000000 0x40000000>;
26         };
27
28         sd_switch: regulator-sd_switch {
29                 compatible = "regulator-gpio";
30                 regulator-name = "sd_switch";
31                 regulator-min-microvolt = <1800000>;
32                 regulator-max-microvolt = <2900000>;
33                 regulator-type = "voltage";
34                 regulator-always-on;
35
36                 gpios = <&gpiof 14 GPIO_ACTIVE_HIGH>;
37                 gpios-states = <0>;
38                 states = <1800000 0x1 2900000 0x0>;
39         };
40 };
41
42 &gpioa {
43         status = "okay";
44 };
45
46 &gpiob {
47         status = "okay";
48 };
49
50 &gpioc {
51         status = "okay";
52 };
53
54 &gpiod {
55         status = "okay";
56 };
57
58 &gpioe {
59         status = "okay";
60 };
61
62 &gpiof {
63         status = "okay";
64 };
65
66 &gpiog {
67         status = "okay";
68 };
69
70 &gpioh {
71         status = "okay";
72 };
73
74 &gpioi {
75         status = "okay";
76 };
77
78 &gpioj {
79         status = "okay";
80 };
81
82 &gpiok {
83         status = "okay";
84 };
85
86 &gpioz {
87         status = "okay";
88 };
89
90 &pinctrl {
91         uart4_pins_a: uart4@0 {
92                 pins1 {
93                         pinmux = <STM32_PINMUX('G', 11, AF6)>; /* UART4_TX */
94                         bias-disable;
95                         drive-push-pull;
96                         slew-rate = <0>;
97                 };
98                 pins2 {
99                         pinmux = <STM32_PINMUX('B', 2, AF8)>; /* UART4_RX */
100                         bias-disable;
101                 };
102         };
103
104         sdmmc1_b4_pins_a: sdmmc1-b4@0 {
105                 pins {
106                         pinmux = <STM32_PINMUX('C', 8, AF12)>, /* SDMMC1_D0 */
107                                  <STM32_PINMUX('C', 9, AF12)>, /* SDMMC1_D1 */
108                                  <STM32_PINMUX('C', 10, AF12)>, /* SDMMC1_D2 */
109                                  <STM32_PINMUX('C', 11, AF12)>, /* SDMMC1_D3 */
110                                  <STM32_PINMUX('C', 12, AF12)>, /* SDMMC1_CK */
111                                  <STM32_PINMUX('D', 2, AF12)>; /* SDMMC1_CMD */
112                         slew-rate = <3>;
113                         drive-push-pull;
114                         bias-disable;
115                 };
116         };
117
118         sdmmc1_dir_pins_a: sdmmc1-dir@0 {
119                 pins {
120                         pinmux = <STM32_PINMUX('F', 2, AF11)>, /* SDMMC1_D0DIR */
121                                  <STM32_PINMUX('C', 7, AF8)>, /* SDMMC1_D123DIR */
122                                  <STM32_PINMUX('B', 9, AF11)>, /* SDMMC1_CDIR */
123                                  <STM32_PINMUX('E', 4, AF8)>; /* SDMMC1_CKIN */
124                         slew-rate = <3>;
125                         drive-push-pull;
126                         bias-pull-up;
127                 };
128         };
129         sdmmc2_b4_pins_a: sdmmc2-b4@0 {
130                 pins {
131                         pinmux = <STM32_PINMUX('B', 14, AF9)>, /* SDMMC2_D0 */
132                                  <STM32_PINMUX('B', 15, AF9)>, /* SDMMC2_D1 */
133                                  <STM32_PINMUX('B', 3, AF9)>, /* SDMMC2_D2 */
134                                  <STM32_PINMUX('B', 4, AF9)>, /* SDMMC2_D3 */
135                                  <STM32_PINMUX('E', 3, AF9)>, /* SDMMC2_CK */
136                                  <STM32_PINMUX('G', 6, AF10)>; /* SDMMC2_CMD */
137                         slew-rate = <3>;
138                         drive-push-pull;
139                         bias-pull-up;
140                 };
141         };
142
143         sdmmc2_d47_pins_a: sdmmc2-d47@0 {
144                 pins {
145                         pinmux = <STM32_PINMUX('A', 8, AF9)>, /* SDMMC2_D4 */
146                                  <STM32_PINMUX('A', 9, AF10)>, /* SDMMC2_D5 */
147                                  <STM32_PINMUX('E', 5, AF9)>, /* SDMMC2_D6 */
148                                  <STM32_PINMUX('D', 3, AF9)>; /* SDMMC2_D7 */
149                         slew-rate = <3>;
150                         drive-push-pull;
151                         bias-pull-up;
152                 };
153         };
154 };
155
156 &pinctrl_z {
157         i2c4_pins_a: i2c4@0 {
158                 pins {
159                         pinmux = <STM32_PINMUX('Z', 4, AF6)>, /* I2C4_SCL */
160                                  <STM32_PINMUX('Z', 5, AF6)>; /* I2C4_SDA */
161                         bias-disable;
162                         drive-open-drain;
163                         slew-rate = <0>;
164                 };
165         };
166 };
167
168 &i2c4 {
169         pinctrl-names = "default";
170         pinctrl-0 = <&i2c4_pins_a>;
171         i2c-scl-rising-time-ns = <185>;
172         i2c-scl-falling-time-ns = <20>;
173         status = "okay";
174
175         pmic: stpmu1@33 {
176                 compatible = "st,stpmu1";
177                 reg = <0x33>;
178                 interrupts = <0 2>;
179                 interrupt-parent = <&gpioa>;
180                 interrupt-controller;
181                 #interrupt-cells = <2>;
182                 status = "okay";
183
184                 st,main_control_register = <0x04>;
185                 st,vin_control_register = <0xc0>;
186                 st,usb_control_register = <0x30>;
187
188                 regulators {
189                         compatible = "st,stpmu1-regulators";
190
191                         ldo1-supply = <&v3v3>;
192                         ldo2-supply = <&v3v3>;
193                         ldo3-supply = <&vdd_ddr>;
194                         ldo5-supply = <&v3v3>;
195                         ldo6-supply = <&v3v3>;
196                         pwr_sw1-supply = <&bst_out>;
197                         pwr_sw2-supply = <&bst_out>;
198
199                         vddcore: buck1 {
200                                 regulator-name = "vddcore";
201                                 regulator-min-microvolt = <800000>;
202                                 regulator-max-microvolt = <1350000>;
203                                 regulator-always-on;
204                                 regulator-initial-mode = <2>;
205                                 regulator-over-current-protection;
206
207                                 regulator-state-standby {
208                                         regulator-on-in-suspend;
209                                         regulator-suspend-microvolt = <1200000>;
210                                         regulator-mode = <8>;
211                                 };
212                                 regulator-state-mem {
213                                         regulator-off-in-suspend;
214                                 };
215                                 regulator-state-disk {
216                                         regulator-off-in-suspend;
217                                 };
218                         };
219
220                         vdd_ddr: buck2 {
221                                 regulator-name = "vdd_ddr";
222                                 regulator-min-microvolt = <1350000>;
223                                 regulator-max-microvolt = <1350000>;
224                                 regulator-always-on;
225                                 regulator-initial-mode = <2>;
226                                 regulator-over-current-protection;
227
228                                 regulator-state-standby {
229                                         regulator-suspend-microvolt = <1350000>;
230                                         regulator-on-in-suspend;
231                                         regulator-mode = <8>;
232                                 };
233                                 regulator-state-mem {
234                                         regulator-suspend-microvolt = <1350000>;
235                                         regulator-on-in-suspend;
236                                         regulator-mode = <8>;
237                                 };
238                                 regulator-state-disk {
239                                         regulator-off-in-suspend;
240                                 };
241                         };
242
243                         vdd: buck3 {
244                                 regulator-name = "vdd";
245                                 regulator-min-microvolt = <3300000>;
246                                 regulator-max-microvolt = <3300000>;
247                                 regulator-always-on;
248                                 st,mask_reset;
249                                 regulator-initial-mode = <8>;
250                                 regulator-over-current-protection;
251
252                                 regulator-state-standby {
253                                         regulator-suspend-microvolt = <3300000>;
254                                         regulator-on-in-suspend;
255                                         regulator-mode = <8>;
256                                 };
257                                 regulator-state-mem {
258                                         regulator-suspend-microvolt = <3300000>;
259                                         regulator-on-in-suspend;
260                                         regulator-mode = <8>;
261                                 };
262                                 regulator-state-disk {
263                                         regulator-suspend-microvolt = <3300000>;
264                                         regulator-on-in-suspend;
265                                         regulator-mode = <8>;
266                                 };
267                         };
268
269                         v3v3: buck4 {
270                                 regulator-name = "v3v3";
271                                 regulator-min-microvolt = <3300000>;
272                                 regulator-max-microvolt = <3300000>;
273                                 regulator-boot-on;
274                                 regulator-over-current-protection;
275                                 regulator-initial-mode = <8>;
276
277                                 regulator-state-standby {
278                                         regulator-suspend-microvolt = <3300000>;
279                                         regulator-unchanged-in-suspend;
280                                         regulator-mode = <8>;
281                                 };
282                                 regulator-state-mem {
283                                         regulator-off-in-suspend;
284                                 };
285                                 regulator-state-disk {
286                                         regulator-off-in-suspend;
287                                 };
288                         };
289
290                         vdda: ldo1 {
291                                 regulator-name = "vdda";
292                                 regulator-min-microvolt = <2900000>;
293                                 regulator-max-microvolt = <2900000>;
294                                 interrupts = <IT_CURLIM_LDO1 0>;
295                                 interrupt-parent = <&pmic>;
296
297                                 regulator-state-standby {
298                                         regulator-suspend-microvolt = <2900000>;
299                                         regulator-unchanged-in-suspend;
300                                 };
301                                 regulator-state-mem {
302                                         regulator-off-in-suspend;
303                                 };
304                                 regulator-state-disk {
305                                         regulator-off-in-suspend;
306                                 };
307                         };
308
309                         v2v8: ldo2 {
310                                 regulator-name = "v2v8";
311                                 regulator-min-microvolt = <2800000>;
312                                 regulator-max-microvolt = <2800000>;
313                                 interrupts = <IT_CURLIM_LDO2 0>;
314                                 interrupt-parent = <&pmic>;
315
316                                 regulator-state-standby {
317                                         regulator-suspend-microvolt = <2800000>;
318                                         regulator-unchanged-in-suspend;
319                                 };
320                                 regulator-state-mem {
321                                         regulator-off-in-suspend;
322                                 };
323                                 regulator-state-disk {
324                                         regulator-off-in-suspend;
325                                 };
326                         };
327
328                         vtt_ddr: ldo3 {
329                                 regulator-name = "vtt_ddr";
330                                 regulator-min-microvolt = <0000000>;
331                                 regulator-max-microvolt = <1000000>;
332                                 regulator-always-on;
333                                 regulator-over-current-protection;
334
335                                 regulator-state-standby {
336                                         regulator-off-in-suspend;
337                                 };
338                                 regulator-state-mem {
339                                         regulator-off-in-suspend;
340                                 };
341                                 regulator-state-disk {
342                                         regulator-off-in-suspend;
343                                 };
344                         };
345
346                         vdd_usb: ldo4 {
347                                 regulator-name = "vdd_usb";
348                                 regulator-min-microvolt = <3300000>;
349                                 regulator-max-microvolt = <3300000>;
350                                 interrupts = <IT_CURLIM_LDO4 0>;
351                                 interrupt-parent = <&pmic>;
352
353                                 regulator-state-standby {
354                                         regulator-unchanged-in-suspend;
355                                 };
356                                 regulator-state-mem {
357                                         regulator-off-in-suspend;
358                                 };
359                                 regulator-state-disk {
360                                         regulator-off-in-suspend;
361                                 };
362                         };
363
364                         vdd_sd: ldo5 {
365                                 regulator-name = "vdd_sd";
366                                 regulator-min-microvolt = <2900000>;
367                                 regulator-max-microvolt = <2900000>;
368                                 interrupts = <IT_CURLIM_LDO5 0>;
369                                 interrupt-parent = <&pmic>;
370                                 regulator-boot-on;
371
372                                 regulator-state-standby {
373                                         regulator-suspend-microvolt = <2900000>;
374                                         regulator-unchanged-in-suspend;
375                                 };
376                                 regulator-state-mem {
377                                         regulator-off-in-suspend;
378                                 };
379                                 regulator-state-disk {
380                                         regulator-off-in-suspend;
381                                 };
382                         };
383
384                         v1v8: ldo6 {
385                                 regulator-name = "v1v8";
386                                 regulator-min-microvolt = <1800000>;
387                                 regulator-max-microvolt = <1800000>;
388                                 interrupts = <IT_CURLIM_LDO6 0>;
389                                 interrupt-parent = <&pmic>;
390
391                                 regulator-state-standby {
392                                         regulator-suspend-microvolt = <1800000>;
393                                         regulator-unchanged-in-suspend;
394                                 };
395                                 regulator-state-mem {
396                                         regulator-off-in-suspend;
397                                 };
398                                 regulator-state-disk {
399                                         regulator-off-in-suspend;
400                                 };
401                         };
402
403                         vref_ddr: vref_ddr {
404                                 regulator-name = "vref_ddr";
405                                 regulator-always-on;
406                                 regulator-over-current-protection;
407
408                                 regulator-state-standby {
409                                         regulator-on-in-suspend;
410                                 };
411                                 regulator-state-mem {
412                                         regulator-on-in-suspend;
413                                 };
414                                 regulator-state-disk {
415                                         regulator-off-in-suspend;
416                                 };
417                         };
418
419                          bst_out: boost {
420                                 regulator-name = "bst_out";
421                                 interrupts = <IT_OCP_BOOST 0>;
422                                 interrupt-parent = <&pmic>;
423                          };
424
425                         vbus_otg: pwr_sw1 {
426                                 regulator-name = "vbus_otg";
427                                 interrupts = <IT_OCP_OTG 0>;
428                                 interrupt-parent = <&pmic>;
429                                 regulator-active-discharge;
430                          };
431
432                          vbus_sw: pwr_sw2 {
433                                 regulator-name = "vbus_sw";
434                                 interrupts = <IT_OCP_SWOUT 0>;
435                                 interrupt-parent = <&pmic>;
436                                 regulator-active-discharge;
437                          };
438                 };
439         };
440 };
441
442 &sdmmc1 {
443         pinctrl-names = "default";
444         pinctrl-0 = <&sdmmc1_b4_pins_a &sdmmc1_dir_pins_a>;
445         broken-cd;
446         st,dirpol;
447         st,negedge;
448         st,pin-ckin;
449         bus-width = <4>;
450         vmmc-supply = <&vdd_sd>;
451         vqmmc-supply = <&sd_switch>;
452         sd-uhs-sdr12;
453         sd-uhs-sdr25;
454         sd-uhs-sdr50;
455         sd-uhs-ddr50;
456         sd-uhs-sdr104;
457         status = "okay";
458 };
459
460 &sdmmc2 {
461         pinctrl-names = "default";
462         pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_a>;
463         non-removable;
464         no-sd;
465         no-sdio;
466         st,dirpol;
467         st,negedge;
468         bus-width = <8>;
469         status = "okay";
470 };
471
472 &uart4 {
473         pinctrl-names = "default";
474         pinctrl-0 = <&uart4_pins_a>;
475         status = "okay";
476 };