/*
 * Device Tree Include file for Marvell Armada 370 family SoC
 *
 * Copyright (C) 2012 Marvell
 *
 * Lior Amsalem <alior@marvell.com>
 * Gregory CLEMENT <gregory.clement@free-electrons.com>
 * Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
 *
 * 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.
 *
 * Contains definitions specific to the Armada 370 SoC that are not
 * common to all Armada SoCs.
 */

/include/ "armada-370-xp.dtsi"

/ {
	model = "Marvell Armada 370 family SoC";
	compatible = "marvell,armada370", "marvell,armada-370-xp";
	L2: l2-cache {
		compatible = "marvell,aurora-outer-cache";
		reg = <0xd0008000 0x1000>;
		cache-id-part = <0x100>;
		wt-override;
	};

	aliases {
		gpio0 = &gpio0;
		gpio1 = &gpio1;
		gpio2 = &gpio2;
	};

	mpic: interrupt-controller@d0020000 {
	      reg = <0xd0020a00 0x1d0>,
		    <0xd0021870 0x58>;
	};

	soc {
		system-controller@d0018200 {
				compatible = "marvell,armada-370-xp-system-controller";
				reg = <0xd0018200 0x100>;
		};

		pinctrl {
			compatible = "marvell,mv88f6710-pinctrl";
			reg = <0xd0018000 0x38>;
	        };

		gpio0: gpio@d0018100 {
			compatible = "marvell,orion-gpio";
			reg = <0xd0018100 0x40>;
			ngpios = <32>;
			gpio-controller;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupts-cells = <2>;
			interrupts = <82>, <83>, <84>, <85>;
		};

		gpio1: gpio@d0018140 {
			compatible = "marvell,orion-gpio";
			reg = <0xd0018140 0x40>;
			ngpios = <32>;
			gpio-controller;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupts-cells = <2>;
			interrupts = <87>, <88>, <89>, <90>;
		};

		gpio2: gpio@d0018180 {
			compatible = "marvell,orion-gpio";
			reg = <0xd0018180 0x40>;
			ngpios = <2>;
			gpio-controller;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupts-cells = <2>;
			interrupts = <91>;
		};

		coreclk: mvebu-sar@d0018230 {
			compatible = "marvell,armada-370-core-clock";
			reg = <0xd0018230 0x08>;
			#clock-cells = <1>;
		};

		gateclk: clock-gating-control@d0018220 {
			compatible = "marvell,armada-370-gating-clock";
			reg = <0xd0018220 0x4>;
			clocks = <&coreclk 0>;
			#clock-cells = <1>;
		};

		xor@d0060800 {
			compatible = "marvell,orion-xor";
			reg = <0xd0060800 0x100
			       0xd0060A00 0x100>;
			status = "okay";

			xor00 {
				interrupts = <51>;
				dmacap,memcpy;
				dmacap,xor;
			};
			xor01 {
				interrupts = <52>;
				dmacap,memcpy;
				dmacap,xor;
				dmacap,memset;
			};
		};

		xor@d0060900 {
			compatible = "marvell,orion-xor";
			reg = <0xd0060900 0x100
			       0xd0060b00 0x100>;
			status = "okay";

			xor10 {
				interrupts = <94>;
				dmacap,memcpy;
				dmacap,xor;
			};
			xor11 {
				interrupts = <95>;
				dmacap,memcpy;
				dmacap,xor;
				dmacap,memset;
			};
		};
	};
};
