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/dts-v1/;
7
8#include "stm32mp157.dtsi"
9#include "stm32mp15xc.dtsi"
10#include "stm32mp15-pinctrl.dtsi"
11#include "stm32mp15xxaa-pinctrl.dtsi"
12#include <dt-bindings/gpio/gpio.h>
13#include <dt-bindings/mfd/st,stpmic1.h>
14
15/ {
16	model = "STMicroelectronics STM32MP157C eval daughter";
17	compatible = "st,stm32mp157c-ed1", "st,stm32mp157";
18
19	chosen {
20		stdout-path = "serial0:115200n8";
21	};
22
23	memory@c0000000 {
24		device_type = "memory";
25		reg = <0xC0000000 0x40000000>;
26	};
27
28	reserved-memory {
29		#address-cells = <1>;
30		#size-cells = <1>;
31		ranges;
32
33		mcuram2: mcuram2@10000000 {
34			compatible = "shared-dma-pool";
35			reg = <0x10000000 0x40000>;
36			no-map;
37		};
38
39		vdev0vring0: vdev0vring0@10040000 {
40			compatible = "shared-dma-pool";
41			reg = <0x10040000 0x1000>;
42			no-map;
43		};
44
45		vdev0vring1: vdev0vring1@10041000 {
46			compatible = "shared-dma-pool";
47			reg = <0x10041000 0x1000>;
48			no-map;
49		};
50
51		vdev0buffer: vdev0buffer@10042000 {
52			compatible = "shared-dma-pool";
53			reg = <0x10042000 0x4000>;
54			no-map;
55		};
56
57		mcuram: mcuram@30000000 {
58			compatible = "shared-dma-pool";
59			reg = <0x30000000 0x40000>;
60			no-map;
61		};
62
63		retram: retram@38000000 {
64			compatible = "shared-dma-pool";
65			reg = <0x38000000 0x10000>;
66			no-map;
67		};
68
69		gpu_reserved: gpu@e8000000 {
70			reg = <0xe8000000 0x8000000>;
71			no-map;
72		};
73	};
74
75	aliases {
76		serial0 = &uart4;
77	};
78
79	sd_switch: regulator-sd_switch {
80		compatible = "regulator-gpio";
81		regulator-name = "sd_switch";
82		regulator-min-microvolt = <1800000>;
83		regulator-max-microvolt = <2900000>;
84		regulator-type = "voltage";
85		regulator-always-on;
86
87		gpios = <&gpiof 14 GPIO_ACTIVE_HIGH>;
88		gpios-states = <0>;
89		states = <1800000 0x1>,
90			 <2900000 0x0>;
91	};
92
93	vin: vin {
94		compatible = "regulator-fixed";
95		regulator-name = "vin";
96		regulator-min-microvolt = <5000000>;
97		regulator-max-microvolt = <5000000>;
98		regulator-always-on;
99	};
100};
101
102&adc {
103	/* ANA0, ANA1 are dedicated pins and don't need pinctrl: only in6. */
104	pinctrl-0 = <&adc1_in6_pins_a>;
105	pinctrl-names = "default";
106	vdd-supply = <&vdd>;
107	vdda-supply = <&vdda>;
108	vref-supply = <&vdda>;
109	status = "disabled";
110	adc1: adc@0 {
111		st,adc-channels = <0 1 6>;
112		/* 16.5 ck_cycles sampling time */
113		st,min-sample-time-nsecs = <400>;
114		status = "okay";
115	};
116};
117
118&crc1 {
119	status = "okay";
120};
121
122&cryp1 {
123	status = "okay";
124};
125
126&dac {
127	pinctrl-names = "default";
128	pinctrl-0 = <&dac_ch1_pins_a &dac_ch2_pins_a>;
129	vref-supply = <&vdda>;
130	status = "disabled";
131	dac1: dac@1 {
132		status = "okay";
133	};
134	dac2: dac@2 {
135		status = "okay";
136	};
137};
138
139&dts {
140	status = "okay";
141};
142
143&gpu {
144	contiguous-area = <&gpu_reserved>;
145};
146
147&hash1 {
148	status = "okay";
149};
150
151&i2c4 {
152	pinctrl-names = "default", "sleep";
153	pinctrl-0 = <&i2c4_pins_a>;
154	pinctrl-1 = <&i2c4_sleep_pins_a>;
155	i2c-scl-rising-time-ns = <185>;
156	i2c-scl-falling-time-ns = <20>;
157	clock-frequency = <400000>;
158	status = "okay";
159	/* spare dmas for other usage */
160	/delete-property/dmas;
161	/delete-property/dma-names;
162
163	pmic: stpmic@33 {
164		compatible = "st,stpmic1";
165		reg = <0x33>;
166		interrupts-extended = <&gpioa 0 IRQ_TYPE_EDGE_FALLING>;
167		interrupt-controller;
168		#interrupt-cells = <2>;
169		status = "okay";
170
171		regulators {
172			compatible = "st,stpmic1-regulators";
173			buck1-supply = <&vin>;
174			buck2-supply = <&vin>;
175			buck3-supply = <&vin>;
176			buck4-supply = <&vin>;
177			ldo1-supply = <&v3v3>;
178			ldo2-supply = <&v3v3>;
179			ldo3-supply = <&vdd_ddr>;
180			ldo4-supply = <&vin>;
181			ldo5-supply = <&v3v3>;
182			ldo6-supply = <&v3v3>;
183			vref_ddr-supply = <&vin>;
184			boost-supply = <&vin>;
185			pwr_sw1-supply = <&bst_out>;
186			pwr_sw2-supply = <&bst_out>;
187
188			vddcore: buck1 {
189				regulator-name = "vddcore";
190				regulator-min-microvolt = <1200000>;
191				regulator-max-microvolt = <1350000>;
192				regulator-always-on;
193				regulator-initial-mode = <0>;
194				regulator-over-current-protection;
195			};
196
197			vdd_ddr: buck2 {
198				regulator-name = "vdd_ddr";
199				regulator-min-microvolt = <1350000>;
200				regulator-max-microvolt = <1350000>;
201				regulator-always-on;
202				regulator-initial-mode = <0>;
203				regulator-over-current-protection;
204			};
205
206			vdd: buck3 {
207				regulator-name = "vdd";
208				regulator-min-microvolt = <3300000>;
209				regulator-max-microvolt = <3300000>;
210				regulator-always-on;
211				st,mask-reset;
212				regulator-initial-mode = <0>;
213				regulator-over-current-protection;
214			};
215
216			v3v3: buck4 {
217				regulator-name = "v3v3";
218				regulator-min-microvolt = <3300000>;
219				regulator-max-microvolt = <3300000>;
220				regulator-always-on;
221				regulator-over-current-protection;
222				regulator-initial-mode = <0>;
223			};
224
225			vdda: ldo1 {
226				regulator-name = "vdda";
227				regulator-min-microvolt = <2900000>;
228				regulator-max-microvolt = <2900000>;
229				interrupts = <IT_CURLIM_LDO1 0>;
230			};
231
232			v2v8: ldo2 {
233				regulator-name = "v2v8";
234				regulator-min-microvolt = <2800000>;
235				regulator-max-microvolt = <2800000>;
236				interrupts = <IT_CURLIM_LDO2 0>;
237			};
238
239			vtt_ddr: ldo3 {
240				regulator-name = "vtt_ddr";
241				regulator-min-microvolt = <500000>;
242				regulator-max-microvolt = <750000>;
243				regulator-always-on;
244				regulator-over-current-protection;
245			};
246
247			vdd_usb: ldo4 {
248				regulator-name = "vdd_usb";
249				interrupts = <IT_CURLIM_LDO4 0>;
250			};
251
252			vdd_sd: ldo5 {
253				regulator-name = "vdd_sd";
254				regulator-min-microvolt = <2900000>;
255				regulator-max-microvolt = <2900000>;
256				interrupts = <IT_CURLIM_LDO5 0>;
257				regulator-boot-on;
258			};
259
260			v1v8: ldo6 {
261				regulator-name = "v1v8";
262				regulator-min-microvolt = <1800000>;
263				regulator-max-microvolt = <1800000>;
264				interrupts = <IT_CURLIM_LDO6 0>;
265			};
266
267			vref_ddr: vref_ddr {
268				regulator-name = "vref_ddr";
269				regulator-always-on;
270			};
271
272			bst_out: boost {
273				regulator-name = "bst_out";
274				interrupts = <IT_OCP_BOOST 0>;
275			};
276
277			vbus_otg: pwr_sw1 {
278				regulator-name = "vbus_otg";
279				interrupts = <IT_OCP_OTG 0>;
280			 };
281
282			 vbus_sw: pwr_sw2 {
283				regulator-name = "vbus_sw";
284				interrupts = <IT_OCP_SWOUT 0>;
285				regulator-active-discharge = <1>;
286			 };
287		};
288
289		onkey {
290			compatible = "st,stpmic1-onkey";
291			interrupts = <IT_PONKEY_F 0>, <IT_PONKEY_R 0>;
292			interrupt-names = "onkey-falling", "onkey-rising";
293			power-off-time-sec = <10>;
294			status = "okay";
295		};
296
297		watchdog {
298			compatible = "st,stpmic1-wdt";
299			status = "disabled";
300		};
301	};
302};
303
304&ipcc {
305	status = "okay";
306};
307
308&iwdg2 {
309	timeout-sec = <32>;
310	status = "okay";
311};
312
313&m4_rproc {
314	memory-region = <&retram>, <&mcuram>, <&mcuram2>, <&vdev0vring0>,
315			<&vdev0vring1>, <&vdev0buffer>;
316	mboxes = <&ipcc 0>, <&ipcc 1>, <&ipcc 2>, <&ipcc 3>;
317	mbox-names = "vq0", "vq1", "shutdown", "detach";
318	interrupt-parent = <&exti>;
319	interrupts = <68 1>;
320	status = "okay";
321};
322
323&pwr_regulators {
324	vdd-supply = <&vdd>;
325	vdd_3v3_usbfs-supply = <&vdd_usb>;
326};
327
328&rng1 {
329	status = "okay";
330};
331
332&rtc {
333	status = "okay";
334};
335
336&sdmmc1 {
337	pinctrl-names = "default", "opendrain", "sleep";
338	pinctrl-0 = <&sdmmc1_b4_pins_a &sdmmc1_dir_pins_a>;
339	pinctrl-1 = <&sdmmc1_b4_od_pins_a &sdmmc1_dir_pins_a>;
340	pinctrl-2 = <&sdmmc1_b4_sleep_pins_a &sdmmc1_dir_sleep_pins_a>;
341	cd-gpios = <&gpiog 1 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>;
342	disable-wp;
343	st,sig-dir;
344	st,neg-edge;
345	st,use-ckin;
346	bus-width = <4>;
347	vmmc-supply = <&vdd_sd>;
348	vqmmc-supply = <&sd_switch>;
349	sd-uhs-sdr12;
350	sd-uhs-sdr25;
351	sd-uhs-sdr50;
352	sd-uhs-ddr50;
353	status = "okay";
354};
355
356&sdmmc2 {
357	pinctrl-names = "default", "opendrain", "sleep";
358	pinctrl-0 = <&sdmmc2_b4_pins_a &sdmmc2_d47_pins_a>;
359	pinctrl-1 = <&sdmmc2_b4_od_pins_a &sdmmc2_d47_pins_a>;
360	pinctrl-2 = <&sdmmc2_b4_sleep_pins_a &sdmmc2_d47_sleep_pins_a>;
361	non-removable;
362	no-sd;
363	no-sdio;
364	st,neg-edge;
365	bus-width = <8>;
366	vmmc-supply = <&v3v3>;
367	vqmmc-supply = <&vdd>;
368	mmc-ddr-3_3v;
369	status = "okay";
370};
371
372&timers6 {
373	status = "okay";
374	/* spare dmas for other usage */
375	/delete-property/dmas;
376	/delete-property/dma-names;
377	timer@5 {
378		status = "okay";
379	};
380};
381
382&uart4 {
383	pinctrl-names = "default", "sleep", "idle";
384	pinctrl-0 = <&uart4_pins_a>;
385	pinctrl-1 = <&uart4_sleep_pins_a>;
386	pinctrl-2 = <&uart4_idle_pins_a>;
387	/delete-property/dmas;
388	/delete-property/dma-names;
389	status = "okay";
390};
391
392&usbotg_hs {
393	vbus-supply = <&vbus_otg>;
394};
395
396&usbphyc_port0 {
397	phy-supply = <&vdd_usb>;
398};
399
400&usbphyc_port1 {
401	phy-supply = <&vdd_usb>;
402};
403