/*
 * Device Tree Souce for Buffalo KuroboxHG
 *
 * Choose CONFIG_LINKSTATION to build a kernel for KuroboxHG, or use
 * the default configuration linkstation_defconfig.
 *
 * Based on sandpoint.dts
 *
 * 2006 (c) 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.

XXXX add flash parts, rtc, ??

build with: "dtc -f -I dts -O dtb -o kuroboxHG.dtb -V 16 kuroboxHG.dts"


 */

/ {
	model = "KuroboxHG";
	compatible = "linkstation";
	#address-cells = <1>;
	#size-cells = <1>;

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

		PowerPC,603e { /* Really 8241 */
			device_type = "cpu";
			reg = <0>;
			clock-frequency = <fdad680>;	/* Fixed by bootwrapper */
			timebase-frequency = <1F04000>; /* Fixed by bootwrapper */
			bus-frequency = <0>;		/* From bootloader */
			/* Following required by dtc but not used */
			i-cache-line-size = <0>;
			d-cache-line-size = <0>;
			i-cache-size = <4000>;
			d-cache-size = <4000>;
		};
	};

	memory {
		device_type = "memory";
		reg = <00000000 08000000>;
	};

	soc10x { /* AFAICT need to make soc for 8245's uarts to be defined */
		#address-cells = <1>;
		#size-cells = <1>;
		#interrupt-cells = <2>;
		device_type = "soc";
		compatible = "mpc10x";
		store-gathering = <0>; /* 0 == off, !0 == on */
		reg = <80000000 00100000>;
		ranges = <80000000 80000000 70000000	/* pci mem space */
			  fc000000 fc000000 00100000	/* EUMB */
			  fe000000 fe000000 00c00000	/* pci i/o space */
			  fec00000 fec00000 00300000	/* pci cfg regs */
			  fef00000 fef00000 00100000>;	/* pci iack */

		i2c@80003000 {
			device_type = "i2c";
			compatible = "fsl-i2c";
			reg = <80003000 1000>;
			interrupts = <5 2>;
			interrupt-parent = <&mpic>;
		};

		serial@80004500 {
			device_type = "serial";
			compatible = "ns16550";
			reg = <80004500 8>;
			clock-frequency = <7c044a8>;
			current-speed = <2580>;
			interrupts = <9 2>;
			interrupt-parent = <&mpic>;
		};

		serial@80004600 {
			device_type = "serial";
			compatible = "ns16550";
			reg = <80004600 8>;
			clock-frequency = <7c044a8>;
			current-speed = <e100>;
			interrupts = <a 0>;
			interrupt-parent = <&mpic>;
		};

		mpic: pic@80040000 {
			interrupt-parent = <&mpic>;
			#interrupt-cells = <2>;
			#address-cells = <0>;
			device_type = "open-pic";
			compatible = "chrp,open-pic";
			interrupt-controller;
			reg = <80040000 40000>;
			built-in;
		};

		pci@fec00000 {
			#address-cells = <3>;
			#size-cells = <2>;
			#interrupt-cells = <1>;
			device_type = "pci";
			compatible = "mpc10x-pci";
			reg = <fec00000 400000>;
			ranges = <01000000 0        0 fe000000 0 00c00000
				  02000000 0 80000000 80000000 0 70000000>;
			bus-range = <0 ff>;
			clock-frequency = <7f28155>;
			interrupt-parent = <&mpic>;
			interrupt-map-mask = <f800 0 0 7>;
			interrupt-map = <
				/* IDSEL 11 - IRQ0 ETH */
				5800 0 0 1 &mpic 0 1
				5800 0 0 2 &mpic 1 1
				5800 0 0 3 &mpic 2 1
				5800 0 0 4 &mpic 3 1
				/* IDSEL 12 - IRQ1 IDE0 */
				6000 0 0 1 &mpic 1 1
				6000 0 0 2 &mpic 2 1
				6000 0 0 3 &mpic 3 1
				6000 0 0 4 &mpic 0 1
				/* IDSEL 14 - IRQ3 USB2.0 */
				7000 0 0 1 &mpic 3 1
				7000 0 0 2 &mpic 3 1
				7000 0 0 3 &mpic 3 1
				7000 0 0 4 &mpic 3 1
			>;
		};
	};
};
