SPRUHZ7K August 2015 – April 2024 AM5706 , AM5708 , AM5716 , AM5718 , AM5718-HIREL
The SATA controller handles all data operations on its port with an internal DMA integrated in SATA AHCI core.
The SATA controller DMA transfers all information between system memory and the attached SATA peripheral device, as well as configuration and status FISs. The transmit and receive DMA data paths are independently programmable.
The burst size in both directions is fixed to 16 Dwords. The DMA issues transactions of this size or smaller (in Dword increments), depending on programmed transaction size.
If the programmed transaction size is lower than 16-Dwords (burst size), then the DMA maxes out at transaction size.
The user can also separately program the transaction size for receive and transmit channels by setting the SATA_PxDMACR[7:4] RXTS and SATA_PxDMACR[3:0] TXTS bit fields. The transaction size is the minimum amount of data on which the DMA works. For example, if a FIS comes from the device to the host, the DMA does not begin transferring data into system memory until there is at least SATA_PxDMACR[7:4] RXTS number of Dwords in the receive FIFO. During transmit, the DMA reads data from system memory in SATA_PxDMACR[3:0] TXTS Dword increments to put into the transmit FIFO. Transactions can be broken up into multiple bursts of 16 Dword - size, crossing of a 1-KiB boundary (boundary between 1-KiB address blocks in memory), or end-of-frame. RXFIFO and TXFIFO transaction sizes are limited to maximum half the size of the integrated RXFIFO and TXFIFO buffers. For more information on maximum transaction sizes and RXFIFO/TXFIFO depths, see the SATA_PxDMACR and SATA_PPARAMR descriptions.