// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause)
/*
 * Realtek RTD16xx SoC family
 *
 * Copyright (c) 2019 Realtek Semiconductor Corp.
 * Copyright (c) 2019 Andreas Färber
 */

#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/irq.h>

/ {
	interrupt-parent = <&gic>;
	#address-cells = <1>;
	#size-cells = <1>;

	reserved-memory {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

		rpc_comm: rpc@2f000 {
			reg = <0x2f000 0x1000>;
		};

		rpc_ringbuf: rpc@1ffe000 {
			reg = <0x1ffe000 0x4000>;
		};

		tee: tee@10100000 {
			reg = <0x10100000 0xf00000>;
			no-map;
		};
	};

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

		cpu0: cpu@0 {
			device_type = "cpu";
			compatible = "arm,cortex-a55";
			reg = <0x0>;
			enable-method = "psci";
			next-level-cache = <&l2>;
		};

		cpu1: cpu@100 {
			device_type = "cpu";
			compatible = "arm,cortex-a55";
			reg = <0x100>;
			enable-method = "psci";
			next-level-cache = <&l3>;
		};

		cpu2: cpu@200 {
			device_type = "cpu";
			compatible = "arm,cortex-a55";
			reg = <0x200>;
			enable-method = "psci";
			next-level-cache = <&l3>;
		};

		cpu3: cpu@300 {
			device_type = "cpu";
			compatible = "arm,cortex-a55";
			reg = <0x300>;
			enable-method = "psci";
			next-level-cache = <&l3>;
		};

		cpu4: cpu@400 {
			device_type = "cpu";
			compatible = "arm,cortex-a55";
			reg = <0x400>;
			enable-method = "psci";
			next-level-cache = <&l3>;
		};

		cpu5: cpu@500 {
			device_type = "cpu";
			compatible = "arm,cortex-a55";
			reg = <0x500>;
			enable-method = "psci";
			next-level-cache = <&l3>;
		};

		l2: l2-cache {
			compatible = "cache";
			next-level-cache = <&l3>;
			cache-level = <2>;
			cache-unified;

		};

		l3: l3-cache {
			compatible = "cache";
			cache-level = <3>;
			cache-unified;
		};
	};

	timer {
		compatible = "arm,armv8-timer";
		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
			     <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
			     <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
			     <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
	};

	arm_pmu: pmu {
		compatible = "arm,armv8-pmuv3";
		interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW>;
		interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>,
			<&cpu3>, <&cpu4>, <&cpu5>;
	};

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

	osc27M: osc {
		compatible = "fixed-clock";
		clock-frequency = <27000000>;
		clock-output-names = "osc27M";
		#clock-cells = <0>;
	};

	soc {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <1>;
		ranges = <0x00000000 0x00000000 0x0002e000>, /* boot ROM */
			 <0x98000000 0x98000000 0x68000000>;

		rbus: bus@98000000 {
			compatible = "simple-bus";
			reg = <0x98000000 0x200000>;
			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <0x0 0x98000000 0x200000>;

			crt: syscon@0 {
				compatible = "syscon", "simple-mfd";
				reg = <0x0 0x1000>;
				reg-io-width = <4>;
				#address-cells = <1>;
				#size-cells = <1>;
				ranges = <0x0 0x0 0x1000>;
			};

			iso: syscon@7000 {
				compatible = "syscon", "simple-mfd";
				reg = <0x7000 0x1000>;
				reg-io-width = <4>;
				#address-cells = <1>;
				#size-cells = <1>;
				ranges = <0x0 0x7000 0x1000>;
			};

			sb2: syscon@1a000 {
				compatible = "syscon", "simple-mfd";
				reg = <0x1a000 0x1000>;
				reg-io-width = <4>;
				#address-cells = <1>;
				#size-cells = <1>;
				ranges = <0x0 0x1a000 0x1000>;
			};

			misc: syscon@1b000 {
				compatible = "syscon", "simple-mfd";
				reg = <0x1b000 0x1000>;
				reg-io-width = <4>;
				#address-cells = <1>;
				#size-cells = <1>;
				ranges = <0x0 0x1b000 0x1000>;
			};

			scpu_wrapper: syscon@1d000 {
				compatible = "syscon", "simple-mfd";
				reg = <0x1d000 0x1000>;
				reg-io-width = <4>;
				#address-cells = <1>;
				#size-cells = <1>;
				ranges = <0x0 0x1d000 0x1000>;
			};
		};

		gic: interrupt-controller@ff100000 {
			compatible = "arm,gic-v3";
			reg = <0xff100000 0x10000>,
			      <0xff140000 0xc0000>;
			interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
			interrupt-controller;
			#interrupt-cells = <3>;
		};
	};
};

&iso {
	uart0: serial@800 {
		compatible = "snps,dw-apb-uart";
		reg = <0x800 0x400>;
		reg-shift = <2>;
		reg-io-width = <4>;
		interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
		clock-frequency = <27000000>;
		status = "disabled";
	};
};

&misc {
	uart1: serial@200 {
		compatible = "snps,dw-apb-uart";
		reg = <0x200 0x400>;
		reg-shift = <2>;
		reg-io-width = <4>;
		interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
		clock-frequency = <432000000>;
		status = "disabled";
	};

	uart2: serial@400 {
		compatible = "snps,dw-apb-uart";
		reg = <0x400 0x400>;
		reg-shift = <2>;
		reg-io-width = <4>;
		interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
		clock-frequency = <432000000>;
		status = "disabled";
	};
};
