SPRUI30H November 2015 – May 2024 DRA745 , DRA746 , DRA750 , DRA756
The DMA block manages data exchange between the local channel data buffers which reside in the MLBSS and a memory buffer residing in the system memory. To support system memory buffering, a ping-pong memory structure is implemented on a per channel basis using 128-bit descriptors for DMA descriptor table entries. 64 DMA descriptor table entries are directly mapped to the 64 DMA physical channels.
Each logical channel is assigned a separate 128-bit descriptor, defining data buffers in the system memory which are used by the DMA interface for this logical channel. The descriptors are stored at fixed addresses in the channel table RAM.
The description of the DMA descriptor table fields is shown in Table 24-1470.
Field | Numbers of bits | Description | Accessibilty (1) |
---|---|---|---|
CE | 1 | Channel enable: | r,w,u |
0 = Disabled | |||
1 = Enabled | |||
LE | 1 | Endianess Enable: | r, w |
0 = Big endian | |||
1 = Little Endian | |||
PG | 1 | Page pointer. Software initializes to zero, hardware writes thereafter. | r,w,u |
0 = Ping buffer | |||
1 = Pong buffer | |||
RDY1 | 1 | Buffer ready bit for ping buffer page: | r, w |
0 = Not ready | |||
1 = Ready | |||
RDY2 | 1 | Buffer ready bit for pong buffer page: | r, w |
0 = Not ready | |||
1 = Ready | |||
DNE1 | 1 | Buffer done bit for ping buffer page: | r,u,c0 |
0 = Not done | |||
1 = Done | |||
DNE2 | 1 | Buffer done bit for pong buffer page: | r,u,c0 |
0 = Not done | |||
1 = Done | |||
ERR1 | 1 | DMA error response detected for ping buffer page: | r,u,c0 |
0 = No error | |||
1 = Error | |||
ERR2 | 1 | DMA error response detected for pong buffer page: | r,u,c0 |
0 = No error | |||
1 = Error | |||
PS1 | 1 | Packet start bit for ping buffer page: | r,w,u (both Tx and Rx) |
0 = No packet start | |||
1 = Packet start | |||
Reserved for synchronous and isochronous channels. | |||
PS2 | 1 | Packet start bit for pong buffer page: | r,w,u (both Tx and Rx) |
0 = No packet start | |||
1 = Packet start | |||
Reserved for synchronous and isochronous channels. | |||
MEP1 | 1 | Most ethernet packet (MEP) indicator for ping buffer page: | r,w,u (both Tx and Rx) |
0 = No MEP | |||
1 = MEP | |||
MEP1 only valid for the first page of a segmented buffer. | |||
Reserved for control, synchronous and isochronous channels | |||
MEP2 | 1 | Most ethernet packet (MEP) indicator for pong buffer page: | r,w,u (both Tx and Rx) |
0 = No MEP | |||
1 = MEP | |||
MEP2 only valid for the first page of a segmented buffer. | |||
Reserved for control, synchronous and isochronous channels | |||
BD1(2) | 11 to 13 | Buffer depth for ping buffer page: | r,w |
11 or 12-bits for asynchronous and control channels. | |||
13-bits for synchronous and isochronous channels. | |||
BD2(2) | 11 to 13 | Buffer depth for pong buffer page: | r,w |
11 or 12-bits for asynchronous and control channels. | |||
13-bits for synchronous and isochronous channels. | |||
BA1 | 32 | Buffer base address for ping buffer page | r,w |
BA2 | 32 | Buffer base address for pong buffer page | r,w |
Reserved | varies | Software writes a zero to all Reserved bits when the entry is initialized. The Reserved bits are Read-only after initialization. | r,w, u |
Data exchange across the DMA interface can be configured as little endian (LE = 0x1) or big endian (LE = 0x0). Figure 24-211 provides an overview of the endian options, chosen by the LE bit.
Figure 24-212 shows an example of ping-pong system memory structure. This system memory structure is similar for all channel types and shows the relationship between the BA1, BA2, BD1, BD2 and PG descriptor fields.
Each DMA descriptor table entry (also referred to as a channel descriptor) holds a 32-bit BAn (n = 1 and 2) field which defines the start of each ping or pong buffer within system memory. The BDi (i = 1 and 2) field is used to indicate the size for the respective ping or pong page. The maximum size is 2k-entries for asynchronous and control channels, and 8k-entries for isochronous and synchronous channels.