
Nintendo Wii device tree
========================

0) The root node

  This node represents the Nintendo Wii video game console.

  Required properties:

   - model : Should be "nintendo,wii"
   - compatible : Should be "nintendo,wii"

1) The "hollywood" node

  This node represents the multi-function "Hollywood" chip, which packages
  many of the devices found in the Nintendo Wii.

  Required properties:

   - compatible : Should be "nintendo,hollywood"

1.a) The Video Interface (VI) node

  Represents the interface between the graphics processor and a external
  video encoder.

  Required properties:

   - compatible : should be "nintendo,hollywood-vi","nintendo,flipper-vi"
   - reg : should contain the VI registers location and length
   - interrupts : should contain the VI interrupt

1.b) The Processor Interface (PI) node

  Represents the data and control interface between the main processor
  and graphics and audio processor.

  Required properties:

  - compatible : should be "nintendo,hollywood-pi","nintendo,flipper-pi"
  - reg : should contain the PI registers location and length

1.b.i) The "Flipper" interrupt controller node

  Represents the "Flipper" interrupt controller within the "Hollywood" chip.
  The node for the "Flipper" interrupt controller must be placed under
  the PI node.

  Required properties:

  - #interrupt-cells : <1>
  - compatible : should be "nintendo,flipper-pic"
  - interrupt-controller

1.c) The Digital Signal Procesor (DSP) node

  Represents the digital signal processor interface, designed to offload
  audio related tasks.

  Required properties:

   - compatible : should be "nintendo,hollywood-dsp","nintendo,flipper-dsp"
   - reg : should contain the DSP registers location and length
   - interrupts : should contain the DSP interrupt

1.d) The Serial Interface (SI) node

  Represents the interface to the four single bit serial interfaces.
  The SI is a proprietary serial interface used normally to control gamepads.
  It's NOT a RS232-type interface.

  Required properties:

   - compatible : should be "nintendo,hollywood-si","nintendo,flipper-si"
   - reg : should contain the SI registers location and length
   - interrupts : should contain the SI interrupt

1.e) The Audio Interface (AI) node

  Represents the interface to the external 16-bit stereo digital-to-analog
  converter.

  Required properties:

   - compatible : should be "nintendo,hollywood-ai","nintendo,flipper-ai"
   - reg : should contain the AI registers location and length
   - interrupts : should contain the AI interrupt

1.f) The External Interface (EXI) node

  Represents the multi-channel SPI-like interface.

  Required properties:

   - compatible : should be "nintendo,hollywood-exi","nintendo,flipper-exi"
   - reg : should contain the EXI registers location and length
   - interrupts : should contain the EXI interrupt

1.g) The Open Host Controller Interface (OHCI) nodes

  Represent the USB 1.x Open Host Controller Interfaces.

  Required properties:

   - compatible : should be "nintendo,hollywood-usb-ohci","usb-ohci"
   - reg : should contain the OHCI registers location and length
   - interrupts : should contain the OHCI interrupt

1.h) The Enhanced Host Controller Interface (EHCI) node

  Represents the USB 2.0 Enhanced Host Controller Interface.

  Required properties:

   - compatible : should be "nintendo,hollywood-usb-ehci","usb-ehci"
   - reg : should contain the EHCI registers location and length
   - interrupts : should contain the EHCI interrupt

1.i) The Secure Digital Host Controller Interface (SDHCI) nodes

  Represent the Secure Digital Host Controller Interfaces.

  Required properties:

   - compatible : should be "nintendo,hollywood-sdhci","sdhci"
   - reg : should contain the SDHCI registers location and length
   - interrupts : should contain the SDHCI interrupt

1.j) The Inter-Processsor Communication (IPC) node

  Represent the Inter-Processor Communication interface. This interface
  enables communications between the Broadway and the Starlet processors.

   - compatible : should be "nintendo,hollywood-ipc"
   - reg : should contain the IPC registers location and length
   - interrupts : should contain the IPC interrupt

1.k) The "Hollywood" interrupt controller node

  Represents the "Hollywood" interrupt controller within the
  "Hollywood" chip.

  Required properties:

  - #interrupt-cells : <1>
  - compatible : should be "nintendo,hollywood-pic"
  - reg : should contain the controller registers location and length
  - interrupt-controller
  - interrupts : should contain the cascade interrupt of the "flipper" pic
  - interrupt-parent: should contain the phandle of the "flipper" pic

1.l) The General Purpose I/O (GPIO) controller node

  Represents the dual access 32 GPIO controller interface.

  Required properties:

  - #gpio-cells : <2>
  - compatible : should be "nintendo,hollywood-gpio"
  - reg : should contain the IPC registers location and length
  - gpio-controller

1.m) The control node

  Represents the control interface used to setup several miscellaneous
  settings of the "Hollywood" chip like boot memory mappings, resets,
  disk interface mode, etc.

  Required properties:

   - compatible : should be "nintendo,hollywood-control"
   - reg : should contain the control registers location and length

1.n) The Disk Interface (DI) node

  Represents the interface used to communicate with mass storage devices.

  Required properties:

   - compatible : should be "nintendo,hollywood-di"
   - reg : should contain the DI registers location and length
   - interrupts : should contain the DI interrupt

