1/*
2 * Copyright (c) 2021, Laird Connectivity
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#include <arm/armv7-m.dtsi>
8#include <zephyr/dt-bindings/clock/imx_ccm.h>
9#include <zephyr/dt-bindings/rdc/imx_rdc.h>
10#include <mem.h>
11
12/ {
13	cpus {
14		#address-cells = <1>;
15		#size-cells = <0>;
16
17		cpu@0 {
18			device_type = "cpu";
19			compatible = "arm,cortex-m7";
20			reg = <0>;
21			#address-cells = <1>;
22			#size-cells = <1>;
23
24			mpu: mpu@e000ed90 {
25				compatible = "arm,armv7m-mpu";
26				reg = <0xe000ed90 0x40>;
27			};
28		};
29	};
30
31	soc {
32		itcm: itcm@0 {
33			compatible = "nxp,imx-itcm";
34			reg = <0x0 DT_SIZE_K(128)>;
35		};
36
37		dtcm: dtcm@20000000 {
38			compatible = "nxp,imx-dtcm";
39			reg = <0x20000000 DT_SIZE_K(128)>;
40		};
41
42		ocram_code: code@900000 {
43			compatible = "nxp,imx-code-bus";
44			reg = <0x00900000 DT_SIZE_K(576)>;
45		};
46
47		ocram_sys: memory@20200000 {
48			device_type = "memory";
49			compatible = "nxp,imx-sys-bus";
50			reg = <0x20200000 DT_SIZE_K(576)>;
51		};
52
53		ocram_s_code: code@180000 {
54			compatible = "nxp,imx-code-bus";
55			reg = <0x00180000 DT_SIZE_K(36)>;
56		};
57
58		ocram_s_sys: memory@20180000 {
59			device_type = "memory";
60			compatible = "nxp,imx-sys-bus";
61			reg = <0x20180000 DT_SIZE_K(36)>;
62		};
63
64		ddr_code: code@80000000 {
65			device_type = "memory";
66			compatible = "nxp,imx-code-bus";
67			reg = <0x80000000 DT_SIZE_M(2)>;
68		};
69
70		ddr_sys: memory@80200000 {
71			device_type = "memory";
72			compatible = "nxp,imx-sys-bus";
73			reg = <0x80200000 DT_SIZE_M(2)>;
74		};
75
76		ccm: ccm@30380000 {
77			compatible = "nxp,imx-ccm";
78			reg = <0x30380000 DT_SIZE_K(64)>;
79			#clock-cells = <3>;
80		};
81
82		iomuxc: iomuxc@30330000 {
83			compatible = "nxp,imx-iomuxc";
84			reg = <0x30330000 DT_SIZE_K(64)>;
85			status = "okay";
86			pinctrl: pinctrl {
87				status = "okay";
88				compatible = "nxp,imx8mp-pinctrl";
89			};
90		};
91
92		gpio1: gpio@30200000 {
93			compatible = "nxp,imx-gpio";
94			reg = <0x30200000 DT_SIZE_K(64)>;
95			interrupts = <64 0>, <65 0>;
96			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
97					       RDC_DOMAIN_PERM_RW)|\
98			       RDC_DOMAIN_PERM(M7_DOMAIN_ID,\
99					       RDC_DOMAIN_PERM_RW))>;
100			gpio-controller;
101			#gpio-cells = <2>;
102			status = "disabled";
103		};
104
105		gpio2: gpio@30210000 {
106			compatible = "nxp,imx-gpio";
107			reg = <0x30210000 DT_SIZE_K(64)>;
108			interrupts = <66 0>, <67 0>;
109			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
110					       RDC_DOMAIN_PERM_RW)|\
111			       RDC_DOMAIN_PERM(M7_DOMAIN_ID,\
112					       RDC_DOMAIN_PERM_RW))>;
113			gpio-controller;
114			#gpio-cells = <2>;
115			status = "disabled";
116		};
117
118		gpio3: gpio@30220000 {
119			compatible = "nxp,imx-gpio";
120			reg = <0x30220000 DT_SIZE_K(64)>;
121			interrupts = <68 0>, <69 0>;
122			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
123					       RDC_DOMAIN_PERM_RW)|\
124			       RDC_DOMAIN_PERM(M7_DOMAIN_ID,\
125					       RDC_DOMAIN_PERM_RW))>;
126			gpio-controller;
127			#gpio-cells = <2>;
128			status = "disabled";
129		};
130
131		gpio4: gpio@30230000 {
132			compatible = "nxp,imx-gpio";
133			reg = <0x30230000 DT_SIZE_K(64)>;
134			interrupts = <70 0>, <71 0>;
135			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
136					       RDC_DOMAIN_PERM_RW)|\
137			       RDC_DOMAIN_PERM(M7_DOMAIN_ID,\
138					       RDC_DOMAIN_PERM_RW))>;
139			gpio-controller;
140			#gpio-cells = <2>;
141			status = "disabled";
142		};
143
144		gpio5: gpio@30240000 {
145			compatible = "nxp,imx-gpio";
146			reg = <0x30240000 DT_SIZE_K(64)>;
147			interrupts = <72 0>, <73 0>;
148			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
149					       RDC_DOMAIN_PERM_RW)|\
150			       RDC_DOMAIN_PERM(M7_DOMAIN_ID,\
151					       RDC_DOMAIN_PERM_RW))>;
152			gpio-controller;
153			#gpio-cells = <2>;
154			status = "disabled";
155		};
156
157		uart4: uart@30a60000 {
158			compatible = "nxp,imx-iuart";
159			reg = <0x30a60000 0x10000>;
160			interrupts = <29 3>;
161			clocks = <&ccm IMX_CCM_UART4_CLK 0x6c 24>;
162			status = "disabled";
163		};
164
165		uart1: uart@30860000 {
166			compatible = "nxp,imx-iuart";
167			reg = <0x30860000 0x10000>;
168			interrupts = <26 3>;
169			clocks = <&ccm IMX_CCM_UART1_CLK 0x7c 24>;
170			status = "disabled";
171		};
172
173		mailbox0: mailbox@30ab0000 {
174			compatible = "nxp,imx-mu";
175			reg = <0x30ab0000 DT_SIZE_K(64)>;
176			interrupts = <97 0>;
177			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
178					       RDC_DOMAIN_PERM_RW)|\
179			       RDC_DOMAIN_PERM(M7_DOMAIN_ID,\
180					       RDC_DOMAIN_PERM_RW))>;
181			status = "disabled";
182		};
183
184		ecspi1: spi@30820000 {
185			compatible = "nxp,imx-ecspi";
186			reg = <0x30820000 DT_SIZE_K(64)>;
187			#address-cells = <1>;
188			#size-cells = <0>;
189			interrupts = <31 3>;
190			clocks = <&ccm IMX_CCM_ECSPI1_CLK 0 0>;
191			status = "disabled";
192		};
193
194		ecspi2: spi@30830000 {
195			compatible = "nxp,imx-ecspi";
196			reg = <0x30830000 DT_SIZE_K(64)>;
197			#address-cells = <1>;
198			#size-cells = <0>;
199			interrupts = <32 3>;
200			clocks = <&ccm IMX_CCM_ECSPI2_CLK 0 0>;
201			status = "disabled";
202		};
203
204		ecspi3: spi@30840000 {
205			compatible = "nxp,imx-ecspi";
206			reg = <0x30840000 DT_SIZE_K(64)>;
207			#address-cells = <1>;
208			#size-cells = <0>;
209			interrupts = <33 3>;
210			clocks = <&ccm IMX_CCM_ECSPI3_CLK 0 0>;
211			status = "disabled";
212		};
213	};
214};
215
216&nvic {
217	arm,num-irq-priority-bits = <4>;
218};
219
220
221/*
222 * GPIO pinmux options. These options define the pinmux settings
223 * for GPIO ports on the package, so that the GPIO driver can
224 * select GPIO mux options during GPIO configuration.
225 */
226
227&gpio1{
228	pinmux = <&iomuxc_gpio1_io00_gpio_io_gpio1_io0>,
229		<&iomuxc_gpio1_io01_gpio_io_gpio1_io1>,
230		<&iomuxc_gpio1_io02_gpio_io_gpio1_io2>,
231		<&iomuxc_gpio1_io03_gpio_io_gpio1_io3>,
232		<&iomuxc_gpio1_io04_gpio_io_gpio1_io4>,
233		<&iomuxc_gpio1_io05_gpio_io_gpio1_io5>,
234		<&iomuxc_gpio1_io06_gpio_io_gpio1_io6>,
235		<&iomuxc_gpio1_io07_gpio_io_gpio1_io7>,
236		<&iomuxc_gpio1_io08_gpio_io_gpio1_io8>,
237		<&iomuxc_gpio1_io09_gpio_io_gpio1_io9>,
238		<&iomuxc_gpio1_io10_gpio_io_gpio1_io10>,
239		<&iomuxc_gpio1_io11_gpio_io_gpio1_io11>,
240		<&iomuxc_gpio1_io12_gpio_io_gpio1_io12>,
241		<&iomuxc_gpio1_io13_gpio_io_gpio1_io13>,
242		<&iomuxc_gpio1_io14_gpio_io_gpio1_io14>,
243		<&iomuxc_gpio1_io15_gpio_io_gpio1_io15>,
244		<&iomuxc_enet_mdc_gpio_io_gpio1_io16>,
245		<&iomuxc_enet_mdio_gpio_io_gpio1_io17>,
246		<&iomuxc_enet_td3_gpio_io_gpio1_io18>,
247		<&iomuxc_enet_td2_gpio_io_gpio1_io19>,
248		<&iomuxc_enet_td1_gpio_io_gpio1_io20>,
249		<&iomuxc_enet_td0_gpio_io_gpio1_io21>,
250		<&iomuxc_enet_tx_ctl_gpio_io_gpio1_io22>,
251		<&iomuxc_enet_txc_gpio_io_gpio1_io23>,
252		<&iomuxc_enet_rx_ctl_gpio_io_gpio1_io24>,
253		<&iomuxc_enet_rxc_gpio_io_gpio1_io25>,
254		<&iomuxc_enet_rd0_gpio_io_gpio1_io26>,
255		<&iomuxc_enet_rd1_gpio_io_gpio1_io27>,
256		<&iomuxc_enet_rd2_gpio_io_gpio1_io28>,
257		<&iomuxc_enet_rd3_gpio_io_gpio1_io29>;
258};
259
260&gpio2{
261	pinmux = <&iomuxc_sd1_clk_gpio_io_gpio2_io0>,
262		<&iomuxc_sd1_cmd_gpio_io_gpio2_io1>,
263		<&iomuxc_sd1_data0_gpio_io_gpio2_io2>,
264		<&iomuxc_sd1_data1_gpio_io_gpio2_io3>,
265		<&iomuxc_sd1_data2_gpio_io_gpio2_io4>,
266		<&iomuxc_sd1_data3_gpio_io_gpio2_io5>,
267		<&iomuxc_sd1_data4_gpio_io_gpio2_io6>,
268		<&iomuxc_sd1_data5_gpio_io_gpio2_io7>,
269		<&iomuxc_sd1_data6_gpio_io_gpio2_io8>,
270		<&iomuxc_sd1_data7_gpio_io_gpio2_io9>,
271		<&iomuxc_sd1_reset_b_gpio_io_gpio2_io10>,
272		<&iomuxc_sd1_strobe_gpio_io_gpio2_io11>,
273		<&iomuxc_sd2_cd_b_gpio_io_gpio2_io12>,
274		<&iomuxc_sd2_clk_gpio_io_gpio2_io13>,
275		<&iomuxc_sd2_cmd_gpio_io_gpio2_io14>,
276		<&iomuxc_sd2_data0_gpio_io_gpio2_io15>,
277		<&iomuxc_sd2_data1_gpio_io_gpio2_io16>,
278		<&iomuxc_sd2_data2_gpio_io_gpio2_io17>,
279		<&iomuxc_sd2_data3_gpio_io_gpio2_io18>,
280		<&iomuxc_sd2_reset_b_gpio_io_gpio2_io19>,
281		<&iomuxc_sd2_wp_gpio_io_gpio2_io20>;
282};
283
284&gpio3{
285	pinmux = <&iomuxc_nand_ale_gpio_io_gpio3_io0>,
286		<&iomuxc_nand_ce0_b_gpio_io_gpio3_io1>,
287		<&iomuxc_nand_ce1_b_gpio_io_gpio3_io2>,
288		<&iomuxc_nand_ce2_b_gpio_io_gpio3_io3>,
289		<&iomuxc_nand_ce3_b_gpio_io_gpio3_io4>,
290		<&iomuxc_nand_cle_gpio_io_gpio3_io5>,
291		<&iomuxc_nand_data00_gpio_io_gpio3_io6>,
292		<&iomuxc_nand_data01_gpio_io_gpio3_io7>,
293		<&iomuxc_nand_data02_gpio_io_gpio3_io8>,
294		<&iomuxc_nand_data03_gpio_io_gpio3_io9>,
295		<&iomuxc_nand_data04_gpio_io_gpio3_io10>,
296		<&iomuxc_nand_data05_gpio_io_gpio3_io11>,
297		<&iomuxc_nand_data06_gpio_io_gpio3_io12>,
298		<&iomuxc_nand_data07_gpio_io_gpio3_io13>,
299		<&iomuxc_nand_dqs_gpio_io_gpio3_io14>,
300		<&iomuxc_nand_re_b_gpio_io_gpio3_io15>,
301		<&iomuxc_nand_ready_b_gpio_io_gpio3_io16>,
302		<&iomuxc_nand_we_b_gpio_io_gpio3_io17>,
303		<&iomuxc_nand_wp_b_gpio_io_gpio3_io18>,
304		<&iomuxc_sai5_rxfs_gpio_io_gpio3_io19>,
305		<&iomuxc_sai5_rxc_gpio_io_gpio3_io20>,
306		<&iomuxc_sai5_rxd0_gpio_io_gpio3_io21>,
307		<&iomuxc_sai5_rxd1_gpio_io_gpio3_io22>,
308		<&iomuxc_sai5_rxd2_gpio_io_gpio3_io23>,
309		<&iomuxc_sai5_rxd3_gpio_io_gpio3_io24>,
310		<&iomuxc_sai5_mclk_gpio_io_gpio3_io25>,
311		<&iomuxc_hdmi_ddc_scl_gpio_io_gpio3_io26>,
312		<&iomuxc_hdmi_ddc_sda_gpio_io_gpio3_io27>,
313		<&iomuxc_hdmi_cec_gpio_io_gpio3_io28>,
314		<&iomuxc_hdmi_hpd_gpio_io_gpio3_io29>;
315};
316
317&gpio4{
318	pinmux = <&iomuxc_sai1_rxfs_gpio_io_gpio4_io0>,
319		<&iomuxc_sai1_rxc_gpio_io_gpio4_io1>,
320		<&iomuxc_sai1_rxd0_gpio_io_gpio4_io2>,
321		<&iomuxc_sai1_rxd1_gpio_io_gpio4_io3>,
322		<&iomuxc_sai1_rxd2_gpio_io_gpio4_io4>,
323		<&iomuxc_sai1_rxd3_gpio_io_gpio4_io5>,
324		<&iomuxc_sai1_rxd4_gpio_io_gpio4_io6>,
325		<&iomuxc_sai1_rxd5_gpio_io_gpio4_io7>,
326		<&iomuxc_sai1_rxd6_gpio_io_gpio4_io8>,
327		<&iomuxc_sai1_rxd7_gpio_io_gpio4_io9>,
328		<&iomuxc_sai1_txfs_gpio_io_gpio4_io10>,
329		<&iomuxc_sai1_txc_gpio_io_gpio4_io11>,
330		<&iomuxc_sai1_txd0_gpio_io_gpio4_io12>,
331		<&iomuxc_sai1_txd1_gpio_io_gpio4_io13>,
332		<&iomuxc_sai1_txd2_gpio_io_gpio4_io14>,
333		<&iomuxc_sai1_txd3_gpio_io_gpio4_io15>,
334		<&iomuxc_sai1_txd4_gpio_io_gpio4_io16>,
335		<&iomuxc_sai1_txd5_gpio_io_gpio4_io17>,
336		<&iomuxc_sai1_txd6_gpio_io_gpio4_io18>,
337		<&iomuxc_sai1_txd7_gpio_io_gpio4_io19>,
338		<&iomuxc_sai1_mclk_gpio_io_gpio4_io20>,
339		<&iomuxc_sai2_rxfs_gpio_io_gpio4_io21>,
340		<&iomuxc_sai2_rxc_gpio_io_gpio4_io22>,
341		<&iomuxc_sai2_rxd0_gpio_io_gpio4_io23>,
342		<&iomuxc_sai2_txfs_gpio_io_gpio4_io24>,
343		<&iomuxc_sai2_txc_gpio_io_gpio4_io25>,
344		<&iomuxc_sai2_txd0_gpio_io_gpio4_io26>,
345		<&iomuxc_sai2_mclk_gpio_io_gpio4_io27>,
346		<&iomuxc_sai3_rxfs_gpio_io_gpio4_io28>,
347		<&iomuxc_sai3_rxc_gpio_io_gpio4_io29>,
348		<&iomuxc_sai3_rxd_gpio_io_gpio4_io30>,
349		<&iomuxc_sai3_txfs_gpio_io_gpio4_io31>;
350};
351
352&gpio5{
353	pinmux = <&iomuxc_sai3_txc_gpio_io_gpio5_io0>,
354		<&iomuxc_sai3_txd_gpio_io_gpio5_io1>,
355		<&iomuxc_sai3_mclk_gpio_io_gpio5_io2>,
356		<&iomuxc_spdif_tx_gpio_io_gpio5_io3>,
357		<&iomuxc_spdif_rx_gpio_io_gpio5_io4>,
358		<&iomuxc_spdif_ext_clk_gpio_io_gpio5_io5>,
359		<&iomuxc_ecspi1_sclk_gpio_io_gpio5_io6>,
360		<&iomuxc_ecspi1_mosi_gpio_io_gpio5_io7>,
361		<&iomuxc_ecspi1_miso_gpio_io_gpio5_io8>,
362		<&iomuxc_ecspi1_ss0_gpio_io_gpio5_io9>,
363		<&iomuxc_ecspi2_sclk_gpio_io_gpio5_io10>,
364		<&iomuxc_ecspi2_mosi_gpio_io_gpio5_io11>,
365		<&iomuxc_ecspi2_miso_gpio_io_gpio5_io12>,
366		<&iomuxc_ecspi2_ss0_gpio_io_gpio5_io13>,
367		<&iomuxc_i2c1_scl_gpio_io_gpio5_io14>,
368		<&iomuxc_i2c1_sda_gpio_io_gpio5_io15>,
369		<&iomuxc_i2c2_scl_gpio_io_gpio5_io16>,
370		<&iomuxc_i2c2_sda_gpio_io_gpio5_io17>,
371		<&iomuxc_i2c3_scl_gpio_io_gpio5_io18>,
372		<&iomuxc_i2c3_sda_gpio_io_gpio5_io19>,
373		<&iomuxc_i2c4_scl_gpio_io_gpio5_io20>,
374		<&iomuxc_i2c4_sda_gpio_io_gpio5_io21>,
375		<&iomuxc_uart1_rxd_gpio_io_gpio5_io22>,
376		<&iomuxc_uart1_txd_gpio_io_gpio5_io23>,
377		<&iomuxc_uart2_rxd_gpio_io_gpio5_io24>,
378		<&iomuxc_uart2_txd_gpio_io_gpio5_io25>,
379		<&iomuxc_uart3_rxd_gpio_io_gpio5_io26>,
380		<&iomuxc_uart3_txd_gpio_io_gpio5_io27>,
381		<&iomuxc_uart4_rxd_gpio_io_gpio5_io28>,
382		<&iomuxc_uart4_txd_gpio_io_gpio5_io29>;
383};
384