/*
 * 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>
 * Copyright 2008 Freescale Semiconductor, Inc.
 *
 * 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, ??

 */

/dts-v1/;

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

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

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

		PowerPC,603e { /* Really 8241 */
			device_type = "cpu";
			reg = <0x0>;
			clock-frequency = <200000000>;	/* Fixed by bootloader */
			timebase-frequency = <24391680>; /* Fixed by bootloader */
			bus-frequency = <0>;		/* Fixed by bootloader */
			/* Following required by dtc but not used */
			i-cache-size = <0x4000>;
			d-cache-size = <0x4000>;
		};
	};

	memory {
		device_type = "memory";
		reg = <0x0 0x4000000>;
	};

	soc10x { /* AFAICT need to make soc for 8245's uarts to be defined */
		#address-cells = <1>;
		#size-cells = <1>;
		device_type = "soc";
		compatible = "mpc10x";
		store-gathering = <0>; /* 0 == off, !0 == on */
		reg = <0x80000000 0x100000>;
		ranges = <0x80000000 0x80000000 0x70000000	/* pci mem space */
			  0xfc000000 0xfc000000 0x100000	/* EUMB */
			  0xfe000000 0xfe000000 0xc00000	/* pci i/o space */
			  0xfec00000 0xfec00000 0x300000	/* pci cfg regs */
			  0xfef00000 0xfef00000 0x100000>;	/* pci iack */

		i2c@80003000 {
			#address-cells = <1>;
			#size-cells = <0>;
			cell-index = <0>;
			compatible = "fsl-i2c";
			reg = <0x80003000 0x1000>;
			interrupts = <5 2>;
			interrupt-parent = <&mpic>;

			rtc@32 {
				compatible = "ricoh,rs5c372a";
				reg = <0x32>;
			};
		};

		serial0: serial@80004500 {
			cell-index = <0>;
			device_type = "serial";
			compatible = "fsl,ns16550", "ns16550";
			reg = <0x80004500 0x8>;
			clock-frequency = <97553800>;
			current-speed = <9600>;
			interrupts = <9 0>;
			interrupt-parent = <&mpic>;
		};

		serial1: serial@80004600 {
			cell-index = <1>;
			device_type = "serial";
			compatible = "fsl,ns16550", "ns16550";
			reg = <0x80004600 0x8>;
			clock-frequency = <97553800>;
			current-speed = <57600>;
			interrupts = <10 0>;
			interrupt-parent = <&mpic>;
		};

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

		pci0: pci@fec00000 {
			#address-cells = <3>;
			#size-cells = <2>;
			#interrupt-cells = <1>;
			device_type = "pci";
			compatible = "mpc10x-pci";
			reg = <0xfec00000 0x400000>;
			ranges = <0x1000000 0x0        0x0 0xfe000000 0x0 0xc00000
				  0x2000000 0x0 0x80000000 0x80000000 0x0 0x70000000>;
			bus-range = <0 255>;
			clock-frequency = <133333333>;
			interrupt-parent = <&mpic>;
			interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
			interrupt-map = <
				/* IDSEL 11 - IRQ0 ETH */
				0x5800 0x0 0x0 0x1 &mpic 0x0 0x1
				0x5800 0x0 0x0 0x2 &mpic 0x1 0x1
				0x5800 0x0 0x0 0x3 &mpic 0x2 0x1
				0x5800 0x0 0x0 0x4 &mpic 0x3 0x1
				/* IDSEL 12 - IRQ1 IDE0 */
				0x6000 0x0 0x0 0x1 &mpic 0x1 0x1
				0x6000 0x0 0x0 0x2 &mpic 0x2 0x1
				0x6000 0x0 0x0 0x3 &mpic 0x3 0x1
				0x6000 0x0 0x0 0x4 &mpic 0x0 0x1
				/* IDSEL 14 - IRQ3 USB2.0 */
				0x7000 0x0 0x0 0x1 &mpic 0x3 0x1
				0x7000 0x0 0x0 0x2 &mpic 0x3 0x1
				0x7000 0x0 0x0 0x3 &mpic 0x3 0x1
				0x7000 0x0 0x0 0x4 &mpic 0x3 0x1
			>;
		};
	};
};
