Framework Components Application Programming Interface (API)
fc-v04
|
EdmaMgr Definitions - Functional library for use with the EDMA3 DMA peripheral.
The intent of the EdmaMgr component is to provide a simple and intuitive interface for acquiring and using EDMA3 resources for asynchronous data transfers.
Once the framework provides the initial configuration to EdmaMgr_init(), malloc/free style APIs are used to obtain/release resources. The actual transfer has been abstracted to multiple APIs which can transfer data of various dimensions.
#include <stdint.h>
#include <string.h>
#include <ti/sdo/fc/ecpy/ecpy.h>
#include <ti/xdais/ialg.h>
#include <ti/xdais/ires.h>
#include <ti/sdo/fc/ires/edma3chan/ires_edma3Chan.h>
#include <ti/sdo/fc/edma3/edma3_config.h>
Go to the source code of this file.
Functions | |
int32_t | EdmaMgr_init (int32_t proc_id, void *edma3_config) |
Initialize EdmaMgr. More... | |
EdmaMgr_Handle | EdmaMgr_alloc (int32_t max_linked_transfers) |
Allocate an EdmaMgr channel. More... | |
int32_t | EdmaMgr_getSizesLarge (EdmaMgr_ConfigLarge *cfg, IALG_MemRec memTab[]) |
Get buffer requirements for a large channel. More... | |
EdmaMgr_Handle | EdmaMgr_allocLarge (EdmaMgr_ConfigLarge *cfg, IALG_MemRec memTab[]) |
Allocate an EdmaMgr channel for "Large" 1D2D or 2D1D transfers which have a pitch outside the range [-32768,32768]. More... | |
int32_t | EdmaMgr_free (EdmaMgr_Handle h) |
Frees an EdmaMgr channel. More... | |
void | EdmaMgr_wait (EdmaMgr_Handle h) |
Wait for transfers to complete. More... | |
int32_t | EdmaMgr_copy1D1D (EdmaMgr_Handle h, void *restrict src, void *restrict dst, int32_t num_bytes) |
Perform a single 1D->1D transfer. More... | |
int32_t | EdmaMgr_copy1D2D (EdmaMgr_Handle h, void *restrict src, void *restrict dst, int32_t num_bytes, int32_t num_lines, int32_t pitch) |
Perform a 1D->2D transfer. More... | |
int32_t | EdmaMgr_copy2D1D (EdmaMgr_Handle h, void *restrict src, void *restrict dst, int32_t num_bytes, int32_t num_lines, int32_t pitch) |
Perform a 2D->1D transfer. More... | |
int32_t | EdmaMgr_copy2D2D (EdmaMgr_Handle h, void *restrict src, void *restrict dst, int32_t num_bytes, int32_t num_lines, int32_t pitch) |
Perform a 2D->2D transfer of buffers with the same pitch. More... | |
int32_t | EdmaMgr_copy2D2DSep (EdmaMgr_Handle h, void *restrict src, void *restrict dst, int32_t num_bytes, int32_t num_lines, int32_t src_pitch, int32_t dst_pitch) |
Perform a 2D->2D transfer of buffers with different pitches. More... | |
int32_t | EdmaMgr_copy1D1DLinked (EdmaMgr_Handle h, void *restrict src[], void *restrict dst[], int32_t num_bytes[], int32_t num_transfers) |
Perform a group of linked 1D->1D transfers. More... | |
int32_t | EdmaMgr_copy1D2DLinked (EdmaMgr_Handle h, void *restrict src[], void *restrict dst[], int32_t num_bytes[], int32_t num_lines[], int32_t pitch[], int32_t num_transfers) |
Perform a group of linked 1D->2D transfers. More... | |
int32_t | EdmaMgr_copy2D1DLinked (EdmaMgr_Handle h, void *restrict src[], void *restrict dst[], int32_t num_bytes[], int32_t num_lines[], int32_t pitch[], int32_t num_transfers) |
Perform a group of linked 2D->1D transfers. More... | |
int32_t | EdmaMgr_copy2D2DLinked (EdmaMgr_Handle h, void *restrict src[], void *restrict dst[], int32_t num_bytes[], int32_t num_lines[], int32_t pitch[], int32_t num_transfers) |
Perform a group of linked 2D->2D transfers. More... | |
int32_t | EdmaMgr_copy2D2DSepLinked (EdmaMgr_Handle h, void *restrict src[], void *restrict dst[], int32_t num_bytes[], int32_t num_lines[], int32_t src_pitch[], int32_t dst_pitch[], int32_t num_transfers) |
Perform a group of linked 2D->2D transfers with different pitches. More... | |
int32_t | EdmaMgr_copy1D2DLarge (EdmaMgr_Handle h, void *restrict src, void *restrict dst, int32_t num_bytes, int32_t num_lines, int32_t pitch) |
Perform a 1D->2D large transfer. More... | |
int32_t | EdmaMgr_copy2D1DLarge (EdmaMgr_Handle h, void *restrict src, void *restrict dst, int32_t num_bytes, int32_t num_lines, int32_t pitch) |
Perform a 2D->1D large transfer. More... | |
int32_t | EdmaMgr_copyFast (EdmaMgr_Handle h, void *restrict src, void *restrict dst) |
Perform a fast copy. This API inherits the transfer configuration of a previous transfer and only modifies the src and dst addresses. More... | |
int32_t | EdmaMgr_copyLinkedFast (EdmaMgr_Handle h, void *restrict src[], void *restrict dst[], int32_t num_transfers) |
Perform a linked fast copy. This API inherits the transfer configuration of a previous transfer and only modifies the src and dst addresses. More... | |
Macros | |
#define | EdmaMgr_SUCCESS 0 |
#define | EdmaMgr_ERROR_INVARG -1 |
#define | EdmaMgr_ERROR_INVCFG -2 |
#define | EdmaMgr_ERROR_RMANINIT -3 |
#define | EdmaMgr_ERROR_INVHANDLE -4 |
#define | EdmaMgr_ERROR_FREE -5 |
#define | EdmaMgr_MAX_NUM_MEMRECS_LARGE 1 |
Data Structures | |
struct | _EdmaMgr_ConfigLarge |
Configuration for a large channel. More... | |
Typedefs | |
typedef void * | EdmaMgr_Handle |
Handle to an EdmaMgr instance. More... | |
typedef struct _EdmaMgr_ConfigLarge | EdmaMgr_ConfigLarge |
Configuration for a large channel. More... | |