/*
 * Device Tree Include file for Marvell Armada 370 and Armada XP SoC
 *
 * Copyright (C) 2012 Marvell
 *
 * Lior Amsalem <alior@marvell.com>
 * Gregory CLEMENT <gregory.clement@free-electrons.com>
 * Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
 * Ben Dooks <ben.dooks@codethink.co.uk>
 *
 * This file is licensed under the terms of the GNU General Public
 * License version 2.  This program is licensed "as is" without any
 * warranty of any kind, whether express or implied.
 *
 * This file contains the definitions that are common to the Armada
 * 370 and Armada XP SoC.
 */

/include/ "skeleton.dtsi"

/ {
	model = "Marvell Armada 370 and XP SoC";
	compatible = "marvell,armada-370-xp";

	cpus {
		cpu@0 {
			compatible = "marvell,sheeva-v7";
		};
	};

	mpic: interrupt-controller@d0020000 {
	      compatible = "marvell,mpic";
	      #interrupt-cells = <1>;
	      #address-cells = <1>;
	      #size-cells = <1>;
	      interrupt-controller;
	};

	coherency-fabric@d0020200 {
		compatible = "marvell,coherency-fabric";
		reg = <0xd0020200 0xb0>,
		      <0xd0021810 0x1c>;
	};

	soc {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "simple-bus";
		interrupt-parent = <&mpic>;
		ranges;

		serial@d0012000 {
				compatible = "snps,dw-apb-uart";
				reg = <0xd0012000 0x100>;
				reg-shift = <2>;
				interrupts = <41>;
				reg-io-width = <4>;
				status = "disabled";
		};
		serial@d0012100 {
				compatible = "snps,dw-apb-uart";
				reg = <0xd0012100 0x100>;
				reg-shift = <2>;
				interrupts = <42>;
				reg-io-width = <4>;
				status = "disabled";
		};

		timer@d0020300 {
			       compatible = "marvell,armada-370-xp-timer";
			       reg = <0xd0020300 0x30>,
			       <0xd0021040 0x30>;
			       interrupts = <37>, <38>, <39>, <40>, <5>, <6>;
			       clocks = <&coreclk 2>;
		};

		addr-decoding@d0020000 {
			compatible = "marvell,armada-addr-decoding-controller";
			reg = <0xd0020000 0x258>;
		};

		sata@d00a0000 {
			compatible = "marvell,orion-sata";
			reg = <0xd00a0000 0x2400>;
			interrupts = <55>;
			clocks = <&gateclk 15>, <&gateclk 30>;
			clock-names = "0", "1";
			status = "disabled";
		};

		mdio {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "marvell,orion-mdio";
			reg = <0xd0072004 0x4>;
		};

		ethernet@d0070000 {
				compatible = "marvell,armada-370-neta";
				reg = <0xd0070000 0x2500>;
				interrupts = <8>;
				clocks = <&gateclk 4>;
				status = "disabled";
		};

		ethernet@d0074000 {
				compatible = "marvell,armada-370-neta";
				reg = <0xd0074000 0x2500>;
				interrupts = <10>;
				clocks = <&gateclk 3>;
				status = "disabled";
		};

		i2c0: i2c@d0011000 {
			compatible = "marvell,mv64xxx-i2c";
			reg = <0xd0011000 0x20>;
			#address-cells = <1>;
			#size-cells = <0>;
			interrupts = <31>;
			timeout-ms = <1000>;
			clocks = <&coreclk 0>;
			status = "disabled";
		};

		i2c1: i2c@d0011100 {
			compatible = "marvell,mv64xxx-i2c";
			reg = <0xd0011100 0x20>;
			#address-cells = <1>;
			#size-cells = <0>;
			interrupts = <32>;
			timeout-ms = <1000>;
			clocks = <&coreclk 0>;
			status = "disabled";
		};

		rtc@10300 {
			compatible = "marvell,orion-rtc";
			reg = <0xd0010300 0x20>;
			interrupts = <50>;
		};

		mvsdio@d00d4000 {
			compatible = "marvell,orion-sdio";
			reg = <0xd00d4000 0x200>;
			interrupts = <54>;
			clocks = <&gateclk 17>;
			status = "disabled";
		};

		usb@d0050000 {
			compatible = "marvell,orion-ehci";
			reg = <0xd0050000 0x500>;
			interrupts = <45>;
			status = "disabled";
		};

		usb@d0051000 {
			compatible = "marvell,orion-ehci";
			reg = <0xd0051000 0x500>;
			interrupts = <46>;
			status = "disabled";
		};

		spi0: spi@d0010600 {
			compatible = "marvell,orion-spi";
			reg = <0xd0010600 0x28>;
			#address-cells = <1>;
			#size-cells = <0>;
			cell-index = <0>;
			interrupts = <30>;
			clocks = <&coreclk 0>;
			status = "disabled";
		};

		spi1: spi@d0010680 {
			compatible = "marvell,orion-spi";
			reg = <0xd0010680 0x28>;
			#address-cells = <1>;
			#size-cells = <0>;
			cell-index = <1>;
			interrupts = <92>;
			clocks = <&coreclk 0>;
			status = "disabled";
		};
	};
};

