/*
 * Copyright 2020-2022,2024 NXP
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <mem.h>
#include <freq.h>
#include <arm64/armv8-a.dtsi>
#include <zephyr/dt-bindings/clock/imx_ccm.h>
#include <zephyr/dt-bindings/interrupt-controller/arm-gic.h>
#include <zephyr/dt-bindings/rdc/imx_rdc.h>

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

	chosen {
		zephyr,console = &uart2;
		zephyr,shell-uart = &uart2;
	};

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

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

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

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

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

	};

	arch_timer: timer {
		compatible = "arm,armv8-timer";
		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL
			      IRQ_DEFAULT_PRIORITY>,
			     <GIC_PPI 14 IRQ_TYPE_LEVEL
			      IRQ_DEFAULT_PRIORITY>,
			     <GIC_PPI 11 IRQ_TYPE_LEVEL
			      IRQ_DEFAULT_PRIORITY>,
			     <GIC_PPI 10 IRQ_TYPE_LEVEL
			      IRQ_DEFAULT_PRIORITY>;
		interrupt-parent = <&gic>;
	};

	gic: interrupt-controller@38800000 {
		compatible = "arm,gic-v3", "arm,gic";
		reg = <0x38800000 0x10000>, /* GIC Dist */
		      <0x38880000 0xc0000>; /* GICR (RD_base + SGI_base) */
		interrupt-controller;
		#interrupt-cells = <4>;
		status = "okay";
	};

	gpt1: gpt@302d0000 {
		compatible = "nxp,imx-gpt";
		reg = <0x302d0000 DT_SIZE_K(64)>;
		interrupt-parent = <&gic>;
		interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL
			IRQ_DEFAULT_PRIORITY>;
		gptfreq = <24000000>;
		clocks = <&ccm IMX_CCM_GPT_IPG_CLK 0x6C 20>;
		status = "disabled";
	};

	gpt2: gpt@302e0000 {
		compatible = "nxp,imx-gpt";
		reg = <0x302e0000 DT_SIZE_K(64)>;
		interrupt-parent = <&gic>;
		interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL
			IRQ_DEFAULT_PRIORITY>;
		gptfreq = <24000000>;
		clocks = <&ccm IMX_CCM_GPT_IPG_CLK 0x68 24>;
		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";
		};
	};

	ana_pll: ana_pll@30360000 {
		compatible = "nxp,imx-ana";
		reg = <0x30360000 DT_SIZE_K(64)>;
	};

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

	uart2: serial@30890000 {
		compatible = "nxp,imx-iuart";
		reg = <0x30890000 DT_SIZE_K(64)>;
		interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>;
		interrupt-names = "irq_0";
		interrupt-parent = <&gic>;
		clocks = <&ccm IMX_CCM_UART2_CLK 0x6c 24>;
		rdc = <(RDC_DOMAIN_PERM(A53_DOMAIN_ID, RDC_DOMAIN_PERM_RW)|\
		       RDC_DOMAIN_PERM(M4_DOMAIN_ID, RDC_DOMAIN_PERM_RW))>;
		status = "disabled";
	};

	uart4: serial@30a60000 {
		compatible = "nxp,imx-iuart";
		reg = <0x30a60000 DT_SIZE_K(64)>;
		interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>;
		interrupt-names = "irq_0";
		interrupt-parent = <&gic>;
		clocks = <&ccm IMX_CCM_UART4_CLK 0x6c 24>;
		rdc = <(RDC_DOMAIN_PERM(A53_DOMAIN_ID, RDC_DOMAIN_PERM_RW)|\
		       RDC_DOMAIN_PERM(M4_DOMAIN_ID, RDC_DOMAIN_PERM_RW))>;
		status = "disabled";
	};

	rdc: rdc@303d0000 {
		compatible = "nxp,rdc";
		reg = <0x303d0000 DT_SIZE_K(64)>;
	};
};
