11 #include "hpm_soc_feature.h"
12 #include "hpm_ffa_regs.h"
30 #define FFA_OPCMD_FIR (0U)
31 #define FFA_OPCMD_FFT (2U)
36 #define FFA_DATA_TYPE_REAL_Q31 (0U)
37 #define FFA_DATA_TYPE_REAL_Q15 (1U)
38 #define FFA_DATA_TYPE_COMPLEX_Q31 (2U)
39 #define FFA_DATA_TYPE_COMPLEX_Q15 (3U)
40 #if defined(HPM_IP_FEATURE_FFA_FP32) && HPM_IP_FEATURE_FFA_FP32
41 #define FFA_DATA_TYPE_COMPLEX_FP32 (4U)
42 #define FFA_DATA_TYPE_REAL_FP32 (5U)
108 #if defined(HPM_IP_FEATURE_FFA_FP32) && HPM_IP_FEATURE_FFA_FP32
113 } ffa_fp32_status_source_t;
173 #if defined(HPM_IP_FEATURE_FFA_FP32) && HPM_IP_FEATURE_FFA_FP32
175 static inline void ffa_enable_fp32_interrupt(
FFA_Type *ptr, uint32_t mask)
180 static inline void ffa_disable_fp32_interrupt(
FFA_Type *ptr, uint32_t mask)
185 static inline void ffa_set_fp_status_source(
FFA_Type *ptr, ffa_fp32_status_source_t source)
190 static inline void ffa_enable_fp_bias(
FFA_Type *ptr)
195 static inline void ffa_disable_fp_bias(
FFA_Type *ptr)
200 static inline void ffa_set_coef_max_index(
FFA_Type *ptr, uint8_t max)
205 static inline void ffa_set_output_max_index(
FFA_Type *ptr, uint8_t max)
210 static inline void ffa_set_input_max_index(
FFA_Type *ptr, uint8_t max)
215 static inline uint32_t ffa_get_fp_status(
FFA_Type *ptr)
#define FFA_CTRL_EN_MASK
Definition: hpm_ffa_regs.h:67
#define FFA_CTRL_SFTRST_MASK
Definition: hpm_ffa_regs.h:57
#define FFA_FP_CTRL_COEF_MAX_MASK
Definition: hpm_ffa_regs.h:313
#define FFA_FP_CTRL_EXP_ST_SEL_SET(x)
Definition: hpm_ffa_regs.h:295
#define FFA_FP_CTRL_IN_MAX_MASK
Definition: hpm_ffa_regs.h:333
#define FFA_FP_CTRL_OPT_BIAS_EXP_MASK
Definition: hpm_ffa_regs.h:303
#define FFA_FP_CTRL_COEF_MAX_SET(x)
Definition: hpm_ffa_regs.h:315
#define FFA_FP_CTRL_IN_MAX_SET(x)
Definition: hpm_ffa_regs.h:335
#define FFA_FP_CTRL_OUT_MAX_SET(x)
Definition: hpm_ffa_regs.h:325
#define FFA_FP_CTRL_OUT_MAX_MASK
Definition: hpm_ffa_regs.h:323
uint32_t hpm_stat_t
Definition: hpm_common.h:135
#define MAKE_STATUS(group, code)
Definition: hpm_common.h:144
@ status_group_ffa
Definition: hpm_common.h:172
static void ffa_enable(FFA_Type *ptr)
Enable FFA module and start an specified FFA operation.
Definition: hpm_ffa_drv.h:125
static uint32_t ffa_get_status(FFA_Type *ptr)
Get FFA status.
Definition: hpm_ffa_drv.h:146
static void ffa_enable_interrupt(FFA_Type *ptr, uint32_t mask)
Enable FFA Interrupt.
Definition: hpm_ffa_drv.h:157
hpm_stat_t ffa_calculate_fir_blocking(FFA_Type *ptr, fir_xfer_t *fir_xfer)
Perform FIR transform in blocking mode.
Definition: hpm_ffa_drv.c:138
void ffa_start_fft(FFA_Type *ptr, fft_xfer_t *fft_xfer)
Start an FFT operation.
Definition: hpm_ffa_drv.c:34
int16_t ffa_q15_t
FFA Q15 data type definition.
Definition: hpm_ffa_drv.h:53
hpm_stat_t ffa_calculate_fft_blocking(FFA_Type *ptr, fft_xfer_t *fft_xfer)
Perform FFT transformation in blocking mode.
Definition: hpm_ffa_drv.c:118
void ffa_start_fir(FFA_Type *ptr, fir_xfer_t *fir_xfer)
Start an FIR operation.
Definition: hpm_ffa_drv.c:64
static void ffa_disable_interrupt(FFA_Type *ptr, uint32_t mask)
Disable FFA interrupt.
Definition: hpm_ffa_drv.h:168
int32_t ffa_q31_t
FFA Q31 data type definition.
Definition: hpm_ffa_drv.h:48
static void ffa_disable(FFA_Type *ptr)
Stop FFA module.
Definition: hpm_ffa_drv.h:135
@ status_ffa_write_error
Definition: hpm_ffa_drv.h:103
@ status_ffa_read_next_error
Definition: hpm_ffa_drv.h:104
@ status_ffa_fft_overflow
Definition: hpm_ffa_drv.h:102
@ status_ffa_read_error
Definition: hpm_ffa_drv.h:105
@ status_ffa_fir_overflow
Definition: hpm_ffa_drv.h:101
Definition: hpm_ffa_regs.h:12
__RW uint32_t INT_EN
Definition: hpm_ffa_regs.h:15
__RW uint32_t FP_ST
Definition: hpm_ffa_regs.h:18
__RW uint32_t FP_CTRL
Definition: hpm_ffa_regs.h:17
__RW uint32_t STATUS
Definition: hpm_ffa_regs.h:14
__RW uint32_t CTRL
Definition: hpm_ffa_regs.h:13
FFA complex Q15 data type definition.
Definition: hpm_ffa_drv.h:66
ffa_q15_t real
Definition: hpm_ffa_drv.h:67
ffa_q15_t image
Definition: hpm_ffa_drv.h:68
FFA complex Q31 data type definition.
Definition: hpm_ffa_drv.h:58
ffa_q31_t image
Definition: hpm_ffa_drv.h:60
ffa_q31_t real
Definition: hpm_ffa_drv.h:59
FFT transform context.
Definition: hpm_ffa_drv.h:74
void * dst
Definition: hpm_ffa_drv.h:80
uint8_t dst_data_type
Definition: hpm_ffa_drv.h:77
uint32_t interrupt_mask
Definition: hpm_ffa_drv.h:81
uint8_t src_data_type
Definition: hpm_ffa_drv.h:76
const void * src
Definition: hpm_ffa_drv.h:79
uint32_t num_points
Definition: hpm_ffa_drv.h:78
uint16_t is_ifft
Definition: hpm_ffa_drv.h:75
FIR transform context.
Definition: hpm_ffa_drv.h:87
uint32_t input_taps
Definition: hpm_ffa_drv.h:90
const void * coeff
Definition: hpm_ffa_drv.h:92
const void * src
Definition: hpm_ffa_drv.h:91
uint16_t data_type
Definition: hpm_ffa_drv.h:88
uint32_t interrupt_mask
Definition: hpm_ffa_drv.h:94
uint16_t coef_taps
Definition: hpm_ffa_drv.h:89
void * dst
Definition: hpm_ffa_drv.h:93