1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Copyright (C) 2015, STMicroelectronics - All Rights Reserved
4 * Author: Maxime Coquelin <mcoquelin.stm32@gmail.com> for STMicroelectronics.
5 */
6
7/dts-v1/;
8#include "stm32f429.dtsi"
9#include "stm32f429-pinctrl.dtsi"
10#include <dt-bindings/input/input.h>
11#include <dt-bindings/gpio/gpio.h>
12
13/ {
14	model = "STMicroelectronics STM32429i-EVAL board";
15	compatible = "st,stm32429i-eval", "st,stm32f429";
16
17	chosen {
18		bootargs = "root=/dev/ram";
19		stdout-path = "serial0:115200n8";
20	};
21
22	memory@00000000 {
23		device_type = "memory";
24		reg = <0x00000000 0x2000000>;
25	};
26
27	aliases {
28		serial0 = &usart1;
29	};
30
31	clocks {
32		clk_ext_camera: clk-ext-camera {
33			#clock-cells = <0>;
34			compatible = "fixed-clock";
35			clock-frequency = <24000000>;
36		};
37	};
38
39	soc {
40		dma-ranges = <0xc0000000 0x0 0x10000000>;
41	};
42
43	vdda: regulator-vdda {
44		compatible = "regulator-fixed";
45		regulator-name = "vdda";
46		regulator-min-microvolt = <3300000>;
47		regulator-max-microvolt = <3300000>;
48	};
49
50	vref: regulator-vref {
51		compatible = "regulator-fixed";
52		regulator-name = "vref";
53		regulator-min-microvolt = <3300000>;
54		regulator-max-microvolt = <3300000>;
55	};
56
57	vdd_panel: vdd-panel {
58		compatible = "regulator-fixed";
59		regulator-name = "vdd_panel";
60		regulator-min-microvolt = <3300000>;
61		regulator-max-microvolt = <3300000>;
62	};
63
64	leds {
65		compatible = "gpio-leds";
66		led-green {
67			gpios = <&gpiog 6 1>;
68			linux,default-trigger = "heartbeat";
69		};
70		led-orange {
71			gpios = <&gpiog 7 1>;
72		};
73		led-red {
74			gpios = <&gpiog 10 1>;
75		};
76		led-blue {
77			gpios = <&gpiog 12 1>;
78		};
79	};
80
81	gpio_keys {
82		compatible = "gpio-keys";
83		#address-cells = <1>;
84		#size-cells = <0>;
85		autorepeat;
86		button@0 {
87			label = "Wake up";
88			linux,code = <KEY_WAKEUP>;
89			gpios = <&gpioa 0 0>;
90		};
91		button@1 {
92			label = "Tamper";
93			linux,code = <KEY_RESTART>;
94			gpios = <&gpioc 13 0>;
95		};
96	};
97
98	usbotg_hs_phy: usbphy {
99		#phy-cells = <0>;
100		compatible = "usb-nop-xceiv";
101		clocks = <&rcc 0 STM32F4_AHB1_CLOCK(OTGHSULPI)>;
102		clock-names = "main_clk";
103	};
104
105	panel_rgb: panel-rgb {
106		compatible = "ampire,am-480272h3tmqw-t01h";
107		power-supply = <&vdd_panel>;
108		status = "okay";
109		port {
110			panel_in_rgb: endpoint {
111				remote-endpoint = <&ltdc_out_rgb>;
112			};
113		};
114	};
115
116	mmc_vcard: mmc_vcard {
117		compatible = "regulator-fixed";
118		regulator-name = "mmc_vcard";
119		regulator-min-microvolt = <3300000>;
120		regulator-max-microvolt = <3300000>;
121	};
122};
123
124&adc {
125	pinctrl-names = "default";
126	pinctrl-0 = <&adc3_in8_pin>;
127	vdda-supply = <&vdda>;
128	vref-supply = <&vref>;
129	status = "okay";
130	adc3: adc@200 {
131		st,adc-channels = <8>;
132		status = "okay";
133	};
134};
135
136&clk_hse {
137	clock-frequency = <25000000>;
138};
139
140&crc {
141	status = "okay";
142};
143
144&dcmi {
145	status = "okay";
146
147	port {
148		dcmi_0: endpoint {
149			remote-endpoint = <&ov2640_0>;
150			bus-width = <8>;
151			hsync-active = <0>;
152			vsync-active = <0>;
153			pclk-sample = <1>;
154		};
155	};
156};
157
158&i2c1 {
159	pinctrl-0 = <&i2c1_pins>;
160	pinctrl-names = "default";
161	status = "okay";
162
163	ov2640: camera@30 {
164		compatible = "ovti,ov2640";
165		reg = <0x30>;
166		resetb-gpios = <&stmpegpio 2 GPIO_ACTIVE_HIGH>;
167		pwdn-gpios = <&stmpegpio 0 GPIO_ACTIVE_LOW>;
168		clocks = <&clk_ext_camera>;
169		clock-names = "xvclk";
170		status = "okay";
171
172		port {
173			ov2640_0: endpoint {
174				remote-endpoint = <&dcmi_0>;
175			};
176		};
177	};
178
179	stmpe1600: stmpe1600@42 {
180		compatible = "st,stmpe1600";
181		reg = <0x42>;
182		interrupts = <8 3>;
183		interrupt-parent = <&gpioi>;
184		interrupt-controller;
185		wakeup-source;
186
187		stmpegpio: stmpe_gpio {
188			compatible = "st,stmpe-gpio";
189			gpio-controller;
190			#gpio-cells = <2>;
191		};
192	};
193};
194
195&iwdg {
196	status = "okay";
197	timeout-sec = <32>;
198};
199
200&ltdc {
201	status = "okay";
202	pinctrl-0 = <&ltdc_pins_a>;
203	pinctrl-names = "default";
204
205	port {
206		ltdc_out_rgb: endpoint {
207			remote-endpoint = <&panel_in_rgb>;
208		};
209	};
210};
211
212&mac {
213	status = "okay";
214	pinctrl-0	= <&ethernet_mii>;
215	pinctrl-names	= "default";
216	phy-mode	= "mii";
217	phy-handle	= <&phy1>;
218	mdio0 {
219		#address-cells = <1>;
220		#size-cells = <0>;
221		compatible = "snps,dwmac-mdio";
222		phy1: ethernet-phy@1 {
223			reg = <1>;
224		};
225	};
226};
227
228&rtc {
229	status = "okay";
230};
231
232&sdio {
233	status = "okay";
234	vmmc-supply = <&mmc_vcard>;
235	cd-gpios = <&stmpegpio 15 GPIO_ACTIVE_LOW>;
236	pinctrl-names = "default", "opendrain";
237	pinctrl-0 = <&sdio_pins>;
238	pinctrl-1 = <&sdio_pins_od>;
239	bus-width = <4>;
240	max-frequency = <12500000>;
241};
242
243&timers1 {
244	status = "okay";
245
246	pwm {
247		pinctrl-0 = <&pwm1_pins>;
248		pinctrl-names = "default";
249		status = "okay";
250	};
251
252	timer@0 {
253		status = "okay";
254	};
255};
256
257&timers3 {
258	status = "okay";
259
260	pwm {
261		pinctrl-0 = <&pwm3_pins>;
262		pinctrl-names = "default";
263		status = "okay";
264	};
265
266	timer@2 {
267		status = "okay";
268	};
269};
270
271&usart1 {
272	pinctrl-0 = <&usart1_pins_a>;
273	pinctrl-names = "default";
274	status = "okay";
275};
276
277&usbotg_hs {
278	dr_mode = "host";
279	phys = <&usbotg_hs_phy>;
280	phy-names = "usb2-phy";
281	pinctrl-0 = <&usbotg_hs_pins_a>;
282	pinctrl-names = "default";
283	status = "okay";
284};
285