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