/*
 * arch/powerpc/boot/dts/gamecube.dts
 *
 * Nintendo GameCube platform device tree source
 * Copyright (C) 2007-2009 The GameCube Linux Team
 * Copyright (C) 2007,2008,2009 Albert Herranz
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 */

/dts-v1/;

/ {
	model = "nintendo,gamecube";
	compatible = "nintendo,gamecube";
	#address-cells = <1>;
	#size-cells = <1>;

	chosen {
		bootargs = "root=/dev/gcnsda2 rootwait udbg-immortal";
	};

	memory {
		device_type = "memory";
		reg = <0x00000000 0x01800000>;
	};

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

		PowerPC,gekko@0 {
			device_type = "cpu";
			reg = <0>;
			clock-frequency = <486000000>; /* 486MHz */
			bus-frequency = <162000000>; /* 162MHz core-to-bus 3x */
			timebase-frequency = <40500000>; /* 162MHz / 4 */
			i-cache-line-size = <32>;
			d-cache-line-size = <32>;
			i-cache-size = <32768>;
			d-cache-size = <32768>;
		};
	};

	/* devices contained int the flipper chipset */
	flipper {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "nintendo,flipper";
		ranges = <0x0c000000 0x0c000000 0x00010000>;
		interrupt-parent = <&PIC>;

		video@0c002000 {
			compatible = "nintendo,flipper-vi";
			reg = <0x0c002000 0x100>;
			interrupts = <8>;
		};

		processor-interface@0c003000 {
			compatible = "nintendo,flipper-pi";
			reg = <0x0c003000 0x100>;

			PIC: pic {
				#interrupt-cells = <1>;
				compatible = "nintendo,flipper-pic";
				interrupt-controller;
			};
		};

		dsp@0c005000 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "nintendo,flipper-dsp";
			reg = <0x0c005000 0x200>;
			interrupts = <6>;

			memory@0 {
				compatible = "nintendo,flipper-aram";
				reg = <0 0x1000000>;	/* 16MB */
			};
		};

		disk@0c006000 {
			compatible = "nintendo,flipper-di";
			reg = <0x0c006000 0x40>;
			interrupts = <2>;
		};

		audio@0c006c00 {
			compatible = "nintendo,flipper-ai";
			reg = <0x0c006c00 0x20>;
			interrupts = <6>;
		};

		gamepad-controller@0c006400 {
			compatible = "nintendo,flipper-si";
			reg = <0x0c006400 0x100>;
			interrupts = <3>;
		};

		/* External Interface bus */
		exi@0c006800 {
			compatible = "nintendo,flipper-exi";
			reg = <0x0c006800 0x40>;
			virtual-reg = <0x0c006800>;
			interrupts = <4>;
		};
        };
};

