xWRL1432 MMWAVE-L-SDK  05.03.00
hwa/v0/hwa.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2021 Texas Instruments Incorporated
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  *
11  * Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the
14  * distribution.
15  *
16  * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  */
33 
67 #ifndef HWA_H_
68 #define HWA_H_
69 
70 /* ========================================================================== */
71 /* Include Files */
72 /* ========================================================================== */
73 
74 #include <stdint.h>
75 #include <stddef.h>
76 #include <stdbool.h>
77 #include <drivers/hw_include/csl_complex_math_types.h>
78 #include <kernel/dpl/HwiP.h>
79 #include <drivers/hw_include/cslr_hwa.h>
80 
81 #ifdef __cplusplus
82 extern "C" {
83 #endif
84 
85 /* ========================================================================== */
86 /* Macros & Typedefs */
87 /* ========================================================================== */
88 
89 #define HWA_RAM_WINDOW_SIZE_IN_BYTES 1024*4
92 #define HWADRV_ADDR_TRANSLATE_CPU_TO_HWA(x) (uint32_t)((uint32_t)(x) & 0x000FFFFFU)
93 
101 #define HWA_ERRNO_BASE (-2800)
102 
103 #define HWA_EINVAL (HWA_ERRNO_BASE-1)
104 
105 #define HWA_ENOINIT (HWA_ERRNO_BASE-2)
106 
107 #define HWA_EOUTOFRANGE (HWA_ERRNO_BASE-3)
108 
109 #define HWA_EOUTOFMEM (HWA_ERRNO_BASE-4)
110 
111 #define HWA_ENOTSUPP (HWA_ERRNO_BASE-5)
112 
113 #define HWA_EINUSE (HWA_ERRNO_BASE-6)
114 
115 #define HWA_ENOTALIGNED (HWA_ERRNO_BASE-7)
116 
117 #define HWA_EINVAL_COMMON_REGISTER_PARAMSET (HWA_ERRNO_BASE-8)
118 
119 #define HWA_EINVAL_COMMON_REGISTER_PARAMSET_ALT (HWA_ERRNO_BASE-9)
120 
121 #define HWA_EINVAL_COMMON_REGISTER_FFTCONFIG (HWA_ERRNO_BASE-10)
122 
123 #define HWA_EINVAL_COMMON_REGISTER_DCEST (HWA_ERRNO_BASE-11)
124 
125 #define HWA_EINVAL_COMMON_REGISTER_CFAR (HWA_ERRNO_BASE-12)
126 
127 #define HWA_EINVAL_COMMON_REGISTER_INTERFERENCE (HWA_ERRNO_BASE-13)
128 
129 #define HWA_EINVAL_COMMON_REGISTER_COMPLEXMULT (HWA_ERRNO_BASE-14)
130 
131 #define HWA_EINVAL_COMMON_REGISTER_CHANCOMB (HWA_ERRNO_BASE-15)
132 
133 #define HWA_EINVAL_COMMON_REGISTER_ZEROINSERT (HWA_ERRNO_BASE-16)
134 
135 #define HWA_EINVAL_COMMON_REGISTER_ADVSTAT (HWA_ERRNO_BASE-17)
136 
137 #define HWA_EINVAL_COMMON_REGISTER_COMPRESS (HWA_ERRNO_BASE-18)
138 
139 #define HWA_EINVAL_COMMON_REGISTER_LOCALMAXIMUM (HWA_ERRNO_BASE-19)
140 
141 #define HWA_EINVAL_PARAMSET_GENERALCONFIG (HWA_ERRNO_BASE - 20)
142 
143 #define HWA_EINVAL_PARAMSET_SOURCE (HWA_ERRNO_BASE - 21)
144 
145 #define HWA_EINVAL_PARAMSET_DEST (HWA_ERRNO_BASE - 22)
146 
147 #define HWA_EINVAL_PARAMSET_SRCDST_ADDRESS (HWA_ERRNO_BASE - 23)
148 
149 #define HWA_EINVAL_PARAMSET_FFTMODE_GENERALCONFIG (HWA_ERRNO_BASE - 24)
150 
151 #define HWA_EINVAL_PARAMSET_FFTMODE_SIZE (HWA_ERRNO_BASE - 25)
152 
153 #define HWA_EINVAL_PARAMSET_FFTMODE_POSTPROC (HWA_ERRNO_BASE - 26)
154 
155 #define HWA_EINVAL_PARAMSET_FFTMODE_PREPROC (HWA_ERRNO_BASE - 27)
156 
157 #define HWA_EINVAL_PARAMSET_FFTMODE_PREPROC_INTERF (HWA_ERRNO_BASE - 28)
158 
159 #define HWA_EINVAL_PARAMSET_FFTMODE_PREPROC_COMPLEXMULT (HWA_ERRNO_BASE - 29)
160 
161 #define HWA_EINVAL_PARAMSET_CFARMODE_GENERALCONFIG (HWA_ERRNO_BASE - 30)
162 
163 #define HWA_EINVAL_PARAMSET_CFARMODE_OSCONFIG (HWA_ERRNO_BASE - 31)
164 
165 #define HWA_EINVAL_PARAMSET_CFARMODE_CACONFIG (HWA_ERRNO_BASE - 32)
166 
167 #define HWA_EINVAL_PARAMSET_COMPRESSMODE (HWA_ERRNO_BASE - 33)
168 
169 #define HWA_EINVAL_PARAMSET_LOCALMAXMODE (HWA_ERRNO_BASE - 34)
170 
171 #define HWA_PARAMSET_POLLINGNOTALLOWED (HWA_ERRNO_BASE - 35)
172 
175 #define HWA_NUM_RXCHANNELS (12U)
176 
177 #define HWA_NUM_INTERFMITG_WINARRAY (5U)
178 
179 #define HWA_BPMPATTERN_LENGTH_INWORDS (8U)
180 
181 #define HWA_CHANCOMB_LENGTH_INWORDS (8U)
182 
183 #define HWA_ZEROINSERT_LENGTH_INWORDS (8U)
184 
185 #define HWA_NUM_RAMS (3U)
186 
187 #define HWA_MAXNUM_LOOPS (4095U)
188 
189 #define HWA_CMP_K_ARR_LEN (8U)
190 
204 #define HWA_DONE_INTERRUPT_PRIORITY (1U)
205 
206 //TO DO: CLEAN #define HWA_ALTDONE_INTERRUPT_PRIORITY (1U)
208 #define HWA_PARAMSETDONE_INTERRUPT1_PRIORITY (1U)
209 
210 #define HWA_PARAMSETDONE_INTERRUPT2_PRIORITY (1U)
211 
218 #define HWA_FEATURE_BIT_ENABLE ((uint8_t)1U)
219 #define HWA_FEATURE_BIT_DISABLE ((uint8_t)0U)
227 #define HWA_SAMPLES_WIDTH_16BIT ((uint8_t)0U)
228 #define HWA_SAMPLES_WIDTH_32BIT ((uint8_t)1U)
236 #define HWA_SAMPLES_FORMAT_COMPLEX ((uint8_t)0U)
237 #define HWA_SAMPLES_FORMAT_REAL ((uint8_t)1U)
245 #define HWA_SAMPLES_UNSIGNED ((uint8_t)0U)
246 #define HWA_SAMPLES_SIGNED ((uint8_t)1U)
254 #define HWA_FFT_WINDOW_NONSYMMETRIC ((uint8_t)0U)
255 #define HWA_FFT_WINDOW_SYMMETRIC ((uint8_t)1U)
267 #define HWA_FFT_WINDOW_INTERPOLATE_MODE_NONE ((uint8_t)0U)
268 #define HWA_FFT_WINDOW_INTERPOLATE_MODE_4K ((uint8_t)1U)
269 #define HWA_FFT_WINDOW_INTERPOLATE_MODE_2K ((uint8_t)2U)
277 #define HWA_FFT_MODE_MAGNITUDE_LOG2_DISABLED ((uint8_t)0U)
278 #define HWA_FFT_MODE_MAGNITUDE_ONLY_ENABLED ((uint8_t)2U)
279 #define HWA_FFT_MODE_MAGNITUDE_LOG2_ENABLED ((uint8_t)3U)
287 #define HWA_FFT_MODE_OUTPUT_DEFAULT ((uint8_t)0U)
288 #define HWA_FFT_MODE_OUTPUT_MAX_STATS ((uint8_t)2U)
289 #define HWA_FFT_MODE_OUTPUT_SUM_STATS ((uint8_t)3U)
297 #define HWA_NOISE_AVG_MODE_CFAR_CA ((uint8_t)0U)
298 #define HWA_NOISE_AVG_MODE_CFAR_CAGO ((uint8_t)1U)
299 #define HWA_NOISE_AVG_MODE_CFAR_CASO ((uint8_t)2U)
300 #define HWA_NOISE_AVG_MODE_CFAR_OS ((uint8_t)3U)
308 #define HWA_TRIG_MODE_IMMEDIATE ((uint8_t)0U)
309 #define HWA_TRIG_MODE_SOFTWARE ((uint8_t)1U)
310 #define HWA_TRIG_MODE_RESERVED1 ((uint8_t)2U)
311 #define HWA_TRIG_MODE_DMA ((uint8_t)3U)
312 #define HWA_TRIG_MODE_HARDWARE ((uint8_t)4U)
313 #define HWA_TRIG_MODE_RESERVED2 ((uint8_t)5U)
314 #define HWA_TRIG_MODE_RESERVED3 ((uint8_t)6U)
315 #define HWA_TRIG_MODE_M4CONTROL ((uint8_t)7U)
323 #define HWA_ACCELMODE_FFT ((uint8_t)0U)
324 #define HWA_ACCELMODE_CFAR ((uint8_t)1U)
325 #define HWA_ACCELMODE_COMPRESS ((uint8_t)2U)
326 #define HWA_ACCELMODE_NONE ((uint8_t)7U)
346 #define HWA_CFAR_OPER_MODE_LOG_INPUT_REAL 0U
347 #define HWA_CFAR_OPER_MODE_LOG_INPUT_COMPLEX 1U
348 #define HWA_CFAR_OPER_MODE_MAG_INPUT_REAL 2U
349 #define HWA_CFAR_OPER_MODE_MAG_INPUT_COMPLEX 3U
350 #define HWA_CFAR_OPER_MODE_MAG_SQR_INPUT_REAL 4U
351 #define HWA_CFAR_OPER_MODE_MAG_SQR_INPUT_COMPLEX 5U
369 #define HWA_CFAR_OUTPUT_MODE_I_nAVG_ALL_Q_CUT ((uint8_t)0U)
371 #define HWA_CFAR_OUTPUT_MODE_I_nAVG_ALL_Q_DET_FLAG ((uint8_t)1U)
373 #define HWA_CFAR_OUTPUT_MODE_I_PEAK_IDX_Q_NEIGHBOR_NOISE_VAL ((uint8_t)2U)
375 #define HWA_CFAR_OUTPUT_MODE_I_PEAK_IDX_Q_CUT ((uint8_t)3U)
391 #define HWA_CMP_DCMP_COMPRESS ((uint8_t)0U)
392 #define HWA_CMP_DCMP_DECOMPRESS ((uint8_t)1U) /*HWA_COMPRESS_MODE*/
394 
395 
401 #define HWA_CMP_K_ARR_LEN (8U) /*HWA_CMP_MISC_PARAMS*/
403 
413 #define HWA_COMPRESS_METHOD_EGE ((uint8_t)0U) /*HWA_CMP_METHOD*/
415 
429 #define HWA_COMPRESS_PATHSELECT_BOTHPASSES ((uint8_t)3U) /*HWA_COMPRESS_PATHSELECT*/
431 
437 #define HWA_RAM_TYPE_WINDOW_RAM ((uint8_t)0U)
438 #define HWA_RAM_TYPE_INTERNAL_RAM ((uint8_t)1U) /*HWA_RAM_TYPE*/
440 
441 
447 #define HWA_ACCUMULATORREG_TYPE_DC ((uint8_t)0U)
448 #define HWA_ACCUMULATORREG_TYPE_INTERF_MAG ((uint8_t)1U)
449 #define HWA_ACCUMULATORREG_TYPE_INTERF_MAGDIFF ((uint8_t)2U)
450 #define HWA_ACCUMULATORREG_TYPE_INTERF ((uint8_t)3U)
458 #define HWA_INTERFERENCE_THRESHOLD_TYPE_MAG ((uint8_t)0U)
459 #define HWA_INTERFERENCE_THRESHOLD_TYPE_MAGDIFF ((uint8_t)1U)
469 #define HWA_PARAMDONE_INTERRUPT_TYPE_CPU ((uint8_t)1U)
470 #define HWA_PARAMDONE_INTERRUPT_TYPE_DMA ((uint8_t)2U)
479 #define HWA_COMMONCONFIG_MASK_NUMLOOPS 0x00000001
480 #define HWA_COMMONCONFIG_MASK_PARAMSTARTIDX 0x00000002
481 #define HWA_COMMONCONFIG_MASK_PARAMSTOPIDX 0x00000004
482 #define HWA_COMMONCONFIG_MASK_FFT1DENABLE 0x00000008
483 #define HWA_COMMONCONFIG_MASK_BPMRATE 0x00000010
484 #define HWA_COMMONCONFIG_MASK_BPMPATTERN 0x00000020
485 #define HWA_COMMONCONFIG_MASK_INTERFERENCETHRESHOLD 0x00000040
486 #define HWA_COMMONCONFIG_MASK_TWIDDITHERENABLE 0x00000080
487 #define HWA_COMMONCONFIG_MASK_LFSRSEED 0x00000100
488 #define HWA_COMMONCONFIG_MASK_FFTSUMDIV 0x00000200
489 #define HWA_COMMONCONFIG_MASK_CFARTHRESHOLDSCALE 0x00000400
490 #define HWA_COMMONCONFIG_MASK_I_CMULT_SCALE 0x00001000
491 #define HWA_COMMONCONFIG_MASK_Q_CMULT_SCALE 0x00002000
492 #define HWA_COMMONCONFIG_MASK_DCEST_SCALESHIFT 0x00004000
493 #define HWA_COMMONCONFIG_MASK_DCSUB_SWVAL 0x00008000
494 // #define HWA_COMMONCONFIG_MASK_INTERFMAG_THRESHOLD ((uint64_t)0x00000400U)
495 // #define HWA_COMMONCONFIG_MASK_INTERFMAGDIFF_THRESHOLD ((uint64_t)0x00000800U)
496 // #define HWA_COMMONCONFIG_MASK_INTERFSUM_MAG ((uint64_t)0x00001000U)
497 // #define HWA_COMMONCONFIG_MASK_INTERFSUM_MAGDIFF ((uint64_t)0x00002000U)
498 // #define HWA_COMMONCONFIG_MASK_COMPLEXMULT_SCALEARRAY ((uint64_t)0x00004000U)
501 // #define HWA_COMMONCONFIG_MASK_COMPLEXMULT_SCALECONST ((uint64_t)0x00008000U)
504 // #define HWA_COMMONCONFIG_MASK_INTERF_MITG_WINDOW_PARAM ((uint64_t)0x40000000U)
505 #define HWA_COMMONCONFIG_MASK_EGECOMRESS_KPARAM 0x00004000
514 #define HWA_COMPLEX_MULTIPLY_MODE_DISABLE ((uint8_t)0U)
515 #define HWA_COMPLEX_MULTIPLY_MODE_FREQ_SHIFTER ((uint8_t)1U)
516 #define HWA_COMPLEX_MULTIPLY_MODE_SLOW_DFT ((uint8_t)2U)
517 #define HWA_COMPLEX_MULTIPLY_MODE_FFT_STITCHING ((uint8_t)3U)
518 #define HWA_COMPLEX_MULTIPLY_MODE_MAG_SQUARED ((uint8_t)4U)
519 #define HWA_COMPLEX_MULTIPLY_MODE_SCALAR_MULT ((uint8_t)5U)
520 #define HWA_COMPLEX_MULTIPLY_MODE_VECTOR_MULT ((uint8_t)6U)
521 #define HWA_COMPLEX_MULTIPLY_MODE_VECTOR_MULT_2 ((uint8_t)7U)
530 #define HWA_DCEST_INTERFSUM_RESET_MODE_NOUPDATE ((uint8_t)0U)
531 #define HWA_DCEST_INTERFSUM_RESET_MODE_SOFTWARERESET ((uint8_t)1U)
532 #define HWA_DCEST_INTERFSUM_RESET_MODE_PARAMRESET ((uint8_t)2U)
533 #define HWA_DCEST_INTERFSUM_RESET_MODE_PARAMRESET_ZEROLPCONT ((uint8_t)3U)
541 #define HWA_DCSUB_SELECT_DCSW ((uint8_t)0U)
542 #define HWA_DCSUB_SELECT_DCEST ((uint8_t)1U)
551 #define HWA_FFT_STITCHING_TWID_PATTERN_2K ((uint8_t)0U)
552 #define HWA_FFT_STITCHING_TWID_PATTERN_4K ((uint8_t)1U)
557 /* ========================================================================== */
558 /* Structures and Enums */
559 /* ========================================================================== */
560 
564 typedef void* HWA_Handle;
565 
572 typedef void (*HWA_ParamDone_IntHandlerFuncPTR)(uint32_t paramSet, void * arg);
573 
580 typedef void (*HWA_Done_IntHandlerFuncPTR)(void * arg);
581 
588 typedef struct HWA_Attrs_t {
589  uint32_t instanceNum;
590  volatile uint32_t ctrlBaseAddr;
591  volatile uint32_t paramBaseAddr;
592  volatile uint32_t ramBaseAddr;
593  volatile uint32_t dssBaseAddr;
594  uint32_t numHwaParamSets;
595  uint32_t intNumParamSet;
596  uint32_t intNumDone;
597  uint32_t numDmaChannels;
598  volatile uint32_t accelMemBaseAddr;
599  uint32_t accelMemSize;
603 } HWA_Attrs;
604 
611 typedef struct HWA_RAMAttrs_t
612 {
613  uint32_t ramBaseAddress;
614  uint32_t ramSizeInBytes;
615 } HWA_RAMAttrs;
616 
628 typedef struct HWA_SrcDMAConfig_t {
629  uint32_t srcAddr;
630  uint32_t destAddr;
631  uint16_t aCnt;
632  uint16_t bCnt;
633  uint16_t cCnt;
635 
642 typedef struct HWA_CommonConfig_t {
643  uint32_t configMask;
646  uint16_t numLoops;
649  uint8_t paramStartIdx;
652  uint8_t paramStopIdx;
656  struct {
657  uint8_t fft1DEnable;
663  uint16_t bpmRate;
666  uint32_t bpmPattern[2];
679  uint32_t lfsrSeed;
680  uint8_t fftSumDiv;
683  } fftConfig;
684 
685  struct {
686  uint16_t scale;
692  uint8_t shift;
697  } dcEstimateConfig;
698 
699  struct
700  {
701  int32_t swIVal[HWA_NUM_RXCHANNELS];
706  int32_t swQVal[HWA_NUM_RXCHANNELS];
710  } dcSubtractConfig;
711 
712 
713  // struct {
714 
715  // uint32_t thresholdMagSw[HWA_NUM_RXCHANNELS]; /**< 24-bit value: Interference zero-out threshold - is used to zero-out sample(s),
716  // whose magnitude (24-bit absolute value of the 24-bit complex input) is very
717  // high, prior to computing the FFT
718  // The \ref HWA_PreProcessing::thresholdEnable is enabled, and
719  // \ref HWA_PreProcessing::thresholdSelect is set to HWA_INTERFTHRESH_SELECT_SW
720  // in the intended paramset for this threshold to be used
721  // sets in INTERFTHRESH_MAGn_VAL register */
722 
723  // uint32_t thresholdMagDiffSw[HWA_NUM_RXCHANNELS]; /**< 24-bit value: Interference zero-out threshold, is used to zero-out sample(s),
724  // whose magnitude diff (24-bit absolute value of the 24-bit complex input)
725  // is very high, prior to computing the FFT
726  // if the \ref HWA_PreProcessing::thresholdEnable is enabled and
727  // \ref HWA_PreProcessing::thresholdSelect is set to HWA_INTERFTHRESH_SELECT_SW
728  // in the intended paramset for this threshold to be used
729  // sets in INTERFTHRESH_MAGDIFFn_VAL registers */
730 
731  // uint8_t sumMagScale; /**< 8 bits value:unsigned 8 bits, 5 integer bits, and 3 fractional bits,
732  // applied to INTERSUM_MAGn from interference statistics block,
733  // default value is 8, corresponding to scale 1.0
734  // if the \ref HWA_PreProcessing::resetMode is set
735  // to HWA_DCEST_INTERFSUM_RESET_MODE_PARAMRESET or HWA_DCEST_INTERFSUM_RESET_MODE_PARAMRESET_ZEROLPCONT
736  // sets INTERFSUM_MAG_SCALE in INTERFSTATS_CTRL register */
737 
738  // int8_t sumMagShift; /**< 3 bits: right shift after scaling, the shift value is 2^(3+6+interfsumMagShift)
739  // if the \ref HWA_PreProcessing::resetMode is set
740  // to HWA_DCEST_INTERFSUM_RESET_MODE_PARAMRESET or HWA_DCEST_INTERFSUM_RESET_MODE_PARAMRESET_ZEROLPCONT
741  // sets INTERFSUM_MAG_SHIFT in INTERFSTATS_CTRL register */
742 
743  // uint8_t sumMagDiffScale; /**< 8 bits: similar to interfsumMagScale, applied to INTERSUM_MAGDIFFn from interference statistics block,
744  // if the \ref HWA_PreProcessing::resetMode is set
745  // to HWA_DCEST_INTERFSUM_RESET_MODE_PARAMRESET or HWA_DCEST_INTERFSUM_RESET_MODE_PARAMRESET_ZEROLPCONT
746  // sets INTERFSUM_MAGDIFF_SCALE in INTERFSTATS_CTRL register */
747 
748  // int8_t sumMagDiffShift; /**< 3 bits: right shift after scaling, similar to interfsumMagShift
749  // if the \ref HWA_PreProcessing::resetMode is set
750  // to HWA_DCEST_INTERFSUM_RESET_MODE_PARAMRESET or HWA_DCEST_INTERFSUM_RESET_MODE_PARAMRESET_ZEROLPCONT
751  // sets INTERFSUM_MAGDIFF_SHIFT in INTERFSTATS_CTRL register */
752 
753  // uint8_t mitigationWindowParam[HWA_NUM_INTERFMITG_WINARRAY];
754  // /**< 5 bit value: unsigned 5 bit integer, set the window parameters
755  // if \ref HWA_PreProcessing::enable is enabled, and
756  // \ref HWA_PreProcessing::pathSelect is set to HWA_INTERFMITIGATION_PATH_WINDOWZEROOUT
757  // sets the INTF_MITG_WINDOW_PARAM_0_INTF_MITG_WINDOW_PARAM_0 in
758  // INTF_MITG_WINDOW_PARAM_x register */
759  // } interfConfig;
760 
761 
762  struct {
763 
764  int32_t Iscale[HWA_NUM_RXCHANNELS];
768  int32_t Qscale[HWA_NUM_RXCHANNELS];
780  uint8_t recWindowReset;
783  } complexMultiplyConfig;
784 
785 
786  struct {
793  } cfarConfig;
794 
795  struct {
796  uint32_t i_cmult_scale;
799  uint32_t q_cmult_scale;
802  } scalarMult;
803 
804  struct {
805  uint8_t EGEKparam[HWA_CMP_K_ARR_LEN];
807  } compressMode;
808 
810 
817 typedef struct HWA_SourceConfig_t {
818  uint16_t srcAddr;
823  uint16_t srcAcnt;
827  int16_t srcAIdx;
830  uint16_t srcBcnt;
832  int16_t srcBIdx;
836  uint16_t srcShift;
843  uint8_t srcRealComplex;
846  uint8_t srcWidth;
849  uint8_t srcSign;
855  uint8_t srcConjugate;
863  uint8_t srcScale;
872  uint8_t bpmEnable;
877  uint8_t bpmPhase;
881 
888 typedef struct HWA_DestConfig_t {
889  uint16_t dstAddr;
894  uint16_t dstAcnt;
898  int16_t dstAIdx;
901  int16_t dstBIdx;
905  uint8_t dstRealComplex;
908  uint8_t dstWidth;
911  uint8_t dstSign;
917  uint8_t dstConjugate;
925  uint8_t dstScale;
931  uint16_t dstSkipInit;
936 
943 typedef struct HWA_AccelModeFFT_t{
944  uint8_t fftEn;
949  uint8_t fftSize;
953  uint16_t butterflyScaling;
959  uint8_t interfZeroOutEn;
964  uint8_t windowEn;
967  uint16_t windowStart;
972  uint8_t winSymm;
981  uint8_t magLogEn;
984  uint8_t fftOutMode;
991 
999 typedef struct HWA_AccelModeCompress_t{
1005  uint8_t method;
1009  uint8_t ditherEnable;
1012  uint8_t passSelect;
1015  uint8_t headerEnable;
1021  uint8_t scaleFactorBW;
1030 
1037 typedef struct HWA_ComplexMultiply_t {
1038  uint8_t mode;
1041  union {
1042  uint16_t twidIncrement;
1047  struct {
1048  uint16_t startFreq;
1051  uint8_t freqIncrement;
1056  } dft;
1064  }cmpMulArgs;
1066 
1073 typedef struct HWA_PreProcessing_t {
1074 
1075  uint8_t dcEstResetMode;
1080  uint8_t dcSubEnable;
1084  uint8_t dcSubSelect;
1087  // struct {
1088  // uint8_t thresholdEnable; /**< enable/disable interference marking out, see \ref HWA_FEATURE_BIT macros for correct values
1089  // if set into HWA_FEATURE_BIT_DISABLE to disable the interference localization.
1090  // sets the bits INTERFTHRESH_EN of the register PREPROC in paramset */
1091 
1092  // uint8_t thresholdMode; /**< specifies interference threshold mode, see \ref HWA_INTERFTHRESH_MODE macros
1093  // for the correct values
1094  // sets the bits INTERFTHRESH_MODE of the register PREPROC in paramset */
1095 
1096  // uint8_t thresholdSelect; /**< select the source of the threshold, see \ref HWA_INTERFTHRESH_SELECT macros
1097  // for the correct values
1098  // sets bits INTERFTHRESH_SELECT of the register PREPROC in paramset */
1099 
1100 
1101  // } interfLocalize;
1102 
1103  // struct {
1104  // uint8_t resetMode; /**< control reset behavior for all mag sum and magdiff sum accumulators,
1105  // if it is set to HWA_DCEST_INTERFSUM_RESET_MODE_NOUPDATE, it is bypassed.
1106  // see \ref HWA_DCEST_INTERFSUM_RESET_MODE macros for the correct values
1107  // sets the INTERFSUM_MAG_RESET bits of the register PREPROC in paramset */
1108 
1109  // } interfStat;
1110 
1111  // struct {
1112 
1113  // uint8_t enable; /**< enable/disable interference mitigation path, see \ref HWA_FEATURE_BIT macros
1114  // for the correct values
1115  // sets the bits INTF_MITG_EN of register PRE_PROCESSING in paramset */
1116 
1117  // uint8_t countThreshold; /**< 5 bits value: the number of non-zero IIB within the hysteresis window
1118  // should exceed the threshold for the CUT to be considered to be affected
1119  // by interference. valid values are from 0 to 31.
1120  // sets the bits INTF_MITG_CNTTHRESH of the register PRE_PROCESSING in paramset */
1121 
1122  // uint8_t pathSelect; /**< see \ref HWA_INTERFMITIGATION_PATH_SELECT macros for the correct values, select
1123  // one of the three paths in the interference mitigation module
1124  // sets the bits INFT_MITG_PATH_SEL of register PRE_PROCESSING in paramset */
1125 
1126  // uint8_t leftHystOrder; /**< 4 bits value: the length of the IIB array considered on the left side of the CUT,
1127  // valid values from 0 to 15.
1128  // sets the bits INTF_MITG_LEFT_HYST_ORD of the register PRE_PROCESSING in paramset */
1129 
1130  // uint8_t rightHystOrder; /**< 4 bits value: he length of the IIB array considered on the right side of the CUT,
1131  // valid values from 0 to 15.
1132  // sets the bits INTF_MITG_RIGHT_HYST_ORD of the register PRE_PROCESSING in paramset */
1133 
1134  // } interfMitigation;
1135 
1136  // uint8_t chanCombEn; /**< enable/disable synthetic channel combining, see \ref HWA_FEATURE_BIT
1137  // macros for the correct values. if set into HWA_FEATURE_BIT_DISABLE to disable
1138  // the channel combining.
1139  // sets the bits CHANCOMB_EN of the register PREPROC in paramset */
1140 
1141  // uint8_t zeroInsertEn; /**< enable/disable zero-insertion, fill the zeros at arbitrary
1142  // locations in the A-dimension, prior to windowing and FFT, only applied to FFTSIZE
1143  // upto 256. see \ref HWA_FEATURE_BIT macros for the correct values
1144  // sets the bits ZEROINSERT_EN of register BFLYFFT in paramset */
1145 
1146  //HWA_ComplexMultiply complexMultiply; /**< Complex multiply related params used when \ref HWA_ParamConfig::accelMode
1147  // is not \ref HWA_ACCELMODE_CFAR */
1149 
1156 typedef struct HWA_AccelModeCFAR_t{
1167  uint8_t numGuardCells;
1169  uint8_t nAvgDivFactor;
1175  uint8_t nAvgMode;
1178  uint8_t operMode;
1180  uint8_t outputMode;
1183  uint8_t peakGroupEn;
1191  uint8_t cyclicModeEn;
1197 
1204 typedef struct HWA_ParamConfig_t {
1205  uint8_t triggerMode;
1207  uint8_t dmaTriggerSrc;
1211  uint8_t accelMode;
1217  union {
1221  }accelModeArgs;
1222 
1227 
1234 typedef struct HWA_InterruptConfig_t {
1241  struct {
1243  void *callbackArg;
1244  } cpu;
1245  struct {
1246  uint8_t dstChannel;
1248  } dma;
1250 
1257 typedef struct HWA_Stats_t {
1258  uint32_t maxValue;
1259  uint16_t maxIndex;
1260  uint8_t iSumMSB;
1261  uint8_t qSumMSB;
1262  uint32_t iSumLSB;
1263  uint32_t qSumLSB;
1264 } HWA_Stats;
1265 
1272 typedef struct HWA_DebugStats_t {
1278  uint16_t currentLoopCount;
1280  uint16_t dmaTrigStatus;
1282  uint8_t swTrigStatus;
1284 
1291 typedef struct HWA_MemInfo_t {
1292  uint32_t baseAddress;
1293  uint16_t bankSize;
1294  uint16_t numBanks;
1295 }HWA_MemInfo;
1296 
1301 typedef struct HWA_InterruptPriority_t {
1302 
1303  uint32_t backgroundDone;
1304  //TO DO: CLEAN uint32_t ALTDone; /**< \brief HWA interrupt priority for the ALT thread done */
1305  uint32_t paramsetDone1;
1306  uint32_t paramsetDone2;
1309 
1314 typedef struct HWA_OpenConfig_t {
1315 
1329 } HWA_OpenConfig;
1330  /* end of HWA_DRIVER_EXTERNAL_DATA_STRUCTURE*/
1332 
1333 /* ========================================================================== */
1334 /* Internal/Private Structure Declarations */
1335 /* ========================================================================== */
1336 
1345 typedef struct HWA_InterruptCtx_t {
1347  void *callbackArg;
1349 
1358 typedef struct HWA_DoneInterruptCtx_t {
1359  bool bIsEnabled;
1361  void *callbackArg;
1363 
1367 typedef struct HWA_Driver_t {
1371  uint32_t instanceNum;
1375  uint32_t refCnt;
1391 
1396 
1401 
1405  //TO DO: CLEAN HwiP_Object hwiHandleParamSetALT;
1406 
1410  //TO DO: CLEAN HwiP_Object hwiHandleDoneALT;
1411 
1412 
1416  HWA_InterruptCtx *interruptCtxParamSet; /*[NUM_HWA_PARAMSETS_PER_INSTANCE];*/
1417 
1422 
1427 } HWA_Object;
1428 
1430 extern HWA_Attrs gHwaAttrs[];
1434 extern HWA_Object gHwaObject[];
1436 extern HWA_Object *gHwaObjectPtr[];
1438 extern uint32_t gHwaConfigNum;
1439 
1440 /* ========================================================================== */
1441 /* Global Variables Declarations */
1442 /* ========================================================================== */
1443 
1444 /* None */
1445 
1446 /* ========================================================================== */
1447 /* Function Declarations */
1448 /* ========================================================================== */
1449 
1460 extern void HWA_init(void);
1461 
1465 extern void HWA_deinit(void);
1466 
1484 extern HWA_Handle HWA_open(uint32_t index, HWA_OpenConfig * hwaCfg, int32_t* errCode);
1485 
1497 extern int32_t HWA_close(HWA_Handle handle);
1498 
1510 extern int32_t HWA_reset(HWA_Handle handle);
1511 
1512 
1525 extern DSSHWACCRegs *HWA_getCommonCtrlAddr(HWA_Handle handle);
1526 
1541 extern DSSHWACCPARAMRegs *HWA_getParamSetAddr(HWA_Handle handle, uint8_t paramsetIdx);
1542 
1557 extern int32_t HWA_configCommon(HWA_Handle handle, HWA_CommonConfig *commonConfig);
1558 
1578 extern int32_t HWA_configParamSet(HWA_Handle handle, uint8_t paramsetIdx, HWA_ParamConfig *paramConfig, HWA_SrcDMAConfig *dmaConfig);
1579 
1602 extern int32_t HWA_getDMAconfig(HWA_Handle handle, uint8_t dmaTriggerSrc, HWA_SrcDMAConfig *dmaConfig);
1617 extern int32_t HWA_getCfarPeakCntRegAddress(HWA_Handle handle, uint32_t *peakCntAddr);
1618 
1619 
1639 extern int32_t HWA_configRam(HWA_Handle handle, uint8_t ramType, uint8_t *data, uint32_t dataSize, uint32_t startIdx);
1640 
1658 extern int32_t HWA_enableParamSetInterrupt(HWA_Handle handle, uint8_t paramsetIdx, HWA_InterruptConfig *intrConfig);
1659 
1660 
1676 extern int32_t HWA_enableDoneInterrupt(HWA_Handle handle, HWA_Done_IntHandlerFuncPTR callbackFn, void * callbackArg);
1677 
1693 extern int32_t HWA_disableParamSetInterrupt(HWA_Handle handle, uint8_t paramsetIdx, uint8_t interruptTypeFlag);
1694 
1706 extern int32_t HWA_disableDoneInterrupt(HWA_Handle handle);
1707 
1722 extern int32_t HWA_enable(HWA_Handle handle, uint8_t flagEnDis);
1723 
1724 
1739 extern int32_t HWA_setSoftwareTrigger(HWA_Handle handle);
1740 
1741 
1755 extern int32_t HWA_setDMA2ACCManualTrig(HWA_Handle handle, uint8_t idx);
1756 
1772 extern int32_t HWA_setSourceAddress(HWA_Handle handle, uint16_t paramIdx, uint32_t sourceAddress);
1773 
1792 extern int32_t HWA_readStatsReg(HWA_Handle handle, HWA_Stats *pStats, uint8_t numIter);
1793 
1811 extern int32_t HWA_readCFARPeakCountReg(HWA_Handle handle, uint8_t *pbuf, uint8_t size);
1812 
1827 extern int32_t HWA_readDebugReg(HWA_Handle handle, HWA_DebugStats *pStats);
1828 
1840 extern int32_t HWA_clearDebugReg(HWA_Handle handle);
1841 
1856 extern int32_t HWA_getHWAMemInfo(HWA_Handle handle, HWA_MemInfo *memInfo);
1857 
1875 extern int32_t HWA_getDMAChanIndex(HWA_Handle handle, uint8_t edmaChanId, uint8_t *hwaDestChan);
1876 
1892 extern int32_t HWA_getEDMAChanId(HWA_Handle handle, uint8_t hwaDMAdestChan);
1893 
1913 extern int32_t HWA_readDCEstimateReg(HWA_Handle handle, cmplx32ImRe_t *pbuf, uint8_t startIdx, uint8_t size);
1914 
1935 extern int32_t HWA_readIntfAccReg(HWA_Handle handle, uint64_t *accBuf, uint8_t type, uint8_t startIdx, uint8_t size);
1936 
1955 extern int32_t HWA_readDCAccReg(HWA_Handle handle, cmplx64ImRe_t *accbuf, uint8_t startIdx, uint8_t size);
1956 
1970 extern int32_t HWA_readInterfChirpCountReg(HWA_Handle handle, uint16_t *numInterfSamplesChirp);
1971 
1985 extern int32_t HWA_readInterfFrameCountReg(HWA_Handle handle, uint32_t *numInterfSamplesFrame);
1986 
2006 extern int32_t HWA_readInterfThreshReg(HWA_Handle handle, uint32_t *pbuf, uint8_t startIdx, uint8_t size, uint8_t type);
2007 
2020 //extern int32_t HWA_controlPeripheralSuspendMode(HWA_Handle handle, uint8_t flagEnDis);
2021  /* end of addgroup HWA_DRIVER_EXTERNAL_FUNCTION*/
2023 
2024 #ifdef __cplusplus
2025 }
2026 #endif
2027 
2028 #endif /* HWA_H_ */
2029 
2030 
HWA_disableDoneInterrupt
int32_t HWA_disableDoneInterrupt(HWA_Handle handle)
Function to disable the CPU interrupt after all programmed paramSets have been completed.
HWA_Object::interrupt1ParamSetMask
uint64_t interrupt1ParamSetMask
interrupt enable mask for background thread
Definition: hwa/v0/hwa.h:1421
HWA_Object::refCnt
uint32_t refCnt
HWA instance reference (open) count.
Definition: hwa/v0/hwa.h:1375
HWA_SourceConfig
HWA Paramset Config for Input Formatter/Source block.
Definition: hwa/v0/hwa.h:817
HWA_SrcDMAConfig::destAddr
uint32_t destAddr
Definition: hwa/v0/hwa.h:630
HWA_readInterfThreshReg
int32_t HWA_readInterfThreshReg(HWA_Handle handle, uint32_t *pbuf, uint8_t startIdx, uint8_t size, uint8_t type)
Function to read the interference statistics INTF_LOC_THRESH_MAG_VAL or INTF_LOC_THRESH_MAG_VAL regis...
HWA_enable
int32_t HWA_enable(HWA_Handle handle, uint8_t flagEnDis)
Function to enable the state machine of the HWA. This should be called after paramset and RAM have be...
HWA_reset
int32_t HWA_reset(HWA_Handle handle)
Function to reset the internal state machine of the HWA.
HWA_AccelModeCFAR::numNoiseSamplesRight
uint8_t numNoiseSamplesRight
Definition: hwa/v0/hwa.h:1162
HWA_ComplexMultiply::startFreq
uint16_t startFreq
Definition: hwa/v0/hwa.h:1048
HWA_AccelModeCFAR::nAvgDivFactor
uint8_t nAvgDivFactor
Definition: hwa/v0/hwa.h:1169
HWA_Done_IntHandlerFuncPTR
void(* HWA_Done_IntHandlerFuncPTR)(void *arg)
HWA Interrupt callback function after all paramsets completion.
Definition: hwa/v0/hwa.h:580
HWA_AccelModeCFAR::peakGroupEn
uint8_t peakGroupEn
Definition: hwa/v0/hwa.h:1183
HWA_AccelModeFFT
HWA Paramset Config for FFT block.
Definition: hwa/v0/hwa.h:943
HWA_SourceConfig::srcConjugate
uint8_t srcConjugate
Definition: hwa/v0/hwa.h:855
HWA_setDMA2ACCManualTrig
int32_t HWA_setDMA2ACCManualTrig(HWA_Handle handle, uint8_t idx)
Function to manually trigger the execution of the state machine waiting on DMA via software.
HWA_Stats::maxIndex
uint16_t maxIndex
Definition: hwa/v0/hwa.h:1259
HWA_DestConfig::dstSkipInit
uint16_t dstSkipInit
Definition: hwa/v0/hwa.h:931
HWA_clearDebugReg
int32_t HWA_clearDebugReg(HWA_Handle handle)
Function to clear the debug registers (acc_trig_in_clr)
HWA_MemInfo
HWA Local memory Information.
Definition: hwa/v0/hwa.h:1291
HWA_ParamConfig::dmaTriggerSrc
uint8_t dmaTriggerSrc
Definition: hwa/v0/hwa.h:1207
HWA_Stats::iSumLSB
uint32_t iSumLSB
Definition: hwa/v0/hwa.h:1262
gHwaConfigNum
uint32_t gHwaConfigNum
Externally defined driver configuration array size.
HWA_SrcDMAConfig::srcAddr
uint32_t srcAddr
Definition: hwa/v0/hwa.h:629
HWA_open
HWA_Handle HWA_open(uint32_t index, HWA_OpenConfig *hwaCfg, int32_t *errCode)
Function to initialize HWA specified by the particular index value.
HWA_MemInfo::bankSize
uint16_t bankSize
Definition: hwa/v0/hwa.h:1293
HWA_SourceConfig::bpmEnable
uint8_t bpmEnable
Definition: hwa/v0/hwa.h:872
HWA_AccelModeCompress::passSelect
uint8_t passSelect
Definition: hwa/v0/hwa.h:1012
HWA_getDMAChanIndex
int32_t HWA_getDMAChanIndex(HWA_Handle handle, uint8_t edmaChanId, uint8_t *hwaDestChan)
Function to get the dma destination index with a given EDMA channel number This function assumes the ...
HWA_enableParamSetInterrupt
int32_t HWA_enableParamSetInterrupt(HWA_Handle handle, uint8_t paramsetIdx, HWA_InterruptConfig *intrConfig)
Function to enable the CPU and/or DMA interrupt after a paramSet completion. The CPU interrupt for ev...
HWA_enableDoneInterrupt
int32_t HWA_enableDoneInterrupt(HWA_Handle handle, HWA_Done_IntHandlerFuncPTR callbackFn, void *callbackArg)
Function to enable the CPU interrupt after all programmed paramSets have been completed in the backgr...
HWA_CommonConfig::shift
uint8_t shift
Definition: hwa/v0/hwa.h:692
HWA_InterruptPriority::backgroundDone
uint32_t backgroundDone
HWA interrupt priority for the background thread done.
Definition: hwa/v0/hwa.h:1303
HWA_AccelModeCompress::headerEnable
uint8_t headerEnable
Definition: hwa/v0/hwa.h:1015
HWA_ComplexMultiply
HWA Paramset Config for ComplexMultiply block.
Definition: hwa/v0/hwa.h:1037
HWA_ParamConfig::fftMode
HWA_AccelModeFFT fftMode
Definition: hwa/v0/hwa.h:1218
HWA_SourceConfig::srcWidth
uint8_t srcWidth
Definition: hwa/v0/hwa.h:846
HWA_Attrs::intNumDone
uint32_t intNumDone
Definition: hwa/v0/hwa.h:596
HWA_MemInfo::baseAddress
uint32_t baseAddress
Definition: hwa/v0/hwa.h:1292
HWA_AccelModeCFAR
HWA Paramset Config for CFAR block.
Definition: hwa/v0/hwa.h:1156
HWA_Attrs::numHwaParamSets
uint32_t numHwaParamSets
Definition: hwa/v0/hwa.h:594
HWA_InterruptConfig::dstChannel
uint8_t dstChannel
Definition: hwa/v0/hwa.h:1246
HWA_AccelModeCompress::method
uint8_t method
Definition: hwa/v0/hwa.h:1005
HWA_DestConfig::dstAddr
uint16_t dstAddr
Definition: hwa/v0/hwa.h:889
HWA_CommonConfig::numLoops
uint16_t numLoops
Definition: hwa/v0/hwa.h:646
HWA_DestConfig::dstConjugate
uint8_t dstConjugate
Definition: hwa/v0/hwa.h:917
HWA_InterruptPriority::paramsetDone1
uint32_t paramsetDone1
HWA interrupt priority for paramset done interrupt 1.
Definition: hwa/v0/hwa.h:1305
HWA_ComplexMultiply::freqIncrement
uint8_t freqIncrement
Definition: hwa/v0/hwa.h:1051
HWA_AccelModeCompress::compressDecompress
uint8_t compressDecompress
Definition: hwa/v0/hwa.h:1000
HWA_init
void HWA_init(void)
Function to initialize the HWA module.
gHwaAttrs
HWA_Attrs gHwaAttrs[]
Externally defined driver configuration array.
HWA_Attrs::ctrlBaseAddr
volatile uint32_t ctrlBaseAddr
Definition: hwa/v0/hwa.h:590
HWA_OpenConfig
HWA configuration structure, which describes the configuration information, needed for hwa handle ope...
Definition: hwa/v0/hwa.h:1314
HWA_Attrs::isConcurrentAccessAllowed
bool isConcurrentAccessAllowed
Definition: hwa/v0/hwa.h:600
HWA_InterruptConfig::interruptTypeFlag
uint8_t interruptTypeFlag
Definition: hwa/v0/hwa.h:1235
HWA_SrcDMAConfig::cCnt
uint16_t cCnt
Definition: hwa/v0/hwa.h:633
HWA_OpenConfig::interruptPriority
HWA_InterruptPriority interruptPriority
structure holds the HWA interrupt priorities. This structure is applicable for processors that suppor...
Definition: hwa/v0/hwa.h:1316
HWA_CommonConfig::paramStartIdx
uint8_t paramStartIdx
Definition: hwa/v0/hwa.h:649
HWA_DestConfig::dstWidth
uint8_t dstWidth
Definition: hwa/v0/hwa.h:908
HWA_CommonConfig::twidDitherEnable
uint8_t twidDitherEnable
Definition: hwa/v0/hwa.h:674
HWA_getCfarPeakCntRegAddress
int32_t HWA_getCfarPeakCntRegAddress(HWA_Handle handle, uint32_t *peakCntAddr)
Function to get the address of CFAR Peak Count register.
HWA_DebugStats::dfePingPongStatus
uint8_t dfePingPongStatus
Definition: hwa/v0/hwa.h:1281
HWA_PreProcessing::dcSubEnable
uint8_t dcSubEnable
Definition: hwa/v0/hwa.h:1080
HWA_getDMAconfig
int32_t HWA_getDMAconfig(HWA_Handle handle, uint8_t dmaTriggerSrc, HWA_SrcDMAConfig *dmaConfig)
Function to get the config to program the DMA for a given DMA Trigger channel. Application should use...
HWA_Object::paramSetMapInProgress
uint16_t paramSetMapInProgress
HWA paramset config is in progress [used as bitmap]. Protects Paramset register access in HWA_configP...
Definition: hwa/v0/hwa.h:1386
HWA_DebugStats
HWA Debug statistics.
Definition: hwa/v0/hwa.h:1272
HWA_readInterfFrameCountReg
int32_t HWA_readInterfFrameCountReg(HWA_Handle handle, uint32_t *numInterfSamplesFrame)
Function to read the number of samples that exceeded the threshold in a frame.
HWA_AccelModeCFAR::numNoiseSamplesLeft
uint8_t numNoiseSamplesLeft
Definition: hwa/v0/hwa.h:1157
HWA_Object::hwiHandleParamSet
HwiP_Object hwiHandleParamSet
Registered Interrupt Handler for each paramset completion.
Definition: hwa/v0/hwa.h:1395
HWA_Stats::qSumMSB
uint8_t qSumMSB
Definition: hwa/v0/hwa.h:1261
HWA_CommonConfig::fft1DEnable
uint8_t fft1DEnable
Definition: hwa/v0/hwa.h:657
HWA_close
int32_t HWA_close(HWA_Handle handle)
Function to close a HWA peripheral specified by the HWA handle.
HWA_ParamConfig::triggerMode
uint8_t triggerMode
Definition: hwa/v0/hwa.h:1205
HWA_DebugStats::currentParamSet
uint8_t currentParamSet
Definition: hwa/v0/hwa.h:1273
HWA_readCFARPeakCountReg
int32_t HWA_readCFARPeakCountReg(HWA_Handle handle, uint8_t *pbuf, uint8_t size)
Function to read the PEAKCNT register.
HWA_AccelModeCFAR::cyclicModeEn
uint8_t cyclicModeEn
Definition: hwa/v0/hwa.h:1191
HWA_DoneInterruptCtx::callbackArg
void * callbackArg
Definition: hwa/v0/hwa.h:1361
HWA_CommonConfig::paramStopIdx
uint8_t paramStopIdx
Definition: hwa/v0/hwa.h:652
HWA_InterruptConfig::callbackFn
HWA_ParamDone_IntHandlerFuncPTR callbackFn
Definition: hwa/v0/hwa.h:1242
HWA_PreProcessing::dcEstResetMode
uint8_t dcEstResetMode
Definition: hwa/v0/hwa.h:1075
HWA_getParamSetAddr
DSSHWACCPARAMRegs * HWA_getParamSetAddr(HWA_Handle handle, uint8_t paramsetIdx)
Function to returns the HWA paramSet base address.
HWA_readDCAccReg
int32_t HWA_readDCAccReg(HWA_Handle handle, cmplx64ImRe_t *accbuf, uint8_t startIdx, uint8_t size)
Function to read the DC estimation accumulator register,.
HWA_Attrs::accelMemBaseAddr
volatile uint32_t accelMemBaseAddr
Definition: hwa/v0/hwa.h:598
HWA_AccelModeFFT::butterflyScaling
uint16_t butterflyScaling
Definition: hwa/v0/hwa.h:953
HWA_getEDMAChanId
int32_t HWA_getEDMAChanId(HWA_Handle handle, uint8_t hwaDMAdestChan)
Function to get the edma EDMA channel number from a given HWA paramset destination channel....
HWA_SrcDMAConfig::aCnt
uint16_t aCnt
Definition: hwa/v0/hwa.h:631
HWA_Object::interruptCtxParamSet
HWA_InterruptCtx * interruptCtxParamSet
Registered Interrupt Handler for each paramset completion in the ALT thread.
Definition: hwa/v0/hwa.h:1416
HWA_AccelModeCFAR::nAvgMode
uint8_t nAvgMode
Definition: hwa/v0/hwa.h:1175
HWA_InterruptCtx::callbackFn
HWA_ParamDone_IntHandlerFuncPTR callbackFn
Definition: hwa/v0/hwa.h:1346
HWA_SourceConfig::srcBIdx
int16_t srcBIdx
Definition: hwa/v0/hwa.h:832
HWA_AccelModeFFT::fftEn
uint8_t fftEn
Definition: hwa/v0/hwa.h:944
HWA_DebugStats::dmaTrigStatus
uint16_t dmaTrigStatus
Definition: hwa/v0/hwa.h:1280
HWA_Object::hwiHandleDone
HwiP_Object hwiHandleDone
Registered Interrupt Handler for interrupt at the end of group of paramsets.
Definition: hwa/v0/hwa.h:1400
HWA_getCommonCtrlAddr
DSSHWACCRegs * HWA_getCommonCtrlAddr(HWA_Handle handle)
Function to returns the HWA common control base address.
HWA_Attrs::ramBaseAddr
volatile uint32_t ramBaseAddr
Definition: hwa/v0/hwa.h:592
HWA_AccelModeCompress::EGEKarrayLength
uint8_t EGEKarrayLength
Definition: hwa/v0/hwa.h:1026
gHwaRamCfg
HWA_RAMAttrs gHwaRamCfg[HWA_NUM_RAMS]
Externally defined driver RAM configuration array.
HWA_ParamConfig::cfarMode
HWA_AccelModeCFAR cfarMode
Definition: hwa/v0/hwa.h:1219
HWA_PreProcessing
HWA Paramset Config for pre-processing block.
Definition: hwa/v0/hwa.h:1073
HWA_RAMAttrs::ramSizeInBytes
uint32_t ramSizeInBytes
Definition: hwa/v0/hwa.h:614
HWA_SourceConfig::srcBcnt
uint16_t srcBcnt
Definition: hwa/v0/hwa.h:830
HWA_PreProcessing::dcSubSelect
uint8_t dcSubSelect
Definition: hwa/v0/hwa.h:1084
HWA_AccelModeCFAR::operMode
uint8_t operMode
Definition: hwa/v0/hwa.h:1178
HWA_AccelModeFFT::interfZeroOutEn
uint8_t interfZeroOutEn
Definition: hwa/v0/hwa.h:959
HWA_CommonConfig::interferenceThreshold
uint32_t interferenceThreshold
Definition: hwa/v0/hwa.h:669
HWA_CommonConfig::fftSumDiv
uint8_t fftSumDiv
Definition: hwa/v0/hwa.h:680
HWA_configCommon
int32_t HWA_configCommon(HWA_Handle handle, HWA_CommonConfig *commonConfig)
Function to set the common HWA configuration parameters needed for the next operations/iterations/par...
HwiP.h
HWA_NUM_RXCHANNELS
#define HWA_NUM_RXCHANNELS
Number of RX channels in pre-processing block.
Definition: hwa/v0/hwa.h:175
HWA_CommonConfig::configMask
uint32_t configMask
Definition: hwa/v0/hwa.h:643
HWA_DebugStats::swTrigStatus
uint8_t swTrigStatus
Definition: hwa/v0/hwa.h:1282
HWA_Attrs::numDmaChannels
uint32_t numDmaChannels
Definition: hwa/v0/hwa.h:597
HWA_getHWAMemInfo
int32_t HWA_getHWAMemInfo(HWA_Handle handle, HWA_MemInfo *memInfo)
Function to get HWA processing Memory information including address, size and number of banks.
gHwaObject
HWA_Object gHwaObject[]
Externally defined driver object.
HWA_configRam
int32_t HWA_configRam(HWA_Handle handle, uint8_t ramType, uint8_t *data, uint32_t dataSize, uint32_t startIdx)
Function to set the HWA RAM : HWA_RAM_TYPE_WINDOW_RAM, HWA_RAM_TYPE_VECTORMULTIPLY_RAM,...
HWA_AccelModeFFT::winSymm
uint8_t winSymm
Definition: hwa/v0/hwa.h:972
HWA_SourceConfig::srcSign
uint8_t srcSign
Definition: hwa/v0/hwa.h:849
HWA_InterruptPriority
HWA interrupt priority for HWA background thread done, ALT thread done, paramset done interrupt 1 and...
Definition: hwa/v0/hwa.h:1301
HWA_SourceConfig::srcScale
uint8_t srcScale
Definition: hwa/v0/hwa.h:863
HWA_ParamDone_IntHandlerFuncPTR
void(* HWA_ParamDone_IntHandlerFuncPTR)(uint32_t paramSet, void *arg)
HWA Interrupt callback function after every paramset completion.
Definition: hwa/v0/hwa.h:572
HWA_ParamConfig::compressMode
HWA_AccelModeCompress compressMode
Definition: hwa/v0/hwa.h:1220
HWA_AccelModeFFT::magLogEn
uint8_t magLogEn
Definition: hwa/v0/hwa.h:981
HWA_Attrs::accelMemSize
uint32_t accelMemSize
Definition: hwa/v0/hwa.h:599
HWA_configParamSet
int32_t HWA_configParamSet(HWA_Handle handle, uint8_t paramsetIdx, HWA_ParamConfig *paramConfig, HWA_SrcDMAConfig *dmaConfig)
Function to set the HWA configuration parameters for a given paramSet.
HWA_SourceConfig::srcRealComplex
uint8_t srcRealComplex
Definition: hwa/v0/hwa.h:843
HWA_AccelModeCFAR::numGuardCells
uint8_t numGuardCells
Definition: hwa/v0/hwa.h:1167
HWA_InterruptConfig
HWA Interrupt Config.
Definition: hwa/v0/hwa.h:1234
HWA_ComplexMultiply::twidIncrement
uint16_t twidIncrement
Definition: hwa/v0/hwa.h:1042
HWA_Stats::iSumMSB
uint8_t iSumMSB
Definition: hwa/v0/hwa.h:1260
HWA_SrcDMAConfig
Source trigger DMA parameters.
Definition: hwa/v0/hwa.h:628
HWA_ComplexMultiply::mode
uint8_t mode
Definition: hwa/v0/hwa.h:1038
HWA_RAMAttrs::ramBaseAddress
uint32_t ramBaseAddress
Definition: hwa/v0/hwa.h:613
HWA_DoneInterruptCtx
HWA Interrupt context structure for done interrupt.
Definition: hwa/v0/hwa.h:1358
HWA_AccelModeFFT::fftOutMode
uint8_t fftOutMode
Definition: hwa/v0/hwa.h:984
HWA_CommonConfig::q_cmult_scale
uint32_t q_cmult_scale
Definition: hwa/v0/hwa.h:799
HWA_Attrs::paramBaseAddr
volatile uint32_t paramBaseAddr
Definition: hwa/v0/hwa.h:591
HWA_AccelModeFFT::windowStart
uint16_t windowStart
Definition: hwa/v0/hwa.h:967
HWA_CommonConfig
HWA Common Config.
Definition: hwa/v0/hwa.h:642
HWA_ParamConfig::dest
HWA_DestConfig dest
Definition: hwa/v0/hwa.h:1216
HWA_Attrs::dssBaseAddr
volatile uint32_t dssBaseAddr
Definition: hwa/v0/hwa.h:593
HWA_InterruptCtx::callbackArg
void * callbackArg
Definition: hwa/v0/hwa.h:1347
HWA_DestConfig::dstSign
uint8_t dstSign
Definition: hwa/v0/hwa.h:911
HWA_CommonConfig::twiddleDeltaFrac
int16_t twiddleDeltaFrac
Definition: hwa/v0/hwa.h:772
HWA_CMP_K_ARR_LEN
#define HWA_CMP_K_ARR_LEN
The length of EGE compression/decompression K-paramseters array.
Definition: hwa/v0/hwa.h:401
HWA_disableParamSetInterrupt
int32_t HWA_disableParamSetInterrupt(HWA_Handle handle, uint8_t paramsetIdx, uint8_t interruptTypeFlag)
Function to disable the CPU and/or DMA interrupt after a paramSet completion.
HWA_Object::configInProgress
uint8_t configInProgress
HWA instance config is in progress. Protects Common register acccess in HWA_configCommon() and HWA_co...
Definition: hwa/v0/hwa.h:1380
HWA_CommonConfig::bpmRate
uint16_t bpmRate
Definition: hwa/v0/hwa.h:663
HWA_CommonConfig::cfarThresholdScale
uint32_t cfarThresholdScale
Definition: hwa/v0/hwa.h:787
HwiP_Object
Opaque Hwi object used with the Hwi APIs.
Definition: HwiP.h:91
HWA_CommonConfig::recWindowReset
uint8_t recWindowReset
Definition: hwa/v0/hwa.h:780
HWA_AccelModeFFT::winInterpolateMode
uint8_t winInterpolateMode
Definition: hwa/v0/hwa.h:975
HWA_SourceConfig::srcShift
uint16_t srcShift
Definition: hwa/v0/hwa.h:836
HWA_DestConfig::dstAIdx
int16_t dstAIdx
Definition: hwa/v0/hwa.h:898
HWA_ParamConfig::preProcCfg
HWA_PreProcessing preProcCfg
Definition: hwa/v0/hwa.h:1225
HWA_ParamConfig
HWA Paramset Config.
Definition: hwa/v0/hwa.h:1204
HWA_InterruptPriority::paramsetDone2
uint32_t paramsetDone2
HWA interrupt priority for paramset done interrupt 2.
Definition: hwa/v0/hwa.h:1306
HWA_SourceConfig::srcAcnt
uint16_t srcAcnt
Definition: hwa/v0/hwa.h:823
HWA_CommonConfig::i_cmult_scale
uint32_t i_cmult_scale
Definition: hwa/v0/hwa.h:796
HWA_readDCEstimateReg
int32_t HWA_readDCEstimateReg(HWA_Handle handle, cmplx32ImRe_t *pbuf, uint8_t startIdx, uint8_t size)
Function to read the DC_EST_I/Q register.
HWA_AccelModeCompress
HWA Paramset Config for Compression/Decompression block.
Definition: hwa/v0/hwa.h:999
HWA_AccelModeCFAR::outputMode
uint8_t outputMode
Definition: hwa/v0/hwa.h:1180
HWA_InterruptConfig::callbackArg
void * callbackArg
Definition: hwa/v0/hwa.h:1243
HWA_ParamConfig::source
HWA_SourceConfig source
Definition: hwa/v0/hwa.h:1215
HWA_NUM_RAMS
#define HWA_NUM_RAMS
The number of RAM types in HWA.
Definition: hwa/v0/hwa.h:185
HWA_AccelModeCompress::ditherEnable
uint8_t ditherEnable
Definition: hwa/v0/hwa.h:1009
HWA_Object::interruptCtxDone
HWA_DoneInterruptCtx interruptCtxDone
interrupt context for all paramset done interrupt
Definition: hwa/v0/hwa.h:1426
HWA_DoneInterruptCtx::bIsEnabled
bool bIsEnabled
Definition: hwa/v0/hwa.h:1359
HWA_DestConfig::dstScale
uint8_t dstScale
Definition: hwa/v0/hwa.h:925
HWA_InterruptCtx
HWA Interrupt context structure for paramset done interrupt.
Definition: hwa/v0/hwa.h:1345
HWA_ComplexMultiply::twidFactorPattern
uint8_t twidFactorPattern
Definition: hwa/v0/hwa.h:1057
HWA_DestConfig::dstRealComplex
uint8_t dstRealComplex
Definition: hwa/v0/hwa.h:905
HWA_setSoftwareTrigger
int32_t HWA_setSoftwareTrigger(HWA_Handle handle)
Function to manually trigger the execution of the state machine via software, the software trigger th...
HWA_Attrs::intNumParamSet
uint32_t intNumParamSet
Definition: hwa/v0/hwa.h:595
HWA_Object::hwAttrs
HWA_Attrs const * hwAttrs
HWA Hardware related params.
Definition: hwa/v0/hwa.h:1390
HWA_AccelModeCompress::scaleFactorBW
uint8_t scaleFactorBW
Definition: hwa/v0/hwa.h:1021
HWA_SrcDMAConfig::bCnt
uint16_t bCnt
Definition: hwa/v0/hwa.h:632
HWA_ParamConfig::complexMultiply
HWA_ComplexMultiply complexMultiply
Definition: hwa/v0/hwa.h:1223
HWA_RAMAttrs
HWA RAM Parameters.
Definition: hwa/v0/hwa.h:612
HWA_readDebugReg
int32_t HWA_readDebugReg(HWA_Handle handle, HWA_DebugStats *pStats)
Function to read the debug registers (paramcurr, loopcou, acc_trig_in_stat)
HWA_CommonConfig::scale
uint16_t scale
Definition: hwa/v0/hwa.h:686
HWA_Attrs::instanceNum
uint32_t instanceNum
Definition: hwa/v0/hwa.h:589
HWA_DestConfig
HWA Paramset Config for Output Formatter/Destination block.
Definition: hwa/v0/hwa.h:888
HWA_Attrs::isCompressionEnginePresent
bool isCompressionEnginePresent
Definition: hwa/v0/hwa.h:602
HWA_readInterfChirpCountReg
int32_t HWA_readInterfChirpCountReg(HWA_Handle handle, uint16_t *numInterfSamplesChirp)
Function to read the number of samples that exceeded the threshold in a chirp.
HWA_Handle
void * HWA_Handle
A handle that is returned from a HWA_open() call.
Definition: hwa/v0/hwa.h:564
HWA_Object::instanceNum
uint32_t instanceNum
HWA instance number.
Definition: hwa/v0/hwa.h:1371
HWA_DoneInterruptCtx::callbackFn
HWA_Done_IntHandlerFuncPTR callbackFn
Definition: hwa/v0/hwa.h:1360
HWA_MemInfo::numBanks
uint16_t numBanks
Definition: hwa/v0/hwa.h:1294
HWA_SourceConfig::srcAddr
uint16_t srcAddr
Definition: hwa/v0/hwa.h:818
HWA_Stats
HWA Statistics from the STATISTICS block.
Definition: hwa/v0/hwa.h:1257
HWA_setSourceAddress
int32_t HWA_setSourceAddress(HWA_Handle handle, uint16_t paramIdx, uint32_t sourceAddress)
Function to set the source address for one paramset.
HWA_deinit
void HWA_deinit(void)
Function to deinitialize the HWA module.
HWA_SourceConfig::srcAIdx
int16_t srcAIdx
Definition: hwa/v0/hwa.h:827
HWA_readStatsReg
int32_t HWA_readStatsReg(HWA_Handle handle, HWA_Stats *pStats, uint8_t numIter)
Function to read the 4 sets of 'MAX' statistics register.
HWA_CommonConfig::lfsrSeed
uint32_t lfsrSeed
Definition: hwa/v0/hwa.h:679
HWA_DestConfig::dstBIdx
int16_t dstBIdx
Definition: hwa/v0/hwa.h:901
HWA_DestConfig::dstAcnt
uint16_t dstAcnt
Definition: hwa/v0/hwa.h:894
HWA_Stats::maxValue
uint32_t maxValue
Definition: hwa/v0/hwa.h:1258
HWA_SourceConfig::bpmPhase
uint8_t bpmPhase
Definition: hwa/v0/hwa.h:877
HWA_AccelModeFFT::fftSize
uint8_t fftSize
Definition: hwa/v0/hwa.h:949
HWA_ParamConfig::accelMode
uint8_t accelMode
Definition: hwa/v0/hwa.h:1211
HWA_Stats::qSumLSB
uint32_t qSumLSB
Definition: hwa/v0/hwa.h:1263
HWA_AccelModeFFT::windowEn
uint8_t windowEn
Definition: hwa/v0/hwa.h:964
HWA_Object
HWA driver internal Config.
Definition: hwa/v0/hwa.h:1367
HWA_DebugStats::currentLoopCount
uint16_t currentLoopCount
Definition: hwa/v0/hwa.h:1278
HWA_Attrs
HWA H/W Parameters.
Definition: hwa/v0/hwa.h:588
HWA_readIntfAccReg
int32_t HWA_readIntfAccReg(HWA_Handle handle, uint64_t *accBuf, uint8_t type, uint8_t startIdx, uint8_t size)
Function to read the interference threshold MAG or MAGDIFF Accumulator register.
gHwaObjectPtr
HWA_Object * gHwaObjectPtr[]
Externally defined driver object pointer.
HWA_SourceConfig::srcCircShiftWrap
uint8_t srcCircShiftWrap
Definition: hwa/v0/hwa.h:840