45 #ifndef ADI_SPORT_DEF_H 46 #define ADI_SPORT_DEF_H 48 #include <drivers/general/adi_data_transfer.h> 50 #if defined(ADI_CFG_SPORT0A_SERIAL_WLEN) 51 #if (ADI_CFG_SPORT0A_SERIAL_WLEN <= 3u) || (ADI_CFG_SPORT0A_SERIAL_WLEN > 32u) 52 #error "Invalid word length : it must be between 4 and 32" 55 #error "ADI_CFG_SPORT0A_SERIAL_WLEN undefined!!! " 58 #if defined(ADI_CFG_SPORT0B_SERIAL_WLEN) 59 #if (ADI_CFG_SPORT0B_SERIAL_WLEN <= 3u) || (ADI_CFG_SPORT0B_SERIAL_WLEN > 32u) 60 #error "Invalid word length : it must be between 4 and 32" 63 #error "ADI_CFG_SPORT0B_SERIAL_WLEN undefined!!! " 66 #define ADI_SPORT_NUM_INSTANCES (1u) 67 #define ADI_SPORT_NUM_CHANNELS (2u) 69 #define BITM_SPORT_DATA_CONFIG ( BITM_SPORT_CTL_A_LSBF \ 70 | BITM_SPORT_CTL_A_PACK) 72 #define BITM_SPORT_CLOCK_CONFIG ( BITM_SPORT_CTL_A_ICLK \ 73 | BITM_SPORT_CTL_A_CKRE \ 74 | BITM_SPORT_CTL_A_GCLKEN) 76 #define BITM_SPORT_FS_CONFIG ( BITM_SPORT_CTL_A_FSR \ 77 | BITM_SPORT_CTL_A_IFS \ 78 | BITM_SPORT_CTL_A_DIFS \ 79 | BITM_SPORT_CTL_A_LFS \ 80 | BITM_SPORT_CTL_A_LAFS \ 81 | BITM_SPORT_CTL_A_FSERRMODE) 83 #define SPORT_BYTE_TRANSFER_LENGTH (8u) 84 #define SPORT_HALFWORD_TRANSFER_LENGTH (16u) 85 #define SPORT_WORD_TRANSFER_LENGTH (32u) 87 #define SPORT_GET_WLEN(ctlVal) ((((ctlVal) & (uint32_t) BITM_SPORT_CTL_A_SLEN) >> ((uint32_t) BITP_SPORT_CTL_A_SLEN)) + 1u) 88 #define SPORT_GET_PACKEN(ctlVal) ((ctlVal) & (uint32_t) BITM_SPORT_CTL_A_PACK) >> ((uint32_t) BITP_SPORT_CTL_A_PACK) 90 #define SPORT_CHECK_CFG_CTL(CFG) assert(0u == ((CFG) & (((uint32_t)BITM_SPORT_CTL_A_SPEN) | ((uint32_t)BITM_SPORT_CTL_A_DMAEN)))) 93 #define SPORT_BIT_PACK_NONE (((uint32_t) ADI_SPORT_NO_PACKING) >> ((uint32_t) BITP_SPORT_CTL_A_PACK)) 94 #define SPORT_BIT_PACK_8 (((uint32_t) ADI_SPORT_8BIT_PACKING) >> ((uint32_t) BITP_SPORT_CTL_A_PACK)) 95 #define SPORT_BIT_PACK_16 (((uint32_t) ADI_SPORT_16BIT_PACKING) >> ((uint32_t) BITP_SPORT_CTL_A_PACK)) 104 ADI_SPORT_STATE_UNINITIALIZED = 0,
105 ADI_SPORT_STATE_INITIALIZED,
106 ADI_SPORT_STATE_DATA_FLOW_ENABLED,
107 ADI_SPORT_STATE_DATA_FLOW_DISABLED,
108 ADI_SPORT_STATE_PAUSED
117 typedef struct _ADI_SPORT_CONFIG
131 typedef struct _ADI_SPORT_DEVICE_INFO
133 volatile ADI_SPORT_TypeDef* pSportRegs;
134 ADI_SPORT_CONFIG sportCfg;
135 ADI_SPORT_STATE eState;
136 const DMA_CHANn_TypeDef eDMAChnlID;
137 const IRQn_Type eDMAn;
138 const IRQn_Type eIRQn;
140 } ADI_SPORT_DEVICE_INFO;
146 #define NUM_SPORT_BUFFER (2u) 149 typedef struct _ADI_SPORT_DEVICE
151 ADI_SPORT_DEVICE_INFO * pSportInfo;
153 ADI_CALLBACK pfCallback;
155 ADI_DT_CHANNEL sportChannel;
156 volatile uint32_t nHwError;
160 static inline void sport_Init (ADI_SPORT_DEVICE * pDevice);
163 static inline void sport_Configure (ADI_SPORT_DEVICE *pDevice, ADI_SPORT_CONFIG
const * sportCfg);
166 static ADI_SPORT_RESULT sport_SubmitBufferDmaMode(ADI_SPORT_DEVICE * pDevice, ADI_DT_BUFF_INFO * pBuff);
169 static ADI_SPORT_RESULT sport_SubmitBufferIntMode(ADI_SPORT_DEVICE * pDevice, ADI_DT_BUFF_INFO * pBuff);
172 static void sport_Terminate(ADI_SPORT_DEVICE * pDevice);
177 static void sport_InterruptHandler(ADI_SPORT_DEVICE * pDevice);
179 static inline void sport_DmaErrorCallback(
void *pCBParam, uint32_t Event,
void *pArg);
181 static inline uint32_t GetBytesPerSportData(
const uint32_t ctlVal);