In memory of Ben “bushing” Byer, who passed away on Monday, February 8th, 2016.

Hardware/SATA controller

From WiiUBrew
< Hardware
Revision as of 23:48, 10 December 2019 by QuarkTheAwesome (talk | contribs) (Link to correct version of AHCI spec)
Jump to navigation Jump to search
SATA controller
Access
EspressoNone
StarbuckFull
Registers
Base0x0d160000
Length0x10000
Access size32 bits
Byte orderBig Endian
IRQs
Espresso???
Latte???
This box: view  talk  edit

The Wii U has a standard AHCI 1.2 SATA controller onboard. It identifies as having two ports (0 and 1) running at 3Gbps. In retail systems, the disc drive is connected to port 0; while port 1 is disconnected. Unused code in IOS-BSP indicates that port 7 may be present on non-retail units.

In terms of hardware registers; the controller lines up with the specification starting at address 0x0D160400; that is; the first Generic Host Control register (Host Capabilities) resides at 0x0D160400. On a retail console, this register reads out 0x7720FF81.

Registers

  • The generic host control registers start at 0x0D160400.
  • The port registers start at 0x0D160500.

ATAPI commands

Besides commands defined in the ATAPI specification, the Wii U also seems to have some custom commands.

0xDA - ATAPI_DI_READ_DISC_INFORMATION_CMD

0xE0 - ATAPI_DI_REQUEST_ERROR_ID_CMD

0xED - ATAPI_DI_READ_CBC_CMD

0xF0 - ATAPI_CF_REQUEST_DRIVE_ID_CMD

0xF1 - ATAPI_CF_AUTHENTICATE_CMD

0xF2 - ATAPI_CF_START_STOP_UNIT_CMD

0xF3 - ATAPI_CF_READ_CMD

0xF4 - ATAPI_CF_TEST_UNIT_READY_CMD

0xF5 - ATAPI_CF_INQUIRY_CMD

Offset Size Description
0x00 0x02 Unknown
0x02 0x01 Vendor
0x03 0x01 Device
0x04 0x1C Unknown
0x20 - End

0xFB - ATAPI_CF_FREC_READ_CMD

See Also

AHCI 1.2 spec