Difference between revisions of "Hardware/SATA controller"

From WiiUBrew
Jump to navigation Jump to search
m (Actually finish writing before saving :P)
Line 11: Line 11:
  
 
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.
 +
 +
== 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.
 +
 +
=== 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 ===
 +
{| class="wikitable"
 +
|-
 +
! 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 ==
 
== See Also ==
 
[https://www.intel.com/content/dam/www/public/us/en/documents/technical-specifications/serial-ata-ahci-tech-proposal-rev1_3_1.pdf AHCI spec]
 
[https://www.intel.com/content/dam/www/public/us/en/documents/technical-specifications/serial-ata-ahci-tech-proposal-rev1_3_1.pdf AHCI spec]

Revision as of 21:41, 16 October 2017

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.

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 spec