Data Structures | Typedefs | Functions | Variables
edma.c File Reference

This file contains implementation of the EDMA driver APIs in edma.h. It uses at a lower level the edma_low_level.h APIs. More...

#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <ti/drivers/osal/DebugP.h>
#include <ti/drivers/osal/HwiP.h>
#include <ti/drivers/edma/edma.h>
#include <ti/drivers/edma/include/edma_low_level.h>
#include <ti/drivers/edma/include/hw_edma_tc.h>
#include <ti/drivers/edma/include/hw_edma_tpcc.h>
#include <ti/drivers/edma/include/edma_xwr1xxx.h>
#include <ti/common/hw_types.h>
#include <ti/common/mmwave_error.h>

Data Structures

struct  EDMA_qdmaObject_t_
 QDMA object (state) information used to trigger the QDMA channel after configuring. More...
 
struct  EDMA_transferControllerErrorIsrArgInfo_t_
 Transfer controller error Isr argument information storage. More...
 
struct  EDMA_Object_t_
 EDMA internal object (state) information structure that is required to be preserved between calls to EDMA APIs. More...
 
struct  EDMA_Config_t_
 Config structure containing object and hardware attributes. This will be casted to the EDMA's handle and returned in open API. More...
 

Typedefs

typedef struct EDMA_qdmaObject_t_ EDMA_qdmaObject_t
 QDMA object (state) information used to trigger the QDMA channel after configuring.
 
typedef struct EDMA_transferControllerErrorIsrArgInfo_t_ EDMA_transferControllerErrorIsrArgInfo_t
 Transfer controller error Isr argument information storage.
 
typedef struct EDMA_Object_t_ EDMA_Object_t
 EDMA internal object (state) information structure that is required to be preserved between calls to EDMA APIs.
 
typedef struct EDMA_Config_t_ EDMA_Config_t
 Config structure containing object and hardware attributes. This will be casted to the EDMA's handle and returned in open API.
 

Functions

static int32_t EDMA_validate_channelIdchannelType (uint8_t channelId, uint8_t channelType)
 
static int32_t EDMA_validate_channel_config (EDMA_Handle handle, EDMA_hwAttrs_t const *hwAttrs, EDMA_channelConfig_t const *config)
 
static int32_t EDMA_validate_param_config (EDMA_Handle handle, EDMA_hwAttrs_t const *hwAttrs, uint16_t paramId, EDMA_paramSetConfig_t const *config, EDMA_transferCompletionCallbackFxn_t transferCompletionCallbackFxn)
 
static void EDMA_paramSetConfig_assist (uint32_t ccBaseAddr, uint16_t paramId, EDMA_paramSetConfig_t const *pSetCfg)
 
static int32_t EDMA_startTransfer_assist (EDMA_Handle handle, uint8_t channelId, uint8_t channelType, bool isStaticSet)
 
static void EDMA_transferComplete_isr (uintptr_t arg)
 
static void EDMA_update_queue_entries (uint32_t qEntry0Addr, uint32_t qEntryAddrJump, uint8_t numEntries, uint8_t *qEntryIndx, EDMA_queueEntryInfo_t *qEntry)
 
static void EDMA_transferController_error_isr (uintptr_t arg)
 
static void EDMA_error_isr (uintptr_t arg)
 
static void EDMA_configQueueThreshold (uint32_t ccBaseAddr, uint8_t queueId, uint8_t threshold)
 
static void EDMA_configQueuePriority (uint32_t ccBaseAddr, uint8_t transferController, uint8_t priority)
 
static bool EDMA_isError (uint32_t ccBaseAddr)
 
static void EDMA_getErrorStatusInfo (EDMA_hwAttrs_t const *hwAttrs, uint32_t ccBaseAddr, EDMA_errorInfo_t *errorInfo)
 
static void EDMA_clearErrors (EDMA_hwAttrs_t const *hwAttrs, uint32_t ccBaseAddr, EDMA_errorInfo_t const *errorInfo)
 
int32_t EDMA_getErrorStatus (EDMA_Handle handle, bool *isAnyError, EDMA_errorInfo_t *errorInfo)
 
int32_t EDMA_getTransferControllerErrorStatus (EDMA_Handle handle, uint8_t transferControllerId, bool *isAnyError, EDMA_transferControllerErrorInfo_t *errorInfo)
 
static void EDMA_configTransferControllerError (uint32_t tcBaseAddr, bool isEnableAllErrors, EDMA_transferControllerErrorConfig_t const *config)
 
int32_t EDMA_configChannel (EDMA_Handle handle, EDMA_channelConfig_t const *config, bool isEnableChannel)
 
int32_t EDMA_enableChannel (EDMA_Handle handle, uint8_t channelId, uint8_t channelType)
 
int32_t EDMA_disableChannel (EDMA_Handle handle, uint8_t channelId, uint8_t channelType)
 
int32_t EDMA_configParamSet (EDMA_Handle handle, uint16_t paramId, EDMA_paramConfig_t const *config)
 
int32_t EDMA_linkParamSets (EDMA_Handle handle, uint16_t fromParamId, uint16_t toParamId)
 
int32_t EDMA_chainChannels (EDMA_Handle handle, uint16_t fromParamId, uint8_t toChannelId)
 
int32_t EDMA_startTransfer (EDMA_Handle handle, uint8_t channelId, uint8_t channelType)
 
int32_t EDMA_startDmaTransfer (EDMA_Handle handle, uint8_t channelId)
 
int32_t EDMA_startQdmaTransfer (EDMA_Handle handle, uint8_t channelId)
 
int32_t EDMA_startFinalQdmaTransfer (EDMA_Handle handle, uint8_t channelId)
 
int32_t EDMA_isTransferComplete (EDMA_Handle handle, uint8_t transferCompletionCode, bool *isTransferComplete)
 
int32_t EDMA_setDestinationAddress (EDMA_Handle handle, uint16_t paramId, uint32_t destinationAddress)
 
int32_t EDMA_setSourceAddress (EDMA_Handle handle, uint16_t paramId, uint32_t sourceAddress)
 
int32_t EDMA_close (EDMA_Handle handle)
 
uint8_t EDMA_getNumInstances (void)
 
int32_t EDMA_init (uint8_t instanceId)
 
int32_t EDMA_getStatusInfo (EDMA_Handle handle, EDMA_statusInfo_t *status)
 
EDMA_Handle EDMA_open (uint8_t instanceId, int32_t *errorCode, EDMA_instanceInfo_t *instanceInfo)
 
int32_t EDMA_configErrorMonitoring (EDMA_Handle handle, EDMA_errorConfig_t const *config)
 
int32_t EDMA_configPerformance (EDMA_Handle handle, EDMA_performanceConfig_t const *config)
 

Variables

static EDMA_Object_t EDMA_object [EDMA_NUM_CC]
 EDMA objects storage for each CC.
 

Detailed Description

This file contains implementation of the EDMA driver APIs in edma.h. It uses at a lower level the edma_low_level.h APIs.

Copyright (c) 2016, Texas Instruments Incorporated All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


Copyright 2018, Texas Instruments Incorporated