AM273x MCU+ SDK  08.05.00
ecc_bus_safety/v0/sdl_ecc_bus_safety.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) Texas Instruments Incorporated 2022
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 
51 #ifndef SDL_ECC_BUS_SAFETY_H_
52 #define SDL_ECC_BUS_SAFETY_H_
53 
54 /* ========================================================================== */
55 /* Include Files */
56 /* ========================================================================== */
57 #include "sdl_ecc_bus_safety_hw.h"
58 #include <sdl/ecc_bus_safety/v0/soc/sdl_ecc_bus_safety_soc.h>
59 
60 #ifdef _cplusplus
61 extern "C" {
62 #endif
63 
82 /* ========================================================================== */
83 /* Macros & Typedefs */
84 /* ========================================================================== */
90 /* Macro defines Ecc Bus Safety Nodes in the DSS Subsystem */
91 
92 #define SDL_ECC_BUS_SAFETY_DSS_DSP_MDMA 0U
93 #define SDL_ECC_BUS_SAFETY_DSS_L3_BANKA 1U
94 #define SDL_ECC_BUS_SAFETY_DSS_L3_BANKB 2U
95 #define SDL_ECC_BUS_SAFETY_DSS_L3_BANKC 3U
96 #define SDL_ECC_BUS_SAFETY_DSS_L3_BANKD 4U
97 #define SDL_ECC_BUS_SAFETY_DSS_DSP_SDMA 5U
98 #define SDL_ECC_BUS_SAFETY_DSS_TPTC_A0_RD 6U
99 #define SDL_ECC_BUS_SAFETY_DSS_TPTC_A1_RD 7U
100 #define SDL_ECC_BUS_SAFETY_DSS_TPTC_B0_RD 8U
101 #define SDL_ECC_BUS_SAFETY_DSS_TPTC_B1_RD 9U
102 #define SDL_ECC_BUS_SAFETY_DSS_TPTC_C0_RD 10U
103 #define SDL_ECC_BUS_SAFETY_DSS_TPTC_C1_RD 11U
104 #define SDL_ECC_BUS_SAFETY_DSS_TPTC_C2_RD 12U
105 #define SDL_ECC_BUS_SAFETY_DSS_TPTC_C3_RD 13U
106 #define SDL_ECC_BUS_SAFETY_DSS_TPTC_C4_RD 14U
107 #define SDL_ECC_BUS_SAFETY_DSS_TPTC_C5_RD 15U
108 #define SDL_ECC_BUS_SAFETY_DSS_TPTC_A0_WR 16U
109 #define SDL_ECC_BUS_SAFETY_DSS_TPTC_A1_WR 17U
110 #define SDL_ECC_BUS_SAFETY_DSS_TPTC_B0_WR 18U
111 #define SDL_ECC_BUS_SAFETY_DSS_TPTC_B1_WR 19U
112 #define SDL_ECC_BUS_SAFETY_DSS_TPTC_C0_WR 20U
113 #define SDL_ECC_BUS_SAFETY_DSS_TPTC_C1_WR 21U
114 #define SDL_ECC_BUS_SAFETY_DSS_TPTC_C2_WR 22U
115 #define SDL_ECC_BUS_SAFETY_DSS_TPTC_C3_WR 23U
116 #define SDL_ECC_BUS_SAFETY_DSS_TPTC_C4_WR 24U
117 #define SDL_ECC_BUS_SAFETY_DSS_TPTC_C5_WR 25U
118 #define SDL_ECC_BUS_SAFETY_DSS_CBUFF_FIFO 26U
119 #define SDL_ECC_BUS_SAFETY_DSS_MCRC 27U
120 #define SDL_ECC_BUS_SAFETY_DSS_PCR 28U
121 #define SDL_ECC_BUS_SAFETY_DSS_HWA_DMA0 29U
122 #define SDL_ECC_BUS_SAFETY_DSS_HWA_DMA1 30U
123 #define SDL_ECC_BUS_SAFETY_DSS_MBOX 31U
124 #define SDL_ECC_BUS_SAFETY_RSS_TPTCA0_RD 32U
125 #define SDL_ECC_BUS_SAFETY_RSS_TPTCA0_WR 33U
126 #define SDL_ECC_BUS_SAFETY_RSS_CSI2A_MDMA 34U
127 #define SDL_ECC_BUS_SAFETY_RSS_PCR 35U
128 #define SDL_ECC_BUS_SAFETY_RSS_CQ_MEM_RD 36U
129 #define SDL_ECC_BUS_SAFETY_RSS_CQ_MEM_WR 37U
130 #define SDL_ECC_BUS_SAFETY_RSS_STATIC_MEM 38U
131 #define SDL_ECC_BUS_SAFETY_RSS_BSS_MST 39U
132 #define SDL_ECC_BUS_SAFETY_RSS_BSS_SLV 40U
133 
134 /* Node Sufforted only in AM273X */
135 #define SDL_ECC_BUS_SAFETY_DSS_MDO_FIFO 41U
136 
137 /* Node Sufforted only in AWR294X */
138 #define SDL_ECC_BUS_SAFETY_RSS_MBOX 41U
139 #define SDL_ECC_BUS_SAFETY_RSS_ADCBUF_RD 42U
140 #define SDL_ECC_BUS_SAFETY_RSS_ADCBUF_WR 43U
141 
142 #define SDL_ECC_BUS_SAFETY_MSS_TPTC_A0_RD 0U
143 #define SDL_ECC_BUS_SAFETY_MSS_TPTC_A1_RD 1U
144 #define SDL_ECC_BUS_SAFETY_MSS_TPTC_B0_RD 2U
145 #define SDL_ECC_BUS_SAFETY_MSS_CR5A_AXI_RD 3U
146 #define SDL_ECC_BUS_SAFETY_MSS_CR5B_AXI_RD 4U
147 #define SDL_ECC_BUS_SAFETY_MSS_CR5C_AXI_RD 5U
148 #define SDL_ECC_BUS_SAFETY_MSS_CR5D_AXI_RD 6U
149 #define SDL_ECC_BUS_SAFETY_MSS_CR5A_AXI_S 7U
150 #define SDL_ECC_BUS_SAFETY_MSS_CR5B_AXI_S 8U
151 #define SDL_ECC_BUS_SAFETY_MSS_CR5C_AXI_S 9U
152 #define SDL_ECC_BUS_SAFETY_MSS_CR5D_AXI_S 10U
153 #define SDL_ECC_BUS_SAFETY_MSS_TPTC_A0_WR 11U
154 #define SDL_ECC_BUS_SAFETY_MSS_TPTC_A1_WR 12U
155 #define SDL_ECC_BUS_SAFETY_MSS_TPTC_B0_WR 13U
156 #define SDL_ECC_BUS_SAFETY_MSS_CR5A_AHB 14U
157 #define SDL_ECC_BUS_SAFETY_MSS_CR5B_AHB 15U
158 #define SDL_ECC_BUS_SAFETY_MSS_CR5C_AHB 16U
159 #define SDL_ECC_BUS_SAFETY_MSS_CR5D_AHB 17U
160 #define SDL_ECC_BUS_SAFETY_MSS_CR5A_AXI_WR 18U
161 #define SDL_ECC_BUS_SAFETY_MSS_CR5B_AXI_WR 19U
162 #define SDL_ECC_BUS_SAFETY_MSS_CR5C_AXI_WR 20U
163 #define SDL_ECC_BUS_SAFETY_MSS_CR5D_AXI_WR 21U
164 
165 #define SDL_ECC_BUS_SAFETY_MSS_MBOX 22U
166 
169 /* ========================================================================== */
170 /* Structure Declarations */
171 /* ========================================================================== */
172 
177 typedef struct
178 {
179  /* Base address of the Core Control Register */
180  uint32_t baseAddr;
181  /* Node Start address */
182  uint32_t nodeStartAddr;
183  /* Node End address */
184  uint32_t nodeEndAddr;
185  /* offset of bus safety Control Register */
186  uint32_t busSftyCtrl;
187  /* offset of bus safety FI Register */
188  uint32_t busSftyFi;
189  /* offset of bus safety Error Register */
190  uint32_t busSftyErr;
191  /* offset of bus safety Err Stat CMD Register */
193  /* offset of bus safety Err Stat Write Register */
195  /* offset of bus safety Err Stat Read Register */
197  /* offset of bus safety Err Stat Write Resp Register */
200 
208 typedef enum
209 {
216 
217 typedef enum
218 {
225 
228 /* ========================================================================== */
229 /* Variable Declarations */
230 /* ========================================================================== */
231 /* ========================================================================== */
232 /* Function Declarations */
233 /* ========================================================================== */
234 
253 int32_t SDL_ECC_BUS_SAFETY_DSS_secExecute(uint32_t busSftyNode,uint32_t addr, uint32_t wr_data);
254 
268 int32_t SDL_ECC_BUS_SAFETY_DSS_dedExecute(uint32_t busSftyNode, uint32_t addr, uint32_t wr_data);
269 
283 int32_t SDL_ECC_BUS_SAFETY_DSS_redExecute(uint32_t busSftyNode,\
285 
286 
296 int32_t SDL_ECC_BUS_SAFETY_DSS_secErrorClear(uint32_t busSftyNode);
297 
298 
309 int32_t SDL_ECC_BUS_SAFETY_DSS_getSecErrorStatus(uint32_t busSftyNode , uint32_t *status);
310 
321 int32_t SDL_ECC_BUS_SAFETY_DSS_dedErrorClear(uint32_t busSftyNode);
322 
335 int32_t SDL_ECC_BUS_SAFETY_DSS_getDedErrorStatus(uint32_t busSftyNode , uint32_t *status);
336 
347 int32_t SDL_ECC_BUS_SAFETY_DSS_redErrorClear(uint32_t busSftyNode);
348 
360 int32_t SDL_ECC_BUS_SAFETY_DSS_getRedErrorStatus(uint32_t busSftyNode , uint32_t *status);
361 
362 int32_t SDL_ECC_BUS_SAFETY_MSS_secExecute(uint32_t busSftyNode,uint32_t addr, uint32_t wr_data);
363 
377 int32_t SDL_ECC_BUS_SAFETY_MSS_dedExecute(uint32_t busSftyNode, uint32_t addr, uint32_t wr_data);
378 
392 int32_t SDL_ECC_BUS_SAFETY_MSS_redExecute(uint32_t busSftyNode,\
394 
395 
405 int32_t SDL_ECC_BUS_SAFETY_MSS_secErrorClear(uint32_t busSftyNode);
406 
407 
418 int32_t SDL_ECC_BUS_SAFETY_MSS_getSecErrorStatus(uint32_t busSftyNode , uint32_t *status);
419 
430 int32_t SDL_ECC_BUS_SAFETY_MSS_dedErrorClear(uint32_t busSftyNode);
431 
444 int32_t SDL_ECC_BUS_SAFETY_MSS_getDedErrorStatus(uint32_t busSftyNode , uint32_t *status);
445 
456 int32_t SDL_ECC_BUS_SAFETY_MSS_redErrorClear(uint32_t busSftyNode);
457 
469 int32_t SDL_ECC_BUS_SAFETY_MSS_getRedErrorStatus(uint32_t busSftyNode , uint32_t *status);
470 
474 #ifdef _cplusplus
475 }
476 #endif /*extern "C" */
477 
478 #endif
SDL_ECC_BUS_SAFETY_Base_Addr_Offset_S::busSftyErrStatWr
uint32_t busSftyErrStatWr
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:194
SDL_ECC_BUS_SAFETY_MSS_secExecute
int32_t SDL_ECC_BUS_SAFETY_MSS_secExecute(uint32_t busSftyNode, uint32_t addr, uint32_t wr_data)
SDL_ECC_BUS_SAFETY_MSS_secErrorClear
int32_t SDL_ECC_BUS_SAFETY_MSS_secErrorClear(uint32_t busSftyNode)
This API is used to clear SEC error on MSS.
SDL_ECC_BUS_SAFETY_DSS_dedExecute
int32_t SDL_ECC_BUS_SAFETY_DSS_dedExecute(uint32_t busSftyNode, uint32_t addr, uint32_t wr_data)
This API is used for DED test on DSS.
SDL_ECC_BUS_SAFETY_DSS_secErrorClear
int32_t SDL_ECC_BUS_SAFETY_DSS_secErrorClear(uint32_t busSftyNode)
This API is used to clear SEC error on DSS.
SDL_ECC_BUS_SAFETY_Base_Addr_Offset_S::busSftyCtrl
uint32_t busSftyCtrl
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:186
SDL_ECC_BUS_SAFETY_MSS_redErrorClear
int32_t SDL_ECC_BUS_SAFETY_MSS_redErrorClear(uint32_t busSftyNode)
This API is used to clear RED error on MSS.
SDL_ECC_BUS_SAFETY_MSS_dedExecute
int32_t SDL_ECC_BUS_SAFETY_MSS_dedExecute(uint32_t busSftyNode, uint32_t addr, uint32_t wr_data)
This API is used for DED test on MSS.
SDL_ECC_BUS_SAFETY_DSS_getDedErrorStatus
int32_t SDL_ECC_BUS_SAFETY_DSS_getDedErrorStatus(uint32_t busSftyNode, uint32_t *status)
This API is used to get DED error Status on DSS.
SDL_ECC_BUS_SAFETY_FI_INVALID
@ SDL_ECC_BUS_SAFETY_FI_INVALID
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:214
SDL_ECC_BUS_SAFETY_FI_TYPE_INVALID
@ SDL_ECC_BUS_SAFETY_FI_TYPE_INVALID
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:223
SDL_ECC_BUS_SAFETY_Base_Addr_Offset_S::nodeEndAddr
uint32_t nodeEndAddr
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:184
SDL_ECC_BUS_SAFETY_DSS_getSecErrorStatus
int32_t SDL_ECC_BUS_SAFETY_DSS_getSecErrorStatus(uint32_t busSftyNode, uint32_t *status)
This API is used to get SEC error Status on DSS.
SDL_ECC_BUS_SAFETY_MSS_redExecute
int32_t SDL_ECC_BUS_SAFETY_MSS_redExecute(uint32_t busSftyNode, SDL_ECC_BUS_SAFETY_busSftyFiType fiType, SDL_ECC_BUS_SAFETY_busSftyFiRedType redType)
This API is used for RED test on MSS.
SDL_ECC_BUS_SAFETY_FI_GLOBAL_MAIN
@ SDL_ECC_BUS_SAFETY_FI_GLOBAL_MAIN
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:212
SDL_ECC_BUS_SAFETY_MSS_getSecErrorStatus
int32_t SDL_ECC_BUS_SAFETY_MSS_getSecErrorStatus(uint32_t busSftyNode, uint32_t *status)
This API is used to get SEC error Status on MSS.
SDL_ECC_BUS_SAFETY_Base_Addr_Offset_S::busSftyErrStatWrResp
uint32_t busSftyErrStatWrResp
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:198
SDL_ECC_BUS_SAFETY_Base_Addr_Offset_S::busSftyErrStatRd
uint32_t busSftyErrStatRd
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:196
SDL_ECC_BUS_SAFETY_DSS_secExecute
int32_t SDL_ECC_BUS_SAFETY_DSS_secExecute(uint32_t busSftyNode, uint32_t addr, uint32_t wr_data)
This API is used for SEC test on DSS.
SDL_ECC_BUS_SAFETY_MAIN_WRITE_INTERFACE
@ SDL_ECC_BUS_SAFETY_MAIN_WRITE_INTERFACE
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:220
SDL_ECC_BUS_SAFETY_busSftyFiRedType
SDL_ECC_BUS_SAFETY_busSftyFiRedType
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:218
SDL_ECC_BUS_SAFETY_Base_Addr_Offset_S::nodeStartAddr
uint32_t nodeStartAddr
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:182
SDL_ECC_BUS_SAFETY_FI_GLOBAL_SAFE
@ SDL_ECC_BUS_SAFETY_FI_GLOBAL_SAFE
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:213
SDL_ECC_BUS_SAFETY_DSS_getRedErrorStatus
int32_t SDL_ECC_BUS_SAFETY_DSS_getRedErrorStatus(uint32_t busSftyNode, uint32_t *status)
This API is used to get RED error Status on DSS.
SDL_ECC_BUS_SAFETY_Base_Addr_Offset_S::busSftyErrStatCmd
uint32_t busSftyErrStatCmd
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:192
SDL_ECC_BUS_SAFETY_MSS_getDedErrorStatus
int32_t SDL_ECC_BUS_SAFETY_MSS_getDedErrorStatus(uint32_t busSftyNode, uint32_t *status)
This API is used to get DED error Status on MSS.
SDL_ECC_BUS_SAFETY_FI_MAIN
@ SDL_ECC_BUS_SAFETY_FI_MAIN
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:210
SDL_ECC_BUS_SAFETY_DSS_dedErrorClear
int32_t SDL_ECC_BUS_SAFETY_DSS_dedErrorClear(uint32_t busSftyNode)
This API is used to clear DED error on DSS.
SDL_ECC_BUS_SAFETY_busSftyFiType
SDL_ECC_BUS_SAFETY_busSftyFiType
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:209
SDL_ECC_BUS_SAFETY_Base_Addr_Offset_S::baseAddr
uint32_t baseAddr
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:180
SDL_ECC_BUS_SAFETY_MAIN_CMD_INTERFACE
@ SDL_ECC_BUS_SAFETY_MAIN_CMD_INTERFACE
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:219
SDL_ECC_BUS_SAFETY_MSS_getRedErrorStatus
int32_t SDL_ECC_BUS_SAFETY_MSS_getRedErrorStatus(uint32_t busSftyNode, uint32_t *status)
This API is used to get RED error Status on MSS.
SDL_ECC_BUS_SAFETY_MAIN_WRITE_STATUS_INTERFACE
@ SDL_ECC_BUS_SAFETY_MAIN_WRITE_STATUS_INTERFACE
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:221
SDL_ECC_BUS_SAFETY_MSS_dedErrorClear
int32_t SDL_ECC_BUS_SAFETY_MSS_dedErrorClear(uint32_t busSftyNode)
This API is used to clear DED error on MSS.
SDL_ECC_BUS_SAFETY_Base_Addr_Offset_S
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:178
SDL_ECC_BUS_SAFETY_DSS_redExecute
int32_t SDL_ECC_BUS_SAFETY_DSS_redExecute(uint32_t busSftyNode, SDL_ECC_BUS_SAFETY_busSftyFiType fiType, SDL_ECC_BUS_SAFETY_busSftyFiRedType redType)
This API is used for RED test on DSS.
SDL_ECC_BUS_SAFETY_MAIN_READ_INTERFACE
@ SDL_ECC_BUS_SAFETY_MAIN_READ_INTERFACE
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:222
SDL_ECC_BUS_SAFETY_DSS_redErrorClear
int32_t SDL_ECC_BUS_SAFETY_DSS_redErrorClear(uint32_t busSftyNode)
This API is used to clear RED error on DSS.
SDL_ECC_BUS_SAFETY_Base_Addr_Offset_S::busSftyErr
uint32_t busSftyErr
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:190
SDL_ECC_BUS_SAFETY_FI_SAFE
@ SDL_ECC_BUS_SAFETY_FI_SAFE
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:211
SDL_ECC_BUS_SAFETY_Base_Addr_Offset_S::busSftyFi
uint32_t busSftyFi
Definition: ecc_bus_safety/v0/sdl_ecc_bus_safety.h:188