![]() |
![]() |
Functions | |
CSL_IDEF_INLINE void | CSL_IDMA_chan0TransferData (CSL_IDMA_IDMA0CONFIG *idmaChan0Config, Uint32 bWaitToCompletion) |
CSL_IDEF_INLINE void | CSL_IDMA_chan0Wait (void) |
CSL_IDEF_INLINE void | CSL_IDMA_chan0GetStatus (CSL_IDMA_STATUS *idmaChanStatus) |
CSL_IDEF_INLINE void | CSL_IDMA_chan1TransferData (CSL_IDMA_IDMA1CONFIG *idmaChan1Config, Uint32 bWaitToCompletion) |
CSL_IDEF_INLINE void | CSL_IDMA_chan1FillData (CSL_IDMA_IDMA1CONFIG *idmaChan1Config, Uint32 bWaitToCompletion) |
CSL_IDEF_INLINE void | CSL_IDMA_chan1Wait (void) |
CSL_IDEF_INLINE void | CSL_IDMA_chan1GetStatus (CSL_IDMA_STATUS *idmaChanStatus) |
CSL_IDEF_INLINE void CSL_IDMA_chan0GetStatus | ( | CSL_IDMA_STATUS * | idmaChanStatus | ) |
============================================================================
CSL_IDMA_chan0GetStatus
Description
This function waits until all previous transfers for IDMA Channel 0 have been completed by making sure that both active and pend bits are zero. These are the two least significant bits of the status register for the channel.
Waits until previous transfers have completed for IDMA channel 1 before returning.
Arguments
idmaChanStatus CSL_IDMA_STATUS structure pointer that needs to be populated with iDMA Channel 0 transfer status.
Return Value
None
Pre Condition
None.
Post Condition
None
Reads
CGEM_IDMA0_STAT_PEND, CGEM_IDMA0_STAT_ACTV
Example
CSL_IDMA_STATUS idma1Status; CSL_IDMA_chan0GetStatus (&idma1Status);
=============================================================================
CSL_IDEF_INLINE void CSL_IDMA_chan0TransferData | ( | CSL_IDMA_IDMA0CONFIG * | idmaChan0Config, | |
Uint32 | bWaitToCompletion | |||
) |
============================================================================
CSL_IDMA_chan0TransferData
Description
This function configures IMDA Channel 0 to perform a transfer between Internal Memory (L1P, L1D, L2) and Configuration Space(CFG) based on the inputs to the function. This API initiates a transfer and if needed waits till the transfer completes based on the "bWaitToCompletion" flag value passed.
Arguments
idmaChan0Config CSL_IDMA_IDMA0CONFIG structure pointer that holds information relevant to perform a IDMA Channel 0 configuration space transfer. bWaitToCompletion Boolean flag that indicates if this function should wait till the transfer is completed or should just return after initiating one. When set to 1, this API waits and returns after requested transfer is complete. Otherwise, returns immediately after configuring appropriate registers.
Return Value
None
Pre Condition
None.
Post Condition
The appropriate IDMA Channel 0 registers are configured to initiate the CFG space transfer operation. Furthermore, if bWaitToCompletion argument is set to 1, the API polls on the IDMA0 Status register to wait until the transfer completes.
Writes
CGEM_IDMA0_MASK_MASK, CGEM_IDMA0_SOURCE_SOURCEADDR, CGEM_IDMA0_DEST_DESTADDR, CGEM_IDMA0_COUNT_INT, CGEM_IDMA0_COUNT_COUNT
Example
#define MASK 0xFFFFFF0F // Align various arrays to a word address, in internal L2 #pragma DATA_SECTION(src, "ISRAM"); #pragma DATA_ALIGN(src, 32); #pragma DATA_ALIGN(dst2, 32); // Static 128 byte array of data in "src" with known test pattern. unsigned int src[32] = { 0xDEADBEEF, 0xFADE0003, 0x5AA51C3A, 0x03036BA3, 0x0000ABCD, 0x00001234, 0x00005670, 0x00005678, 0x000003BE, 0x0000760F, 0x9675A800, 0xABCDEF12, 0xEEEECDEA, 0x01234567, 0x00000000, 0xFEEDFADE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } ; // EDMA MMR Space Address unsigned int * dst2 = (unsigned int *)0x02704000; CSL_IDMA_IDMA0CONFIG idmaChan0Config; Uint32 bWaitEnable = 1; mask = MASK; idmaChan0Config.mask = mask; idmaChan0Config.source = src; idmaChan0Config.destn = dst2; idmaChan0Config.count = 0; // transfer one 32-byte window idmaChan0Config.intEnable = 1; // Enable CPU interrupt on completion. CSL_IDMA_chan0TransferData (&idmaChan0Config, bWaitEnable);
=============================================================================
CSL_IDEF_INLINE void CSL_IDMA_chan0Wait | ( | void | ) |
============================================================================
CSL_IDMA_chan0Wait
Description
This function waits until all previous transfers for IDMA Channel 0 have been completed by making sure that both active and pend bits are zero. These are the two least significant bits of the status register for the channel.
Waits until previous transfers have completed for IDMA channel 0 before returning.
Arguments
None
Return Value
None
Pre Condition
CSL_IDMA_chan0TransferData(bWaitToCompletion=0) must be called to setup an IDMA Channel 0 data transfer before this API is called.
Post Condition
None
Reads
CGEM_IDMA0_STAT_PEND, CGEM_IDMA0_STAT_ACTV
Affects
CGEM_IDMA0_STAT_PEND=0, CGEM_IDMA0_STAT_ACTV=0
Example
#define MASK 0xFFFFFF0F // Align various arrays to a word address, in internal L2 #pragma DATA_SECTION(src, "ISRAM"); #pragma DATA_ALIGN(src, 32); #pragma DATA_ALIGN(dst2, 32); // Static 128 byte array of data in "src" with known test pattern. unsigned int src[32] = { 0xDEADBEEF, 0xFADE0003, 0x5AA51C3A, 0x03036BA3, 0x0000ABCD, 0x00001234, 0x00005670, 0x00005678, 0x000003BE, 0x0000760F, 0x9675A800, 0xABCDEF12, 0xEEEECDEA, 0x01234567, 0x00000000, 0xFEEDFADE, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 } ; // EDMA MMR Space Address unsigned int * dst2 = (unsigned int *)0x02704000; CSL_IDMA_IDMA0CONFIG idmaChan0Config; Uint32 bWaitEnable = 1; mask = MASK; idmaChan0Config.mask = mask; idmaChan0Config.source = src; idmaChan0Config.destn = dst2; idmaChan0Config.count = 0; // transfer one 32-byte window idmaChan0Config.intEnable = 1; // Enable CPU interrupt on completion. CSL_IDMA_chan0TransferData (&idmaChan0Config, bWaitEnable); CSL_IDMA_chan0Wait (); ...
=============================================================================
CSL_IDEF_INLINE void CSL_IDMA_chan1FillData | ( | CSL_IDMA_IDMA1CONFIG * | idmaChan1Config, | |
Uint32 | bWaitToCompletion | |||
) |
============================================================================
CSL_IDMA_chan1FillData
Description
This function initiates a GEM local memory "block fill" operation using the IDMA Channel 1. Given a fill value in Channel configuration structure's source address, a valid destination address and the number of bytes to fill, this API fills the destination with the fill value specified. This API initiates a block fill and if needed waits till the transfer completes based on the "bWaitToCompletion" flag value passed.
Arguments
idmaChan1Config CSL_IDMA_IDMA1CONFIG structure pointer that holds information relevant to perform a IDMA Channel 1 block fill operation. bWaitToCompletion Boolean flag that indicates if this function should wait till the block fill is completed or should just return after initiating one. When set to 1, this API waits and returns after requested block transfer is complete. Otherwise, returns immediately after configuring appropriate registers.
Return Value
None
Pre Condition
None.
Post Condition
The appropriate IDMA Channel 1 registers are configured to initiate the block fill operation. Furthermore, if bWaitToCompletion argument is set to 1, the API polls on the IDMA1 Status register to wait until the fill operation completes.
Writes
CGEM_IDMA1_SOURCE_SOURCEADDR, CGEM_IDMA1_DEST_DESTADDR, CGEM_IDMA1_COUNT_PRI, CGEM_IDMA1_COUNT_INT, CGEM_IDMA1_COUNT_FILL, CGEM_IDMA1_COUNT_COUNT
Example
#pragma DATA_ALIGN(dst1, 8); Uint32 dst1[20]; CSL_IDMA_IDMA1CONFIG idmaChan1Config; Uint32 bWaitEnable = 1; // Fill the destination with a value of "0xAAAABABA" idmaChan1Config.source = (Uint32 *) (0xAAAABABA); idmaChan1Config.destn = dst1; idmaChan1Config.intEnable = 1; idmaChan1Config.priority = IDMA_PRI_7; idmaChan1Config.count = 20; CSL_IDMA_chan1FillData (&idmaChan1Config, bWaitEnable);
=============================================================================
CSL_IDEF_INLINE void CSL_IDMA_chan1GetStatus | ( | CSL_IDMA_STATUS * | idmaChanStatus | ) |
============================================================================
CSL_IDMA_chan1GetStatus
Description
This function waits until all previous transfers for IDMA Channel 1 have been completed by making sure that both active and pend bits are zero. These are the two least significant bits of the status register for the channel.
Waits until previous transfers have completed for IDMA channel 1 before returning.
Arguments
idmaChanStatus CSL_IDMA_STATUS structure pointer that needs to be populated with iDMA Channel 1 transfer status.
Return Value
None
Pre Condition
None.
Post Condition
None
Reads
CGEM_IDMA1_STAT_PEND, CGEM_IDMA1_STAT_ACTV
Example
CSL_IDMA_STATUS idma1Status; CSL_IDMA_chan1GetStatus (&idma1Status);
=============================================================================
CSL_IDEF_INLINE void CSL_IDMA_chan1TransferData | ( | CSL_IDMA_IDMA1CONFIG * | idmaChan1Config, | |
Uint32 | bWaitToCompletion | |||
) |
============================================================================
CSL_IDMA_chan1TransferData
Description
This function initiates a GEM local memory "block transfer" operation using the IDMA Channel 1. This API assumes that the source and destination addresses passed in the "idmaChan1Config" argument are both in GEM's internal memory, i.e., L1P, L1D, L2 or CFG memories. Transfers from addresses that are not in the internal memory will raise an exception. This API initiates a block transfer and if needed waits till the transfer completes based on the "bWaitToCompletion" flag value passed.
Arguments
idmaChan1Config CSL_IDMA_IDMA1CONFIG structure pointer that holds information relevant to perform a IDMA Channel 1 block transfer. bWaitToCompletion Boolean flag that indicates if this function should wait till the block transfer is completed or should just return after initiating one. When set to 1, this API waits and returns after requested block transfer is complete. Otherwise, returns immediately after configuring appropriate registers.
Return Value
None
Pre Condition
None.
Post Condition
The appropriate IDMA Channel 1 registers are configured to initiate the data transfer operation. Furthermore, if bWaitToCompletion argument is set to 1, the API polls on the IDMA1 Status register to wait until the transfer completes.
Writes
CGEM_IDMA1_SOURCE_SOURCEADDR, CGEM_IDMA1_DEST_DESTADDR, CGEM_IDMA1_COUNT_PRI, CGEM_IDMA1_COUNT_INT, CGEM_IDMA1_COUNT_FILL, CGEM_IDMA1_COUNT_COUNT
Example
#pragma DATA_ALIGN(src1, 8); #pragma DATA_ALIGN(dst1, 8); // Static 80 byte array of data in "src1" with known test pattern Uint32 src1[20] = { 0xDEADBEEF, 0xFADEBABE, 0x5AA51C3A, 0xD4536BA3, 0x5E69BA23, 0x4884A01F, 0x9265ACDA, 0xFFFF0123, 0xBEADDABE, 0x234A76B2, 0x9675ABCD, 0xABCDEF12, 0xEEEECDEA, 0x01234567, 0x00000000, 0xFEEDFADE, 0x0A1B2C3D, 0x4E5F6B7C, 0x5AA5ECCE, 0xFABEFACE }; Uint32 dst1[20]; CSL_IDMA_IDMA1CONFIG idmaChan1Config; Uint32 bWaitEnable = 1; idmaChan1Config.source = src1; idmaChan1Config.destn = dst1; idmaChan1Config.intEnable = 1; idmaChan1Config.priority = IDMA_PRI_7; idmaChan1Config.count = DATA_COUNT_BYTES; CSL_IDMA_chan1TransferData (&idmaChan1Config, bWaitEnable);
=============================================================================
CSL_IDEF_INLINE void CSL_IDMA_chan1Wait | ( | void | ) |
============================================================================
CSL_IDMA_chan1Wait
Description
This function waits until all previous transfers for IDMA Channel 1 have been completed by making sure that both active and pend bits are zero. These are the two least significant bits of the status register for the channel.
Waits until previous transfers have completed for IDMA channel 1 before returning.
Arguments
None
Return Value
None
Pre Condition
CSL_IDMA_chan1TransferData(bWaitToCompletion = 0) or CSL_IDMA_chan1FillData(bWaitToCompletion = 0) must be called to setup IDMA Channel 1 data transfer before this API is called.
Post Condition
None
Reads
CGEM_IDMA1_STAT_PEND, CGEM_IDMA1_STAT_ACTV
Affects
CGEM_IDMA1_STAT_PEND=0, CGEM_IDMA1_STAT_ACTV=0
Example
#pragma DATA_ALIGN(src1, 8); #pragma DATA_ALIGN(dst1, 8); // Static 80 byte array of data in "src1" with known test pattern Uint32 src1[20] = { 0xDEADBEEF, 0xFADEBABE, 0x5AA51C3A, 0xD4536BA3, 0x5E69BA23, 0x4884A01F, 0x9265ACDA, 0xFFFF0123, 0xBEADDABE, 0x234A76B2, 0x9675ABCD, 0xABCDEF12, 0xEEEECDEA, 0x01234567, 0x00000000, 0xFEEDFADE, 0x0A1B2C3D, 0x4E5F6B7C, 0x5AA5ECCE, 0xFABEFACE }; Uint32 dst1[20]; CSL_IDMA_IDMA1CONFIG idmaChan1Config; Uint32 bWaitEnable = 0; idmaChan1Config.source = src1; idmaChan1Config.destn = dst1; idmaChan1Config.intEnable = 1; idmaChan1Config.priority = IDMA_PRI_7; idmaChan1Config.count = DATA_COUNT_BYTES; CSL_IDMA_chan1TransferData (&idmaChan1Config, bWaitEnable); CSL_IDMA_chan1Wait(); ...
=============================================================================