blob: 233470742257b1765c20489b6e7247cfb96199bf [file] [log] [blame]
Patrick Delaunay3d2d1152018-03-12 10:46:17 +01001/* 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>
Patrice Chotard21299d32018-04-26 17:13:11 +020013#include <dt-bindings/mfd/st,stpmu1.h>
Patrick Delaunay3d2d1152018-03-12 10:46:17 +010014
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 };
Patrice Chotard21299d32018-04-26 17:13:11 +020027
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 };
Patrick Delaunay3d2d1152018-03-12 10:46:17 +010040};
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 };
Patrick Delaunay0ed232b2018-03-20 10:54:52 +0100129 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 };
Patrick Delaunay3d2d1152018-03-12 10:46:17 +0100154};
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";
Patrice Chotard21299d32018-04-26 17:13:11 +0200183
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 };
Patrick Delaunay3d2d1152018-03-12 10:46:17 +0100439 };
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>;
Patrice Chotard21299d32018-04-26 17:13:11 +0200450 vmmc-supply = <&vdd_sd>;
451 vqmmc-supply = <&sd_switch>;
Patrick Delaunay3d2d1152018-03-12 10:46:17 +0100452 sd-uhs-sdr12;
453 sd-uhs-sdr25;
454 sd-uhs-sdr50;
455 sd-uhs-ddr50;
456 sd-uhs-sdr104;
457 status = "okay";
458};
459
Patrick Delaunay0ed232b2018-03-20 10:54:52 +0100460&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
Patrick Delaunay3d2d1152018-03-12 10:46:17 +0100472&uart4 {
473 pinctrl-names = "default";
474 pinctrl-0 = <&uart4_pins_a>;
475 status = "okay";
476};