1/*
2 * Copyright (c) 2021, Kwon Tae-young
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 <zephyr/dt-bindings/gpio/gpio.h>
11#include <mem.h>
12
13/ {
14	cpus {
15		#address-cells = <1>;
16		#size-cells = <0>;
17
18		cpu@0 {
19			device_type = "cpu";
20			compatible = "arm,cortex-m4";
21			reg = <0>;
22		};
23	};
24
25	soc {
26		tcml_code: code@1ffe0000 {
27			compatible = "nxp,imx-itcm";
28			reg = <0x1ffe0000 DT_SIZE_K(128)>;
29		};
30
31		tcmu_sys: memory@20000000 {
32			compatible = "nxp,imx-dtcm";
33			reg = <0x20000000 DT_SIZE_K(128)>;
34		};
35
36		ocram_code: code@900000 {
37			compatible = "nxp,imx-code-bus";
38			reg = <0x00900000 DT_SIZE_K(256)>;
39		};
40
41		ocram_sys: memory@20200000 {
42			device_type = "memory";
43			compatible = "nxp,imx-sys-bus";
44			reg = <0x20200000 DT_SIZE_K(256)>;
45		};
46
47		ocram_s_code: code@180000 {
48			compatible = "nxp,imx-code-bus";
49			reg = <0x00180000 DT_SIZE_K(32)>;
50		};
51
52		ocram_s_sys: memory@20180000 {
53			device_type = "memory";
54			compatible = "nxp,imx-sys-bus";
55			reg = <0x20180000 DT_SIZE_K(32)>;
56		};
57
58		gpio1: gpio@30200000 {
59			compatible = "nxp,imx-gpio";
60			reg = <0x30200000 DT_SIZE_K(64)>;
61			interrupts = <64 0>, <65 0>;
62			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
63					       RDC_DOMAIN_PERM_RW)|\
64			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
65					       RDC_DOMAIN_PERM_RW))>;
66			gpio-controller;
67			#gpio-cells = <2>;
68			status = "disabled";
69		};
70
71		gpio2: gpio@30210000 {
72			compatible = "nxp,imx-gpio";
73			reg = <0x30210000 DT_SIZE_K(64)>;
74			interrupts = <66 0>, <67 0>;
75			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
76					       RDC_DOMAIN_PERM_RW)|\
77			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
78					       RDC_DOMAIN_PERM_RW))>;
79			gpio-controller;
80			#gpio-cells = <2>;
81			status = "disabled";
82		};
83
84		gpio3: gpio@30220000 {
85			compatible = "nxp,imx-gpio";
86			reg = <0x30220000 DT_SIZE_K(64)>;
87			interrupts = <68 0>, <69 0>;
88			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
89					       RDC_DOMAIN_PERM_RW)|\
90			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
91					       RDC_DOMAIN_PERM_RW))>;
92			gpio-controller;
93			#gpio-cells = <2>;
94			status = "disabled";
95		};
96
97		gpio4: gpio@30230000 {
98			compatible = "nxp,imx-gpio";
99			reg = <0x30230000 DT_SIZE_K(64)>;
100			interrupts = <70 0>, <71 0>;
101			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
102					       RDC_DOMAIN_PERM_RW)|\
103			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
104					       RDC_DOMAIN_PERM_RW))>;
105			gpio-controller;
106			#gpio-cells = <2>;
107			status = "disabled";
108		};
109
110		gpio5: gpio@30240000 {
111			compatible = "nxp,imx-gpio";
112			reg = <0x30240000 DT_SIZE_K(64)>;
113			interrupts = <72 0>, <73 0>;
114			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
115					       RDC_DOMAIN_PERM_RW)|\
116			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
117					       RDC_DOMAIN_PERM_RW))>;
118			gpio-controller;
119			#gpio-cells = <2>;
120			status = "disabled";
121		};
122
123		iomuxc: iomuxc@30330000 {
124			compatible = "nxp,imx-iomuxc";
125			reg = <0x30330000 DT_SIZE_K(64)>;
126			status = "okay";
127			pinctrl: pinctrl {
128				status = "okay";
129				compatible = "nxp,imx8m-pinctrl";
130			};
131		};
132
133		ccm: ccm@30380000 {
134			compatible = "nxp,imx-ccm";
135			reg = <0x30380000 DT_SIZE_K(64)>;
136			#clock-cells = <3>;
137		};
138
139		ecspi1: spi@30820000 {
140			compatible = "nxp,imx-ecspi";
141			reg = <0x30820000 DT_SIZE_K(64)>;
142			#address-cells = <1>;
143			#size-cells = <0>;
144			interrupts = <31 3>;
145			clocks = <&ccm IMX_CCM_ECSPI1_CLK 0 0>;
146			status = "disabled";
147		};
148
149		ecspi2: spi@30830000 {
150			compatible = "nxp,imx-ecspi";
151			reg = <0x30830000 DT_SIZE_K(64)>;
152			#address-cells = <1>;
153			#size-cells = <0>;
154			interrupts = <32 3>;
155			clocks = <&ccm IMX_CCM_ECSPI2_CLK 0 0>;
156			status = "disabled";
157		};
158
159		ecspi3: spi@30840000 {
160			compatible = "nxp,imx-ecspi";
161			reg = <0x30840000 DT_SIZE_K(64)>;
162			#address-cells = <1>;
163			#size-cells = <0>;
164			interrupts = <33 3>;
165			clocks = <&ccm IMX_CCM_ECSPI3_CLK 0 0>;
166			status = "disabled";
167		};
168
169		uart1: uart@30860000 {
170			compatible = "nxp,imx-iuart";
171			reg = <0x30860000 0x10000>;
172			interrupts = <26 3>;
173			clocks = <&ccm IMX_CCM_UART1_CLK 0x7c 24>;
174			status = "disabled";
175		};
176
177		uart2: uart@30890000 {
178			compatible = "nxp,imx-iuart";
179			reg = <0x30890000 0x10000>;
180			interrupts = <27 3>;
181			clocks = <&ccm IMX_CCM_UART2_CLK 0x68 28>;
182			status = "disabled";
183		};
184
185		uart3: uart@30880000 {
186			compatible = "nxp,imx-iuart";
187			reg = <0x30880000 0x10000>;
188			interrupts = <28 3>;
189			clocks = <&ccm IMX_CCM_UART3_CLK 0x68 12>;
190			status = "disabled";
191		};
192
193		uart4: uart@30a60000 {
194			compatible = "nxp,imx-iuart";
195			reg = <0x30a60000 0x10000>;
196			interrupts = <29 3>;
197			clocks = <&ccm IMX_CCM_UART4_CLK 0x6c 24>;
198			status = "disabled";
199		};
200
201		mailbox0: mailbox@30ab0000 {
202			compatible = "nxp,imx-mu";
203			reg = <0x30ab0000 DT_SIZE_K(64)>;
204			interrupts = <97 0>;
205			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
206					       RDC_DOMAIN_PERM_RW)|\
207			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
208					       RDC_DOMAIN_PERM_RW))>;
209			status = "disabled";
210		};
211	};
212};
213
214&nvic {
215	arm,num-irq-priority-bits = <4>;
216};
217
218
219/*
220 * GPIO pinmux options. These options define the pinmux settings
221 * for GPIO ports on the package, so that the GPIO driver can
222 * select GPIO mux options during GPIO configuration.
223 */
224
225&gpio1{
226	pinmux = <&iomuxc_gpio1_io00_gpio_io_gpio1_io00>,
227		<&iomuxc_gpio1_io01_gpio_io_gpio1_io01>,
228		<&iomuxc_gpio1_io02_gpio_io_gpio1_io02>,
229		<&iomuxc_gpio1_io03_gpio_io_gpio1_io03>,
230		<&iomuxc_gpio1_io04_gpio_io_gpio1_io04>,
231		<&iomuxc_gpio1_io05_gpio_io_gpio1_io05>,
232		<&iomuxc_gpio1_io06_gpio_io_gpio1_io06>,
233		<&iomuxc_gpio1_io07_gpio_io_gpio1_io07>,
234		<&iomuxc_gpio1_io08_gpio_io_gpio1_io08>,
235		<&iomuxc_gpio1_io09_gpio_io_gpio1_io09>,
236		<&iomuxc_gpio1_io10_gpio_io_gpio1_io10>,
237		<&iomuxc_gpio1_io11_gpio_io_gpio1_io11>,
238		<&iomuxc_gpio1_io12_gpio_io_gpio1_io12>,
239		<&iomuxc_gpio1_io13_gpio_io_gpio1_io13>,
240		<&iomuxc_gpio1_io14_gpio_io_gpio1_io14>,
241		<&iomuxc_gpio1_io15_gpio_io_gpio1_io15>,
242		<&iomuxc_enet_mdc_gpio_io_gpio1_io16>,
243		<&iomuxc_enet_mdio_gpio_io_gpio1_io17>,
244		<&iomuxc_enet_td3_gpio_io_gpio1_io18>,
245		<&iomuxc_enet_td2_gpio_io_gpio1_io19>,
246		<&iomuxc_enet_td1_gpio_io_gpio1_io20>,
247		<&iomuxc_enet_td0_gpio_io_gpio1_io21>,
248		<&iomuxc_enet_tx_ctl_gpio_io_gpio1_io22>,
249		<&iomuxc_enet_txc_gpio_io_gpio1_io23>,
250		<&iomuxc_enet_rx_ctl_gpio_io_gpio1_io24>,
251		<&iomuxc_enet_rxc_gpio_io_gpio1_io25>,
252		<&iomuxc_enet_rd0_gpio_io_gpio1_io26>,
253		<&iomuxc_enet_rd1_gpio_io_gpio1_io27>,
254		<&iomuxc_enet_rd2_gpio_io_gpio1_io28>,
255		<&iomuxc_enet_rd3_gpio_io_gpio1_io29>;
256};
257
258&gpio2{
259	pinmux = <&iomuxc_sd1_clk_gpio_io_gpio2_io00>,
260		<&iomuxc_sd1_cmd_gpio_io_gpio2_io01>,
261		<&iomuxc_sd1_data0_gpio_io_gpio2_io02>,
262		<&iomuxc_sd1_data1_gpio_io_gpio2_io03>,
263		<&iomuxc_sd1_data2_gpio_io_gpio2_io04>,
264		<&iomuxc_sd1_data3_gpio_io_gpio2_io05>,
265		<&iomuxc_sd1_data4_gpio_io_gpio2_io06>,
266		<&iomuxc_sd1_data5_gpio_io_gpio2_io07>,
267		<&iomuxc_sd1_data6_gpio_io_gpio2_io08>,
268		<&iomuxc_sd1_data7_gpio_io_gpio2_io09>,
269		<&iomuxc_sd1_reset_b_gpio_io_gpio2_io10>,
270		<&iomuxc_sd1_strobe_gpio_io_gpio2_io11>,
271		<&iomuxc_sd2_cd_b_gpio_io_gpio2_io12>,
272		<&iomuxc_sd2_clk_gpio_io_gpio2_io13>,
273		<&iomuxc_sd2_cmd_gpio_io_gpio2_io14>,
274		<&iomuxc_sd2_data0_gpio_io_gpio2_io15>,
275		<&iomuxc_sd2_data1_gpio_io_gpio2_io16>,
276		<&iomuxc_sd2_data2_gpio_io_gpio2_io17>,
277		<&iomuxc_sd2_data3_gpio_io_gpio2_io18>,
278		<&iomuxc_sd2_reset_b_gpio_io_gpio2_io19>,
279		<&iomuxc_sd2_wp_gpio_io_gpio2_io20>;
280};
281
282&gpio3{
283	pinmux = <&iomuxc_nand_ale_gpio_io_gpio3_io00>,
284		<&iomuxc_nand_ce0_b_gpio_io_gpio3_io01>,
285		<&iomuxc_nand_ce1_b_gpio_io_gpio3_io02>,
286		<&iomuxc_nand_ce2_b_gpio_io_gpio3_io03>,
287		<&iomuxc_nand_ce3_b_gpio_io_gpio3_io04>,
288		<&iomuxc_nand_cle_gpio_io_gpio3_io05>,
289		<&iomuxc_nand_data00_gpio_io_gpio3_io06>,
290		<&iomuxc_nand_data01_gpio_io_gpio3_io07>,
291		<&iomuxc_nand_data02_gpio_io_gpio3_io08>,
292		<&iomuxc_nand_data03_gpio_io_gpio3_io09>,
293		<&iomuxc_nand_data04_gpio_io_gpio3_io10>,
294		<&iomuxc_nand_data05_gpio_io_gpio3_io11>,
295		<&iomuxc_nand_data06_gpio_io_gpio3_io12>,
296		<&iomuxc_nand_data07_gpio_io_gpio3_io13>,
297		<&iomuxc_nand_dqs_gpio_io_gpio3_io14>,
298		<&iomuxc_nand_re_b_gpio_io_gpio3_io15>,
299		<&iomuxc_nand_ready_b_gpio_io_gpio3_io16>,
300		<&iomuxc_nand_we_b_gpio_io_gpio3_io17>,
301		<&iomuxc_nand_wp_b_gpio_io_gpio3_io18>,
302		<&iomuxc_sai5_rxfs_gpio_io_gpio3_io19>,
303		<&iomuxc_sai5_rxc_gpio_io_gpio3_io20>,
304		<&iomuxc_sai5_rxd0_gpio_io_gpio3_io21>,
305		<&iomuxc_sai5_rxd1_gpio_io_gpio3_io22>,
306		<&iomuxc_sai5_rxd2_gpio_io_gpio3_io23>,
307		<&iomuxc_sai5_rxd3_gpio_io_gpio3_io24>,
308		<&iomuxc_sai5_mclk_gpio_io_gpio3_io25>;
309};
310
311&gpio4{
312	pinmux = <&iomuxc_sai1_rxfs_gpio_io_gpio4_io00>,
313		<&iomuxc_sai1_rxc_gpio_io_gpio4_io01>,
314		<&iomuxc_sai1_rxd0_gpio_io_gpio4_io02>,
315		<&iomuxc_sai1_rxd1_gpio_io_gpio4_io03>,
316		<&iomuxc_sai1_rxd2_gpio_io_gpio4_io04>,
317		<&iomuxc_sai1_rxd3_gpio_io_gpio4_io05>,
318		<&iomuxc_sai1_rxd4_gpio_io_gpio4_io06>,
319		<&iomuxc_sai1_rxd5_gpio_io_gpio4_io07>,
320		<&iomuxc_sai1_rxd6_gpio_io_gpio4_io08>,
321		<&iomuxc_sai1_rxd7_gpio_io_gpio4_io09>,
322		<&iomuxc_sai1_txfs_gpio_io_gpio4_io10>,
323		<&iomuxc_sai1_txc_gpio_io_gpio4_io11>,
324		<&iomuxc_sai1_txd0_gpio_io_gpio4_io12>,
325		<&iomuxc_sai1_txd1_gpio_io_gpio4_io13>,
326		<&iomuxc_sai1_txd2_gpio_io_gpio4_io14>,
327		<&iomuxc_sai1_txd3_gpio_io_gpio4_io15>,
328		<&iomuxc_sai1_txd4_gpio_io_gpio4_io16>,
329		<&iomuxc_sai1_txd5_gpio_io_gpio4_io17>,
330		<&iomuxc_sai1_txd6_gpio_io_gpio4_io18>,
331		<&iomuxc_sai1_txd7_gpio_io_gpio4_io19>,
332		<&iomuxc_sai1_mclk_gpio_io_gpio4_io20>,
333		<&iomuxc_sai2_rxfs_gpio_io_gpio4_io21>,
334		<&iomuxc_sai2_rxc_gpio_io_gpio4_io22>,
335		<&iomuxc_sai2_rxd0_gpio_io_gpio4_io23>,
336		<&iomuxc_sai2_txfs_gpio_io_gpio4_io24>,
337		<&iomuxc_sai2_txc_gpio_io_gpio4_io25>,
338		<&iomuxc_sai2_txd0_gpio_io_gpio4_io26>,
339		<&iomuxc_sai2_mclk_gpio_io_gpio4_io27>,
340		<&iomuxc_sai3_rxfs_gpio_io_gpio4_io28>,
341		<&iomuxc_sai3_rxc_gpio_io_gpio4_io29>,
342		<&iomuxc_sai3_rxd_gpio_io_gpio4_io30>,
343		<&iomuxc_sai3_txfs_gpio_io_gpio4_io31>;
344};
345
346&gpio5{
347	pinmux = <&iomuxc_sai3_txc_gpio_io_gpio5_io00>,
348		<&iomuxc_sai3_txd_gpio_io_gpio5_io01>,
349		<&iomuxc_sai3_mclk_gpio_io_gpio5_io02>,
350		<&iomuxc_spdif_tx_gpio_io_gpio5_io03>,
351		<&iomuxc_spdif_rx_gpio_io_gpio5_io04>,
352		<&iomuxc_spdif_ext_clk_gpio_io_gpio5_io05>,
353		<&iomuxc_ecspi1_sclk_gpio_io_gpio5_io06>,
354		<&iomuxc_ecspi1_mosi_gpio_io_gpio5_io07>,
355		<&iomuxc_ecspi1_miso_gpio_io_gpio5_io08>,
356		<&iomuxc_ecspi1_ss0_gpio_io_gpio5_io09>,
357		<&iomuxc_ecspi2_sclk_gpio_io_gpio5_io10>,
358		<&iomuxc_ecspi2_mosi_gpio_io_gpio5_io11>,
359		<&iomuxc_ecspi2_miso_gpio_io_gpio5_io12>,
360		<&iomuxc_ecspi2_ss0_gpio_io_gpio5_io13>,
361		<&iomuxc_i2c1_scl_gpio_io_gpio5_io14>,
362		<&iomuxc_i2c1_sda_gpio_io_gpio5_io15>,
363		<&iomuxc_i2c2_scl_gpio_io_gpio5_io16>,
364		<&iomuxc_i2c2_sda_gpio_io_gpio5_io17>,
365		<&iomuxc_i2c3_scl_gpio_io_gpio5_io18>,
366		<&iomuxc_i2c3_sda_gpio_io_gpio5_io19>,
367		<&iomuxc_i2c4_scl_gpio_io_gpio5_io20>,
368		<&iomuxc_i2c4_sda_gpio_io_gpio5_io21>,
369		<&iomuxc_uart1_rxd_gpio_io_gpio5_io22>,
370		<&iomuxc_uart1_txd_gpio_io_gpio5_io23>,
371		<&iomuxc_uart2_rxd_gpio_io_gpio5_io24>,
372		<&iomuxc_uart2_txd_gpio_io_gpio5_io25>,
373		<&iomuxc_uart3_rxd_gpio_io_gpio5_io26>,
374		<&iomuxc_uart3_txd_gpio_io_gpio5_io27>,
375		<&iomuxc_uart4_rxd_gpio_io_gpio5_io28>,
376		<&iomuxc_uart4_txd_gpio_io_gpio5_io29>;
377};
378