/*
 * 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/cpu@0>;

	aliases {
		ethernet0 = &EMAC;
		serial0 = &UART0;
		serial1 = &UART1;
	};

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

		cpu@0 {
			device_type = "cpu";
			model = "PowerPC,405GP";
			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>;
			};
		};

		PCI0: pci@ec000000 {
			device_type = "pci";
			#interrupt-cells = <1>;
			#size-cells = <2>;
			#address-cells = <3>;
			compatible = "ibm,plb405gp-pci", "ibm,plb-pci";
			primary;
			reg = <eec00000 8	/* Config space access */
			       eed80000 4	/* IACK */
			       eed80000 4	/* Special cycle */
			       ef480000 40>;	/* Internal registers */

			/* Outbound ranges, one memory and one IO,
			 * later cannot be changed. Chip supports a second
			 * IO range but we don't use it for now
			 */
			ranges = <02000000 0 80000000 80000000 0 20000000
				  01000000 0 00000000 e8000000 0 00010000>;

			/* Inbound 2GB range starting at 0 */
			dma-ranges = <42000000 0 0 0 0 80000000>;

			/* Walnut has all 4 IRQ pins tied together per slot */
			interrupt-map-mask = <f800 0 0 0>;
			interrupt-map = <
				/* IDSEL 1 */
				0800 0 0 0 &UIC0 1c 8

				/* IDSEL 2 */
				1000 0 0 0 &UIC0 1d 8

				/* IDSEL 3 */
				1800 0 0 0 &UIC0 1e 8

				/* IDSEL 4 */
				2000 0 0 0 &UIC0 1f 8
			>;
		};
	};

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