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