RTEMS 6.1-rc1
fsl_xecc.h
1/*
2 * Copyright 2019-2020 NXP
3 * All rights reserved.
4 *
5 *
6 * SPDX-License-Identifier: BSD-3-Clause
7 */
8
9#ifndef _FSL_XECC_H_
10#define _FSL_XECC_H_
11
12#include "fsl_common.h"
13
19/******************************************************************************
20 * Definitions.
21 *****************************************************************************/
22
26#define FSL_XECC_DRIVER_VERSION (MAKE_VERSION(2U, 0U, 0U))
34enum
35{
36 kXECC_SingleErrorInterruptEnable = XECC_ERR_SIG_EN_SINGLE_ERR_SIG_EN_MASK,
37 kXECC_MultiErrorInterruptEnable = XECC_ERR_SIG_EN_MULTI_ERR_SIG_EN_MASK,
40 XECC_ERR_SIG_EN_SINGLE_ERR_SIG_EN_MASK | XECC_ERR_SIG_EN_MULTI_ERR_SIG_EN_MASK,
41};
42
48enum
49{
51 XECC_ERR_STAT_EN_SINGLE_ERR_STAT_EN_MASK,
53 XECC_ERR_STAT_EN_MULIT_ERR_STAT_EN_MASK,
55 kXECC_AllInterruptsStatusEnable = XECC_ERR_STAT_EN_SINGLE_ERR_STAT_EN_MASK |
56 XECC_ERR_STAT_EN_MULIT_ERR_STAT_EN_MASK,
57};
58
64enum
65{
67 XECC_ERR_STATUS_SINGLE_ERR_MASK,
69 XECC_ERR_STATUS_MULTI_ERR_MASK,
72 XECC_ERR_STATUS_SINGLE_ERR_MASK | XECC_ERR_STATUS_MULTI_ERR_MASK,
73};
74
76typedef struct _xecc_config
77{
93
97{
99 uint32_t singleErrorData;
104
108{
110 uint32_t multiErrorData;
114
115/*******************************************************************************
116 * APIs
117 ******************************************************************************/
118
119#if defined(__cplusplus)
120extern "C" {
121#endif
122
134void XECC_Init(XECC_Type *base, const xecc_config_t *config);
135
141void XECC_Deinit(XECC_Type *base);
142
149
150/* @} */
151
162static inline uint32_t XECC_GetStatusFlags(XECC_Type *base)
163{
164 return base->ERR_STATUS & (uint32_t)kXECC_AllInterruptsFlag;
165}
166
173static inline void XECC_ClearStatusFlags(XECC_Type *base, uint32_t mask)
174{
175 base->ERR_STATUS = mask;
176}
177
184static inline void XECC_EnableInterruptStatus(XECC_Type *base, uint32_t mask)
185{
186 base->ERR_STAT_EN |= mask;
187}
188
195static inline void XECC_DisableInterruptStatus(XECC_Type *base, uint32_t mask)
196{
197 base->ERR_STAT_EN &= ~mask;
198}
199
200/* @} */
201
213static inline void XECC_EnableInterrupts(XECC_Type *base, uint32_t mask)
214{
215 base->ERR_SIG_EN |= mask;
216}
217
224static inline void XECC_DisableInterrupts(XECC_Type *base, uint32_t mask)
225{
226 base->ERR_SIG_EN &= ~mask;
227}
228/* @} */
229
240static inline void XECC_WriteECCEnable(XECC_Type *base, bool enable)
241{
242 if (enable)
243 {
244 base->ECC_CTRL |= XECC_ECC_CTRL_WECC_EN(1);
245 }
246 else
247 {
248 base->ECC_CTRL |= XECC_ECC_CTRL_WECC_EN(0);
249 }
250}
251
258static inline void XECC_ReadECCEnable(XECC_Type *base, bool enable)
259{
260 if (enable)
261 {
262 base->ECC_CTRL |= XECC_ECC_CTRL_RECC_EN(1);
263 }
264 else
265 {
266 base->ECC_CTRL |= XECC_ECC_CTRL_RECC_EN(0);
267 }
268}
269
276static inline void XECC_SwapECCEnable(XECC_Type *base, bool enable)
277{
278 if (enable)
279 {
280 base->ECC_CTRL |= XECC_ECC_CTRL_SWAP_EN(1);
281 }
282 else
283 {
284 base->ECC_CTRL |= XECC_ECC_CTRL_SWAP_EN(0);
285 }
286}
287
296status_t XECC_ErrorInjection(XECC_Type *base, uint32_t errordata, uint8_t erroreccdata);
297
305
313
316#if defined(__cplusplus)
317}
318#endif
319
322#endif
#define XECC_ECC_CTRL_SWAP_EN(x)
Definition: MIMXRT1166_cm4.h:92866
#define XECC_ECC_CTRL_RECC_EN(x)
Definition: MIMXRT1166_cm4.h:92858
#define XECC_ECC_CTRL_WECC_EN(x)
Definition: MIMXRT1166_cm4.h:92850
int32_t status_t
Type used for all status and error return values.
Definition: fsl_common.h:225
void XECC_Deinit(XECC_Type *base)
Deinitializes the XECC.
Definition: fsl_xecc.c:67
struct _xecc_config xecc_config_t
XECC user configuration.
void XECC_GetMultiErrorInfo(XECC_Type *base, xecc_multi_error_info_t *info)
XECC module get multiple error information.
Definition: fsl_xecc.c:140
void XECC_GetSingleErrorInfo(XECC_Type *base, xecc_single_error_info_t *info)
XECC module get single error information.
Definition: fsl_xecc.c:129
void XECC_Init(XECC_Type *base, const xecc_config_t *config)
XECC module initialization function.
Definition: fsl_xecc.c:34
struct _xecc_multi_error_info xecc_multi_error_info_t
XECC multiple error information, including multiple error address, ECC code, error data and error bit...
status_t XECC_ErrorInjection(XECC_Type *base, uint32_t errordata, uint8_t erroreccdata)
XECC module error injection.
Definition: fsl_xecc.c:108
void XECC_GetDefaultConfig(xecc_config_t *config)
Sets the XECC configuration structure to default values.
Definition: fsl_xecc.c:73
struct _xecc_single_error_info xecc_single_error_info_t
XECC single error information, including single error address, ECC code, error data,...
@ kXECC_MultiErrorInterruptFlag
Definition: fsl_xecc.h:68
@ kXECC_AllInterruptsFlag
Definition: fsl_xecc.h:71
@ kXECC_SingleErrorInterruptFlag
Definition: fsl_xecc.h:66
@ kXECC_MultiErrorInterruptEnable
Definition: fsl_xecc.h:37
@ kXECC_SingleErrorInterruptEnable
Definition: fsl_xecc.h:36
@ kXECC_AllInterruptsEnable
Definition: fsl_xecc.h:39
@ kXECC_SingleErrorInterruptStatusEnable
Definition: fsl_xecc.h:50
@ kXECC_MultiErrorInterruptStatusEnable
Definition: fsl_xecc.h:52
@ kXECC_AllInterruptsStatusEnable
Definition: fsl_xecc.h:55
Definition: MIMXRT1166_cm4.h:92798
XECC user configuration.
Definition: fsl_xecc.h:77
uint32_t Region0BaseAddress
Definition: fsl_xecc.h:84
uint32_t Region2BaseAddress
Definition: fsl_xecc.h:88
bool enableXECC
Definition: fsl_xecc.h:78
uint32_t Region1EndAddress
Definition: fsl_xecc.h:87
uint32_t Region2EndAddress
Definition: fsl_xecc.h:89
bool enableWriteECC
Definition: fsl_xecc.h:79
uint32_t Region1BaseAddress
Definition: fsl_xecc.h:86
uint32_t Region3EndAddress
Definition: fsl_xecc.h:91
uint32_t Region3BaseAddress
Definition: fsl_xecc.h:90
bool enableReadECC
Definition: fsl_xecc.h:80
bool enableSwap
Definition: fsl_xecc.h:81
uint32_t Region0EndAddress
Definition: fsl_xecc.h:85
XECC multiple error information, including multiple error address, ECC code, error data and error bit...
Definition: fsl_xecc.h:108
uint32_t multiErrorEccCode
Definition: fsl_xecc.h:111
uint32_t multiErrorData
Definition: fsl_xecc.h:110
uint32_t multiErrorBitField
Definition: fsl_xecc.h:112
uint32_t multiErrorAddress
Definition: fsl_xecc.h:109
XECC single error information, including single error address, ECC code, error data,...
Definition: fsl_xecc.h:97
uint32_t singleErrorData
Definition: fsl_xecc.h:99
uint32_t singleErrorEccCode
Definition: fsl_xecc.h:100
uint32_t singleErrorBitPos
Definition: fsl_xecc.h:101
uint32_t singleErrorAddress
Definition: fsl_xecc.h:98
uint32_t singleErrorBitField
Definition: fsl_xecc.h:102
Definition: deflate.c:114