/*
 * Copyright (c) 2021, Kwon Tae-young
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <arm/armv7-m.dtsi>
#include <zephyr/dt-bindings/clock/imx_ccm.h>
#include <zephyr/dt-bindings/rdc/imx_rdc.h>
#include <zephyr/dt-bindings/gpio/gpio.h>
#include <mem.h>

/ {
	cpus {
		#address-cells = <1>;
		#size-cells = <0>;

		cpu@0 {
			device_type = "cpu";
			compatible = "arm,cortex-m4";
			reg = <0>;
		};
	};

	soc {
		tcml_code: code@1ffe0000 {
			compatible = "nxp,imx-itcm";
			reg = <0x1ffe0000 DT_SIZE_K(128)>;
			label = "TCML CODE";
		};

		tcmu_sys: memory@20000000 {
			compatible = "nxp,imx-dtcm";
			reg = <0x20000000 DT_SIZE_K(128)>;
			label = "TCMU SYSTEM";
		};

		ocram_code: code@900000 {
			compatible = "nxp,imx-code-bus";
			reg = <0x00900000 DT_SIZE_K(256)>;
			label = "OCRAM CODE";
		};

		ocram_sys: memory@20200000 {
			device_type = "memory";
			compatible = "nxp,imx-sys-bus";
			reg = <0x20200000 DT_SIZE_K(256)>;
			label = "OCRAM SYSTEM";
		};

		ocram_s_code: code@180000 {
			compatible = "nxp,imx-code-bus";
			reg = <0x00180000 DT_SIZE_K(32)>;
			label = "OCRAM_S CODE";
		};

		ocram_s_sys: memory@20180000 {
			device_type = "memory";
			compatible = "nxp,imx-sys-bus";
			reg = <0x20180000 DT_SIZE_K(32)>;
			label = "OCRAM_S SYSTEM";
		};

		gpio1: gpio@30200000 {
			compatible = "nxp,imx-gpio";
			reg = <0x30200000 DT_SIZE_K(64)>;
			interrupts = <64 0>, <65 0>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "GPIO_1";
			gpio-controller;
			#gpio-cells = <2>;
			status = "disabled";
		};

		gpio2: gpio@30210000 {
			compatible = "nxp,imx-gpio";
			reg = <0x30210000 DT_SIZE_K(64)>;
			interrupts = <66 0>, <67 0>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "GPIO_2";
			gpio-controller;
			#gpio-cells = <2>;
			status = "disabled";
		};

		gpio3: gpio@30220000 {
			compatible = "nxp,imx-gpio";
			reg = <0x30220000 DT_SIZE_K(64)>;
			interrupts = <68 0>, <69 0>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "GPIO_3";
			gpio-controller;
			#gpio-cells = <2>;
			status = "disabled";
		};

		gpio4: gpio@30230000 {
			compatible = "nxp,imx-gpio";
			reg = <0x30230000 DT_SIZE_K(64)>;
			interrupts = <70 0>, <71 0>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "GPIO_4";
			gpio-controller;
			#gpio-cells = <2>;
			status = "disabled";
		};

		gpio5: gpio@30240000 {
			compatible = "nxp,imx-gpio";
			reg = <0x30240000 DT_SIZE_K(64)>;
			interrupts = <72 0>, <73 0>;
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			label = "GPIO_5";
			gpio-controller;
			#gpio-cells = <2>;
			status = "disabled";
		};

		iomuxc: iomuxc@30330000 {
			compatible = "nxp,imx-iomuxc";
			reg = <0x30330000 DT_SIZE_K(64)>;
			status = "okay";
			pinctrl: pinctrl {
				status = "okay";
				compatible = "nxp,imx8m-pinctrl";
			};
		};

		ccm: ccm@30380000 {
			compatible = "nxp,imx-ccm";
			reg = <0x30380000 DT_SIZE_K(64)>;
			label = "CCM";
			#clock-cells = <3>;
		};

		uart1: uart@30860000 {
			compatible = "nxp,imx-iuart";
			reg = <0x30860000 0x10000>;
			interrupts = <26 3>;
			clocks = <&ccm IMX_CCM_UART1_CLK 0x7c 24>;
			label = "UART_1";
			status = "disabled";
		};

		uart2: uart@30890000 {
			compatible = "nxp,imx-iuart";
			reg = <0x30890000 0x10000>;
			interrupts = <27 3>;
			clocks = <&ccm IMX_CCM_UART2_CLK 0x68 28>;
			label = "UART_2";
			status = "disabled";
		};

		uart3: uart@30880000 {
			compatible = "nxp,imx-iuart";
			reg = <0x30880000 0x10000>;
			interrupts = <28 3>;
			clocks = <&ccm IMX_CCM_UART3_CLK 0x68 12>;
			label = "UART_3";
			status = "disabled";
		};

		uart4: uart@30a60000 {
			compatible = "nxp,imx-iuart";
			reg = <0x30a60000 0x10000>;
			interrupts = <29 3>;
			clocks = <&ccm IMX_CCM_UART4_CLK 0x6c 24>;
			label = "UART_4";
			status = "disabled";
		};

		mailbox0: mailbox@30ab0000 {
			compatible = "nxp,imx-mu";
			reg = <0x30ab0000 DT_SIZE_K(64)>;
			interrupts = <97 0>;
			label = "MAILBOX_0";
			rdc = <(RDC_DOMAIN_PERM(A7_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW)|\
			       RDC_DOMAIN_PERM(M4_DOMAIN_ID,\
					       RDC_DOMAIN_PERM_RW))>;
			status = "disabled";
		};
	};
};

&nvic {
	arm,num-irq-priority-bits = <4>;
};


/*
 * GPIO pinmux options. These options define the pinmux settings
 * for GPIO ports on the package, so that the GPIO driver can
 * select GPIO mux options during GPIO configuration.
 */

