Intel® IXP400 Software

Access-Layer Components: DMA Access Driver (IxDmaAcc) API

Figure 47. DMA Transfer Operation

Client

IxDmaAcc

IxQMgr

ixOsal

IxDmaAccDesMgr*

NPE

HWAcc

 

 

0. Init and config

 

 

 

1. ixDmaAccDmaTransfer

 

 

 

 

 

 

 

2. ixDmaAccValidateParams

 

 

 

 

 

 

3.1 ixOsalMutexLock

 

 

 

 

 

 

3.2 ixDmaAccDescriptorGet

 

 

 

 

3.3 ixOsalMutexUnlock

 

 

 

 

 

 

IX_STATUS

 

 

 

 

 

4. ixQMgrQWrite

 

 

 

 

IX_DMA_SUCCESS

5.1 ReadRequestQueue

 

 

 

 

 

 

 

 

 

 

5.2 WriteDoneQueue

 

 

 

 

6. ixQMgrCallback

 

 

 

 

 

7. ixQMgrQRead

 

 

 

 

 

 

8.1 ixOsalMutexLock

 

 

 

 

 

 

8.2 ixDmaAccDescriptorFree

 

 

 

 

8.3 ixOsalMutexUnlock

 

 

 

 

 

IX_STATUS

 

 

 

 

9. ClientCallback

 

 

 

 

 

 

 

 

 

10. Release Resources

 

 

 

 

 

 

 

B2361-02

0.Client needs to initialize and configure the hardware for the DMA transfer to ensure that the devices are set up properly and ready for DMA transfer.

1.Client requests the DMA transfer by calling ixDmaAccDmaTransfer function.

2.Internally, ixDmaAccDmaTransfer function calls ixDmaAccValidateParams function to validate the client’s input parameters.

3.If the client input parameters are valid, the ixDmaAccDmaTransfer function gets a descriptor entry from the descriptor manager.

The descriptor pool needs to be guarded by mutual exclusion because there are two contexts that access the pool descriptor buffer. The ixDmaAcc component will get the pool entry and the AQM will free the entry pool (via callback).

4.The ixDmaAccDmaTransfer function composes the descriptor — based on the client’s parameters — and calls ixQMgrQWrite to queue the descriptor to AQM.

5.ixDmaAccDmaTransfer returns and gets ready to process the new DMA transfer request.

6.The NPE reads the queue manager and does the DMA transfers. Upon completion of the DMA transfer, the NPE writes to AQM’s done queue. The AQM dispatcher calls the IxDmaAcc’s registered callback function.

7.IxDmaAccCallback calls ixQMgrQRead to read the result and that result is stored in the third descriptor. If the third word of the descriptor is zero, an AHB error is asserted by a peripheral having been accessed.

April 2005

IXP400 Software Version 2.0

Programmer’s Guide

126

Document Number: 252539, Revision: 007

 

Page 126
Image 126
Intel IXP400 manual DMA Transfer Operation