/*
 * Copyright (c) 2019 Carlo Caione <ccaione@baylibre.com>
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/*
 * Derived from DTS extracted with:
 *
 *   qemu-system-aarch64 -machine virt -cpu cortex-a53 -nographic
 *         -machine dumpdtb=virt.dtb
 *
 *   dtc -I dtb -O dts virt.dtb
 */

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

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

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

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

	uartclk: apb-pclk {
		compatible = "fixed-clock";
		clock-frequency = <24000000>;
		#clock-cells = <0>;
	};

	soc {
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		interrupt-parent = <&gic>;

		gic: interrupt-controller@8000000 {
			compatible = "arm,gic";
			reg = <0x00 0x8000000 0x00 0x010000>,
			      <0x00 0x80a0000 0x00 0xf60000>;
			interrupt-controller;
			#interrupt-cells = <4>;
			status = "okay";
			#size-cells = <0x02>;
			#address-cells = <0x02>;

			its: its@8080000 {
				compatible = "arm,gic-v3-its";
				reg = <0x00 0x8080000 0x00 0x20000>;
				msi-controller;
			};
		};

		uart0: uart@9000000 {
			compatible = "arm,pl011";
			reg = <0x00 0x9000000 0x00 0x1000>;
			status = "disabled";
			interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL 0>;
			interrupt-names = "irq_0";
			clocks = <&uartclk>;
		};

		flash0: flash@0 {
			compatible = "cfi-flash";
			bank-width = <4>;
			/* As this is pointed to by zephyr,flash we can only handle
			 * one value in the reg property, so we comment out the
			 * second flash bank for now
			 */
			reg = <0x0 0x0 0x0 DT_SIZE_M(64) /* 0x4000000 DT_SIZE_M(64) */>;
		};

		pcie: pcie@4010000000 {
			compatible = "pci-host-ecam-generic";
			device_type = "pci";
			reg = <0x40 0x10000000 0x00 0x10000000>;
			#size-cells = <0x02>;
			#address-cells = <0x03>;
			ranges = <0x1000000 0x00 0x00        0x00 0x3eff0000  0x00 0x10000
				  0x2000000 0x00 0x10000000  0x00 0x10000000  0x00 0x2eff0000
				  0x3000000 0x80 0x00        0x80 0x00        0x80 0x00>;
			#interrupt-cells = <0x01>;
			interrupt-map-mask = <0x1800 0x00 0x00 0x07>;
			interrupt-map = <0x00   0x00 0x00 1 &gic 0 0 GIC_SPI 0x03 IRQ_TYPE_EDGE
					 0x00   0x00 0x00 2 &gic 0 0 GIC_SPI 0x04 IRQ_TYPE_EDGE
					 0x00   0x00 0x00 3 &gic 0 0 GIC_SPI 0x05 IRQ_TYPE_EDGE
					 0x00   0x00 0x00 4 &gic 0 0 GIC_SPI 0x06 IRQ_TYPE_EDGE

					 0x800  0x00 0x00 1 &gic 0 0 GIC_SPI 0x04 IRQ_TYPE_EDGE
					 0x800  0x00 0x00 2 &gic 0 0 GIC_SPI 0x05 IRQ_TYPE_EDGE
					 0x800  0x00 0x00 3 &gic 0 0 GIC_SPI 0x06 IRQ_TYPE_EDGE
					 0x800  0x00 0x00 4 &gic 0 0 GIC_SPI 0x03 IRQ_TYPE_EDGE

					 0x1000 0x00 0x00 1 &gic 0 0 GIC_SPI 0x05 IRQ_TYPE_EDGE
					 0x1000 0x00 0x00 2 &gic 0 0 GIC_SPI 0x06 IRQ_TYPE_EDGE
					 0x1000 0x00 0x00 3 &gic 0 0 GIC_SPI 0x03 IRQ_TYPE_EDGE
					 0x1000 0x00 0x00 4 &gic 0 0 GIC_SPI 0x04 IRQ_TYPE_EDGE

					 0x1800 0x00 0x00 1 &gic 0 0 GIC_SPI 0x06 IRQ_TYPE_EDGE
					 0x1800 0x00 0x00 2 &gic 0 0 GIC_SPI 0x03 IRQ_TYPE_EDGE
					 0x1800 0x00 0x00 3 &gic 0 0 GIC_SPI 0x04 IRQ_TYPE_EDGE
					 0x1800 0x00 0x00 4 &gic 0 0 GIC_SPI 0x05 IRQ_TYPE_EDGE>;
			msi-parent = <&its>;
			bus-range = <0x00 0xff>;
		};
	};
};
