/*
 * Device Tree Source for IBM Walnut
 *
 * Copyright 2007 IBM Corp.
 * Josh Boyer <jwboyer@linux.vnet.ibm.com>
 *
 * 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.
 */

/ {
	#address-cells = <1>;
	#size-cells = <1>;
	model = "ibm,walnut";
	compatible = "ibm,walnut";
	dcr-parent = <&/cpus/PowerPC,405GP@0>;

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

		PowerPC,405GP@0 {
			device_type = "cpu";
			reg = <0>;
			clock-frequency = <bebc200>; /* Filled in by zImage */
			timebase-frequency = <0>; /* Filled in by zImage */
			i-cache-line-size = <20>;
			d-cache-line-size = <20>;
			i-cache-size = <4000>;
			d-cache-size = <4000>;
			dcr-controller;
			dcr-access-method = "native";
		};
	};

	memory {
		device_type = "memory";
		reg = <0 0>; /* Filled in by zImage */
	};

	UIC0: interrupt-controller {
		compatible = "ibm,uic";
		interrupt-controller;
		cell-index = <0>;
		dcr-reg = <0c0 9>;
		#address-cells = <0>;
		#size-cells = <0>;
		#interrupt-cells = <2>;
	};

	plb {
		compatible = "ibm,plb3";
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;
		clock-frequency = <0>; /* Filled in by zImage */

		SDRAM0: memory-controller {
			compatible = "ibm,sdram-405gp";
			dcr-reg = <010 2>;
		};

		MAL: mcmal {
			compatible = "ibm,mcmal-405gp", "ibm,mcmal";
			dcr-reg = <180 62>;
			num-tx-chans = <1>;
			num-rx-chans = <1>;
			interrupt-parent = <&UIC0>;
			interrupts = <
				b 4 /* TXEOB */
				c 4 /* RXEOB */
				a 4 /* SERR */
				d 4 /* TXDE */
				e 4 /* RXDE */>;
		};

		POB0: opb {
			compatible = "ibm,opb-405gp", "ibm,opb";
			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <ef600000 ef600000 a00000>;
			dcr-reg = <0a0 5>;
			clock-frequency = <0>; /* Filled in by zImage */

			UART0: serial@ef600300 {
				device_type = "serial";
				compatible = "ns16550";
				reg = <ef600300 8>;
				virtual-reg = <ef600300>;
				clock-frequency = <0>; /* Filled in by zImage */
				current-speed = <2580>;
				interrupt-parent = <&UIC0>;
				interrupts = <0 4>;
			};

			UART1: serial@ef600400 {
				device_type = "serial";
				compatible = "ns16550";
				reg = <ef600400 8>;
				virtual-reg = <ef600400>;
				clock-frequency = <0>; /* Filled in by zImage */
				current-speed = <2580>;
				interrupt-parent = <&UIC0>;
				interrupts = <1 4>;
			};

			IIC: i2c@ef600500 {
				compatible = "ibm,iic-405gp", "ibm,iic";
				reg = <ef600500 11>;
				interrupt-parent = <&UIC0>;
				interrupts = <2 4>;
			};

			GPIO: gpio@ef600700 {
				compatible = "ibm,gpio-405gp";
				reg = <ef600700 20>;
			};

			EMAC: ethernet@ef600800 {
				linux,network-index = <0>;
				device_type = "network";
				compatible = "ibm,emac-405gp", "ibm,emac";
				interrupt-parent = <&UIC0>;
				interrupts = <
					f 4 /* Ethernet */
					9 4 /* Ethernet Wake Up */>;
				local-mac-address = [000000000000]; /* Filled in by zImage */
				reg = <ef600800 70>;
				mal-device = <&MAL>;
				mal-tx-channel = <0>;
				mal-rx-channel = <0>;
				cell-index = <0>;
				max-frame-size = <5dc>;
				rx-fifo-size = <1000>;
				tx-fifo-size = <800>;
				phy-mode = "rmii";
				phy-map = <00000001>;
			};

		};

		EBC0: ebc {
			compatible = "ibm,ebc-405gp", "ibm,ebc";
			dcr-reg = <012 2>;
			#address-cells = <2>;
			#size-cells = <1>;
			/* The ranges property is supplied by the bootwrapper
			 * and is based on the firmware's configuration of the
			 * EBC bridge
			 */
			clock-frequency = <0>; /* Filled in by zImage */

			sram@0,0 {
				reg = <0 0 80000>;
			};

			flash@0,80000 {
				compatible = "jedec-flash";
				bank-width = <1>;
				reg = <0 80000 80000>;
				#address-cells = <1>;
				#size-cells = <1>;
				partition@0 {
					label = "OpenBIOS";
					reg = <0 80000>;
					read-only;
				};
			};

			ds1743@1,0 {
				/* NVRAM and RTC */
				compatible = "ds1743";
				reg = <1 0 2000>;
			};

			keyboard@2,0 {
				compatible = "intel,82C42PC";
				reg = <2 0 2>;
			};

			ir@3,0 {
				compatible = "ti,TIR2000PAG";
				reg = <3 0 10>;
			};

			fpga@7,0 {
				compatible = "Walnut-FPGA";
				reg = <7 0 10>;
				virtual-reg = <f0300005>;
			};
		};
	};

	chosen {
		linux,stdout-path = "/plb/opb/serial@ef600300";
	};
};
