1/*
2 * Copyright (c) 2018, NXP
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7/dts-v1/;
8
9#include <nxp/nxp_rt1064.dtsi>
10#include "mimxrt1064_evk-pinctrl.dtsi"
11#include <zephyr/dt-bindings/display/panel.h>
12
13/ {
14	model = "NXP MIMXRT1064-EVK board";
15	compatible = "nxp,mimxrt1064";
16
17	aliases {
18		led0 = &green_led;
19		pwm-led0 = &green_pwm_led;
20		sw0 = &user_button;
21		kscan0 = &kscan_input;
22		watchdog0 = &wdog0;
23		sdhc0 = &usdhc1;
24	};
25
26	chosen {
27		zephyr,flash-controller = &is25wp064;
28		zephyr,flash = &w25q32jvwj0;
29		zephyr,code-partition = &slot0_partition;
30		zephyr,sram = &sdram0;
31		zephyr,itcm = &itcm;
32		zephyr,dtcm = &dtcm;
33		zephyr,console = &lpuart1;
34		zephyr,shell-uart = &lpuart1;
35		zephyr,canbus = &flexcan2;
36		zephyr,display = &lcdif;
37		zephyr,keyboard-scan = &kscan_input;
38	};
39
40	sdram0: memory@80000000 {
41		/* Micron MT48LC16M16A2B4-6AIT:G */
42		device_type = "memory";
43		reg = <0x80000000 DT_SIZE_M(32)>;
44	};
45
46	leds {
47		compatible = "gpio-leds";
48		green_led: led-1 {
49			gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
50			label = "User LD1";
51		};
52	};
53
54	pwmleds {
55		compatible = "pwm-leds";
56
57		green_pwm_led: green_pwm_led {
58			pwms = <&flexpwm2_pwm3 0 PWM_MSEC(20) PWM_POLARITY_NORMAL>;
59		};
60	};
61
62	gpio_keys {
63		compatible = "gpio-keys";
64		user_button: button-1 {
65			label = "User SW8";
66			gpios = <&gpio5 0 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
67		};
68	};
69
70	arduino_header: connector {
71		compatible = "arduino-header-r3";
72		#gpio-cells = <2>;
73		gpio-map-mask = <0xffffffff 0xffffffc0>;
74		gpio-map-pass-thru = <0 0x3f>;
75		gpio-map = <0 0 &gpio1 26 0>,	/* A0 */
76			   <1 0 &gpio1 27 0>,	/* A1 */
77			   <2 0 &gpio1 20 0>,	/* A2 */
78			   <3 0 &gpio1 21 0>,	/* A3 */
79			   <4 0 &gpio1 17 0>,	/* A4 */
80			   <5 0 &gpio1 16 0>,	/* A5 */
81			   <6 0 &gpio1 23 0>,	/* D0 */
82			   <7 0 &gpio1 22 0>,	/* D1 */
83			   <8 0 &gpio1 11 0>,	/* D2 */
84			   <9 0 &gpio1 24 0>,	/* D3 */
85			   <10 0 &gpio1 9 0>,	/* D4 */
86			   <11 0 &gpio1 10 0>,	/* D5 */
87			   <12 0 &gpio1 18 0>,	/* D6 */
88			   <13 0 &gpio1 19 0>,	/* D7 */
89			   <14 0 &gpio1 3 0>,	/* D8 */
90			   <15 0 &gpio1 2 0>,	/* D9 */
91			   <16 0 &gpio3 13 0>,	/* D10 */
92			   <17 0 &gpio3 14 0>,	/* D11 */
93			   <18 0 &gpio3 15 0>,	/* D12 */
94			   <19 0 &gpio3 12 0>,	/* D13 */
95			   <20 0 &gpio1 17 0>,	/* D14 */
96			   <21 0 &gpio1 16 0>;	/* D15 */
97	};
98
99	panel {
100		compatible = "rocktech,rk043fn02h-ct";
101		port {
102			lcd_panel_in: endpoint {
103				remote-endpoint = <&lcd_panel_out>;
104			};
105		};
106	};
107
108	power-states {
109		idle: idle {
110			compatible = "zephyr,power-state";
111			power-state-name = "runtime-idle";
112			exit-latency-us = <4000>;
113			min-residency-us = <5000>;
114		};
115		suspend: suspend {
116			compatible = "zephyr,power-state";
117			power-state-name = "suspend-to-idle";
118			exit-latency-us = <5000>;
119			min-residency-us = <10000>;
120		};
121	};
122};
123
124&cpu0 {
125	cpu-power-states = <&idle &suspend>;
126};
127
128arduino_i2c: &lpi2c1 {};
129
130&lcdif {
131	status = "okay";
132	width = <480>;
133	height = <272>;
134	display-timings {
135		compatible = "zephyr,panel-timing";
136		hsync-len = <41>;
137		hfront-porch = <4>;
138		hback-porch = <8>;
139		vsync-len = <10>;
140		vfront-porch = <4>;
141		vback-porch = <2>;
142		de-active= <1>;
143		pixelclk-active = <1>;
144		hsync-active = <0>;
145		vsync-active = <0>;
146		clock-frequency = <9210240>;
147	};
148	pixel-format = <PANEL_PIXEL_FORMAT_BGR_565>;
149	data-bus-width = "16-bit";
150	pinctrl-0 = <&pinmux_lcdif>;
151	pinctrl-names = "default";
152	backlight-gpios = <&gpio2 31 GPIO_ACTIVE_HIGH>;
153	port {
154		lcd_panel_out: endpoint {
155			remote-endpoint = <&lcd_panel_in>;
156		};
157	};
158};
159
160&lpi2c1 {
161	status = "okay";
162
163	pinctrl-0 = <&pinmux_lpi2c1>;
164	pinctrl-names = "default";
165
166	mt9m114: mt9m114@48 {
167		compatible = "aptina,mt9m114";
168		reg = <0x48>;
169		status = "okay";
170
171		port {
172			mt9m114_ep_out: endpoint {
173				remote-endpoint = <&csi_ep_in>;
174			};
175		};
176	};
177
178	ft5336@38 {
179		compatible = "focaltech,ft5336";
180		reg = <0x38>;
181		int-gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
182
183		kscan_input: kscan-input {
184			compatible = "zephyr,kscan-input";
185		};
186	};
187};
188
189&flexspi {
190	status = "okay";
191	pinctrl-0 = <&pinmux_flexspi1>;
192	pinctrl-names = "default";
193	ahb-prefetch;
194	ahb-read-addr-opt;
195	rx-clock-source = <1>;
196	reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(8)>;
197	is25wp064: is25wp064@0 {
198		compatible = "nxp,imx-flexspi-nor";
199		size = <67108864>;
200		reg = <0>;
201		spi-max-frequency = <133000000>;
202		status = "okay";
203		jedec-id = [9d 70 17];
204
205		partitions {
206			compatible = "fixed-partitions";
207			#address-cells = <1>;
208			#size-cells = <1>;
209
210			storage_partition: partition@0 {
211				label = "storage";
212				reg = <0x00000000 DT_SIZE_M(8)>;
213			};
214		};
215	};
216};
217
218&w25q32jvwj0 {
219	partitions {
220		compatible = "fixed-partitions";
221		#address-cells = <1>;
222		#size-cells = <1>;
223
224		boot_partition: partition@0 {
225			label = "mcuboot";
226			reg = <0x00000000 DT_SIZE_K(64)>;
227		};
228		slot0_partition: partition@10000 {
229			label = "image-0";
230			reg = <0x00010000 DT_SIZE_K(1984)>;
231		};
232		slot1_partition: partition@200000 {
233			label = "image-1";
234			reg = <0x00200000 DT_SIZE_K(1984)>;
235		};
236		scratch_partition: partition@3f0000 {
237			label = "image-scratch";
238			reg = <0x003f0000 DT_SIZE_K(64)>;
239		};
240	};
241};
242
243&lpuart1 {
244	status = "okay";
245	pinctrl-0 = <&pinmux_lpuart1>;
246	pinctrl-1 = <&pinmux_lpuart1_sleep>;
247	pinctrl-names = "default", "sleep";
248	current-speed = <115200>;
249};
250
251arduino_serial: &lpuart3 {
252	current-speed = <115200>;
253	pinctrl-0 = <&pinmux_lpuart3>;
254	pinctrl-1 = <&pinmux_lpuart3_sleep>;
255	pinctrl-names = "default", "sleep";
256};
257
258&enet {
259	status = "okay";
260	pinctrl-0 = <&pinmux_enet>;
261	pinctrl-names = "default";
262	int-gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
263	reset-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
264	ptp {
265		pinctrl-0 = <&pinmux_ptp>;
266		pinctrl-names = "default";
267		status = "okay";
268	};
269};
270
271zephyr_udc0: &usb1 {
272	status = "okay";
273};
274
275&csi {
276	status = "okay";
277	sensor = <&mt9m114>;
278	pinctrl-0 = <&pinmux_csi>;
279	pinctrl-names = "default";
280
281	port {
282		csi_ep_in: endpoint {
283			remote-endpoint = <&mt9m114_ep_out>;
284		};
285	};
286};
287
288&flexpwm2_pwm3 {
289	status = "okay";
290	pinctrl-0 = <&pinmux_flexpwm2>;
291	pinctrl-names = "default";
292};
293
294&usdhc1 {
295	status = "okay";
296	pwr-gpios = <&gpio1 19 GPIO_ACTIVE_HIGH>;
297	cd-gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
298	pinctrl-0 = <&pinmux_usdhc1>;
299	pinctrl-1 = <&pinmux_usdhc1_slow>;
300	pinctrl-2 = <&pinmux_usdhc1_med>;
301	pinctrl-3 = <&pinmux_usdhc1_fast>;
302	pinctrl-names = "default", "slow", "med", "fast";
303	sdmmc {
304		compatible = "zephyr,sdmmc-disk";
305		status = "okay";
306	};
307};
308
309&edma0 {
310	status = "okay";
311};
312
313&flexcan2 {
314	status = "okay";
315	bus-speed = <125000>;
316	pinctrl-0 = <&pinmux_flexcan2>;
317	pinctrl-names = "default";
318
319	can-transceiver {
320		max-bitrate = <5000000>;
321	};
322};
323
324&wdog0 {
325	status = "okay";
326};
327
328&lpspi1 {
329	status = "okay";
330	/* DMA channels 0 and 1, muxed to LPSPI1 RX and TX */
331	dmas = <&edma0 0 13>, <&edma0 1 14>;
332	dma-names = "rx", "tx";
333	pinctrl-0 = <&pinmux_lpspi1>;
334	pinctrl-names = "default";
335};
336
337&lpspi3 {
338	status = "okay";
339	/* DMA channels 2 and 3, muxed to LPSPI3 RX and TX */
340	dmas = <&edma0 2 15>, <&edma0 3 16>;
341	dma-names = "rx", "tx";
342	pinctrl-0 = <&pinmux_lpspi3>;
343	pinctrl-names = "default";
344};
345
346&adc1 {
347	status = "okay";
348	pinctrl-0 = <&pinmux_adc1>;
349	pinctrl-names = "default";
350};
351
352/* GPT and Systick are enabled. If power management is enabled, the GPT
353 * timer will be used instead of systick, as allows the core clock to
354 * be gated.
355 */
356&gpt_hw_timer {
357	status = "okay";
358};
359
360&systick {
361	status = "okay";
362};
363
364&itm {
365	pinctrl-0 = <&pinmux_swo>;
366	pinctrl-names = "default";
367};
368