&gpio1{
	pinmux = <&iomuxc_gpio1_io00_gpio_io_gpio1_io00>,
		<&iomuxc_gpio1_io01_gpio_io_gpio1_io01>,
		<&iomuxc_gpio1_io02_gpio_io_gpio1_io02>,
		<&iomuxc_gpio1_io03_gpio_io_gpio1_io03>,
		<&iomuxc_gpio1_io04_gpio_io_gpio1_io04>,
		<&iomuxc_gpio1_io05_gpio_io_gpio1_io05>,
		<&iomuxc_gpio1_io06_gpio_io_gpio1_io06>,
		<&iomuxc_gpio1_io07_gpio_io_gpio1_io07>,
		<&iomuxc_gpio1_io08_gpio_io_gpio1_io08>,
		<&iomuxc_gpio1_io09_gpio_io_gpio1_io09>,
		<&iomuxc_gpio1_io10_gpio_io_gpio1_io10>,
		<&iomuxc_gpio1_io11_gpio_io_gpio1_io11>,
		<&iomuxc_gpio1_io12_gpio_io_gpio1_io12>,
		<&iomuxc_gpio1_io13_gpio_io_gpio1_io13>,
		<&iomuxc_gpio1_io14_gpio_io_gpio1_io14>,
		<&iomuxc_gpio1_io15_gpio_io_gpio1_io15>,
		<&iomuxc_enet_mdc_gpio_io_gpio1_io16>,
		<&iomuxc_enet_mdio_gpio_io_gpio1_io17>,
		<&iomuxc_enet_td3_gpio_io_gpio1_io18>,
		<&iomuxc_enet_td2_gpio_io_gpio1_io19>,
		<&iomuxc_enet_td1_gpio_io_gpio1_io20>,
		<&iomuxc_enet_td0_gpio_io_gpio1_io21>,
		<&iomuxc_enet_tx_ctl_gpio_io_gpio1_io22>,
		<&iomuxc_enet_txc_gpio_io_gpio1_io23>,
		<&iomuxc_enet_rx_ctl_gpio_io_gpio1_io24>,
		<&iomuxc_enet_rxc_gpio_io_gpio1_io25>,
		<&iomuxc_enet_rd0_gpio_io_gpio1_io26>,
		<&iomuxc_enet_rd1_gpio_io_gpio1_io27>,
		<&iomuxc_enet_rd2_gpio_io_gpio1_io28>,
		<&iomuxc_enet_rd3_gpio_io_gpio1_io29>;
};

