/*
 * Copyright (c) 2020, Arm Limited. All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

/dts-v1/;
#include "morello.dtsi"

/ {

	chosen {
		stdout-path = "serial0:115200n8";
	};

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

		secure-firmware@ff000000 {
			reg = <0 0xff000000 0 0x01000000>;
			no-map;
		};
	};

	cpus {
		#address-cells = <2>;
		#size-cells = <0>;
		cpu0@0 {
			compatible = "arm,armv8";
			reg = <0x0 0x0>;
			device_type = "cpu";
			enable-method = "psci";
			clocks = <&scmi_dvfs 0>;
		};
		cpu1@100 {
			compatible = "arm,armv8";
			reg = <0x0 0x100>;
			device_type = "cpu";
			enable-method = "psci";
			clocks = <&scmi_dvfs 0>;
		};
		cpu2@10000 {
			compatible = "arm,armv8";
			reg = <0x0 0x10000>;
			device_type = "cpu";
			enable-method = "psci";
			clocks = <&scmi_dvfs 0>;
		};
		cpu3@10100 {
			compatible = "arm,armv8";
			reg = <0x0 0x10100>;
			device_type = "cpu";
			enable-method = "psci";
			clocks = <&scmi_dvfs 0>;
		};
	};

	/* The first bank of memory, memory map is actually provided by UEFI. */
	memory@80000000 {
		#address-cells = <2>;
		#size-cells = <2>;
		device_type = "memory";
		/* [0x80000000-0xffffffff] */
		reg = <0x00000000 0x80000000 0x0 0x80000000>;
	};

	memory@8080000000 {
		#address-cells = <2>;
		#size-cells = <2>;
		device_type = "memory";
		/* [0x8080000000-0x83ffffffff] */
		reg = <0x00000080 0x80000000 0x1 0x80000000>;
	};

	virtio_block@1c170000 {
		compatible = "virtio,mmio";
		reg = <0x0 0x1c170000 0x0 0x200>;
		interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
	};

	virtio_net@1c180000 {
		compatible = "virtio,mmio";
		reg = <0x0 0x1c180000 0x0 0x200>;
		interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
	};

	virtio_rng@1c190000 {
		compatible = "virtio,mmio";
		reg = <0x0 0x1c190000 0x0 0x200>;
		interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
	};

	virtio_p9@1c1a0000 {
		compatible = "virtio,mmio";
		reg = <0x0 0x1c1a0000 0x0 0x200>;
		interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
	};

	ethernet@1d100000 {
		compatible = "smsc,lan91c111";
		reg = <0x0 0x1d100000 0x0 0x10000>;
		interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
	};

	kmi@1c150000 {
		compatible = "arm,pl050", "arm,primecell";
		reg = <0x0 0x1c150000 0x0 0x1000>;
		interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&bp_clock24mhz>, <&bp_clock24mhz>;
		clock-names = "KMIREFCLK", "apb_pclk";
	};

	kmi@1c160000 {
		compatible = "arm,pl050", "arm,primecell";
		reg = <0x0 0x1c160000 0x0 0x1000>;
		interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&bp_clock24mhz>, <&bp_clock24mhz>;
		clock-names = "KMIREFCLK", "apb_pclk";
	};

	firmware {
		scmi {
			compatible = "arm,scmi";
			mbox-names = "tx", "rx";
			mboxes = <&mailbox 1 0 &mailbox 1 1>;
			shmem = <&cpu_scp_hpri0 &cpu_scp_hpri1>;
			#address-cells = <1>;
			#size-cells = <0>;

			scmi_dvfs: protocol@13 {
				reg = <0x13>;
				#clock-cells = <1>;
			};
		};
	};

	bp_clock24mhz: clock24mhz {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <24000000>;
		clock-output-names = "bp:clock24mhz";
	};
};

&gic {
	reg = <0x0 0x30000000 0 0x10000>,	/* GICD */
	      <0x0 0x300c0000 0 0x80000>;	/* GICR */
	interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
};
