Hardware/Hollywood GPIOs

From WiiBrew
< Hardware
Jump to navigation Jump to search
Hollywood GPIOs
Hollywood Registers
Access
BroadwayPartial
StarletFull
Registers
Base0x0d8000c0
Length0x40
Access size32 bits
Byte orderBig Endian
This box: view  talk  edit

The Hollywood chipset includes 24 general purpose I/O lines with interrupt capability. Two full sets of registers are provided, and the Broadway only has access to one half. Each pin can be assigned to one of the two sets of registers, which lets the Starlet control which pins only it can control, and which pins the Broadway can use too.

Hollywood GPIOs
Address Bits Name Description
0x0d8000c0 32 HW_GPIOB_OUT
0x0d8000c4 32 HW_GPIOB_DIR
0x0d8000c8 32 HW_GPIOB_IN
0x0d8000cc 32 HW_GPIOB_INTLVL
0x0d8000d0 32 HW_GPIOB_INTFLAG
0x0d8000d4 32 HW_GPIOB_INTMASK
0x0d8000d8 32 HW_GPIOB_INMIR
0x0d8000dc 32 HW_GPIO_ENABLE
0x0d8000e0 32 HW_GPIO_OUT
0x0d8000e4 32 HW_GPIO_DIR
0x0d8000e8 32 HW_GPIO_IN
0x0d8000ec 32 HW_GPIO_INTLVL
0x0d8000f0 32 HW_GPIO_INTFLAG
0x0d8000f4 32 HW_GPIO_INTMASK
0x0d8000f8 32 HW_GPIO_INMIR
0x0d8000fc 32 HW_GPIO_OWNER

Register Description

HW_GPIO_ENABLE
  3124 230
Access U R/W

The bits of this register indicate whether specific GPIO pins are enabled. The typical value is 0xFFFFFF, to enable all pins.


HW_GPIO_OUT
  3124 230
Access U R/W

This register contains the output value for all pins. These only take effect if the pin is configured as an output.


HW_GPIO_DIR
  3124 230
Access U R/W

A '1' bit for a pin indicates that it will behave as an output (drive), while a '0' bit tristates the pin and it becomes a high-impedance input.


HW_GPIO_IN
  3124 230
Access U R

This register can be read to obtain the current input value of the GPIO pins.


HW_GPIO_INTLVL
  3124 230
Access U R/W

Configures the pin state that causes an interrupt. If a bit is set in this register, the pin causes an interrupt when high (or on the rising edge?[check]). A zero causes the opposite behavior.


HW_GPIO_INTFLAG
  3124 230
Access U R/Z

Bits in this register indicate which pins have triggered their interrupt flags. Write one to clear a bit back to zero.


HW_GPIO_INTMASK
  3124 230
Access U R/W

Only the bits set in this register propagate their interrupts to the master Starlet GPIO interrupt (#11). All other pin interrupts are ignored, although the interrupt state can still be queried and cleared in HW_GPIO_INTFLAG.


HW_GPIO_INMIR
  3124 230
Access U R/W

This register appears to contain the input state at some point in time, possibly power-on or interrupt or something like that. [check]


HW_GPIO_OWNER
  3124 230
Access U R/W

This register configures which pins are controlled with HW_GPIO registers vs HW_GPIOB registers. A one bit configures the pin for control via the HW_GPIOB registers, and enables access by the Broadway. A zero bit restricts access to the HW_GPIO registers, which are Starlet-only.


HW_GPIOB_OUT
  3124 230
Access U R/W

HW_GPIOB_DIR
  3124 230
Access U R/W

HW_GPIOB_IN
  3124 230
Access U R

HW_GPIOB_INTLVL
  3124 230
Access U R/W

HW_GPIOB_INTFLAG
  3124 230
Access U R/W

HW_GPIOB_INTMASK
  3124 230
Access U R/W

HW_GPIOB_INMIR
  3124 230
Access U R/W

These registers operate identically to their HW_GPIO counterparts above, but they control the pins which have their respective {{#HW_GPIO_OWNER|HW_GPIO_OWNER}} bits set to 1. They can be accessed by the Broadway, although their interrupt (HW_GPIOB_INTFLAG & HW_GPIOB_INTMASK) is mapped to Starlet IRQ #10.