/*
 * Copyright 2011-2012 Calxeda, Inc.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms and conditions of the GNU General Public License,
 * version 2, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope 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 program.  If not, see <http://www.gnu.org/licenses/>.
 */

/dts-v1/;

/* First 4KB has pen for secondary cores. */
/memreserve/ 0x00000000 0x0001000;

/ {
	model = "Calxeda Highbank";
	compatible = "calxeda,highbank";
	#address-cells = <1>;
	#size-cells = <1>;
	clock-ranges;

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

		cpu@0 {
			compatible = "arm,cortex-a9";
			reg = <0>;
			next-level-cache = <&L2>;
			clocks = <&a9pll>;
			clock-names = "cpu";
		};

		cpu@1 {
			compatible = "arm,cortex-a9";
			reg = <1>;
			next-level-cache = <&L2>;
			clocks = <&a9pll>;
			clock-names = "cpu";
		};

		cpu@2 {
			compatible = "arm,cortex-a9";
			reg = <2>;
			next-level-cache = <&L2>;
			clocks = <&a9pll>;
			clock-names = "cpu";
		};

		cpu@3 {
			compatible = "arm,cortex-a9";
			reg = <3>;
			next-level-cache = <&L2>;
			clocks = <&a9pll>;
			clock-names = "cpu";
		};
	};

	memory {
		name = "memory";
		device_type = "memory";
		reg = <0x00000000 0xff900000>;
	};

	chosen {
		bootargs = "console=ttyAMA0";
	};

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

		timer@fff10600 {
			compatible = "arm,cortex-a9-twd-timer";
			reg = <0xfff10600 0x20>;
			interrupts = <1 13 0xf01>;
			clocks = <&a9periphclk>;
		};

		watchdog@fff10620 {
			compatible = "arm,cortex-a9-twd-wdt";
			reg = <0xfff10620 0x20>;
			interrupts = <1 14 0xf01>;
			clocks = <&a9periphclk>;
		};

		intc: interrupt-controller@fff11000 {
			compatible = "arm,cortex-a9-gic";
			#interrupt-cells = <3>;
			#size-cells = <0>;
			#address-cells = <1>;
			interrupt-controller;
			reg = <0xfff11000 0x1000>,
			      <0xfff10100 0x100>;
		};

		L2: l2-cache {
			compatible = "arm,pl310-cache";
			reg = <0xfff12000 0x1000>;
			interrupts = <0 70 4>;
			cache-unified;
			cache-level = <2>;
		};

		pmu {
			compatible = "arm,cortex-a9-pmu";
			interrupts = <0 76 4  0 75 4  0 74 4  0 73 4>;
		};

		sata@ffe08000 {
			compatible = "calxeda,hb-ahci";
			reg = <0xffe08000 0x10000>;
			interrupts = <0 83 4>;
			calxeda,port-phys = <&combophy5 0 &combophy0 0
					     &combophy0 1 &combophy0 2
					     &combophy0 3>;
			dma-coherent;
		};

		sdhci@ffe0e000 {
			compatible = "calxeda,hb-sdhci";
			reg = <0xffe0e000 0x1000>;
			interrupts = <0 90 4>;
			clocks = <&eclk>;
		};

		memory-controller@fff00000 {
			compatible = "calxeda,hb-ddr-ctrl";
			reg = <0xfff00000 0x1000>;
			interrupts = <0 91 4>;
		};

		ipc@fff20000 {
			compatible = "arm,pl320", "arm,primecell";
			reg = <0xfff20000 0x1000>;
			interrupts = <0 7 4>;
			clocks = <&pclk>;
			clock-names = "apb_pclk";
		};

		gpioe: gpio@fff30000 {
			#gpio-cells = <2>;
			compatible = "arm,pl061", "arm,primecell";
			gpio-controller;
			reg = <0xfff30000 0x1000>;
			interrupts = <0 14 4>;
			clocks = <&pclk>;
			clock-names = "apb_pclk";
		};

		gpiof: gpio@fff31000 {
			#gpio-cells = <2>;
			compatible = "arm,pl061", "arm,primecell";
			gpio-controller;
			reg = <0xfff31000 0x1000>;
			interrupts = <0 15 4>;
			clocks = <&pclk>;
			clock-names = "apb_pclk";
		};

		gpiog: gpio@fff32000 {
			#gpio-cells = <2>;
			compatible = "arm,pl061", "arm,primecell";
			gpio-controller;
			reg = <0xfff32000 0x1000>;
			interrupts = <0 16 4>;
			clocks = <&pclk>;
			clock-names = "apb_pclk";
		};

		gpioh: gpio@fff33000 {
			#gpio-cells = <2>;
			compatible = "arm,pl061", "arm,primecell";
			gpio-controller;
			reg = <0xfff33000 0x1000>;
			interrupts = <0 17 4>;
			clocks = <&pclk>;
			clock-names = "apb_pclk";
		};

		timer {
			compatible = "arm,sp804", "arm,primecell";
			reg = <0xfff34000 0x1000>;
			interrupts = <0 18 4>;
			clocks = <&pclk>;
			clock-names = "apb_pclk";
		};

		rtc@fff35000 {
			compatible = "arm,pl031", "arm,primecell";
			reg = <0xfff35000 0x1000>;
			interrupts = <0 19 4>;
			clocks = <&pclk>;
			clock-names = "apb_pclk";
		};

		serial@fff36000 {
			compatible = "arm,pl011", "arm,primecell";
			reg = <0xfff36000 0x1000>;
			interrupts = <0 20 4>;
			clocks = <&pclk>;
			clock-names = "apb_pclk";
		};

		smic@fff3a000 {
			compatible = "ipmi-smic";
			device_type = "ipmi";
			reg = <0xfff3a000 0x1000>;
			interrupts = <0 24 4>;
			reg-size = <4>;
			reg-spacing = <4>;
		};

		sregs@fff3c000 {
			compatible = "calxeda,hb-sregs";
			reg = <0xfff3c000 0x1000>;

			clocks {
				#address-cells = <1>;
				#size-cells = <0>;

				osc: oscillator {
					#clock-cells = <0>;
					compatible = "fixed-clock";
					clock-frequency = <33333000>;
				};

				ddrpll: ddrpll {
					#clock-cells = <0>;
					compatible = "calxeda,hb-pll-clock";
					clocks = <&osc>;
					reg = <0x108>;
				};

				a9pll: a9pll {
					#clock-cells = <0>;
					compatible = "calxeda,hb-pll-clock";
					clocks = <&osc>;
					reg = <0x100>;
				};

				a9periphclk: a9periphclk {
					#clock-cells = <0>;
					compatible = "calxeda,hb-a9periph-clock";
					clocks = <&a9pll>;
					reg = <0x104>;
				};

				a9bclk: a9bclk {
					#clock-cells = <0>;
					compatible = "calxeda,hb-a9bus-clock";
					clocks = <&a9pll>;
					reg = <0x104>;
				};

				emmcpll: emmcpll {
					#clock-cells = <0>;
					compatible = "calxeda,hb-pll-clock";
					clocks = <&osc>;
					reg = <0x10C>;
				};

				eclk: eclk {
					#clock-cells = <0>;
					compatible = "calxeda,hb-emmc-clock";
					clocks = <&emmcpll>;
					reg = <0x114>;
				};

				pclk: pclk {
					#clock-cells = <0>;
					compatible = "fixed-clock";
					clock-frequency = <150000000>;
				};
			};
		};

		sregs@fff3c200 {
			compatible = "calxeda,hb-sregs-l2-ecc";
			reg = <0xfff3c200 0x100>;
			interrupts = <0 71 4  0 72 4>;
		};

		dma@fff3d000 {
			compatible = "arm,pl330", "arm,primecell";
			reg = <0xfff3d000 0x1000>;
			interrupts = <0 92 4>;
			clocks = <&pclk>;
			clock-names = "apb_pclk";
		};

		ethernet@fff50000 {
			compatible = "calxeda,hb-xgmac";
			reg = <0xfff50000 0x1000>;
			interrupts = <0 77 4  0 78 4  0 79 4>;
		};

		ethernet@fff51000 {
			compatible = "calxeda,hb-xgmac";
			reg = <0xfff51000 0x1000>;
			interrupts = <0 80 4  0 81 4  0 82 4>;
		};

		combophy0: combo-phy@fff58000 {
			compatible = "calxeda,hb-combophy";
			#phy-cells = <1>;
			reg = <0xfff58000 0x1000>;
			phydev = <5>;
		};

		combophy5: combo-phy@fff5d000 {
			compatible = "calxeda,hb-combophy";
			#phy-cells = <1>;
			reg = <0xfff5d000 0x1000>;
			phydev = <31>;
		};
	};
};
