/*
 * Copyright (c) 2023 Antmicro <www.antmicro.com>
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <mem.h>
#include <arm/armv8-r.dtsi>
#include <zephyr/dt-bindings/interrupt-controller/arm-gic.h>

/ {
	#address-cells = <1>;
	#size-cells = <1>;
	compatible = "renesas,rzt2m-dev";

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

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

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

	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>;
	};

	soc {
		compatible = "renesas,rzt2m-soc";

		interrupt-parent = <&gic>;

		gic: interrupt-controller@94000000 {
			compatible = "arm,gic-v3", "arm,gic";
			reg = <0x94000000 0x10000>,
				<0x94100000 0x80000>;
			interrupt-controller;
			#interrupt-cells = <4>;
			status = "okay";
		};

		cpu0_atcm: memory@0 {
			compatible = "mmio-sram";
			reg = <0x00000000 DT_SIZE_K(512)>;
		};

		cpu0_btcm: memory@100000 {
			compatible = "mmio-sram";
			reg = <0x00100000 DT_SIZE_K(64)>;
		};

		sram0: memory@10000000 {
			compatible = "mmio-sram";
			reg = <0x10000000 DT_SIZE_M(2)>;
		};

		gsc: gsc@c0060000 {
			/* Global System Counter */
			compatible = "syscon";
			reg = <0xc0060000 0x30>;
			reg-io-width = <4>;
		};

		prcrn: prcrn@80281a10 {
			/* Non-safety area */
			compatible = "syscon";
			reg = <0x80281a10 0x10>;
			reg-io-width = <4>;
		};

		prcrs: prcrs@81281a00 {
			/* Safety area */
			compatible = "syscon";
			reg = <0x81281a00 0x10>;
			reg-io-width = <4>;
		};

		sckcr: sckcr@81280004 {
			/* System Clock Control Register*/
			compatible = "syscon";
			reg = <0x80280000 0x20>;
			reg-io-width = <4>;
		};

		sckcr2: sckcr2@81280004 {
			/* System Clock Control Register 2 */
			compatible = "syscon";
			reg = <0x81280004 0x1a>;
			reg-io-width = <4>;
		};

		ns_portnf_md: ns_portnf_md@8009000c {
			/* Interrupt edge detection setting */
			compatible = "syscon";
			reg = <0x8009000c 0x4>;
			reg-io-width = <4>;
		};

		uart0: serial@80001000 {
			compatible = "renesas,rzt2m-uart";
			reg = <0x80001000 0x1000>;
			current-speed = <115200>;
			interrupts = <GIC_SPI 288 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>,
					<GIC_SPI 289 IRQ_TYPE_EDGE IRQ_DEFAULT_PRIORITY>,
					<GIC_SPI 290 IRQ_TYPE_EDGE IRQ_DEFAULT_PRIORITY>,
					<GIC_SPI 291 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>;
			interrupt-names = "rx_err", "rx", "tx", "tx_end";
			status = "disabled";
		};

		uart3: serial@80001c00 {
			compatible = "renesas,rzt2m-uart";
			reg = <0x80001c00 0x1000>;
			current-speed = <115200>;
			interrupts = <GIC_SPI 300 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>,
					<GIC_SPI 301 IRQ_TYPE_EDGE IRQ_DEFAULT_PRIORITY>,
					<GIC_SPI 302 IRQ_TYPE_EDGE IRQ_DEFAULT_PRIORITY>,
					<GIC_SPI 303 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>;
			interrupt-names = "rx_err", "rx", "tx", "tx_end";
			status = "disabled";
		};

		pinctrl: pinctrl@800a0000 {
			compatible = "renesas,rzt2m-pinctrl";
			reg = <0x800a0000 0x1000 0x81030c00 0x1000>;
			reg-names = "port_nsr", "ptadr";

			gpio_common: gpio_common {
				compatible = "renesas,rzt2m-gpio-common";
				interrupts = <GIC_SPI 6 IRQ_TYPE_EDGE IRQ_DEFAULT_PRIORITY>,
					<GIC_SPI 7 IRQ_TYPE_EDGE IRQ_DEFAULT_PRIORITY>,
					<GIC_SPI 8 IRQ_TYPE_EDGE IRQ_DEFAULT_PRIORITY>,
					<GIC_SPI 9 IRQ_TYPE_EDGE IRQ_DEFAULT_PRIORITY>,
					<GIC_SPI 10 IRQ_TYPE_EDGE IRQ_DEFAULT_PRIORITY>,
					<GIC_SPI 11 IRQ_TYPE_EDGE IRQ_DEFAULT_PRIORITY>,
					<GIC_SPI 12 IRQ_TYPE_EDGE IRQ_DEFAULT_PRIORITY>,
					<GIC_SPI 13 IRQ_TYPE_EDGE IRQ_DEFAULT_PRIORITY>,
					<GIC_SPI 14 IRQ_TYPE_EDGE IRQ_DEFAULT_PRIORITY>,
					<GIC_SPI 15 IRQ_TYPE_EDGE IRQ_DEFAULT_PRIORITY>,
					<GIC_SPI 16 IRQ_TYPE_EDGE IRQ_DEFAULT_PRIORITY>,
					<GIC_SPI 17 IRQ_TYPE_EDGE IRQ_DEFAULT_PRIORITY>,
					<GIC_SPI 18 IRQ_TYPE_EDGE IRQ_DEFAULT_PRIORITY>,
					<GIC_SPI 19 IRQ_TYPE_EDGE IRQ_DEFAULT_PRIORITY>;
				#address-cells = <1>;
				#size-cells = <0>;

				gpio10: gpio@a {
					compatible = "renesas,rzt2m-gpio";
					gpio-controller;
					#gpio-cells = <2>;
					ngpios = <8>;
					reg = <0xa>;
					irqs = <4 11>, <5 2>;
				};

				gpio16: gpio@10 {
					compatible = "renesas,rzt2m-gpio";
					gpio-controller;
					#gpio-cells = <2>;
					ngpios = <8>;
					reg = <0x10>;
					irqs = <3 7>, <6 8>;
				};

				gpio19: gpio@13 {
					compatible = "renesas,rzt2m-gpio";
					gpio-controller;
					#gpio-cells = <2>;
					ngpios = <8>;
					reg = <0x13>;
					irqs = <2 3>;
				};

				gpio20: gpio@14 {
					compatible = "renesas,rzt2m-gpio";
					gpio-controller;
					#gpio-cells = <2>;
					ngpios = <8>;
					reg = <0x14>;
				};

				gpio23: gpio@17 {
					compatible = "renesas,rzt2m-gpio";
					gpio-controller;
					#gpio-cells = <2>;
					ngpios = <8>;
					reg = <0x17>;
					irqs = <0 5>, <2 8>;
				};

			};
		};
	};
};
