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

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