/*
 * Device Tree Source for IOMEGA StorCenter
 *
 * Copyright 2007 Oyvind Repvik
 * Copyright 2007 Jon Loeliger
 *
 * Based on the Kurobox DTS by G. Liakhovetski <g.liakhovetski@gmx.de>
 *
 * 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.
 */

/dts-v1/;

/ {
	model = "StorCenter";
	compatible = "iomega,storcenter";
	#address-cells = <1>;
	#size-cells = <1>;

	aliases {
		serial0 = &serial0;
		serial1 = &serial1;
		pci0 = &pci0;
	};

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

		PowerPC,8241@0 {
			device_type = "cpu";
			reg = <0>;
			clock-frequency = <200000000>;
			timebase-frequency = <25000000>;
			bus-frequency = <0>;	/* from bootwrapper */
			i-cache-line-size = <32>;
			d-cache-line-size = <32>;
			i-cache-size = <16384>;
			d-cache-size = <16384>;
		};
	};

	memory {
		device_type = "memory";
		reg = <0x00000000 0x04000000>;	/* 64MB @ 0x0 */
	};

	soc@fc000000 {
		#address-cells = <1>;
		#size-cells = <1>;
		device_type = "soc";
		compatible = "fsl,mpc8241", "mpc10x";
		store-gathering = <0>; /* 0 == off, !0 == on */
		ranges = <0x0 0xfc000000 0x100000>;
		reg = <0xfc000000 0x100000>;	/* EUMB */
		bus-frequency = <0>;		/* fixed by loader */

		i2c@3000 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "fsl-i2c";
			reg = <0x3000 0x100>;
			interrupts = <17 2>;
			interrupt-parent = <&mpic>;

			rtc@68 {
				compatible = "dallas,ds1337";
				reg = <0x68>;
			};
		};

		serial0: serial@4500 {
			cell-index = <0>;
			device_type = "serial";
			compatible = "ns16550";
			reg = <0x4500 0x20>;
			clock-frequency = <97553800>; /* Hz */
			current-speed = <115200>;
			interrupts = <25 2>;
			interrupt-parent = <&mpic>;
		};

		serial1: serial@4600 {
			cell-index = <1>;
			device_type = "serial";
			compatible = "ns16550";
			reg = <0x4600 0x20>;
			clock-frequency = <97553800>; /* Hz */
			current-speed = <9600>;
			interrupts = <26 2>;
			interrupt-parent = <&mpic>;
		};

		mpic: interrupt-controller@40000 {
			#interrupt-cells = <2>;
			device_type = "open-pic";
			compatible = "chrp,open-pic";
			interrupt-controller;
			reg = <0x40000 0x40000>;
		};

	};

	pci0: pci@fe800000 {
		#address-cells = <3>;
		#size-cells = <2>;
		#interrupt-cells = <1>;
		device_type = "pci";
		compatible = "mpc10x-pci";
		reg = <0xfe800000 0x1000>;
		ranges = <0x01000000 0x0        0x0 0xfe000000 0x0 0x00c00000
			  0x02000000 0x0 0x80000000 0x80000000 0x0 0x70000000>;
		bus-range = <0 0xff>;
		clock-frequency = <97553800>;
		interrupt-parent = <&mpic>;
		interrupt-map-mask = <0xf800 0 0 7>;
		interrupt-map = <
			/* IDSEL 13 - IDE */
			0x6800 0 0 1 &mpic 0 1
			0x6800 0 0 2 &mpic 0 1
			0x6800 0 0 3 &mpic 0 1
			0x6800 0 0 4 &mpic 0 1
			/* IDSEL 14 - USB */
			0x7000 0 0 1 &mpic 0 1
			0x7000 0 0 2 &mpic 0 1
			0x7000 0 0 3 &mpic 0 1
			0x7000 0 0 4 &mpic 0 1
			/* IDSEL 15 - ETH */
			0x7800 0 0 1 &mpic 0 1
			0x7800 0 0 2 &mpic 0 1
			0x7800 0 0 3 &mpic 0 1
			0x7800 0 0 4 &mpic 0 1
		>;
	};

	chosen {
		linux,stdout-path = &serial0;
	};
};
