AM62x MCU+ SDK  09.00.00
sdl_ecc.h
Go to the documentation of this file.
1 /*
2  * SDL ECC
3  *
4  * Software Diagnostics Library module for ECC
5  *
6  * Copyright (c) Texas Instruments Incorporated 2023
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  * Redistributions of source code must retain the above copyright
13  * notice, this list of conditions and the following disclaimer.
14  *
15  * Redistributions in binary form must reproduce the above copyright
16  * notice, this list of conditions and the following disclaimer in the
17  * documentation and/or other materials provided with the
18  * distribution.
19  *
20  * Neither the name of Texas Instruments Incorporated nor the names of
21  * its contributors may be used to endorse or promote products derived
22  * from this software without specific prior written permission.
23  *
24  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
27  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
28  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
29  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
30  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
31  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
32  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35  *
36  */
37 
47 #ifndef INCLUDE_SDL_ECC_H_
48 #define INCLUDE_SDL_ECC_H_
49 
50 #include <stdint.h>
51 #include <stdbool.h>
52 
53 #include "sdl_common.h"
54 #include <sdl/ecc/sdl_ip_ecc.h>
55 
56 #if defined(SOC_AM64X) || defined(SOC_AM243X)
57 #include <sdl/esm/sdl_esm.h>
58 #include <sdl/include/am64x_am243x/sdlr_soc_baseaddress.h>
59 #include <sdl/include/am64x_am243x/sdlr_soc_ecc_aggr.h>
60 #endif
61 
62 #if defined(SOC_AM62X)
63 #include <sdl/esm/sdl_esm.h>
64 #include <sdl/include/am62x/soc_config.h>
65 #include <sdl/include/am62x/sdlr_soc_baseaddress.h>
66 #include <sdl/include/am62x/sdlr_soc_ecc_aggr.h>
67 #endif
68 
69 #if defined(SOC_AM62AX)
70 #include <sdl/esm/sdl_esm.h>
71 #include <sdl/include/am62ax/soc_config.h>
72 #include <sdl/include/am62ax/sdlr_soc_baseaddress.h>
73 #include <sdl/include/am62ax/sdlr_soc_ecc_aggr.h>
74 #include <sdl/esm/soc/sdl_esm_soc.h>
75 #endif
76 
77 #ifdef __cplusplus
78 extern "C" {
79 #endif
80 
91 typedef enum {
97 
98 
104 typedef enum {
124 
125 
130 typedef enum {
136 
142 typedef uint32_t SDL_ECC_MemType;
143 
144 #if defined(SOC_AM62X)
145 #define SDL_COMPUTE_CLUSTER0_SAM62_A53_512KB_WRAP_A53_DUAL_WRAP_CBA_WRAP_A53_DUAL_WRAP_CBA_COREPAC_ECC_AGGR_CORE0 (0U)
146 #define SDL_COMPUTE_CLUSTER0_SAM62_A53_512KB_WRAP_A53_DUAL_WRAP_CBA_WRAP_A53_DUAL_WRAP_CBA_COREPAC_ECC_AGGR_CORE1 (1U)
147 #define SDL_COMPUTE_CLUSTER0_SAM62_A53_512KB_WRAP_A53_DUAL_WRAP_CBA_WRAP_A53_DUAL_WRAP_CBA_COREPAC_ECC_AGGR_CORE2 (2U)
148 #define SDL_COMPUTE_CLUSTER0_SAM62_A53_512KB_WRAP_A53_DUAL_WRAP_CBA_WRAP_A53_DUAL_WRAP_CBA_COREPAC_ECC_AGGR_CORE3 (3U)
149 #define SDL_COMPUTE_CLUSTER0_SAM62_A53_512KB_WRAP_A53_DUAL_WRAP_CBA_WRAP_A53_DUAL_WRAP_CBA_COREPAC_ECC_AGGR_COREPAC (4U)
150 #define SDL_CSI_RX_IF0_CSI_RX_IF_ECC_AGGR (5U)
151 #define SDL_DMASS0_DMSS_AM62_ECCAGGR (6U)
152 #define SDL_ECC_AGGR0_SAM62_SEC_ECC_AGGR (7U)
153 #define SDL_FSS0_FSS_UL_OSPI0_OSPI_WRAP_ECC_AGGR (8U)
154 #define SDL_GICSS0_GIC500SS_1_4_ECC_AGGR (9U)
155 #define SDL_ICSSM0_ICSS_M_CORE_BORG_ECC_AGGR (10U)
156 #define SDL_MCAN0_MCANSS_MSGMEM_WRAP_ECC_AGGR (11U)
157 #define SDL_MCU_ECC_AGGR0_SAM62_MCU_ECC_AGGR (12U)
158 #define SDL_MCU_M4FSS0_BLAZAR_ECC (13U)
159 #define SDL_MCU_MCAN0_MCANSS_MSGMEM_WRAP_ECC_AGGR (14U)
160 #define SDL_MCU_MCAN1_MCANSS_MSGMEM_WRAP_ECC_AGGR (15U)
161 #define SDL_MMCSD0_EMMCSD8SS_ECC_AGGR_RXMEM (16U)
162 #define SDL_MMCSD0_EMMCSD8SS_ECC_AGGR_TXMEM (17U)
163 #define SDL_MMCSD1_EMMCSD4SS_ECC_AGGR_RXMEM (18U)
164 #define SDL_MMCSD1_EMMCSD4SS_ECC_AGGR_TXMEM (19U)
165 #define SDL_MMCSD2_EMMCSD4SS_ECC_AGGR_RXMEM (20U)
166 #define SDL_MMCSD2_EMMCSD4SS_ECC_AGGR_TXMEM (21U)
167 #define SDL_PDMA0_SAM62_PDMA_SPI_ECCAGGR (22U)
168 #define SDL_PDMA1_SAM62_PDMA_UART_ECCAGGR (23U)
169 #define SDL_PSRAMECC_16K0_PSRAM16KX32E_ECC_AGGR (24U)
170 #define SDL_PSRAMECC0_PSRAM256X32E_ECC_AGGR (25U)
171 #define SDL_SA3_SS0_SA3SS_AM62_DMSS_ECCAGGR (26U)
172 #define SDL_SA3_SS0_SA3SS_AM62_SA_UL_ECC_AGGR (27U)
173 #define SDL_SMS0_SMS_HSM_ECC (28U)
174 #define SDL_SMS0_SMS_TIFS_ECC (29U)
175 #define SDL_USB0_USB2SS_16FFC_USB2SS_CORE_ECC_AGGR (30U)
176 #define SDL_USB1_USB2SS_16FFC_USB2SS_CORE_ECC_AGGR (31U)
177 #define SDL_WKUP_ECC_AGGR0_SAM62_DM_ECC_AGGR (32U)
178 #define SDL_WKUP_R5FSS0_PULSAR_UL_CPU0_ECC_AGGR (33U)
179 #define SDL_WKUP_SAFE_ECC_AGGR0_SAM62_WKUP_SAFE_ECC_AGGR (34U)
180 #define SDL_WKUP_VTM0_K3VTM_N16FFC_ECCAGGR (35U)
181 #define SDL_CPSW0_CPSW_3GUSS_CORE_ECC_CPSW_ECC_AGGR (36u)
182 #define SDL_ECC_MEMTYPE_MAX (SDL_CPSW0_CPSW_3GUSS_CORE_ECC_CPSW_ECC_AGGR + 1U)
183 #endif
184 
185 #if defined(SOC_AM62AX)
186 #define SDL_PSCSS0_SAM62A_MAIN_PSC_WRAP_ECC_AGGR (0U)
187 #define SDL_PSRAMECC0_PSRAM256X32E_ECC_AGGR (1U)
188 #define SDL_PSRAMECC1_PSRAM256X32E_ECC_AGGR (2U)
189 #define SDL_MSRAM_64K0_MSRAM2KX256E_ECC_AGGR (3U)
190 #define SDL_WKUP_ECC_AGGR1_SAM62A_DM_MCU_ECC_AGGR (4U)
191 #define SDL_DMASS1_DMSS_CSI_AM62A_ECCAGGR (5U)
192 #define SDL_MCU_MSRAM_256K1_MSRAM32KX64E_ECC_AGGR (6U)
193 #define SDL_WKUP_VTM0_K3VTM_N16FFC_ECCAGGR (7U)
194 #define SDL_FSS0_FSS_UL_OSPI0_OSPI_WRAP_ECC_AGGR (8U)
195 #define SDL_MCU_R5FSS0_PULSAR_ULS_CPU0_ECC_AGGR (9U)
196 #define SDL_CPSW0_CPSW_3GUSS_CORE_ECC_CPSW_ECC_AGGR (10U)
197 #define SDL_MCU_MSRAM_256K0_MSRAM32KX64E_ECC_AGGR (11U)
198 #define SDL_GICSS0_GIC500SS_1_4_ECC_AGGR (12U)
199 #define SDL_ECC_AGGR1_SAM62A_SEC_MCU_ECC_AGGR (13U)
200 #define SDL_DMASS0_DMSS_AM62A_ECCAGGR (14U)
201 #define SDL_CSI_RX_IF0_CSI_RX_IF_ECC_AGGR (15U)
202 #define SDL_MMCSD1_EMMCSD4SS_ECC_AGGR_RXMEM (16U)
203 #define SDL_MMCSD1_EMMCSD4SS_ECC_AGGR_TXMEM (17U)
204 #define SDL_MMCSD2_EMMCSD4SS_ECC_AGGR_RXMEM (18U)
205 #define SDL_MMCSD2_EMMCSD4SS_ECC_AGGR_TXMEM (19U)
206 #define SDL_MMCSD0_EMMCSD8SS_ECC_AGGR_TXMEM (20U)
207 #define SDL_MMCSD0_EMMCSD8SS_ECC_AGGR_RXMEM (21U)
208 #define SDL_MCU_ECC_AGGR0_SAM62A_MCU_MCU_ECC_AGGR (22U)
209 #define SDL_SA3_SS0_SA3SS_AM62A_DMSS_ECCAGGR (23U)
210 #define SDL_SA3_SS0_SA3SS_AM62A_SA_UL_ECC_AGGR (24U)
211 #define SDL_WKUP_ECC_AGGR2_SAM62A_WKUP_SAFE_ECC_AGGR (25U)
212 #define SDL_WKUP_R5FSS0_PULSAR_UL_CPU0_ECC_AGGR (26U)
213 #define SDL_SMS0_SMS_HSM_ECC (27U)
214 #define SDL_SMS0_SMS_TIFS_ECC (28U)
215 #define SDL_VPAC0_SAM62A_VPAC_WRAP_IVPAC_TOP_0_PAC_BASE_KSDW_ECC_AGGR (29U)
216 #define SDL_VPAC0_SAM62A_VPAC_WRAP_IVPAC_TOP_0_VPAC_LDC0_KSDW_ECC_AGGR (30U)
217 #define SDL_VPAC0_SAM62A_VPAC_WRAP_IVPAC_TOP_0_VPAC_VISS0_KSDW_ECC_AGGR (31U)
218 #define SDL_MCU_ECC_AGGR1_SAM62A_MCU_PULSAR_UL_ECC_AGGR (32U)
219 #define SDL_C7X256V0_SAM62A_C7XV_WRAP_ECC_AGGR (33U)
220 #define SDL_USB1_USB2SS_16FFC_USB2SS_CORE_ECC_AGGR (34U)
221 #define SDL_USB0_USB2SS_16FFC_USB2SS_CORE_ECC_AGGR (35U)
222 #define SDL_WKUP_PSRAMECC_8K0_PSRAM8KX32E_ECC_AGGR (36U)
223 #define SDL_PDMA0_SAM62_PDMA_SPI_ECCAGGR (37U)
224 #define SDL_WKUP_ECC_AGGR0_SAM62A_DM_DM_ECC_AGGR (38U)
225 #define SDL_PDMA1_SAM62_PDMA_UART_ECCAGGR (39U)
226 #define SDL_MCAN0_MCANSS_MSGMEM_WRAP_ECC_AGGR (40U)
227 #define SDL_COMPUTE_CLUSTER0_SAM62A_A53_512KB_WRAP_A53_DUAL_WRAP_CBA_WRAP_A53_DUAL_WRAP_CBA_COREPAC_ECC_AGGR_CORE0 (41U)
228 #define SDL_COMPUTE_CLUSTER0_SAM62A_A53_512KB_WRAP_A53_DUAL_WRAP_CBA_WRAP_A53_DUAL_WRAP_CBA_COREPAC_ECC_AGGR_CORE1 (42U)
229 #define SDL_COMPUTE_CLUSTER0_SAM62A_A53_512KB_WRAP_A53_DUAL_WRAP_CBA_WRAP_A53_DUAL_WRAP_CBA_COREPAC_ECC_AGGR_CORE2 (43U)
230 #define SDL_COMPUTE_CLUSTER0_SAM62A_A53_512KB_WRAP_A53_DUAL_WRAP_CBA_WRAP_A53_DUAL_WRAP_CBA_COREPAC_ECC_AGGR_CORE3 (44U)
231 #define SDL_COMPUTE_CLUSTER0_SAM62A_A53_512KB_WRAP_A53_DUAL_WRAP_CBA_WRAP_A53_DUAL_WRAP_CBA_COREPAC_ECC_AGGR_COREPAC (45U)
232 #define SDL_MCU_MCAN0_MCANSS_MSGMEM_WRAP_ECC_AGGR (46U)
233 #define SDL_MCU_MCAN1_MCANSS_MSGMEM_WRAP_ECC_AGGR (47U)
234 #define SDL_ECC_AGGR0_SAM62A_SEC_HSM_ECC_AGGR (48U)
235 #define SDL_ECC_MEMTYPE_MAX (SDL_ECC_AGGR0_SAM62A_SEC_HSM_ECC_AGGR + 1U)
236 #endif
237 #if defined(SOC_AM62X)
238 
239 #define SDL_ECC_R5F_MEM_SUBTYPE_ATCM0_BANK0_VECTOR_ID (SDL_WKUP_R5FSS0_PULSAR_UL_CPU0_ECC_AGGR_PULSAR_UL_ATCM0_BANK0_RAM_ID)
240 
241 #define SDL_ECC_R5F_MEM_SUBTYPE_ATCM0_BANK1_VECTOR_ID (SDL_WKUP_R5FSS0_PULSAR_UL_CPU0_ECC_AGGR_PULSAR_UL_ATCM0_BANK1_RAM_ID)
242 
243 #define SDL_ECC_R5F_MEM_SUBTYPE_B0TCM0_BANK0_VECTOR_ID (SDL_WKUP_R5FSS0_PULSAR_UL_CPU0_ECC_AGGR_PULSAR_UL_B0TCM0_BANK0_RAM_ID)
244 
245 #define SDL_ECC_R5F_MEM_SUBTYPE_B0TCM0_BANK1_VECTOR_ID (SDL_WKUP_R5FSS0_PULSAR_UL_CPU0_ECC_AGGR_PULSAR_UL_B0TCM0_BANK1_RAM_ID)
246 
247 #define SDL_ECC_R5F_MEM_SUBTYPE_B1TCM0_BANK0_VECTOR_ID (SDL_WKUP_R5FSS0_PULSAR_UL_CPU0_ECC_AGGR_PULSAR_UL_B1TCM0_BANK0_RAM_ID)
248 
249 #define SDL_ECC_R5F_MEM_SUBTYPE_B1TCM0_BANK1_VECTOR_ID (SDL_WKUP_R5FSS0_PULSAR_UL_CPU0_ECC_AGGR_PULSAR_UL_B1TCM0_BANK1_RAM_ID)
250 
251 #define SDL_ECC_R5F_MEM_SUBTYPE_KS_VIM_RAM_VECTOR_ID (SDL_WKUP_R5FSS0_PULSAR_UL_CPU0_ECC_AGGR_PULSAR_UL_PULSAR_KS_VIM_COMMON_CORE0_RAM_RAM_ID)
252 #endif
253 
254 #if defined(SOC_AM62AX)
255 
256 #define SDL_ECC_R5F_MEM_SUBTYPE_ATCM0_BANK0_VECTOR_ID (SDL_MCU_R5FSS0_PULSAR_ULS_CPU0_ECC_AGGR_PULSAR_ULS_ATCM0_BANK0_RAM_ID)
257 
258 #define SDL_ECC_R5F_MEM_SUBTYPE_ATCM0_BANK1_VECTOR_ID (SDL_MCU_R5FSS0_PULSAR_ULS_CPU0_ECC_AGGR_PULSAR_ULS_ATCM0_BANK1_RAM_ID)
259 
260 #define SDL_ECC_R5F_MEM_SUBTYPE_B0TCM0_BANK0_VECTOR_ID (SDL_MCU_R5FSS0_PULSAR_ULS_CPU0_ECC_AGGR_PULSAR_ULS_B0TCM0_BANK0_RAM_ID)
261 
262 #define SDL_ECC_R5F_MEM_SUBTYPE_B0TCM0_BANK1_VECTOR_ID (SDL_MCU_R5FSS0_PULSAR_ULS_CPU0_ECC_AGGR_PULSAR_ULS_B0TCM0_BANK1_RAM_ID)
263 
264 #define SDL_ECC_R5F_MEM_SUBTYPE_B1TCM0_BANK0_VECTOR_ID (SDL_MCU_R5FSS0_PULSAR_ULS_CPU0_ECC_AGGR_PULSAR_ULS_B1TCM0_BANK0_RAM_ID)
265 
266 #define SDL_ECC_R5F_MEM_SUBTYPE_B1TCM0_BANK1_VECTOR_ID (SDL_MCU_R5FSS0_PULSAR_ULS_CPU0_ECC_AGGR_PULSAR_ULS_B1TCM0_BANK1_RAM_ID)
267 
268 #define SDL_ECC_R5F_MEM_SUBTYPE_KS_VIM_RAM_VECTOR_ID (SDL_MCU_R5FSS0_PULSAR_ULS_CPU0_ECC_AGGR_CPU0_KS_VIM_RAMECC_RAM_ID)
269 #endif
270 
276 typedef uint32_t SDL_ECC_MemSubType;
277 
281 typedef void (*SDL_ECC_ErrorCallback_t) (uint32_t errorSrc, uint32_t address);
282 
284 typedef void (*SDL_ECC_VIMDEDVector_t) (void);
285 
295 typedef struct SDL_ECC_InitConfig_s
296 {
297  uint32_t numRams;
303 
308 typedef struct SDL_ECC_InjectErrorConfig_s
309 {
310  uint32_t *pErrMem;
312  uint32_t flipBitMask;
314  uint16_t chkGrp;
317 
322 typedef struct SDL_ECC_ErrorInfo_s
323 {
330  uint32_t bitErrCnt;
332  uint32_t injectBitErrCnt;
334  uint32_t bitErrorGroup;
336  uint64_t bitErrorOffset;
339 
355 int32_t SDL_ECC_initEsm (const SDL_ESM_Inst esmInstType);
356 
366 int32_t SDL_ECC_init (SDL_ECC_MemType eccMemType,
367  const SDL_ECC_InitConfig_t *pECCInitConfig);
368 
380  SDL_ECC_MemSubType memSubType);
381 
396  SDL_ECC_MemSubType memSubType,
397  SDL_ECC_InjectErrorType errorType,
398  const SDL_ECC_InjectErrorConfig_t *pECCErrorConfig,
399  uint32_t selfTestTimeOut);
400 
414  SDL_ECC_MemSubType memSubType,
415  SDL_ECC_InjectErrorType errorType,
416  const SDL_ECC_InjectErrorConfig_t *pECCErrorConfig);
417 
428  SDL_ECC_staticRegs *pStaticRegs);
429 
442  SDL_Ecc_AggrIntrSrc intrSrc,
443  SDL_ECC_ErrorInfo_t *pErrorInfo);
444 
454 int32_t SDL_ECC_ackIntr(SDL_ECC_MemType eccMemType,
455  SDL_Ecc_AggrIntrSrc intrSrc);
456 
470 int32_t SDL_ECC_getESMErrorInfo(SDL_ESM_Inst instance, uint32_t intSrc,
471  SDL_ECC_MemType *eccMemType, SDL_Ecc_AggrIntrSrc *intrSrcType);
472 
487  SDL_Ecc_AggrIntrSrc intrSrc,
488  SDL_Ecc_AggrEDCErrorSubType subType, uint32_t numEvents);
489 
507  uint32_t errorSrc,
508  uint32_t address,
509  uint32_t ramId,
510  uint64_t bitErrorOffset,
511  uint32_t bitErrorGroup);
512 
515 #ifdef __cplusplus
516 }
517 #endif /* extern "C" */
518 
519 #endif
SDL_ECC_ErrorCallback_t
void(* SDL_ECC_ErrorCallback_t)(uint32_t errorSrc, uint32_t address)
Definition: sdl_ecc.h:281
SDL_ESM_Inst
SDL_ESM_Inst
Definition: sdl_esm_soc.h:59
SDL_ECC_InitConfig_t
Definition: sdl_ecc.h:296
SDL_ECC_initMemory
int32_t SDL_ECC_initMemory(SDL_ECC_MemType eccMemType, SDL_ECC_MemSubType memSubType)
Initializes Memory to be ready for ECC error detection. Assumes ECC is already enabled.
SDL_ECC_ErrorInfo_t::memSubType
SDL_ECC_MemSubType memSubType
Definition: sdl_ecc.h:326
SDL_ECC_InitConfig_t::numRams
uint32_t numRams
Definition: sdl_ecc.h:297
SDL_INJECT_ECC_ERROR_FORCING_2BIT_ONCE
@ SDL_INJECT_ECC_ERROR_FORCING_2BIT_ONCE
Definition: sdl_ecc.h:110
SDL_ECC_injectError
int32_t SDL_ECC_injectError(SDL_ECC_MemType eccMemType, SDL_ECC_MemSubType memSubType, SDL_ECC_InjectErrorType errorType, const SDL_ECC_InjectErrorConfig_t *pECCErrorConfig)
Injects ECC error at specified location Assumes ECC is already enabled.
SDL_ECC_ackIntr
int32_t SDL_ECC_ackIntr(SDL_ECC_MemType eccMemType, SDL_Ecc_AggrIntrSrc intrSrc)
Acknowledge the ECC interrupt.
SDL_Ecc_AggrEDCErrorSubType
uint32_t SDL_Ecc_AggrEDCErrorSubType
This enumerator defines the types of possible EDC errors.
Definition: sdl_ip_ecc.h:189
SDL_ECC_getStaticRegisters
int32_t SDL_ECC_getStaticRegisters(SDL_ECC_MemType eccMemType, SDL_ECC_staticRegs *pStaticRegs)
Gets the static registers for the specified ECC instance.
SDL_ECC_AGGR_TYPE_INJECT_ONLY
@ SDL_ECC_AGGR_TYPE_INJECT_ONLY
Definition: sdl_ecc.h:92
SDL_INJECT_ECC_ERROR_FORCING_1BIT_N_ROW_ONCE
@ SDL_INJECT_ECC_ERROR_FORCING_1BIT_N_ROW_ONCE
Definition: sdl_ecc.h:112
SDL_INJECT_ECC_ERROR_FORCING_1BIT_ONCE
@ SDL_INJECT_ECC_ERROR_FORCING_1BIT_ONCE
Definition: sdl_ecc.h:108
SDL_ECC_selfTest
int32_t SDL_ECC_selfTest(SDL_ECC_MemType eccMemType, SDL_ECC_MemSubType memSubType, SDL_ECC_InjectErrorType errorType, const SDL_ECC_InjectErrorConfig_t *pECCErrorConfig, uint32_t selfTestTimeOut)
Runs self test by injecting and error and monitor response Assumes ECC is already enabled.
SDL_ECC_InjectErrorConfig_t::chkGrp
uint16_t chkGrp
Definition: sdl_ecc.h:314
SDL_ECC_ErrorInfo_t::bitErrorGroup
uint32_t bitErrorGroup
Definition: sdl_ecc.h:334
SDL_INJECT_ECC_ERROR_FORCING_2BIT_N_ROW_ONCE
@ SDL_INJECT_ECC_ERROR_FORCING_2BIT_N_ROW_ONCE
Definition: sdl_ecc.h:114
SDL_ECC_ErrorInfo_t::intrSrc
SDL_Ecc_AggrIntrSrc intrSrc
Definition: sdl_ecc.h:328
sdl_esm.h
Header file contains enumerations, structure definitions and function declarations for SDL Error Sign...
SDL_INJECT_ECC_ERROR_FORCING_1BIT_REPEAT
@ SDL_INJECT_ECC_ERROR_FORCING_1BIT_REPEAT
Definition: sdl_ecc.h:116
SDL_ECC_InjectErrorConfig_t
Definition: sdl_ecc.h:309
SDL_INJECT_ECC_NO_ERROR
@ SDL_INJECT_ECC_NO_ERROR
Definition: sdl_ecc.h:106
SDL_ECC_InjectErrorConfig_t::pErrMem
uint32_t * pErrMem
Definition: sdl_ecc.h:310
SDL_ECC_staticRegs
This structure contains the static register group for Ecc aggregator used by the SDL_ecc_aggrReadStat...
Definition: sdl_ip_ecc.h:350
SDL_ECC_AGGR_TYPE_FULL_FUNCTION
@ SDL_ECC_AGGR_TYPE_FULL_FUNCTION
Definition: sdl_ecc.h:94
SDL_ECC_VIMDEDVector_t
void(* SDL_ECC_VIMDEDVector_t)(void)
Definition: sdl_ecc.h:284
SDL_ECC_InjectErrorType
SDL_ECC_InjectErrorType
ECC Inject error types.
Definition: sdl_ecc.h:104
SDL_ECC_initEsm
int32_t SDL_ECC_initEsm(const SDL_ESM_Inst esmInstType)
Initializes an module for usage with ECC module.
SDL_ECC_ErrorInfo_t::bitErrorOffset
uint64_t bitErrorOffset
Definition: sdl_ecc.h:336
SDL_ECC_InjectErrorConfig_t::flipBitMask
uint32_t flipBitMask
Definition: sdl_ecc.h:312
SDL_ECC_AggregatorType
SDL_ECC_AggregatorType
Definition: sdl_ecc.h:91
SDL_INJECT_ECC_ERROR_FORCING_2BIT_REPEAT
@ SDL_INJECT_ECC_ERROR_FORCING_2BIT_REPEAT
Definition: sdl_ecc.h:118
SDL_ECC_RAM_ID_TYPE_INTERCONNECT
@ SDL_ECC_RAM_ID_TYPE_INTERCONNECT
Definition: sdl_ecc.h:133
SDL_Ecc_AggrIntrSrc
uint32_t SDL_Ecc_AggrIntrSrc
This enumerator defines the types of possible ECC errors.
Definition: sdl_ip_ecc.h:108
SDL_ECC_getESMErrorInfo
int32_t SDL_ECC_getESMErrorInfo(SDL_ESM_Inst instance, uint32_t intSrc, SDL_ECC_MemType *eccMemType, SDL_Ecc_AggrIntrSrc *intrSrcType)
Retrieves the ECC error information for the specified ESM error. If it isn't an ECC error or the ECC ...
SDL_ECC_ErrorInfo_t
Definition: sdl_ecc.h:323
SDL_ECC_InitConfig_t::pMemSubTypeList
SDL_ECC_MemSubType * pMemSubTypeList
Definition: sdl_ecc.h:300
SDL_ECC_MemSubType
uint32_t SDL_ECC_MemSubType
This enumerator indicate ECC memory Sub Type.
Definition: sdl_ecc.h:276
SDL_INJECT_ECC_ERROR_FORCING_1BIT_N_ROW_REPEAT
@ SDL_INJECT_ECC_ERROR_FORCING_1BIT_N_ROW_REPEAT
Definition: sdl_ecc.h:120
SDL_ECC_clearNIntrPending
int32_t SDL_ECC_clearNIntrPending(SDL_ECC_MemType eccMemType, SDL_ECC_MemSubType memSubType, SDL_Ecc_AggrIntrSrc intrSrc, SDL_Ecc_AggrEDCErrorSubType subType, uint32_t numEvents)
Clears N pending interrupts for the specified memtype, subtype and interrupt source.
SDL_ECC_ErrorInfo_t::injectBitErrCnt
uint32_t injectBitErrCnt
Definition: sdl_ecc.h:332
SDL_ECC_getErrorInfo
int32_t SDL_ECC_getErrorInfo(SDL_ECC_MemType eccMemType, SDL_Ecc_AggrIntrSrc intrSrc, SDL_ECC_ErrorInfo_t *pErrorInfo)
Retrieves the ECC error information for the specified memtype and interrupt source.
SDL_ECC_ErrorInfo_t::bitErrCnt
uint32_t bitErrCnt
Definition: sdl_ecc.h:330
SDL_ECC_ErrorInfo_t::eccMemType
SDL_ECC_MemType eccMemType
Definition: sdl_ecc.h:324
SDL_ECC_applicationCallbackFunction
void SDL_ECC_applicationCallbackFunction(SDL_ECC_MemType eccMemType, uint32_t errorSrc, uint32_t address, uint32_t ramId, uint64_t bitErrorOffset, uint32_t bitErrorGroup)
Application provided external callback function for ECC handling Called inside the reference function...
SDL_INJECT_ECC_ERROR_FORCING_2BIT_N_ROW_REPEAT
@ SDL_INJECT_ECC_ERROR_FORCING_2BIT_N_ROW_REPEAT
Definition: sdl_ecc.h:122
SDL_ECC_RamIdType
SDL_ECC_RamIdType
Definition: sdl_ecc.h:130
SDL_ECC_RAM_ID_TYPE_WRAPPER
@ SDL_ECC_RAM_ID_TYPE_WRAPPER
Definition: sdl_ecc.h:131
SDL_ECC_MemType
uint32_t SDL_ECC_MemType
This enumerator indicate ECC memory type.
Definition: sdl_ecc.h:142
SDL_ECC_init
int32_t SDL_ECC_init(SDL_ECC_MemType eccMemType, const SDL_ECC_InitConfig_t *pECCInitConfig)
Initializes ECC module for ECC detection.