Hardware/SATA controller: Difference between revisions
< Hardware
m Link to correct version of AHCI spec |
m Note non-standard registers (work needed to get detail) |
||
| Line 8: | Line 8: | ||
}} | }} | ||
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. | The Wii U has a mostly 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. | 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. | ||
| Line 15: | Line 15: | ||
* The generic host control registers start at 0x0D160400. | * The generic host control registers start at 0x0D160400. | ||
* The port registers start at 0x0D160500. | * The port registers start at 0x0D160500. | ||
* There appears to be a non-standard set of interrupt control registers after the main AHCI register area. | |||
== ATAPI commands == | == ATAPI commands == | ||
Revision as of 23:04, 7 July 2021
| SATA controller | |
| Access | |
|---|---|
| Espresso | None |
| Starbuck | Full |
| Registers | |
| Base | 0x0d160000 |
| Length | 0x10000 |
| Access size | 32 bits |
| Byte order | Big Endian |
| IRQs | |
| Espresso | ??? |
| Latte | ??? |
The Wii U has a mostly 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.
- There appears to be a non-standard set of interrupt control registers after the main AHCI register area.
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 |