|
EW31244SL7QV Datasheet, PDF (55/252 Pages) Intel Corporation – Intel® 31244 PCI-X to Serial ATA Controller | |||
|
◁ |
Intel® 31244 PCI-X to Serial ATA Controller
Functional Blocks
4.2.3 DMA Controller
Several ATA commands use the DMA controller to transfer data. In DPA mode, each SATA port on
the GD31244 controller supports its own DMA controller. This allows each SATA port to transfer
data independent of each other. In PCI IDE mode, each channel (two SATA ports) supports one
DMA controller. Data may be either received or transmitted to the SATA device using the DMA
controller. The programming model provides a simple scatter/gather mechanism allowing large
transfer blocks to be scattered to or gathered from memory. The DMA controller accesses system
memory to read DMA descriptors. The DMA controller uses the DMA Descriptor Table Pointer to
access the descriptors. The descriptor table contains a number of descriptors which describe areas
of memory that are involved in the data transfer.
Figure 20 shows the structure of a descriptor table. The descriptor table is prepared and placed in
memory by software. The descriptor table must be DWORD aligned and must not cross a 64 Kbyte
boundary. Each descriptor is 8 bytes in length. The first DWORD specifies the WORD address of the
data buffer. The lower two bytes of the second DWORD specifies the byte count of the data buffer. A
value of zero in the byte count field implies a transfer count of 64 Kbytes, which is the maximum
number of bytes that may be transferred per descriptor. Bit 7 of the upper byte of the second DWORD
contains an EOT (End-Of-Transfer) bit. The EOT bit indicates when the last data buffer is reached.
The GD31244 controller provides additional address registers to support PCI DAC cycles. For
example, an Upper DMA Descriptor Table Pointer Register and an Upper DMA Address Register are
defined. These registers allow the GD31244 controller to initiate PCI DAC cycles.
Note: The descriptor table must be aligned on a DWORD boundary, and must not cross a 64 Kbyte
boundary.
Note: The address field (data buffer address) in the descriptor must be aligned on a WORD boundary.
Furthermore, the data block must not cross a 64 Kbyte boundary.
Note: All the descriptors within a particular descriptor table share the same upper address register. For
example, all the data buffers must be within the same 4 Gbyte page.
In PCI IDE mode, the primary channel DMA registers are as follows:
⢠âSU IDE Channel 0 DMA Command Register - SUICDCR0â on page 178
⢠âSU IDE Channel 0 DMA Status Register - SUICDSR0â on page 179
⢠âSU IDE Channel 0 DMA Descriptor Table Pointer Register - SUICDDTPR0â on page 180
The secondary channel DMA are as follows:
⢠âSU IDE Channel 1 DMA Command Register - SUICDCR1â on page 181
⢠âSU IDE Channel 1 DMA Status Register - SUICDSR1â on page 182
⢠âSU IDE Channel 1 DMA Descriptor Table Pointer Register - SUICDDTPR1â on page 183.
In DPA mode, the DMA register are as follows:
⢠âSU PCI DPA Upper DMA Descriptor Table Pointer Register - SUPDUDDTPRâ on page 215
⢠âSU PCI DPA Upper DMA Data Buffer Pointer Register - SUPDUDDPRâ on page 216
⢠âSU PCI DPA DMA Command Register - SUPDDCMDRâ on page 217
⢠âSU PCI DPA DMA Status Register - SUPDDSRâ on page 218
⢠âSU PCI DPA DMA Descriptor Table Pointer Register - SUPDDDTPRâ on page 219
Developerâs Manual
April 2004
55
|
▷ |