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