// SPDX-License-Identifier: GPL-2.0-or-later /* * arch/powerpc/boot/dts/wii.dts * * Nintendo Wii platform device tree source * Copyright (C) 2008-2009 The GameCube Linux Team * Copyright (C) 2008,2009 Albert Herranz */ /dts-v1/; #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/input/input.h> /* * This is commented-out for now. * Until a later patch is merged, the kernel can use only the first * contiguous RAM range and will BUG() if the memreserve is outside * that range. */ /*/memreserve/ 0x10000000 0x0004000;*/ /* DSP RAM */ / { model = "nintendo,wii"; compatible = "nintendo,wii"; #address-cells = <1>; #size-cells = <1>; chosen { bootargs = "root=/dev/mmcblk0p2 rootwait udbg-immortal"; }; memory { device_type = "memory"; reg = <0x00000000 0x01800000 /* MEM1 24MB 1T-SRAM */ 0x10000000 0x04000000>; /* MEM2 64MB GDDR3 */ }; cpus { #address-cells = <1>; #size-cells = <0>; PowerPC,broadway@0 { device_type = "cpu"; reg = <0>; clock-frequency = <729000000>; /* 729MHz */ bus-frequency = <243000000>; /* 243MHz core-to-bus 3x */ timebase-frequency = <60750000>; /* 243MHz / 4 */ i-cache-line-size = <32>; d-cache-line-size = <32>; i-cache-size = <32768>; d-cache-size = <32768>; }; }; /* devices contained in the hollywood chipset */ hollywood { #address-cells = <1>; #size-cells = <1>; compatible = "nintendo,hollywood"; ranges = <0x0c000000 0x0c000000 0x01000000 0x0d000000 0x0d000000 0x00800000 0x0d800000 0x0d800000 0x00800000>; interrupt-parent = <&PIC0>; video@c002000 { compatible = "nintendo,hollywood-vi", "nintendo,flipper-vi"; reg = <0x0c002000 0x100>; interrupts = <8>; }; processor-interface@c003000 { compatible = "nintendo,hollywood-pi", "nintendo,flipper-pi"; reg = <0x0c003000 0x100>; PIC0: pic0 { #interrupt-cells = <1>; compatible = "nintendo,flipper-pic"; interrupt-controller; }; }; dsp@c005000 { #address-cells = <1>; #size-cells = <1>; compatible = "nintendo,hollywood-dsp", "nintendo,flipper-dsp"; reg = <0x0c005000 0x200>; interrupts = <6>; }; gamepad-controller@d006400 { compatible = "nintendo,hollywood-si", "nintendo,flipper-si"; reg = <0x0d006400 0x100>; interrupts = <3>; }; audio@c006c00 { compatible = "nintendo,hollywood-ai", "nintendo,flipper-ai"; reg = <0x0d006c00 0x20>; interrupts = <6>; }; /* External Interface bus */ exi@d006800 { compatible = "nintendo,hollywood-exi", "nintendo,flipper-exi"; reg = <0x0d006800 0x40>; virtual-reg = <0x0d006800>; interrupts = <4>; }; usb@d040000 { compatible = "nintendo,hollywood-usb-ehci", "usb-ehci"; reg = <0x0d040000 0x100>; interrupts = <4>; interrupt-parent = <&PIC1>; }; usb@d050000 { compatible = "nintendo,hollywood-usb-ohci", "usb-ohci"; reg = <0x0d050000 0x100>; interrupts = <5>; interrupt-parent = <&PIC1>; }; usb@d060000 { compatible = "nintendo,hollywood-usb-ohci", "usb-ohci"; reg = <0x0d060000 0x100>; interrupts = <6>; interrupt-parent = <&PIC1>; }; sd@d070000 { compatible = "nintendo,hollywood-sdhci", "sdhci"; reg = <0x0d070000 0x200>; interrupts = <7>; interrupt-parent = <&PIC1>; }; sdio@d080000 { compatible = "nintendo,hollywood-sdhci", "sdhci"; reg = <0x0d080000 0x200>; interrupts = <8>; interrupt-parent = <&PIC1>; }; ipc@d000000 { compatible = "nintendo,hollywood-ipc"; reg = <0x0d000000 0x10>; interrupts = <30>; interrupt-parent = <&PIC1>; }; PIC1: pic1@d800030 { #interrupt-cells = <1>; compatible = "nintendo,hollywood-pic"; reg = <0x0d800030 0x10>; interrupt-controller; interrupts = <14>; }; srnprot@d800060 { compatible = "nintendo,hollywood-srnprot"; reg = <0x0d800060 0x4>; }; GPIO: gpio@d8000c0 { #gpio-cells = <2>; compatible = "nintendo,hollywood-gpio"; reg = <0x0d8000c0 0x40>; gpio-controller; ngpios = <24>; gpio-line-names = "POWER", "SHUTDOWN", "FAN", "DC_DC", "DI_SPIN", "SLOT_LED", "EJECT_BTN", "SLOT_IN", "SENSOR_BAR", "DO_EJECT", "EEP_CS", "EEP_CLK", "EEP_MOSI", "EEP_MISO", "AVE_SCL", "AVE_SDA", "DEBUG0", "DEBUG1", "DEBUG2", "DEBUG3", "DEBUG4", "DEBUG5", "DEBUG6", "DEBUG7"; interrupt-controller; #interrupt-cells = <2>; interrupts = <10>; interrupt-parent = <&PIC1>; /* * This is commented out while a standard binding * for i2c over gpio is defined. */ /* i2c-video { #address-cells = <1>; #size-cells = <0>; compatible = "i2c-gpio"; gpios = <&GPIO 15 0 &GPIO 14 0>; clock-frequency = <250000>; no-clock-stretching; scl-is-open-drain; sda-is-open-drain; sda-enforce-dir; AVE: audio-video-encoder@70 { compatible = "nintendo,wii-audio-video-encoder"; reg = <0x70>; }; }; */ }; control@d800100 { compatible = "nintendo,hollywood-control"; /* * Both the address and length are wrong, according to * Wiibrew this should be <0x0d800000 0x400>, but it * requires refactoring the PIC1, GPIO and OTP nodes * before changing that. */ reg = <0x0d800100 0xa0>; }; otp@d8001ec { compatible = "nintendo,hollywood-otp"; reg = <0x0d8001ec 0x8>; }; disk@d806000 { compatible = "nintendo,hollywood-di"; reg = <0x0d806000 0x40>; interrupts = <2>; }; }; gpio-leds { compatible = "gpio-leds"; /* This is the blue LED in the disk drive slot */ drive-slot { label = "wii:blue:drive_slot"; gpios = <&GPIO 5 GPIO_ACTIVE_HIGH>; panic-indicator; }; }; gpio-keys { compatible = "gpio-keys"; power { label = "Power Button"; gpios = <&GPIO 0 GPIO_ACTIVE_HIGH>; linux,code = <KEY_POWER>; }; eject { label = "Eject Button"; gpios = <&GPIO 6 GPIO_ACTIVE_HIGH>; linux,code = <KEY_EJECTCD>; }; }; };