12874c5fdSThomas Gleixner// SPDX-License-Identifier: GPL-2.0-or-later
27a09116cSAlbert Herranz/*
37a09116cSAlbert Herranz * arch/powerpc/boot/dts/wii.dts
47a09116cSAlbert Herranz *
57a09116cSAlbert Herranz * Nintendo Wii platform device tree source
67a09116cSAlbert Herranz * Copyright (C) 2008-2009 The GameCube Linux Team
77a09116cSAlbert Herranz * Copyright (C) 2008,2009 Albert Herranz
87a09116cSAlbert Herranz */
97a09116cSAlbert Herranz
107a09116cSAlbert Herranz/dts-v1/;
11041413b8SJonathan Neuschäfer#include <dt-bindings/gpio/gpio.h>
128de7547eSJonathan Neuschäfer#include <dt-bindings/input/input.h>
137a09116cSAlbert Herranz
147a09116cSAlbert Herranz/*
157a09116cSAlbert Herranz * This is commented-out for now.
167a09116cSAlbert Herranz * Until a later patch is merged, the kernel can use only the first
177a09116cSAlbert Herranz * contiguous RAM range and will BUG() if the memreserve is outside
187a09116cSAlbert Herranz * that range.
197a09116cSAlbert Herranz */
207a09116cSAlbert Herranz/*/memreserve/ 0x10000000 0x0004000;*/	/* DSP RAM */
217a09116cSAlbert Herranz
227a09116cSAlbert Herranz/ {
237a09116cSAlbert Herranz	model = "nintendo,wii";
247a09116cSAlbert Herranz	compatible = "nintendo,wii";
257a09116cSAlbert Herranz	#address-cells = <1>;
267a09116cSAlbert Herranz	#size-cells = <1>;
277a09116cSAlbert Herranz
287a09116cSAlbert Herranz	chosen {
297a09116cSAlbert Herranz		bootargs = "root=/dev/mmcblk0p2 rootwait udbg-immortal";
307a09116cSAlbert Herranz	};
317a09116cSAlbert Herranz
327a09116cSAlbert Herranz	memory {
337a09116cSAlbert Herranz		device_type = "memory";
347a09116cSAlbert Herranz		reg = <0x00000000 0x01800000	/* MEM1 24MB 1T-SRAM */
357a09116cSAlbert Herranz		       0x10000000 0x04000000>;	/* MEM2 64MB GDDR3 */
367a09116cSAlbert Herranz	};
377a09116cSAlbert Herranz
387a09116cSAlbert Herranz	cpus {
397a09116cSAlbert Herranz		#address-cells = <1>;
407a09116cSAlbert Herranz		#size-cells = <0>;
417a09116cSAlbert Herranz
427a09116cSAlbert Herranz		PowerPC,broadway@0 {
437a09116cSAlbert Herranz			device_type = "cpu";
447a09116cSAlbert Herranz			reg = <0>;
457a09116cSAlbert Herranz			clock-frequency = <729000000>; /* 729MHz */
467a09116cSAlbert Herranz			bus-frequency = <243000000>; /* 243MHz core-to-bus 3x */
477a09116cSAlbert Herranz			timebase-frequency = <60750000>; /* 243MHz / 4 */
487a09116cSAlbert Herranz			i-cache-line-size = <32>;
497a09116cSAlbert Herranz			d-cache-line-size = <32>;
507a09116cSAlbert Herranz			i-cache-size = <32768>;
517a09116cSAlbert Herranz			d-cache-size = <32768>;
527a09116cSAlbert Herranz		};
537a09116cSAlbert Herranz	};
547a09116cSAlbert Herranz
557a09116cSAlbert Herranz	/* devices contained in the hollywood chipset */
567a09116cSAlbert Herranz	hollywood {
577a09116cSAlbert Herranz		#address-cells = <1>;
587a09116cSAlbert Herranz		#size-cells = <1>;
597a09116cSAlbert Herranz		compatible = "nintendo,hollywood";
607a09116cSAlbert Herranz                ranges = <0x0c000000 0x0c000000 0x01000000
617a09116cSAlbert Herranz			  0x0d000000 0x0d000000 0x00800000
627a09116cSAlbert Herranz			  0x0d800000 0x0d800000 0x00800000>;
637a09116cSAlbert Herranz		interrupt-parent = <&PIC0>;
647a09116cSAlbert Herranz
65600ecc19SMathieu Malaterre		video@c002000 {
667a09116cSAlbert Herranz			compatible = "nintendo,hollywood-vi",
677a09116cSAlbert Herranz					"nintendo,flipper-vi";
687a09116cSAlbert Herranz			reg = <0x0c002000 0x100>;
697a09116cSAlbert Herranz			interrupts = <8>;
707a09116cSAlbert Herranz		};
717a09116cSAlbert Herranz
72600ecc19SMathieu Malaterre		processor-interface@c003000 {
737a09116cSAlbert Herranz			compatible = "nintendo,hollywood-pi",
747a09116cSAlbert Herranz					"nintendo,flipper-pi";
757a09116cSAlbert Herranz			reg = <0x0c003000 0x100>;
767a09116cSAlbert Herranz
777a09116cSAlbert Herranz			PIC0: pic0 {
787a09116cSAlbert Herranz				#interrupt-cells = <1>;
797a09116cSAlbert Herranz				compatible = "nintendo,flipper-pic";
807a09116cSAlbert Herranz				interrupt-controller;
817a09116cSAlbert Herranz			};
827a09116cSAlbert Herranz		};
837a09116cSAlbert Herranz
84600ecc19SMathieu Malaterre		dsp@c005000 {
857a09116cSAlbert Herranz			#address-cells = <1>;
867a09116cSAlbert Herranz			#size-cells = <1>;
877a09116cSAlbert Herranz			compatible = "nintendo,hollywood-dsp",
887a09116cSAlbert Herranz					"nintendo,flipper-dsp";
897a09116cSAlbert Herranz			reg = <0x0c005000 0x200>;
907a09116cSAlbert Herranz			interrupts = <6>;
917a09116cSAlbert Herranz		};
927a09116cSAlbert Herranz
93600ecc19SMathieu Malaterre		gamepad-controller@d006400 {
947a09116cSAlbert Herranz			compatible = "nintendo,hollywood-si",
957a09116cSAlbert Herranz					"nintendo,flipper-si";
967a09116cSAlbert Herranz			reg = <0x0d006400 0x100>;
977a09116cSAlbert Herranz			interrupts = <3>;
987a09116cSAlbert Herranz		};
997a09116cSAlbert Herranz
100600ecc19SMathieu Malaterre		audio@c006c00 {
1017a09116cSAlbert Herranz			compatible = "nintendo,hollywood-ai",
1027a09116cSAlbert Herranz					"nintendo,flipper-ai";
1037a09116cSAlbert Herranz			reg = <0x0d006c00 0x20>;
1047a09116cSAlbert Herranz			interrupts = <6>;
1057a09116cSAlbert Herranz		};
1067a09116cSAlbert Herranz
1077a09116cSAlbert Herranz		/* External Interface bus */
108600ecc19SMathieu Malaterre		exi@d006800 {
1097a09116cSAlbert Herranz			compatible = "nintendo,hollywood-exi",
1107a09116cSAlbert Herranz					"nintendo,flipper-exi";
1117a09116cSAlbert Herranz			reg = <0x0d006800 0x40>;
1127a09116cSAlbert Herranz			virtual-reg = <0x0d006800>;
1137a09116cSAlbert Herranz			interrupts = <4>;
1147a09116cSAlbert Herranz		};
1157a09116cSAlbert Herranz
116600ecc19SMathieu Malaterre		usb@d040000 {
1177a09116cSAlbert Herranz			compatible = "nintendo,hollywood-usb-ehci",
1187a09116cSAlbert Herranz					"usb-ehci";
1197a09116cSAlbert Herranz			reg = <0x0d040000 0x100>;
1207a09116cSAlbert Herranz			interrupts = <4>;
1217a09116cSAlbert Herranz			interrupt-parent = <&PIC1>;
1227a09116cSAlbert Herranz		};
1237a09116cSAlbert Herranz
124600ecc19SMathieu Malaterre		usb@d050000 {
1257a09116cSAlbert Herranz			compatible = "nintendo,hollywood-usb-ohci",
1267a09116cSAlbert Herranz					"usb-ohci";
1277a09116cSAlbert Herranz			reg = <0x0d050000 0x100>;
1287a09116cSAlbert Herranz			interrupts = <5>;
1297a09116cSAlbert Herranz			interrupt-parent = <&PIC1>;
1307a09116cSAlbert Herranz		};
1317a09116cSAlbert Herranz
132600ecc19SMathieu Malaterre		usb@d060000 {
1337a09116cSAlbert Herranz			compatible = "nintendo,hollywood-usb-ohci",
1347a09116cSAlbert Herranz					"usb-ohci";
1357a09116cSAlbert Herranz			reg = <0x0d060000 0x100>;
1367a09116cSAlbert Herranz			interrupts = <6>;
1377a09116cSAlbert Herranz			interrupt-parent = <&PIC1>;
1387a09116cSAlbert Herranz		};
1397a09116cSAlbert Herranz
140600ecc19SMathieu Malaterre		sd@d070000 {
1417a09116cSAlbert Herranz			compatible = "nintendo,hollywood-sdhci",
1427a09116cSAlbert Herranz					"sdhci";
1437a09116cSAlbert Herranz			reg = <0x0d070000 0x200>;
1447a09116cSAlbert Herranz			interrupts = <7>;
1457a09116cSAlbert Herranz			interrupt-parent = <&PIC1>;
1467a09116cSAlbert Herranz		};
1477a09116cSAlbert Herranz
148600ecc19SMathieu Malaterre		sdio@d080000 {
1497a09116cSAlbert Herranz			compatible = "nintendo,hollywood-sdhci",
1507a09116cSAlbert Herranz					"sdhci";
1517a09116cSAlbert Herranz			reg = <0x0d080000 0x200>;
1527a09116cSAlbert Herranz			interrupts = <8>;
1537a09116cSAlbert Herranz			interrupt-parent = <&PIC1>;
1547a09116cSAlbert Herranz		};
1557a09116cSAlbert Herranz
156600ecc19SMathieu Malaterre		ipc@d000000 {
1577a09116cSAlbert Herranz			compatible = "nintendo,hollywood-ipc";
1587a09116cSAlbert Herranz			reg = <0x0d000000 0x10>;
1597a09116cSAlbert Herranz			interrupts = <30>;
1607a09116cSAlbert Herranz			interrupt-parent = <&PIC1>;
1617a09116cSAlbert Herranz		};
1627a09116cSAlbert Herranz
163600ecc19SMathieu Malaterre		PIC1: pic1@d800030 {
1647a09116cSAlbert Herranz			#interrupt-cells = <1>;
1657a09116cSAlbert Herranz			compatible = "nintendo,hollywood-pic";
1667a09116cSAlbert Herranz			reg = <0x0d800030 0x10>;
1677a09116cSAlbert Herranz			interrupt-controller;
1687a09116cSAlbert Herranz			interrupts = <14>;
1697a09116cSAlbert Herranz		};
1707a09116cSAlbert Herranz
171*5479618eSEmmanuel Gil Peyrot		srnprot@d800060 {
172*5479618eSEmmanuel Gil Peyrot			compatible = "nintendo,hollywood-srnprot";
173*5479618eSEmmanuel Gil Peyrot			reg = <0x0d800060 0x4>;
174*5479618eSEmmanuel Gil Peyrot		};
175*5479618eSEmmanuel Gil Peyrot
176600ecc19SMathieu Malaterre		GPIO: gpio@d8000c0 {
1777a09116cSAlbert Herranz			#gpio-cells = <2>;
1787a09116cSAlbert Herranz			compatible = "nintendo,hollywood-gpio";
1797a09116cSAlbert Herranz			reg = <0x0d8000c0 0x40>;
1807a09116cSAlbert Herranz			gpio-controller;
1819693d570SJonathan Neuschäfer			ngpios = <24>;
1827a09116cSAlbert Herranz
18380873a0bSJonathan Neuschäfer			gpio-line-names =
18480873a0bSJonathan Neuschäfer				"POWER", "SHUTDOWN", "FAN", "DC_DC",
18580873a0bSJonathan Neuschäfer				"DI_SPIN", "SLOT_LED", "EJECT_BTN", "SLOT_IN",
18680873a0bSJonathan Neuschäfer				"SENSOR_BAR", "DO_EJECT", "EEP_CS", "EEP_CLK",
18780873a0bSJonathan Neuschäfer				"EEP_MOSI", "EEP_MISO", "AVE_SCL", "AVE_SDA",
18880873a0bSJonathan Neuschäfer				"DEBUG0", "DEBUG1", "DEBUG2", "DEBUG3",
18980873a0bSJonathan Neuschäfer				"DEBUG4", "DEBUG5", "DEBUG6", "DEBUG7";
19080873a0bSJonathan Neuschäfer
191f4ddc19aSJonathan Neuschäfer			interrupt-controller;
192f4ddc19aSJonathan Neuschäfer			#interrupt-cells = <2>;
193f4ddc19aSJonathan Neuschäfer			interrupts = <10>;
194f4ddc19aSJonathan Neuschäfer			interrupt-parent = <&PIC1>;
195f4ddc19aSJonathan Neuschäfer
1967a09116cSAlbert Herranz			/*
1977a09116cSAlbert Herranz			 * This is commented out while a standard binding
1987a09116cSAlbert Herranz			 * for i2c over gpio is defined.
1997a09116cSAlbert Herranz			 */
2007a09116cSAlbert Herranz			/*
2017a09116cSAlbert Herranz			i2c-video {
2027a09116cSAlbert Herranz				#address-cells = <1>;
2037a09116cSAlbert Herranz				#size-cells = <0>;
2047a09116cSAlbert Herranz			        compatible = "i2c-gpio";
2057a09116cSAlbert Herranz
2067a09116cSAlbert Herranz			        gpios = <&GPIO 15 0
2077a09116cSAlbert Herranz			                 &GPIO 14 0>;
2087a09116cSAlbert Herranz			        clock-frequency = <250000>;
2097a09116cSAlbert Herranz				no-clock-stretching;
2107a09116cSAlbert Herranz			        scl-is-open-drain;
2117a09116cSAlbert Herranz			        sda-is-open-drain;
2127a09116cSAlbert Herranz			        sda-enforce-dir;
2137a09116cSAlbert Herranz
2147a09116cSAlbert Herranz			        AVE: audio-video-encoder@70 {
2157a09116cSAlbert Herranz			                compatible = "nintendo,wii-audio-video-encoder";
2167a09116cSAlbert Herranz			                reg = <0x70>;
2177a09116cSAlbert Herranz			        };
2187a09116cSAlbert Herranz			};
2197a09116cSAlbert Herranz			*/
2207a09116cSAlbert Herranz		};
2217a09116cSAlbert Herranz
222600ecc19SMathieu Malaterre		control@d800100 {
2237a09116cSAlbert Herranz			compatible = "nintendo,hollywood-control";
224b11748e6SEmmanuel Gil Peyrot			/*
225b11748e6SEmmanuel Gil Peyrot			 * Both the address and length are wrong, according to
226b11748e6SEmmanuel Gil Peyrot			 * Wiibrew this should be <0x0d800000 0x400>, but it
227562a610bSEmmanuel Gil Peyrot			 * requires refactoring the PIC1, GPIO and OTP nodes
228562a610bSEmmanuel Gil Peyrot			 * before changing that.
229b11748e6SEmmanuel Gil Peyrot			 */
230b11748e6SEmmanuel Gil Peyrot			reg = <0x0d800100 0xa0>;
2317a09116cSAlbert Herranz		};
2327a09116cSAlbert Herranz
233562a610bSEmmanuel Gil Peyrot		otp@d8001ec {
234562a610bSEmmanuel Gil Peyrot			compatible = "nintendo,hollywood-otp";
235562a610bSEmmanuel Gil Peyrot			reg = <0x0d8001ec 0x8>;
236562a610bSEmmanuel Gil Peyrot		};
237562a610bSEmmanuel Gil Peyrot
238600ecc19SMathieu Malaterre		disk@d806000 {
2397a09116cSAlbert Herranz			compatible = "nintendo,hollywood-di";
2407a09116cSAlbert Herranz			reg = <0x0d806000 0x40>;
2417a09116cSAlbert Herranz			interrupts = <2>;
2427a09116cSAlbert Herranz		};
2437a09116cSAlbert Herranz	};
244041413b8SJonathan Neuschäfer
245041413b8SJonathan Neuschäfer	gpio-leds {
246041413b8SJonathan Neuschäfer		compatible = "gpio-leds";
247041413b8SJonathan Neuschäfer
248041413b8SJonathan Neuschäfer		/* This is the blue LED in the disk drive slot */
249041413b8SJonathan Neuschäfer		drive-slot {
250041413b8SJonathan Neuschäfer			label = "wii:blue:drive_slot";
251041413b8SJonathan Neuschäfer			gpios = <&GPIO 5 GPIO_ACTIVE_HIGH>;
252041413b8SJonathan Neuschäfer			panic-indicator;
253041413b8SJonathan Neuschäfer		};
254041413b8SJonathan Neuschäfer	};
2558de7547eSJonathan Neuschäfer
2568de7547eSJonathan Neuschäfer	gpio-keys {
2578de7547eSJonathan Neuschäfer		compatible = "gpio-keys";
2588de7547eSJonathan Neuschäfer
2598de7547eSJonathan Neuschäfer		power {
2608de7547eSJonathan Neuschäfer			label = "Power Button";
2618de7547eSJonathan Neuschäfer			gpios = <&GPIO 0 GPIO_ACTIVE_HIGH>;
2628de7547eSJonathan Neuschäfer			linux,code = <KEY_POWER>;
2638de7547eSJonathan Neuschäfer		};
2648de7547eSJonathan Neuschäfer
2658de7547eSJonathan Neuschäfer		eject {
2668de7547eSJonathan Neuschäfer			label = "Eject Button";
2678de7547eSJonathan Neuschäfer			gpios = <&GPIO 6 GPIO_ACTIVE_HIGH>;
2688de7547eSJonathan Neuschäfer			linux,code = <KEY_EJECTCD>;
2698de7547eSJonathan Neuschäfer		};
2708de7547eSJonathan Neuschäfer	};
2717a09116cSAlbert Herranz};
2727a09116cSAlbert Herranz
273