1/*
2 * Copyright (c) 2017, NXP
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7/dts-v1/;
8
9#include <nxp/nxp_rt1050.dtsi>
10#include "mimxrt1050_evk-pinctrl.dtsi"
11#include <zephyr/dt-bindings/input/input-event-codes.h>
12
13/ {
14	model = "NXP MIMXRT1050-EVK board";
15	compatible = "nxp,mimxrt1052";
16
17	aliases {
18		led0 = &green_led;
19		sw0 = &user_button;
20		watchdog0 = &wdog0;
21		magn0 = &fxos8700;
22		accel0 = &fxos8700;
23		sdhc0 = &usdhc1;
24		mcuboot-button0 = &user_button;
25	};
26
27	chosen {
28		zephyr,sram = &sdram0;
29		zephyr,itcm = &itcm;
30		zephyr,dtcm = &dtcm;
31		zephyr,uart-mcumgr = &lpuart1;
32		zephyr,console = &lpuart1;
33		zephyr,shell-uart = &lpuart1;
34	};
35
36	sdram0: memory@80000000 {
37		/* Micron MT48LC16M16A2B4-6AIT:G */
38		device_type = "memory";
39		reg = <0x80000000 DT_SIZE_M(32)>;
40	};
41
42	/*
43	 * This node describes the GPIO pins of the parallel FPC interface,
44	 * This interface is standard to several NXP EVKs, and is used with
45	 * several parallel LCD displays (available as zephyr shields)
46	 */
47	nxp_parallel_lcd_connector: parallel-connector {
48		compatible = "nxp,parallel-lcd-connector";
49		#gpio-cells = <2>;
50		gpio-map-mask = <0xffffffff 0xffffffc0>;
51		gpio-map-pass-thru = <0 0x3f>;
52		gpio-map =	<0  0 &gpio2 31 0>;	/* Pin 1, BL+ */
53	};
54
55	/*
56	 * This node describes the GPIO pins of the I2C display FPC interface,
57	 * This interface is standard to several NXP EVKs, and is used with
58	 * several parallel LCD displays (available as zephyr shields)
59	 */
60	nxp_i2c_touch_fpc: i2c-touch-connector {
61		compatible = "nxp,i2c-tsc-fpc";
62		#gpio-cells = <2>;
63		gpio-map-mask = <0xffffffff 0xffffffc0>;
64		gpio-map-pass-thru = <0 0x3f>;
65		gpio-map =	<1  0 &gpio1 2 0>,	/* Pin 2, LCD touch RST */
66				<2  0 &gpio1 11 0>;	/* Pin 3, LCD touch INT */
67	};
68
69	leds {
70		compatible = "gpio-leds";
71		green_led: led_0 {
72			gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
73			label = "User LD1";
74		};
75	};
76
77	gpio_keys {
78		compatible = "gpio-keys";
79		user_button: button_0 {
80			label = "User SW8";
81			gpios = <&gpio5 0 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;
82			zephyr,code = <INPUT_KEY_0>;
83		};
84	};
85
86	arduino_header: connector {
87		compatible = "arduino-header-r3";
88		#gpio-cells = <2>;
89		gpio-map-mask = <0xffffffff 0xffffffc0>;
90		gpio-map-pass-thru = <0 0x3f>;
91		gpio-map = <0 0 &gpio1 26 0>,	/* A0 */
92			   <1 0 &gpio1 27 0>,	/* A1 */
93			   <2 0 &gpio1 20 0>,	/* A2 */
94			   <3 0 &gpio1 21 0>,	/* A3 */
95			   <4 0 &gpio1 17 0>,	/* A4 */
96			   <5 0 &gpio1 16 0>,	/* A5 */
97			   <6 0 &gpio1 23 0>,	/* D0 */
98			   <7 0 &gpio1 22 0>,	/* D1 */
99			   <8 0 &gpio1 11 0>,	/* D2 */
100			   <9 0 &gpio1 24 0>,	/* D3 */
101			   <10 0 &gpio1 9 0>,	/* D4 */
102			   <11 0 &gpio1 10 0>,	/* D5 */
103			   <12 0 &gpio1 18 0>,	/* D6 */
104			   <13 0 &gpio1 19 0>,	/* D7 */
105			   <14 0 &gpio1 3 0>,	/* D8 */
106			   <15 0 &gpio1 2 0>,	/* D9 */
107			   <16 0 &gpio3 13 0>,	/* D10 */
108			   <17 0 &gpio3 14 0>,	/* D11 */
109			   <18 0 &gpio3 15 0>,	/* D12 */
110			   <19 0 &gpio3 12 0>,	/* D13 */
111			   <20 0 &gpio1 1 0>,	/* D14 */
112			   <21 0 &gpio1 0 0>;	/* D15 */
113	};
114};
115
116arduino_serial: &lpuart3 {
117	pinctrl-0 = <&pinmux_lpuart3>;
118	pinctrl-1 = <&pinmux_lpuart3_sleep>;
119	pinctrl-names = "default", "sleep";
120};
121
122&adc1 {
123	status = "okay";
124	pinctrl-0 = <&pinmux_adc1>;
125	pinctrl-names = "default";
126};
127
128nxp_touch_i2c: &lpi2c1 {};
129
130zephyr_lcdif: &lcdif {
131	pinctrl-0 = <&pinmux_lcdif>;
132	pinctrl-names = "default";
133};
134
135&lpi2c1 {
136	status = "okay";
137	pinctrl-0 = <&pinmux_lpi2c1>;
138	pinctrl-names = "default";
139
140	fxos8700: fxos8700@1f {
141		compatible = "nxp,fxos8700";
142		reg = <0x1f>;
143
144		/* Two zero ohm resistors (R263 and R264) isolate sensor
145		 * interrupt gpios from the soc and are unpopulated by default.
146		 * Note that if you populate them, they conflict with LCD and
147		 * Ethernet interrupt gpios.
148		 */
149		int1-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
150		int2-gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
151	};
152};
153
154&lpuart1 {
155	status = "okay";
156	current-speed = <115200>;
157	pinctrl-0 = <&pinmux_lpuart1>;
158	pinctrl-1 = <&pinmux_lpuart1_sleep>;
159	pinctrl-names = "default", "sleep";
160};
161
162&lpspi1 {
163	status = "okay";
164	/* DMA channels 0 and 1, muxed to LPSPI1 RX and TX */
165	dmas = <&edma0 0 13>, <&edma0 1 14>;
166	dma-names = "rx", "tx";
167	pinctrl-0 = <&pinmux_lpspi1>;
168	pinctrl-names = "default";
169};
170
171&lpspi3 {
172	status = "okay";
173	/* DMA channels 2 and 3, muxed to LPSPI3 RX and TX */
174	dmas = <&edma0 2 15>, <&edma0 3 16>;
175	dma-names = "rx", "tx";
176	pinctrl-0 = <&pinmux_lpspi3>;
177	pinctrl-names = "default";
178};
179
180&enet_mac {
181	status = "okay";
182	pinctrl-0 = <&pinmux_enet>;
183	pinctrl-names = "default";
184	phy-handle = <&phy>;
185	zephyr,random-mac-address;
186	phy-connection-type = "rmii";
187};
188
189&enet_mdio {
190	status = "okay";
191	pinctrl-0 = <&pinmux_enet_mdio>;
192	pinctrl-names = "default";
193	phy: phy@0 {
194		compatible = "microchip,ksz8081";
195		reg = <0>;
196		status = "okay";
197		reset-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
198		int-gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
199		microchip,interface-type = "rmii";
200	};
201};
202
203&enet_ptp_clock {
204	status = "okay";
205	pinctrl-0 = <&pinmux_ptp>;
206	pinctrl-names = "default";
207};
208
209zephyr_udc0: &usb1 {
210	status = "okay";
211};
212
213&usdhc1 {
214	status = "okay";
215	pwr-gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>;
216	cd-gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
217	pinctrl-0 = <&pinmux_usdhc1>;
218	pinctrl-1 = <&pinmux_usdhc1_slow>;
219	pinctrl-2 = <&pinmux_usdhc1_med>;
220	pinctrl-3 = <&pinmux_usdhc1_fast>;
221	pinctrl-names = "default", "slow", "med", "fast";
222	sdmmc {
223		compatible = "zephyr,sdmmc-disk";
224		disk-name = "SD";
225		status = "okay";
226	};
227};
228
229&wdog0 {
230	status = "okay";
231};
232
233&edma0 {
234	status = "okay";
235};
236
237&pxp {
238	status = "okay";
239};
240
241/* GPT and Systick are enabled. If power management is enabled, the GPT
242 * timer will be used instead of systick, as allows the core clock to
243 * be gated.
244 */
245&gpt_hw_timer {
246	status = "okay";
247};
248
249&systick {
250	status = "okay";
251};
252