 |
AM64x MCU+ SDK
11.00.00
|
|
Go to the documentation of this file.
70 #include "sdl_mcrc_hw.h"
71 #include <sdl/include/sdlr.h>
72 #include <sdl/mcrc/v0/soc/sdl_mcrc_soc.h>
85 #define SDL_MCRC_CHANNEL_IRQSTATUS_RAW_MAIN_ALL \
86 (uint32_t) ((uint32_t)SDL_MCRC_INTS_CH1_CCITENS_MASK | \
87 (uint32_t)SDL_MCRC_INTR_CH1_FAILENR_MASK | \
88 (uint32_t)SDL_MCRC_INTR_CH1_OVERENR_MASK | \
89 (uint32_t)SDL_MCRC_INTR_CH1_UNDERENR_MASK | \
90 (uint32_t)SDL_MCRC_INTR_CH1_TIME_OUT_ENR_MASK)
95 #define SDL_MCRC_PATTERN_COUNT_MAX (0x000FFFFFU)
100 #define SDL_MCRC_SECTOR_COUNT_MAX (0x0000FFFFU)
106 #define SDL_MCRC_BCTOPLD_MAX (0x00FFFFFFU)
111 #define SDL_MCRC_WDTOPLD_MAX (0x00FFFFFFU)
116 #define SDL_MCRC_DATAWIDTH_SEL_64BIT (0x00000000U)
118 #define SDL_MCRC_DATAWIDTH_SEL_16BIT (0x00000001U)
120 #define SDL_MCRC_DATAWIDTH_SEL_32BIT (0x00000002U)
125 #define SDL_MCRC_MAX_NUM_OF_CHANNELS (4U)
139 #define SDL_MCRC_OPERATION_MODE_DATA (SDL_MCRC_CTRL2_CH1_MODE_DATA)
141 #define SDL_MCRC_OPERATION_MODE_AUTO (SDL_MCRC_CTRL2_CH1_MODE_AUTO)
143 #define SDL_MCRC_OPERATION_MODE_SEMICPU (SDL_MCRC_CTRL2_CH1_MODE_SEMICPU)
145 #define SDL_MCRC_OPERATION_MODE_FULLCPU (SDL_MCRC_CTRL2_CH1_MODE_FULLCPU)
159 #define SDL_MCRC_CHANNEL_1 (0x1U)
161 #define SDL_MCRC_CHANNEL_2 (0x2U)
163 #define SDL_MCRC_CHANNEL_3 (0x3U)
165 #define SDL_MCRC_CHANNEL_4 (0x4U)
179 #define SDL_MCRC_TYPE_16BIT (SDL_MCRC_CTRL0_CH1_CRC_SEL_16BIT)
181 #define SDL_MCRC_TYPE_32BIT (SDL_MCRC_CTRL0_CH1_CRC_SEL_32BIT)
183 #define SDL_MCRC_TYPE_64BIT (SDL_MCRC_CTRL0_CH1_CRC_SEL_64BIT)
185 #define SDL_MCRC_TYPE_E2EPROFILE (SDL_MCRC_CTRL0_CH1_CRC_SEL_E2EPROFILE4)
187 #define SDL_MCRC_TYPE_VDA_CAN_SAEJ1850 (SDL_MCRC_CTRL0_CH1_CRC_SEL_VDA_CAN_SAEJ1850)
189 #define SDL_MCRC_TYPE_H2F_AUTOSAR4 (SDL_MCRC_CTRL0_CH1_CRC_SEL_H2F_AUTOSAR4)
191 #define SDL_MCRC_TYPE_CASTAGNOLI_ISCSI (SDL_MCRC_CTRL0_CH1_CRC_SEL_CASTAGNOLI_ISCSI)
206 #if defined(SOC_AM263X) || defined (SOC_AM263PX) || defined (SOC_AM261X) || defined (SOC_AM273X) || defined (SOC_AWR294X)
207 SDL_MCRC_DATA_64_BIT = 4,
222 #define SDL_MCRC_DATALENGTH_16BIT (SDL_MCRC_CTRL0_CH1_DW_SEL_16BIT)
224 #define SDL_MCRC_DATALENGTH_32BIT (SDL_MCRC_CTRL0_CH1_DW_SEL_32BIT)
226 #define SDL_MCRC_DATALENGTH_64BIT (SDL_MCRC_CTRL0_CH1_DW_SEL_64BIT)
240 #define SDL_MCRC_BITSWAP_MSB (SDL_MCRC_CTRL0_CH1_BIT_SWAP_MSB)
242 #define SDL_MCRC_BITSWAP_LSB (SDL_MCRC_CTRL0_CH1_BIT_SWAP_LSB)
256 #define SDL_MCRC_BYTESWAP_DISABLE (SDL_MCRC_CTRL0_CH1_BTYE_SWAP_DISABLE)
258 #define SDL_MCRC_BYTESWAP_ENABLE (SDL_MCRC_CTRL0_CH1_BTYE_SWAP_ENABLE)
269 typedef struct SDL_MCRC_Config_s
286 typedef struct SDL_MCRC_Signature
297 typedef struct SDL_MCRC_SigantureRegAddr
336 typedef struct SDL_MCRC_DataConfig
373 uint32_t watchdogPreload,
374 uint32_t blockPreload);
398 uint32_t watchdogPreload,
399 uint32_t blockPreload);
420 uint32_t patternCount,
421 uint32_t sectorCount,
424 #if defined(SOC_AM263X) || defined (SOC_AM263PX) || defined (SOC_AM261X) || defined (SOC_AM273X) || defined (SOC_AWR294X)
466 uint32_t patternCount,
467 uint32_t sectorCount,
469 #
if defined(SOC_AM263X) || defined (SOC_AM263PX) || defined (SOC_AM261X) || defined (SOC_AM273X) || defined (SOC_AWR294X)
543 uint32_t *pIntrStatus);
619 uint32_t *pBusyFlag);
640 uint32_t *pCurSecNum);
uint32_t regL
Definition: mcrc/v0/sdl_mcrc.h:299
uint32_t SDL_MCRC_DataLength_t
CRC Data Length supported.
Definition: mcrc/v0/sdl_mcrc.h:220
volatile uint32_t CTRL1
Definition: mcrc/v0/sdl_mcrc.h:327
int32_t SDL_MCRC_channelReset(SDL_MCRC_InstType instance, SDL_MCRC_Channel_t channel)
This API is used to reset the MCRC channel.
int32_t SDL_MCRC_config(SDL_MCRC_InstType instance, SDL_MCRC_Channel_t channel, uint32_t patternCount, uint32_t sectorCount, SDL_MCRC_ModeType mode)
This API will configure MCRC mode, pattern and sector count for given channel.
volatile uint32_t CTRL0
Definition: mcrc/v0/sdl_mcrc.h:325
SDL_MCRC_DataBitSize dataBitSize
Definition: mcrc/v0/sdl_mcrc.h:275
SDL_MCRC_Type_t type
Definition: mcrc/v0/sdl_mcrc.h:271
int32_t SDL_MCRC_enableIntr(SDL_MCRC_InstType instance, SDL_MCRC_Channel_t channel, uint32_t intrMask)
This API is used to enable interrupts for given Channel.
volatile uint32_t BUS_SEL
Definition: mcrc/v0/sdl_mcrc.h:329
int32_t SDL_MCRC_isBusy(SDL_MCRC_InstType instance, SDL_MCRC_Channel_t channel, uint32_t *pBusyFlag)
This API is used to check if MCRC is busy for given Channel.
int32_t SDL_MCRC_getPSASigRegAddr(SDL_MCRC_InstType instance, SDL_MCRC_Channel_t channel, SDL_MCRC_SignatureRegAddr_t *pMCRCregAddr)
This API is used to get the PSA register address for given Channel.
uint32_t SDL_MCRC_BitSwap_t
CRC Bit Swap supported.
Definition: mcrc/v0/sdl_mcrc.h:238
SDL_MCRC_BitSwap_t bitSwap
Definition: mcrc/v0/sdl_mcrc.h:277
uint32_t SDL_MCRC_Channel_t
MCRC channel supported.
Definition: mcrc/v0/sdl_mcrc.h:158
int32_t SDL_MCRC_getPSASectorSig(SDL_MCRC_InstType instance, SDL_MCRC_Channel_t channel, SDL_MCRC_Signature_t *pSecSign)
This API is used to get sector signature Value/ MCRC value for given channel.
SDL_MCRC_InstType
MCRC Instance supported.
Definition: sdl_mcrc_soc.h:60
uint8_t instance
Definition: tisci_dkek.h:1
MCRC static registers list.
Definition: mcrc/v0/sdl_mcrc.h:322
SDL_MCRC_DataBitSize
This enumerator defines the Data size for input MCRC DATA.
Definition: mcrc/v0/sdl_mcrc.h:199
#define SDL_MCRC_MAX_NUM_OF_CHANNELS
Max number of channels supported in MCRC.
Definition: mcrc/v0/sdl_mcrc.h:125
CRC Configuration.
Definition: mcrc/v0/sdl_mcrc.h:270
@ SDL_MCRC_DATA_32_BIT
Definition: mcrc/v0/sdl_mcrc.h:204
@ SDL_MCRC_DATA_8_BIT
Definition: mcrc/v0/sdl_mcrc.h:200
uint32_t regH
Definition: mcrc/v0/sdl_mcrc.h:301
int32_t SDL_MCRC_clearIntr(SDL_MCRC_InstType instance, SDL_MCRC_Channel_t channel, uint32_t intrMask)
This API is used to clear interrupts for given Channel.
int32_t SDL_MCRC_getCRCRegAddr(SDL_MCRC_InstType instance, SDL_MCRC_Channel_t channel, SDL_MCRC_SignatureRegAddr_t *pMCRCregAddr)
This API is used to get the MCRC register address for given Channel.
int32_t SDL_MCRC_getIntrStatus(SDL_MCRC_InstType instance, SDL_MCRC_Channel_t channel, uint32_t *pIntrStatus)
This API is used to get the pending interrupts for given Channel.
MCRC channel static registers list.
Definition: mcrc/v0/sdl_mcrc.h:308
int32_t SDL_MCRC_init(SDL_MCRC_InstType instance, SDL_MCRC_Channel_t channel, uint32_t watchdogPreload, uint32_t blockPreload)
Initialize MCRC channel and will configure watchdog and block preload value for given channel.
uint32_t regH
Definition: mcrc/v0/sdl_mcrc.h:290
volatile uint32_t WDTOPLD
Definition: mcrc/v0/sdl_mcrc.h:313
volatile uint32_t SCOUNT
Definition: mcrc/v0/sdl_mcrc.h:311
int32_t SDL_MCRC_getCurPSASig(SDL_MCRC_InstType instance, SDL_MCRC_Channel_t channel, SDL_MCRC_Signature_t *pCurPSASig)
This API is used to get current known good signature value/ MCRC value for given channel.
Structure for MCRC CPU inputs data.
Definition: mcrc/v0/sdl_mcrc.h:337
SDL_MCRC_DataBitSize dataBitSize
Definition: mcrc/v0/sdl_mcrc.h:342
uint32_t size
Definition: mcrc/v0/sdl_mcrc.h:340
uint32_t SDL_MCRC_Type_t
CRC Type supported.
Definition: mcrc/v0/sdl_mcrc.h:177
int32_t SDL_MCRC_setPSASeedSig(SDL_MCRC_InstType instance, SDL_MCRC_Channel_t channel, const SDL_MCRC_Signature_t *pSeedSign)
This API is used to set the PSA seed value without compression for given Channel.
SDL_MCRC_DataLength_t dataLen
Definition: mcrc/v0/sdl_mcrc.h:273
uint32_t SDL_MCRC_ModeType
MCRC operation mode supported. MCRC can either operate in Semi-CPU, Full-CPU or Auto mode.
Definition: mcrc/v0/sdl_mcrc.h:137
int32_t SDL_MCRC_getCurSecNum(SDL_MCRC_InstType instance, SDL_MCRC_Channel_t channel, uint32_t *pCurSecNum)
This API is used to get the current sector number of which the signature verification fails in AUTO m...
volatile uint32_t BCTOPLD
Definition: mcrc/v0/sdl_mcrc.h:315
int32_t SDL_MCRC_verifyInit(SDL_MCRC_InstType instance, SDL_MCRC_Channel_t channel, uint32_t watchdogPreload, uint32_t blockPreload)
Verify the MCRC watchdog and block preload value initialized for given channel.
char mode[32]
Definition: tisci_pm_core.h:1
int32_t SDL_MCRC_disableIntr(SDL_MCRC_InstType instance, SDL_MCRC_Channel_t channel, uint32_t intrMask)
This API is used to disable interrupts for given Channel.
volatile uint32_t PCOUNT
Definition: mcrc/v0/sdl_mcrc.h:309
int32_t SDL_MCRC_computeSignCPUmode(SDL_MCRC_InstType instance, SDL_MCRC_Channel_t channel, const SDL_MCRC_DataConfig_t *pDataConfig, SDL_MCRC_Signature_t *sectSignVal)
This API is used to compute the signature for CPU-only mode and it check if the generated MCRC signat...
uint32_t * pMCRCData
Definition: mcrc/v0/sdl_mcrc.h:338
Structure for accessing MCRC register data which are 64 bit wide.
Definition: mcrc/v0/sdl_mcrc.h:287
uint32_t SDL_MCRC_ByteSwap_t
CRC Byte Swap supported.
Definition: mcrc/v0/sdl_mcrc.h:254
int32_t SDL_MCRC_readStaticReg(SDL_MCRC_InstType instance, SDL_MCRC_StaticRegs_t *pStaticRegs)
This API is used to read static registers of MCRC module. This API needs to be called after the initi...
Structure for accessing MCRC registers address which are 64 bit wide.
Definition: mcrc/v0/sdl_mcrc.h:298
@ SDL_MCRC_DATA_16_BIT
Definition: mcrc/v0/sdl_mcrc.h:202
int32_t SDL_MCRC_configCRCType(SDL_MCRC_InstType instance, SDL_MCRC_Channel_t channel)
This API is used to configure the MCRC type for given Channel.
int32_t SDL_MCRC_getPSASig(SDL_MCRC_InstType instance, SDL_MCRC_Channel_t channel, SDL_MCRC_Signature_t *pPSAsig)
This API is used to get current known good signature value/ MCRC value for given channel.
int32_t SDL_MCRC_verifyConfig(SDL_MCRC_InstType instance, SDL_MCRC_Channel_t channel, uint32_t patternCount, uint32_t sectorCount, SDL_MCRC_ModeType mode)
This API will verify the configure of MCRC mode, pattern and sector count for given channel.
SDL_MCRC_ByteSwap_t byteSwap
Definition: mcrc/v0/sdl_mcrc.h:279
uint32_t regL
Definition: mcrc/v0/sdl_mcrc.h:288