/*
 * SPDX-License-Identifier: Apache-2.0
 *
 * Copyright (C) 2023, Intel Corporation
 *
 */

#include <arm64/armv8-a.dtsi>
#include <zephyr/dt-bindings/interrupt-controller/arm-gic.h>
#include <zephyr/dt-bindings/reset/intel_socfpga_reset.h>
#include <mem.h>

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

		cpu@0 {
			device_type = "cpu";
			compatible = "arm,cortex-a55";
			enable-method = "psci";
			reg = <0x0>;
		};

		cpu@100 {
			device_type = "cpu";
			compatible = "arm,cortex-a55";
			enable-method = "psci";
			reg = <0x100>;
		};

		cpu@200 {
			device_type = "cpu";
			compatible = "arm,cortex-a76";
			enable-method = "psci";
			reg = <0x200>;
		};

		cpu@300 {
			device_type = "cpu";
			compatible = "arm,cortex-a76";
			enable-method = "psci";
			reg = <0x300>;
		};
	};

	gic: interrupt-controller@1d000000  {
		compatible = "arm,gic-v3", "arm,gic";
		reg = <0x1d000000 0x10000>, /* GICD */
		      <0x1d060000 0x80000>; /* GICR */
		interrupt-controller;
		#interrupt-cells = <4>;
		status = "okay";
		#address-cells = <1>;
		#size-cells = <1>;

		its: msi-controller@1d040000 {
			compatible = "arm,gic-v3-its";
			reg = <0x1d040000 0x20000>;
			status = "disabled";
		};
	};

	arch_timer: timer {
		compatible = "arm,armv8-timer";
		interrupt-parent = <&gic>;
		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>;
	};

	sysmgr: sysmgr@10d12000 {
		compatible = "syscon";
		reg = <0x10d12000 0x1000>;
	};

	clock: clock@10d10000 {
		compatible = "intel,agilex5-clock";
		reg = <0x10d10000 0x1000>;
		#clock-cells = <1>;
	};

	psci {
		compatible = "arm,psci-1.1";
		method = "smc";
	};

	/* This is for setting the MMU region for pinmux */
	pinmux: pinmux@10d13000 {
		compatible = "syscon";
		reg = <0x10d13000 0x1000>;
	};

	mem0: memory@80100000 {
		device_type = "memory";
		reg = <0x80100000 DT_SIZE_M(8)>;
	};

	uart0: uart@10c02000 {
		compatible = "ns16550";
		reg-shift = <2>;
		reg = <0x10c02000 0x100>;
		interrupt-parent = <&gic>;
		interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL IRQ_DEFAULT_PRIORITY>;
		interrupt-names = "irq_0";
		clock-frequency = <100000000>;
		resets = <&reset RSTMGR_UART0_RSTLINE>;
		status = "disabled";
	};

	reset: reset-controller@10D11000 {
		compatible = "intel,socfpga-reset";
		reg = <0x10D11000 0x100>;
		active-low;
		#reset-cells = <1>;
		status = "okay";
	};

	timer0: timer@10C03000 {
		compatible = "snps,dw-timers";
		interrupt-parent = <&gic>;
		interrupts = <GIC_SPI 113 IRQ_TYPE_LEVEL
				IRQ_DEFAULT_PRIORITY>;
		reg = <0x10c03000 0x100>;
		clock-frequency = <100000000>;
		resets = <&reset RSTMGR_SPTIMER0_RSTLINE>;
		status = "disabled";
	};

	timer1: timer@10C03100 {
		compatible = "snps,dw-timers";
		interrupt-parent = <&gic>;
		interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL
				IRQ_DEFAULT_PRIORITY>;
		reg = <0x10c03100 0x100>;
		clock-frequency = <100000000>;
		resets = <&reset RSTMGR_SPTIMER1_RSTLINE>;
		status = "disabled";
	};

	timer2: timer@10D00000 {
		compatible = "snps,dw-timers";
		interrupt-parent = <&gic>;
		interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL
				IRQ_DEFAULT_PRIORITY>;
		reg = <0x10D00000 0x100>;
		clock-frequency = <100000000>;
		resets = <&reset RSTMGR_L4SYSTIMER0_RSTLINE>;
		status = "disabled";
	};

	timer3: timer@10D00100 {
		compatible = "snps,dw-timers";
		interrupt-parent = <&gic>;
		interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL
				IRQ_DEFAULT_PRIORITY>;
		reg = <0x10D00100 0x100>;
		clock-frequency = <100000000>;
		resets = <&reset RSTMGR_L4SYSTIMER1_RSTLINE>;
		status = "disabled";
	};

	sip_smc: smc{
		compatible = "intel,socfpga-agilex-sip-smc";
		method = "smc";
		status = "disabled";
		zephyr,num-clients = <2>;
	};
};