&gpio2{
	pinmux = <&iomuxc_sd1_clk_gpio_io_gpio2_io00>,
		<&iomuxc_sd1_cmd_gpio_io_gpio2_io01>,
		<&iomuxc_sd1_data0_gpio_io_gpio2_io02>,
		<&iomuxc_sd1_data1_gpio_io_gpio2_io03>,
		<&iomuxc_sd1_data2_gpio_io_gpio2_io04>,
		<&iomuxc_sd1_data3_gpio_io_gpio2_io05>,
		<&iomuxc_sd1_data4_gpio_io_gpio2_io06>,
		<&iomuxc_sd1_data5_gpio_io_gpio2_io07>,
		<&iomuxc_sd1_data6_gpio_io_gpio2_io08>,
		<&iomuxc_sd1_data7_gpio_io_gpio2_io09>,
		<&iomuxc_sd1_reset_b_gpio_io_gpio2_io10>,
		<&iomuxc_sd1_strobe_gpio_io_gpio2_io11>,
		<&iomuxc_sd2_cd_b_gpio_io_gpio2_io12>,
		<&iomuxc_sd2_clk_gpio_io_gpio2_io13>,
		<&iomuxc_sd2_cmd_gpio_io_gpio2_io14>,
		<&iomuxc_sd2_data0_gpio_io_gpio2_io15>,
		<&iomuxc_sd2_data1_gpio_io_gpio2_io16>,
		<&iomuxc_sd2_data2_gpio_io_gpio2_io17>,
		<&iomuxc_sd2_data3_gpio_io_gpio2_io18>,
		<&iomuxc_sd2_reset_b_gpio_io_gpio2_io19>,
		<&iomuxc_sd2_wp_gpio_io_gpio2_io20>;
};

&gpio3{
	pinmux = <&iomuxc_nand_ale_gpio_io_gpio3_io00>,
		<&iomuxc_nand_ce0_b_gpio_io_gpio3_io01>,
		<&iomuxc_nand_ce1_b_gpio_io_gpio3_io02>,
		<&iomuxc_nand_ce2_b_gpio_io_gpio3_io03>,
		<&iomuxc_nand_ce3_b_gpio_io_gpio3_io04>,
		<&iomuxc_nand_cle_gpio_io_gpio3_io05>,
		<&iomuxc_nand_data00_gpio_io_gpio3_io06>,
		<&iomuxc_nand_data01_gpio_io_gpio3_io07>,
		<&iomuxc_nand_data02_gpio_io_gpio3_io08>,
		<&iomuxc_nand_data03_gpio_io_gpio3_io09>,
		<&iomuxc_nand_data04_gpio_io_gpio3_io10>,
		<&iomuxc_nand_data05_gpio_io_gpio3_io11>,
		<&iomuxc_nand_data06_gpio_io_gpio3_io12>,
		<&iomuxc_nand_data07_gpio_io_gpio3_io13>,
		<&iomuxc_nand_dqs_gpio_io_gpio3_io14>,
		<&iomuxc_nand_re_b_gpio_io_gpio3_io15>,
		<&iomuxc_nand_ready_b_gpio_io_gpio3_io16>,
		<&iomuxc_nand_we_b_gpio_io_gpio3_io17>,
		<&iomuxc_nand_wp_b_gpio_io_gpio3_io18>,
		<&iomuxc_sai5_rxfs_gpio_io_gpio3_io19>,
		<&iomuxc_sai5_rxc_gpio_io_gpio3_io20>,
		<&iomuxc_sai5_rxd0_gpio_io_gpio3_io21>,
		<&iomuxc_sai5_rxd1_gpio_io_gpio3_io22>,
		<&iomuxc_sai5_rxd2_gpio_io_gpio3_io23>,
		<&iomuxc_sai5_rxd3_gpio_io_gpio3_io24>,
		<&iomuxc_sai5_mclk_gpio_io_gpio3_io25>;
};

