SPRUIE9D May 2017 – May 2024 DRA74P , DRA75P , DRA76P , DRA77P
Table 26-448 describes the procedure to initialize the SATA host controller after a POR.
Step | Register/Bit Field/Programming Model | Value |
---|---|---|
Configure the OCP2SCP3 adapter for PLLCTRL_SATA. | See Section 28.1.5, SATA PHY Subsystem Low - Level Programming Model in Chapter 28, Shared PHY Component Subsytems. | - |
Configure the DPLL_SATA. | See Section 28.1.5, SATA PHY Subsystem Low - Level Programming Model in Chapter 28, Shared PHY Component Subsytems. | - |
Configure the SATA_PHY. | See Section 28.1.5, SATA PHY Subsystem Low - Level Programming Model in Chapter 28, Shared PHY Component Subsystems. | - |
Perform all firmware capability writes. (1) | See Section 26.8.5.1.2.2, SubSequence – Firmware Capability Writes. | - |
Set up all appropriate structures in memory per the AHCI standard specification. | See Section 26.8.4.6, System Memory FIS Descriptors. See also the AHCI standard specification. | - |
Write a valid CL memory base address to the SATA_PxCLB register. | SATA_PxCLB [31:10] CLB | CL Base address (lower-half) |
SATA_PxCLBU [3:0] CLBU | CL Base address (upper-half) Only 4-lower bits meaningful in the device, other must be always written to '0'-s | |
Write a valid Rx FIS memory base address to the SATA_PxFB register. | SATA_PxFB [31:8] FB | Rx FIS Base address (lower-half) |
SATA_PxFBU [3:0] FBU | Rx FIS Base address (upper-half) Only 4-lower bits meaningful in the device, other must be always written to '0'-s | |
Issue a software type of reset depending on the error condition. | See Section 26.8.4.3.2, Software Initiated Resets. | - |
Set the appropriate bits in the SATA_PxCMD register. | See Section 26.8.4.7.1, Software Processing of the Port Command List. See also the AHCI standard specification. | - |
Program the SATA_PxSCTL register to configure SATA interface capabilities. | See the AHCI standard specification. | - |
Program the SATA_PxDMACR register. | See Section 26.8.4.8, DMA Port Configuration. | - |
Enable the interrupts at port 0. | SATA_IS[0] IPS | 0x1 |
Enable the involved port 0 specific interrupts. | See Section 26.8.4.5.2, Levels of Interrupt Control, and Section 26.8.4.5.4, Interrupt Condition Controll. | - |
Enable the FIS reception in the SATA_PxCMD register. | SATA_PxCMD[4] FRE | 0x1 |
Spin up the device (if required). | See the AHCI standard specification and the SATA standard specification. | - |
The SATA AHCI Controller always manipulates 64-bit memory pointers, and the master interface has 64-bit addresses, but the actual AHCI master interface integration in the device uses ONLY the 36-lower bits. In that case, even though the AHCI support indicates “64-bit” in the SATA_CAP[31] S64A, ONLY the 4-lower bits (SATA_PxCLBU [3:0] / SATA_PxFBU [3:0]) are meaningful in the device.The upper 28 bits of the address, i.e. SATA_PxCLBU [31:4] / SATA_PxFBU [31:4] , must be always SW-programmed to '0'.
Default value of the SATA_PxCLBU / SATA_PxFBU registers is 0x0, so that a 32-bit SW driver which never accesses them works seamlessly, by accessing only the 32-bit (lower half) addresses which reside in the SATA_PxCLB / SATA_PxFB registers.