SDL API Guide for J7200
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 2018-2021
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 <src/ip/sdl_ip_ecc.h>
55 #include <src/ip/sdl_esm.h>
56 
57 #if defined (SOC_J721E)
58 #define SDL_MCU_R5F0_SUB_MEMORY SDL_MCU_R5FSS0_CORE0_ECC_AGGR_KSBUS_VBUSM2AXI0_EDC_CTRL_RAM_ID
59 #endif /* SOC_J721E */
60 
61 #if defined (SOC_J7200)
62 #define SDL_MCU_R5F0_SUB_MEMORY SDL_MCU_R5FSS0_PULSAR_SL_KSBUS_VBUSM2AXI0_EDC_CTRL_0_RAM_ID
63 #endif /* SOC_J7200 */
64 
65 #ifdef __cplusplus
66 extern "C" {
67 #endif
68 
104 typedef enum {
110 
111 
116 typedef enum {
136 
137 
142 typedef enum {
148 
149 /* @} */
150 
161 typedef uint32_t SDL_ECC_MemType;
162 
163 #if defined (SOC_J721E)
164 
165  #define SDL_ECC_MEMTYPE_MCU_R5F0_CORE (0u)
166  #define SDL_ECC_MEMTYPE_MCU_R5F1_CORE (1u)
167  #define SDL_ECC_MEMTYPE_MCU_ADC0 (2u)
168  #define SDL_ECC_MEMTYPE_MCU_ADC1 (3u)
169  #define SDL_ECC_MEMTYPE_MCU_CPSW0 (4u)
170  #define SDL_ECC_MEMTYPE_MCU_FSS0_HPB0 (5u)
171  #define SDL_ECC_MEMTYPE_MCU_FSS0_OSPI0 (6u)
172  #define SDL_ECC_MEMTYPE_MCU_FSS0_OSPI1 (7u)
173  #define SDL_ECC_MEMTYPE_MCU_MCAN0 (8u)
174  #define SDL_ECC_MEMTYPE_MCU_MCAN1 (9u)
175  #define SDL_ECC_MEMTYPE_MCU_MSRAM0 (10u)
176  #define SDL_ECC_MEMTYPE_MCU_NAVSS0 (11u)
177  #define SDL_ECC_MEMTYPE_MCU_PSRAM0 (12u)
178  #define SDL_ECC_MEMTYPE_MCU_CBASS_ECC_AGGR0 (13u)
179  #define SDL_MCAN0_MCANSS_MSGMEM_WRAP_ECC_AGGR (14u)
180  #define SDL_MCAN1_MCANSS_MSGMEM_WRAP_ECC_AGGR (15u)
181  #define SDL_MCAN2_MCANSS_MSGMEM_WRAP_ECC_AGGR (16u)
182  #define SDL_MCAN3_MCANSS_MSGMEM_WRAP_ECC_AGGR (17u)
183  #define SDL_MCAN4_MCANSS_MSGMEM_WRAP_ECC_AGGR (18u)
184  #define SDL_MCAN5_MCANSS_MSGMEM_WRAP_ECC_AGGR (19u)
185  #define SDL_MCAN6_MCANSS_MSGMEM_WRAP_ECC_AGGR (20u)
186  #define SDL_MCAN7_MCANSS_MSGMEM_WRAP_ECC_AGGR (21u)
187  #define SDL_MCAN8_MCANSS_MSGMEM_WRAP_ECC_AGGR (22u)
188  #define SDL_MCAN9_MCANSS_MSGMEM_WRAP_ECC_AGGR (23u)
189  #define SDL_MCAN10_MCANSS_MSGMEM_WRAP_ECC_AGGR (24u)
190  #define SDL_MCAN11_MCANSS_MSGMEM_WRAP_ECC_AGGR (25u)
191  #define SDL_MCAN12_MCANSS_MSGMEM_WRAP_ECC_AGGR (26u)
192  #define SDL_MCAN13_MCANSS_MSGMEM_WRAP_ECC_AGGR (27u)
193  #define SDL_MSRAM_512K0_MSRAM16KX256E_ECC_AGGR (28u)
194  #define SDL_PCIE0_PCIE_G4X2_CORE_AXI_ECC_AGGR (29u)
195  #define SDL_PCIE0_PCIE_G4X2_CORE_ECC_AGGR (30u)
196  #define SDL_PCIE1_PCIE_G4X2_CORE_AXI_ECC_AGGR (31u)
197  #define SDL_PCIE1_PCIE_G4X2_CORE_ECC_AGGR (32u)
198  #define SDL_PCIE2_PCIE_G4X2_CORE_AXI_ECC_AGGR (33u)
199  #define SDL_PCIE2_PCIE_G4X2_CORE_ECC_AGGR (34u)
200  #define SDL_PCIE3_PCIE_G4X2_CORE_AXI_ECC_AGGR (35u)
201  #define SDL_PCIE3_PCIE_G4X2_CORE_ECC_AGGR (36u)
202  #define SDL_I3C0_I3C_S_ECC_AGGR (37u)
203  #define SDL_I3C0_I3C_P_ECC_AGGR (38u)
204  #define SDL_MCU_I3C0_I3C_P_ECC_AGGR (39u)
205  #define SDL_MCU_I3C0_I3C_S_ECC_AGGR (40u)
206  #define SDL_MCU_I3C1_I3C_P_ECC_AGGR (41u)
207  #define SDL_MCU_I3C1_I3C_S_ECC_AGGR (42u)
208  #define SDL_PRU_ICSSG0_ICSS_G_CORE_BORG_ECC_AGGR (43u)
209  #define SDL_PRU_ICSSG1_ICSS_G_CORE_BORG_ECC_AGGR (44u)
210  #define SDL_CBASS_ECC_AGGR0_MAIN_INFRA_ECC_AGGR (45u)
211  #define SDL_MAIN_RC_ECC_AGGR0 (46u)
212  #define SDL_NAVSS_NBSS_ECC_AGGR0_NAVSS512L_NBSS_PHYS_ECC_AGGR (47u)
213  #define SDL_DMPAC0_ECC_AGGR (48u)
214  #define SDL_MAIN_HC_ECC_AGGR0 (49u)
215  #define SDL_VPAC0_ECC_AGGR (50u)
216  #define SDL_VPAC0_VISS_ECC_AGGR (51u)
217  #define SDL_VPAC0_LDC_ECC_AGGR (52u)
218  #define SDL_R5FSS0_CORE0_ECC_AGGR (53u)
219  #define SDL_R5FSS1_CORE0_ECC_AGGR (54u)
220  #define SDL_R5FSS0_CORE1_ECC_AGGR (55u)
221  #define SDL_R5FSS1_CORE1_ECC_AGGR (56u)
222  #define SDL_NAVSS_VIRTSS_ECC_AGGR0 (57u)
223  #define SDL_CPSW0_CPSW_9XUSS_CORE_ECC_CPSW_ECC_AGGR (58u)
224  #define SDL_MCU_SA2_UL0_SA2_UL_SA2_UL_ECC_AGGR (59u)
225  #define SDL_SA2_UL0_SA2_UL_SA2_UL_ECC_AGGR (60u)
226  #define SDL_MLB0_MLBSS2P0_MLBDIM_WRAP_ECC_AGGR (61u)
227  #define SDL_MAIN_AC_ECC_AGGR0 (62u)
228  #define SDL_WKUP_VTM0_K3VTM_NC_ECCAGGR (63u)
229  #define SDL_MMCSD0_EMMC8SSC_ECC_AGGR_RXMEM (64u)
230  #define SDL_MMCSD0_EMMC8SSC_ECC_AGGR_TXMEM (65u)
231  #define SDL_MMCSD1_EMMCSD4SS_ECC_AGGR_RXMEM (66u)
232  #define SDL_MMCSD1_EMMCSD4SS_ECC_AGGR_TXMEM (67u)
233  #define SDL_MMCSD2_EMMCSD4SS_ECC_AGGR_RXMEM (68u)
234  #define SDL_MMCSD2_EMMCSD4SS_ECC_AGGR_TXMEM (69u)
235  #define SDL_DSS_EDP0_K3_DSS_EDP_MHDPTX_WRAPPER_ECC_AGGR_CORE (70u)
236  #define SDL_DSS_EDP0_K3_DSS_EDP_MHDPTX_WRAPPER_ECC_AGGR_PHY (71u)
237  #define SDL_DSS_EDP0_K3_DSS_EDP_MHDPTX_WRAPPER_ECC_AGGR_DSC (72u)
238  #define SDL_UFS0_UFSHCI2P1SSC_HCLK_ECC_AGGR (73u)
239  #define SDL_CSI_RX_IF0_ECC_AGGR_0 (74u)
240  #define SDL_CSI_RX_IF1_ECC_AGGR_0 (75u)
241  #define SDL_NAVSS0_MODSS_ECC_AGGR0 (76u)
242  #define SDL_USB0_USB3P0SSC_USB3P0SS_CORE_A_ECC_AGGR (77u)
243  #define SDL_USB1_USB3P0SSC_USB3P0SS_CORE_A_ECC_AGGR (78u)
244  #define SDL_NAVSS0_VIRTSS_ECC_AGGR0 (79u)
245  #define SDL_NAVSS0_NBSS_ECC_AGGR0 (80u)
246  #define SDL_IDOM1_ECC_AGGR0 (81u)
247  #define SDL_IDOM1_ECC_AGGR1 (82u)
248  #define SDL_WKUP_DMSC0_ECC_AGGR (83u)
249  #define SDL_IDOM0_ECC_AGGR0_IDOM0_ECC_AGGR (84u)
250  #define SDL_IDOM0_ECC_AGGR1_IDOM0_ECC_AGGR (85u)
251  #define SDL_CSI_TX_IF0_CSI_TX_IF_ECC_AGGR (86u)
252  #define SDL_CSI_TX_IF0_CSI_TX_IF_ECC_AGGR_BYTE (87u)
253  #define SDL_WKUP_CBASS_ECC_AGGR0_WAKEUP_ECC_AGGR (88u)
254  #define SDL_DSS_DSI0_K3_DSS_DSI_TOP_ECC_AGGR_SYS (89u)
255  #define SDL_MCU_NAVSS0_UDMASS_ECC_AGGR0 (90u)
256  #define SDL_PDMA5_PDMA_MAIN_MCAN_ECCAGGR (91u)
257  #define SDL_PSRAMECC0_PSRAM256X32EC_ECC_AGGR (92u)
258  #define SDL_NAVSS0_UDMASS_ECC_AGGR0 (93u)
259 
260  #define SDL_ECC_MEMTYPE_MAIN_MSMC_AGGR0 (94u)
261  #define SDL_ECC_MEMTYPE_MAIN_MSMC_AGGR1 (95u)
262  #define SDL_ECC_MEMTYPE_MAIN_MSMC_AGGR2 (96u)
263  #define SDL_COMPUTE_CLUSTER0_A72SS0_COMMON_ECC_AGGR (97u)
264  #define SDL_COMPUTE_CLUSTER0_A72SS0_CORE0_ECC_AGGR (98u)
265  #define SDL_COMPUTE_CLUSTER0_A72SS0_CORE1_ECC_AGGR (99u)
266  #define SDL_COMPUTE_CLUSTER0_DDR32SSC_EW_BRCTL_SC_ECC_AGGR_VBUS (100u)
267  #define SDL_COMPUTE_CLUSTER0_DDR32SSC_EW_BRCTL_SC_ECC_AGGR_CTL (101u)
268  #define SDL_COMPUTE_CLUSTER0_DDR32SSC_EW_BRCTL_SC_ECC_AGGR_CFG (102u)
269  #define SDL_COMPUTE_CLUSTER0_C71SS0_ECC_AGGR (103u)
270  #define SDL_COMPUTE_CLUSTER0_GIC_ECC_AGGR (104u)
271 
272 #define SDL_ECC_MEMTYPE_MAX (SDL_COMPUTE_CLUSTER0_GIC_ECC_AGGR + 1U)
273 
274 /* Max entries based on max mem type */
275 #define SDL_ECC_AGGREGATOR_MAX_LOW_ENTRIES (SDL_NAVSS0_UDMASS_ECC_AGGR0+1U)
276 
277 #define SDL_ECC_AGGREGATOR_MAX_HIGH_ENTRIES (SDL_COMPUTE_CLUSTER0_GIC_ECC_AGGR - \
278  SDL_ECC_MEMTYPE_MAIN_MSMC_AGGR0 + 1u)
279 
280 #endif
281 
282 #if defined (SOC_J7200)
283 
284 #define SDL_ECC_MEMTYPE_MCU_R5F0_CORE (0u)
285 #define SDL_ECC_MEMTYPE_MCU_R5F1_CORE (1u)
286 #define SDL_ECC_PDMA10_ECC_AGGR (2u)
287 #define SDL_ECC_PCIE1_1_ECC_AGGR (3u)
288 #define SDL_ECC_MCU_NAVSS0_0_ECC_AGGR (4u)
289 #define SDL_ECC_MCU_NAVSS0_1_ECC_AGGR (5u)
290 #define SDL_ECC_PCIE1_0_ECC_AGGR (6u)
291 #define SDL_ECC_USB0_ECC_AGGR (7u)
292 #define SDL_ECC_CPSW0_ECC_AGGR (8u)
293 #define SDL_ECC_MMCSD0_1_ECC_AGGR (9u)
294 #define SDL_ECC_MMCSD0_0_ECC_AGGR (10u)
295 #define SDL_ECC_MMCSD1_0_ECC_AGGR (11u)
296 #define SDL_ECC_MMCSD1_1_ECC_AGGR (12u)
297 #define SDL_ECC_MSRAM_512K0_ECC_AGGR (13u)
298 #define SDL_ECC_MCAN8_ECC_AGGR (14u)
299 #define SDL_ECC_MCAN9_ECC_AGGR (15u)
300 #define SDL_ECC_MCAN10_ECC_AGGR (16u)
301 #define SDL_ECC_MCAN11_ECC_AGGR (17u)
302 #define SDL_ECC_MCAN12_ECC_AGGR (18u)
303 #define SDL_ECC_MCAN13_ECC_AGGR (19u)
304 #define SDL_ECC_MCAN14_ECC_AGGR (20u)
305 #define SDL_ECC_MCAN15_ECC_AGGR (21u)
306 #define SDL_ECC_MCAN16_ECC_AGGR (22u)
307 #define SDL_ECC_MCAN17_ECC_AGGR (23u)
308 #define SDL_R5FSS0_CORE0_ECC_AGGR (24u) /* SDL_ECC_R5FSS0_0_ECC_AGGR */
309 #define SDL_ECC_I3C0_1_ECC_AGGR (25u)
310 #define SDL_ECC_I3C0_0_ECC_AGGR (26u)
311 #define SDL_ECC_MCAN0_ECC_AGGR (27u)
312 #define SDL_ECC_MCAN1_ECC_AGGR (28u)
313 #define SDL_ECC_MCAN2_ECC_AGGR (29u)
314 #define SDL_ECC_MCAN3_ECC_AGGR (30u)
315 #define SDL_ECC_MCAN4_ECC_AGGR (31u)
316 #define SDL_ECC_MCAN5_ECC_AGGR (32u)
317 #define SDL_ECC_MCAN6_ECC_AGGR (33u)
318 #define SDL_ECC_MCAN7_ECC_AGGR (34u)
319 #define SDL_ECC_IDOM0_ECC_AGGR16 (35u)
320 #define SDL_ECC_IDOM1_ECC_AGGR17 (36u)
321 #define SDL_ECC_VC_MAIN_RC_ECC_AGGR4_ECC_AGGR (37u)
322 #define SDL_ECC_VC_MAIN_HC_ECC_AGGR5_ECC_AGGR (38u)
323 #define SDL_ECC_VC_MAIN_SPI_G0_MAIN_0_ECCAGGR6 (39u)
324 #define SDL_ECC_VCL_NAVSS256_VIRTSS_PHYS_ECC_AGGR10_ECC_AGGR (40u)
325 #define SDL_ECC_VC_NAVSS256_NBSS_PHYS_ECC_AGGR11_ECC_AGGR (41u)
326 #define SDL_ECC_NAVSS0_0_ECC_AGGR (42u)
327 #define SDL_ECC_NAVSS0_1_ECC_AGGR (43u)
328 #define SDL_ECC_NAVSS0_3_ECC_AGGR (44u)
329 #define SDL_ECC_NAVSS0_2_ECC_AGGR (45u)
330 #define SDL_ECC_PDMA5_ECC_AGGR (46u)
331 #define SDL_ECC_PDMA9_ECC_AGGR (47u)
332 #define SDL_ECC_MCU_MCAN0_ECC_AGGR (48u)
333 #define SDL_ECC_MCU_MCAN1_ECC_AGGR (49u)
334 #define SDL_ECC_MCU_ADC0_ECC_AGGR (50u)
335 #define SDL_ECC_MCU_ADC1_ECC_AGGR (51u)
336 #define SDL_ECC_MCU_CPSW0_ECC_AGGR (52u)
337 #define SDL_ECC_MCU_MSRAM_1MB0_ECC_AGGR (53u)
338 #define SDL_ECC_MCU_SA2_UL0_ECC_AGGR (54u)
339 #define SDL_ECC_MCU_I3C0_1_ECC_AGGR (55u)
340 #define SDL_ECC_MCU_I3C0_0_ECC_AGGR (56u)
341 #define SDL_ECC_MCU_I3C1_1_ECC_AGGR (57u)
342 #define SDL_ECC_MCU_I3C1_0_ECC_AGGR (58u)
343 #define SDL_ECC_WKUP_VTM0_ECC_AGGR (59u)
344 #define SDL_ECC_MCU_FSS0_0_ECC_AGGR (60u)
345 #define SDL_ECC_MCU_FSS0_1_ECC_AGGR (61u)
346 #define SDL_ECC_MCU_VC_MCU_ECC_AGGR0 (62u)
347 #define SDL_R5FSS0_CORE1_ECC_AGGR (63u) /* SDL_ECC_R5FSS0_1_ECC_AGGR */
348 #define SDL_ECC_PSRAMECC0_ECC_AGGR (64u)
349 #define SDL_ECC_PSRAM2KECC0_ECC_AGGR (65u)
350 #define SDL_ECC_VCL_MAIN_INFRA_ECC_AGGR0_0_ECC_AGGR (66u)
351 
352 #define SDL_ECC_MEMTYPE_MAIN_MSMC_AGGR0 (67u) /* SDL_ECC_COMPUTE_CLUSTER0_3_ECC_AGGR */
353 #define SDL_ECC_COMPUTE_CLUSTER0_2_ECC_AGGR (68u)
354 #define SDL_ECC_COMPUTE_CLUSTER0_4_ECC_AGGR (69u)
355 #define SDL_ECC_COMPUTE_CLUSTER0_5_ECC_AGGR (70u)
356 #define SDL_ECC_COMPUTE_CLUSTER0_1_ECC_AGGR (71u)
357 #define SDL_ECC_COMPUTE_CLUSTER0_0_ECC_AGGR (72u)
358 #define SDL_DDR0_0_ECC_AGGR (73u)
359 #define SDL_DDR0_1_ECC_AGGR (74u)
360 #define SDL_DDR0_2_ECC_AGGR (75u)
361 #define SDL_ECC_COMPUTE_CLUSTER0_6_ECC_AGGR (76u)
362 
363 
364 #define SDL_ECC_MEMTYPE_MAX (SDL_ECC_COMPUTE_CLUSTER0_6_ECC_AGGR + 1U)
365 
366 
367 /* Max entries based on max mem type */
368 #define SDL_ECC_AGGREGATOR_MAX_LOW_ENTRIES (SDL_ECC_VCL_MAIN_INFRA_ECC_AGGR0_0_ECC_AGGR+1U)
369 
370 #define SDL_ECC_AGGREGATOR_MAX_HIGH_ENTRIES (SDL_ECC_COMPUTE_CLUSTER0_6_ECC_AGGR - \
371  SDL_ECC_MEMTYPE_MAIN_MSMC_AGGR0 + 1u)
372 
373 #endif
374 
379 typedef uint32_t SDL_ECC_MemSubType;
380 
381 #if defined (SOC_J721E)
382 
383 /* The following are the memory sub type for Memory type
384  SDL_ECC_MEMTYPE_MCU_R5F0_CORE & SDL_ECC_MEMTYPE_MCU_R5F1_CORE */
385 /* Keeping for backward-compatibility. Recommend to use RAM_ID directly from sdlr_soc_ecc_aggr.h file */
386 
388 #define SDL_ECC_R5F_MEM_SUBTYPE_ATCM0_BANK0_VECTOR_ID (SDL_MCU_R5FSS0_CORE0_ECC_AGGR_PULSAR_SL_ATCM0_BANK0_RAM_ID)
389 
390 #define SDL_ECC_R5F_MEM_SUBTYPE_ATCM0_BANK1_VECTOR_ID (SDL_MCU_R5FSS0_CORE0_ECC_AGGR_PULSAR_SL_ATCM0_BANK1_RAM_ID)
391 
392 #define SDL_ECC_R5F_MEM_SUBTYPE_B0TCM0_BANK0_VECTOR_ID (SDL_MCU_R5FSS0_CORE0_ECC_AGGR_PULSAR_SL_B0TCM0_BANK0_RAM_ID)
393 
394 #define SDL_ECC_R5F_MEM_SUBTYPE_B0TCM0_BANK1_VECTOR_ID (SDL_MCU_R5FSS0_CORE0_ECC_AGGR_PULSAR_SL_B0TCM0_BANK1_RAM_ID)
395 
396 #define SDL_ECC_R5F_MEM_SUBTYPE_B1TCM0_BANK0_VECTOR_ID (SDL_MCU_R5FSS0_CORE0_ECC_AGGR_PULSAR_SL_B1TCM0_BANK0_RAM_ID)
397 
398 #define SDL_ECC_R5F_MEM_SUBTYPE_B1TCM0_BANK1_VECTOR_ID (SDL_MCU_R5FSS0_CORE0_ECC_AGGR_PULSAR_SL_B1TCM0_BANK1_RAM_ID)
399 
400 #define SDL_ECC_R5F_MEM_SUBTYPE_KS_VIM_RAM_VECTOR_ID (SDL_MCU_R5FSS0_CORE0_ECC_AGGR_CPU0_KS_VIM_RAMECC_RAM_ID)
401 
402 #endif
403 
404 #if defined (SOC_J7200)
405 
406 /* The following are the memory sub type for Memory type
407  SDL_ECC_MEMTYPE_MCU_R5F0_CORE & SDL_ECC_MEMTYPE_MCU_R5F1_CORE */
408 /* Keeping for backward-compatibility. Recommend to use RAM_ID directly from sdlr_soc_ecc_aggr.h file */
409 
411 #define SDL_ECC_R5F_MEM_SUBTYPE_ATCM0_BANK0_VECTOR_ID (SDL_MCU_R5FSS0_PULSAR_SL_ATCM0_BANK0_RAM_ID)
412 
413 #define SDL_ECC_R5F_MEM_SUBTYPE_ATCM0_BANK1_VECTOR_ID (SDL_MCU_R5FSS0_PULSAR_SL_ATCM0_BANK1_RAM_ID)
414 
415 #define SDL_ECC_R5F_MEM_SUBTYPE_B0TCM0_BANK0_VECTOR_ID (SDL_MCU_R5FSS0_PULSAR_SL_B0TCM0_BANK0_RAM_ID)
416 
417 #define SDL_ECC_R5F_MEM_SUBTYPE_B0TCM0_BANK1_VECTOR_ID (SDL_MCU_R5FSS0_PULSAR_SL_B0TCM0_BANK1_RAM_ID)
418 
419 #define SDL_ECC_R5F_MEM_SUBTYPE_B1TCM0_BANK0_VECTOR_ID (SDL_MCU_R5FSS0_PULSAR_SL_B1TCM0_BANK0_RAM_ID)
420 
421 #define SDL_ECC_R5F_MEM_SUBTYPE_B1TCM0_BANK1_VECTOR_ID (SDL_MCU_R5FSS0_PULSAR_SL_B1TCM0_BANK1_RAM_ID)
422 
423 #define SDL_ECC_R5F_MEM_SUBTYPE_KS_VIM_RAM_VECTOR_ID (SDL_MCU_R5FSS0_CPU0_KS_VIM_RAMECC_RAM_ID)
424 
425 #endif
426 
428 typedef void (*SDL_ECC_ErrorCallback_t) (uint32_t errorSrc, uint32_t address);
429 
431 typedef void (*SDL_ECC_VIMDEDVector_t) (void);
432 
433 /* @} */
434 
444 typedef struct SDL_ECC_InitConfig_s
445 {
446  uint32_t numRams;
452 
457 typedef struct SDL_ECC_InjectErrorConfig_s
458 {
459  uint32_t *pErrMem;
461  uint32_t flipBitMask;
463  uint32_t chkGrp;
466 
471 typedef struct SDL_ECC_ErrorInfo_s
472 {
479  uint32_t bitErrCnt;
481  uint32_t injectBitErrCnt;
483  uint32_t bitErrorGroup;
485  uint64_t bitErrorOffset;
488 
489 /* @} */
490 
504 int32_t SDL_ECC_initEsm (const SDL_ESM_Inst esmInstType);
505 
515 int32_t SDL_ECC_init (SDL_ECC_MemType eccMemType,
516  const SDL_ECC_InitConfig_t *pECCInitConfig);
517 
528 int32_t SDL_ECC_initMemory (SDL_ECC_MemType eccMemType,
529  SDL_ECC_MemSubType memSubType);
530 
544 int32_t SDL_ECC_selfTest(SDL_ECC_MemType eccMemType,
545  SDL_ECC_MemSubType memSubType,
546  SDL_ECC_InjectErrorType errorType,
547  const SDL_ECC_InjectErrorConfig_t *pECCErrorConfig,
548  uint32_t selfTestTimeOut);
549 
562 int32_t SDL_ECC_injectError(SDL_ECC_MemType eccMemType,
563  SDL_ECC_MemSubType memSubType,
564  SDL_ECC_InjectErrorType errorType,
565  const SDL_ECC_InjectErrorConfig_t *pECCErrorConfig);
566 
577  SDL_ECC_staticRegs *pStaticRegs);
578 
590 int32_t SDL_ECC_getErrorInfo(SDL_ECC_MemType eccMemType,
591  SDL_Ecc_AggrIntrSrc intrSrc,
592  SDL_ECC_ErrorInfo_t *pErrorInfo);
593 
603 int32_t SDL_ECC_ackIntr(SDL_ECC_MemType eccMemType,
604  SDL_Ecc_AggrIntrSrc intrSrc);
605 
619 int32_t SDL_ECC_getESMErrorInfo(SDL_ESM_Inst instance, uint32_t intSrc,
620  SDL_ECC_MemType *eccMemType, SDL_Ecc_AggrIntrSrc *intrSrcType);
621 
635 int32_t SDL_ECC_clearNIntrPending(SDL_ECC_MemType eccMemType, SDL_ECC_MemSubType memSubType,
636  SDL_Ecc_AggrIntrSrc intrSrc,
637  SDL_Ecc_AggrEDCErrorSubType subType, uint32_t numEvents);
638 
651 
671  uint32_t errorSrc,
672  uint32_t address,
673  uint32_t ramId,
674  uint64_t bitErrorOffset,
675  uint32_t bitErrorGroup);
676 
677 /* @} */
678 
679 #ifdef __cplusplus
680 }
681 #endif /* extern "C" */
682 
683 #endif /* INCLUDE_SDL_ECC_H_ */
SDL_ECC_AggregatorType
This enumerator defines the different ECC aggregator types.
Definition: sdl_ecc.h:104
int32_t SDL_ECC_init(SDL_ECC_MemType eccMemType, const SDL_ECC_InitConfig_t *pECCInitConfig)
Initializes ECC module for ECC detection.
SDL_ESM_Inst
Defines the different ESM instance types
Definition: ip/sdl_esm.h:167
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.
uint32_t SDL_Ecc_AggrEDCErrorSubType
This enumerator defines the types of possible EDC errors.
Definition: sdl_ip_ecc.h:187
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&#39;t an ECC error or the ECC ...
uint32_t bitErrorGroup
Definition: sdl_ecc.h:483
SDL_ECC_MemSubType memSubType
Definition: sdl_ecc.h:475
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...
uint32_t chkGrp
Definition: sdl_ecc.h:463
This structure defines the inject error configuration.
Definition: sdl_ecc.h:457
int32_t SDL_ECC_initEsm(const SDL_ESM_Inst esmInstType)
Initializes an module for usage with ECC module.
SDL_Ecc_AggrIntrSrc intrSrc
Definition: sdl_ecc.h:477
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.
Definition: sdl_ecc.h:107
This structure contains the static register group for Ecc aggregator used by the SDL_ecc_aggrReadStat...
Definition: sdl_ip_ecc.h:348
uint32_t numRams
Definition: sdl_ecc.h:446
This structure defines the error status information.
Definition: sdl_ecc.h:471
SDL_ECC_RamIdType
This enumerator defines the different ECC RAM ID types.
Definition: sdl_ecc.h:142
uint32_t SDL_ECC_MemType
This enumerator indicate ECC memory type.
Definition: sdl_ecc.h:161
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_MemSubType * pMemSubTypeList
Definition: sdl_ecc.h:449
uint64_t bitErrorOffset
Definition: sdl_ecc.h:485
void SDL_ECC_registerVIMDEDHandler(SDL_ECC_VIMDEDVector_t VIMDEDHandler)
Register Handler for VIM DED ECC error.
This structure defines the elements of ECC Init configuration.
Definition: sdl_ecc.h:444
int32_t SDL_ECC_ackIntr(SDL_ECC_MemType eccMemType, SDL_Ecc_AggrIntrSrc intrSrc)
Acknowledge the ECC interrupt.
Definition: sdl_ecc.h:143
uint32_t flipBitMask
Definition: sdl_ecc.h:461
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...
void(* SDL_ECC_VIMDEDVector_t)(void)
Definition: sdl_ecc.h:431
Header file contains enumerations, structure definitions and function declarations for SDL Error Sign...
uint32_t * pErrMem
Definition: sdl_ecc.h:459
uint32_t SDL_ECC_MemSubType
This enumerator indicate ECC memory Sub Type.
Definition: sdl_ecc.h:379
SDL_ECC_MemType eccMemType
Definition: sdl_ecc.h:473
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.
Definition: sdl_ecc.h:105
Definition: sdl_ecc.h:118
uint32_t SDL_Ecc_AggrIntrSrc
This enumerator defines the types of possible ECC errors.
Definition: sdl_ip_ecc.h:106
int32_t SDL_ECC_getStaticRegisters(SDL_ECC_MemType eccMemType, SDL_ECC_staticRegs *pStaticRegs)
Gets the static registers for the specified ECC instance.
uint32_t bitErrCnt
Definition: sdl_ecc.h:479
Definition: sdl_ecc.h:145
void(* SDL_ECC_ErrorCallback_t)(uint32_t errorSrc, uint32_t address)
Definition: sdl_ecc.h:428
SDL_ECC_InjectErrorType
ECC Inject error types.
Definition: sdl_ecc.h:116
uint32_t injectBitErrCnt
Definition: sdl_ecc.h:481