&gpio4{
	pinmux = <&iomuxc_sai1_rxfs_gpio_io_gpio4_io00>,
		<&iomuxc_sai1_rxc_gpio_io_gpio4_io01>,
		<&iomuxc_sai1_rxd0_gpio_io_gpio4_io02>,
		<&iomuxc_sai1_rxd1_gpio_io_gpio4_io03>,
		<&iomuxc_sai1_rxd2_gpio_io_gpio4_io04>,
		<&iomuxc_sai1_rxd3_gpio_io_gpio4_io05>,
		<&iomuxc_sai1_rxd4_gpio_io_gpio4_io06>,
		<&iomuxc_sai1_rxd5_gpio_io_gpio4_io07>,
		<&iomuxc_sai1_rxd6_gpio_io_gpio4_io08>,
		<&iomuxc_sai1_rxd7_gpio_io_gpio4_io09>,
		<&iomuxc_sai1_txfs_gpio_io_gpio4_io10>,
		<&iomuxc_sai1_txc_gpio_io_gpio4_io11>,
		<&iomuxc_sai1_txd0_gpio_io_gpio4_io12>,
		<&iomuxc_sai1_txd1_gpio_io_gpio4_io13>,
		<&iomuxc_sai1_txd2_gpio_io_gpio4_io14>,
		<&iomuxc_sai1_txd3_gpio_io_gpio4_io15>,
		<&iomuxc_sai1_txd4_gpio_io_gpio4_io16>,
		<&iomuxc_sai1_txd5_gpio_io_gpio4_io17>,
		<&iomuxc_sai1_txd6_gpio_io_gpio4_io18>,
		<&iomuxc_sai1_txd7_gpio_io_gpio4_io19>,
		<&iomuxc_sai1_mclk_gpio_io_gpio4_io20>,
		<&iomuxc_sai2_rxfs_gpio_io_gpio4_io21>,
		<&iomuxc_sai2_rxc_gpio_io_gpio4_io22>,
		<&iomuxc_sai2_rxd0_gpio_io_gpio4_io23>,
		<&iomuxc_sai2_txfs_gpio_io_gpio4_io24>,
		<&iomuxc_sai2_txc_gpio_io_gpio4_io25>,
		<&iomuxc_sai2_txd0_gpio_io_gpio4_io26>,
		<&iomuxc_sai2_mclk_gpio_io_gpio4_io27>,
		<&iomuxc_sai3_rxfs_gpio_io_gpio4_io28>,
		<&iomuxc_sai3_rxc_gpio_io_gpio4_io29>,
		<&iomuxc_sai3_rxd_gpio_io_gpio4_io30>,
		<&iomuxc_sai3_txfs_gpio_io_gpio4_io31>;
};

&gpio5{
	pinmux = <&iomuxc_sai3_txc_gpio_io_gpio5_io00>,
		<&iomuxc_sai3_txd_gpio_io_gpio5_io01>,
		<&iomuxc_sai3_mclk_gpio_io_gpio5_io02>,
		<&iomuxc_spdif_tx_gpio_io_gpio5_io03>,
		<&iomuxc_spdif_rx_gpio_io_gpio5_io04>,
		<&iomuxc_spdif_ext_clk_gpio_io_gpio5_io05>,
		<&iomuxc_ecspi1_sclk_gpio_io_gpio5_io06>,
		<&iomuxc_ecspi1_mosi_gpio_io_gpio5_io07>,
		<&iomuxc_ecspi1_miso_gpio_io_gpio5_io08>,
		<&iomuxc_ecspi1_ss0_gpio_io_gpio5_io09>,
		<&iomuxc_ecspi2_sclk_gpio_io_gpio5_io10>,
		<&iomuxc_ecspi2_mosi_gpio_io_gpio5_io11>,
		<&iomuxc_ecspi2_miso_gpio_io_gpio5_io12>,
		<&iomuxc_ecspi2_ss0_gpio_io_gpio5_io13>,
		<&iomuxc_i2c1_scl_gpio_io_gpio5_io14>,
		<&iomuxc_i2c1_sda_gpio_io_gpio5_io15>,
		<&iomuxc_i2c2_scl_gpio_io_gpio5_io16>,
		<&iomuxc_i2c2_sda_gpio_io_gpio5_io17>,
		<&iomuxc_i2c3_scl_gpio_io_gpio5_io18>,
		<&iomuxc_i2c3_sda_gpio_io_gpio5_io19>,
		<&iomuxc_i2c4_scl_gpio_io_gpio5_io20>,
		<&iomuxc_i2c4_sda_gpio_io_gpio5_io21>,
		<&iomuxc_uart1_rxd_gpio_io_gpio5_io22>,
		<&iomuxc_uart1_txd_gpio_io_gpio5_io23>,
		<&iomuxc_uart2_rxd_gpio_io_gpio5_io24>,
		<&iomuxc_uart2_txd_gpio_io_gpio5_io25>,
		<&iomuxc_uart3_rxd_gpio_io_gpio5_io26>,
		<&iomuxc_uart3_txd_gpio_io_gpio5_io27>,
		<&iomuxc_uart4_rxd_gpio_io_gpio5_io28>,
		<&iomuxc_uart4_txd_gpio_io_gpio5_io29>;
};
