/*
 * Device Tree Souce for Buffalo KuroboxHD
 *
 * Choose CONFIG_LINKSTATION to build a kernel for KuroboxHD, 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 kuroboxHD.dtb -V 16 kuroboxHD.dts"


 */

/ {
	linux,phandle = <1000>;
	model = "KuroboxHD";
	compatible = "linkstation";
	#address-cells = <1>;
	#size-cells = <1>;

	cpus {
		linux,phandle = <2000>;
		#cpus = <1>;
		#address-cells = <1>;
		#size-cells = <0>;

		PowerPC,603e { /* Really 8241 */
			linux,phandle = <2100>;
			device_type = "cpu";
			reg = <0>;
			clock-frequency = <bebc200>;	/* Fixed by bootwrapper */
			timebase-frequency = <1743000>; /* 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 {
		linux,phandle = <3000>;
		device_type = "memory";
		reg = <00000000 04000000>;
	};

	soc10x { /* AFAICT need to make soc for 8245's uarts to be defined */
		linux,phandle = <4000>;
		#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 {
			linux,phandle = <4300>;
			device_type = "i2c";
			compatible = "fsl-i2c";
			reg = <80003000 1000>;
			interrupts = <5 2>;
			interrupt-parent = <4400>;
		};

		serial@80004500 {
			linux,phandle = <4511>;
			device_type = "serial";
			compatible = "ns16550";
			reg = <80004500 8>;
			clock-frequency = <5d08d88>;
			current-speed = <2580>;
			interrupts = <9 2>;
			interrupt-parent = <4400>;
		};

		serial@80004600 {
			linux,phandle = <4512>;
			device_type = "serial";
			compatible = "ns16550";
			reg = <80004600 8>;
			clock-frequency = <5d08d88>;
			current-speed = <e100>;
			interrupts = <a 0>;
			interrupt-parent = <4400>;
		};

		pic@80040000 {
			linux,phandle = <4400>;
			#interrupt-cells = <2>;
			#address-cells = <0>;
			device_type = "open-pic";
			compatible = "chrp,open-pic";
			interrupt-controller;
			reg = <80040000 40000>;
			built-in;
		};

		pci@fec00000 {
			linux,phandle = <4500>;
			#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 = <4400>;
			interrupt-map-mask = <f800 0 0 7>;
			interrupt-map = <
				/* IDSEL 0x11 - IRQ0 ETH */
				5800 0 0 1 4400 0 1
				5800 0 0 2 4400 1 1
				5800 0 0 3 4400 2 1
				5800 0 0 4 4400 3 1
				/* IDSEL 0x12 - IRQ1 IDE0 */
				6000 0 0 1 4400 1 1
				6000 0 0 2 4400 2 1
				6000 0 0 3 4400 3 1
				6000 0 0 4 4400 0 1
				/* IDSEL 0x14 - IRQ3 USB2.0 */
				7000 0 0 1 4400 3 1
				7000 0 0 2 4400 3 1
				7000 0 0 3 4400 3 1
				7000 0 0 4 4400 3 1
			>;
		};
	};
};
