/*
 * Cavium Thunder DTS file - Thunder SoC description
 *
 * Copyright (C) 2014, Cavium Inc.
 *
 * This file is dual-licensed: you can use it either under the terms
 * of the GPL or the X11 license, at your option. Note that this dual
 * licensing only applies to this file, and not this project as a
 * whole.
 *
 *  a) This library is free software; you can redistribute it and/or
 *     modify it under the terms of the GNU General Public License as
 *     published by the Free Software Foundation; either version 2 of the
 *     License, or (at your option) any later version.
 *
 *     This library is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 *
 *     You should have received a copy of the GNU General Public
 *     License along with this library; if not, write to the Free
 *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
 *     MA 02110-1301 USA
 *
 * Or, alternatively,
 *
 *  b) Permission is hereby granted, free of charge, to any person
 *     obtaining a copy of this software and associated documentation
 *     files (the "Software"), to deal in the Software without
 *     restriction, including without limitation the rights to use,
 *     copy, modify, merge, publish, distribute, sublicense, and/or
 *     sell copies of the Software, and to permit persons to whom the
 *     Software is furnished to do so, subject to the following
 *     conditions:
 *
 *     The above copyright notice and this permission notice shall be
 *     included in all copies or substantial portions of the Software.
 *
 *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 *     OTHER DEALINGS IN THE SOFTWARE.
 */

/ {
	compatible = "cavium,thunder-88xx";
	interrupt-parent = <&gic0>;
	#address-cells = <2>;
	#size-cells = <2>;

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

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

		cpu@000 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x000>;
			enable-method = "psci";
		};
		cpu@001 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x001>;
			enable-method = "psci";
		};
		cpu@002 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x002>;
			enable-method = "psci";
		};
		cpu@003 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x003>;
			enable-method = "psci";
		};
		cpu@004 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x004>;
			enable-method = "psci";
		};
		cpu@005 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x005>;
			enable-method = "psci";
		};
		cpu@006 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x006>;
			enable-method = "psci";
		};
		cpu@007 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x007>;
			enable-method = "psci";
		};
		cpu@008 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x008>;
			enable-method = "psci";
		};
		cpu@009 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x009>;
			enable-method = "psci";
		};
		cpu@00a {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x00a>;
			enable-method = "psci";
		};
		cpu@00b {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x00b>;
			enable-method = "psci";
		};
		cpu@00c {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x00c>;
			enable-method = "psci";
		};
		cpu@00d {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x00d>;
			enable-method = "psci";
		};
		cpu@00e {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x00e>;
			enable-method = "psci";
		};
		cpu@00f {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x00f>;
			enable-method = "psci";
		};
		cpu@100 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x100>;
			enable-method = "psci";
		};
		cpu@101 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x101>;
			enable-method = "psci";
		};
		cpu@102 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x102>;
			enable-method = "psci";
		};
		cpu@103 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x103>;
			enable-method = "psci";
		};
		cpu@104 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x104>;
			enable-method = "psci";
		};
		cpu@105 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x105>;
			enable-method = "psci";
		};
		cpu@106 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x106>;
			enable-method = "psci";
		};
		cpu@107 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x107>;
			enable-method = "psci";
		};
		cpu@108 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x108>;
			enable-method = "psci";
		};
		cpu@109 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x109>;
			enable-method = "psci";
		};
		cpu@10a {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x10a>;
			enable-method = "psci";
		};
		cpu@10b {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x10b>;
			enable-method = "psci";
		};
		cpu@10c {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x10c>;
			enable-method = "psci";
		};
		cpu@10d {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x10d>;
			enable-method = "psci";
		};
		cpu@10e {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x10e>;
			enable-method = "psci";
		};
		cpu@10f {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x10f>;
			enable-method = "psci";
		};
		cpu@200 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x200>;
			enable-method = "psci";
		};
		cpu@201 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x201>;
			enable-method = "psci";
		};
		cpu@202 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x202>;
			enable-method = "psci";
		};
		cpu@203 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x203>;
			enable-method = "psci";
		};
		cpu@204 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x204>;
			enable-method = "psci";
		};
		cpu@205 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x205>;
			enable-method = "psci";
		};
		cpu@206 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x206>;
			enable-method = "psci";
		};
		cpu@207 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x207>;
			enable-method = "psci";
		};
		cpu@208 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x208>;
			enable-method = "psci";
		};
		cpu@209 {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x209>;
			enable-method = "psci";
		};
		cpu@20a {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x20a>;
			enable-method = "psci";
		};
		cpu@20b {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x20b>;
			enable-method = "psci";
		};
		cpu@20c {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x20c>;
			enable-method = "psci";
		};
		cpu@20d {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x20d>;
			enable-method = "psci";
		};
		cpu@20e {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x20e>;
			enable-method = "psci";
		};
		cpu@20f {
			device_type = "cpu";
			compatible = "cavium,thunder", "arm,armv8";
			reg = <0x0 0x20f>;
			enable-method = "psci";
		};
	};

	timer {
		compatible = "arm,armv8-timer";
		interrupts = <1 13 0xff01>,
		             <1 14 0xff01>,
		             <1 11 0xff01>,
		             <1 10 0xff01>;
	};

	pmu {
		compatible = "cavium,thunder-pmu", "arm,armv8-pmuv3";
		interrupts = <1 7 4>;
	};

	soc {
		compatible = "simple-bus";
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		refclk50mhz: refclk50mhz {
			compatible = "fixed-clock";
			#clock-cells = <0>;
			clock-frequency = <50000000>;
			clock-output-names = "refclk50mhz";
		};

		gic0: interrupt-controller@8010,00000000 {
			compatible = "arm,gic-v3";
			#interrupt-cells = <3>;
			#address-cells = <2>;
			#size-cells = <2>;
			ranges;
			interrupt-controller;
			reg = <0x8010 0x00000000 0x0 0x010000>, /* GICD */
			      <0x8010 0x80000000 0x0 0x600000>; /* GICR */
			interrupts = <1 9 0xf04>;

			its: gic-its@8010,00020000 {
				compatible = "arm,gic-v3-its";
				msi-controller;
				reg = <0x8010 0x20000 0x0 0x200000>;
			};
		};

		uaa0: serial@87e0,24000000 {
			compatible = "arm,pl011", "arm,primecell";
			reg = <0x87e0 0x24000000 0x0 0x1000>;
			interrupts = <1 21 4>;
			clocks = <&refclk50mhz>;
			clock-names = "apb_pclk";
		};

		uaa1: serial@87e0,25000000 {
			compatible = "arm,pl011", "arm,primecell";
			reg = <0x87e0 0x25000000 0x0 0x1000>;
			interrupts = <1 22 4>;
			clocks = <&refclk50mhz>;
			clock-names = "apb_pclk";
		};
	};
};
