CRC Driver API/interface file.
CRC programming sequence: 1. CRC_channelReset() 2. CRC_initialize() 3. CRC_configure() 4. CRC_enableIntr() - if needed 5. Transfer data to PSA signature for generation of signature value - DMA is utilized in Semi-CPU mode - CPU need to pump data into PSA register in Full CPU mode. 6. CRC_getPSASectorSig() - After complete transfer read CRC signature. CRC signature generated depends on amount of data copied into PSA register at a time/in single write. Though data pattern can be 16, 32, or 64 bit, data copied into PSA register is always 64 bit wide. If data pattern is less than 64 bit, then it is padded with zeros to make it 64 bit write based on the data length.
Go to the source code of this file.
CRC Operation Mode | |
#define | CRC_OPERATION_MODE_FULLCPU (CRC_CTRL2_CH1_MODE_FULLCPU) |
typedef uint32_t | CRC_OperationMode_t |
CRC operation mode supported. CRC can either operate in Semi-CPU, Full-CPU or Auto mode. More... | |
CRC channel | |
#define | CRC_CHANNEL_1 (0x1U) |
#define | CRC_CHANNEL_2 (0x2U) |
typedef uint32_t | CRC_Channel_t |
CRC channel supported. More... | |
CRC Type | |
#define | CRC_TYPE_16BIT (CRC_CTRL0_CH1_CRC_SEL_16BIT) |
#define | CRC_TYPE_32BIT (CRC_CTRL0_CH1_CRC_SEL_32BIT) |
#define | CRC_TYPE_64BIT (CRC_CTRL0_CH1_CRC_SEL_64BIT) |
typedef uint32_t | CRC_Type_t |
CRC Type supported. More... | |
CRC Data Length | |
#define | CRC_DATALENGTH_16BIT (CRC_CTRL0_CH1_DW_SEL_16BIT) |
#define | CRC_DATALENGTH_32BIT (CRC_CTRL0_CH1_DW_SEL_32BIT) |
#define | CRC_DATALENGTH_64BIT (CRC_CTRL0_CH1_DW_SEL_64BIT) |
typedef uint32_t | CRC_DataLength_t |
CRC Data Length supported. More... | |
CRC Bit Swap | |
#define | CRC_BITSWAP_MSB (CRC_CTRL0_CH1_BIT_SWAP_MSB) |
#define | CRC_BITSWAP_LSB (CRC_CTRL0_CH1_BIT_SWAP_LSB) |
typedef uint32_t | CRC_BitSwap_t |
CRC Bit Swap supported. More... | |
CRC Byte Swap | |
#define | CRC_BYTESWAP_DISABLE (CRC_CTRL0_CH1_BTYE_SWAP_DISABLE) |
#define | CRC_BYTESWAP_ENABLE (CRC_CTRL0_CH1_BTYE_SWAP_ENABLE) |
typedef uint32_t | CRC_ByteSwap_t |
CRC Byte Swap supported. More... | |
CRC Interrupt Priority | |
The offset for the highest pending priority interrupt. These interrupt offset returned in CRC_getHighestPriorityIntrStatus function | |
#define | CRC_INTR_PRIORITY_CH1_FAIL (0x1U) |
#define | CRC_INTR_PRIORITY_CH2_FAIL (0x2U) |
#define | CRC_INTR_PRIORITY_CH1_COMPRESSION_DONE (0x9U) |
#define | CRC_INTR_PRIORITY_CH2_COMPRESSION_DONE (0xaU) |
#define | CRC_INTR_PRIORITY_CH1_OVERRUN (0x11U) |
#define | CRC_INTR_PRIORITY_CH2_OVERRUN (0x12U) |
#define | CRC_INTR_PRIORITY_CH1_UNDERRUN (0x19U) |
#define | CRC_INTR_PRIORITY_CH2_UNDERRUN (0x1aU) |
#define | CRC_INTR_PRIORITY_CH1_TIMEOUT (0x21U) |
#define | CRC_INTR_PRIORITY_CH2_TIMEOUT (0x22U) |
typedef uint32_t | CRC_IntrPriority_t |
The offset for the highest pending priority interrupt. These interrupt offset returned in CRC_getHighestPriorityIntrStatus function. More... | |
CRC data bus type mask | |
#define | CRC_DATA_BUS_ITCM_MASK (CRC_MCRC_BUS_SEL_ITC_MEN_MASK) |
#define | CRC_DATA_BUS_DTCM_MASK (CRC_MCRC_BUS_SEL_DTC_MEN_MASK) |
#define | CRC_DATA_BUS_VBUSM_MASK (CRC_MCRC_BUS_SEL_MEN_MASK) |
#define | CRC_DATA_BUS_MASK_ALL |
typedef uint32_t | CRC_DataBusMask_t |
CRC data bus type mask selected for tracing control. More... | |
Data Structures | |
struct | CRC_Config |
CRC Configuration. More... | |
struct | CRC_Signature |
Structure for accessing CRC register data which are 64 bit wide. More... | |
struct | CRC_SignatureRegAddr |
Structure for accessing CRC registers address which are 64 bit wide. More... | |
struct | CRC_ChannelStaticRegs |
CRC channel static registers list. More... | |
struct | CRC_StaticRegs |
CRC static registers list. More... | |
Macros | |
#define | CRC_CHANNEL_IRQSTATUS_RAW_MAIN_ALL |
Macro defines mask for all the interrupts for a channel. More... | |
#define | CRC_PATTERN_COUNT_MAX (0x000FFFFFU) |
Macro defines maximum value of CRC Pattern Count. More... | |
#define | CRC_SECTOR_COUNT_MAX (0x0000FFFFU) |
Macro defines maximum value of CRC Sector Count. More... | |
#define | CRC_BCTOPLD_MAX (0x00FFFFFFU) |
Macro defines maximum value of CRC Block Complete Timeout Counter Preload. More... | |
#define | CRC_WDTOPLD_MAX (0x00FFFFFFU) |
Macro defines maximum value of CRC Watchdog Timeout Counter Preload. More... | |
#define | CRC_MAX_NUM_OF_CHANNELS (2U) |
Max number of channels supported in CRC. More... | |
#define | CRC_REG_OFFSET (0x40U) |
Macro defines the CRC Reg Offset value. More... | |
#define | CRC_SHIFT_BY_EIGHT (0x08U) |
Macro defines the shift value. More... | |
Functions | |
int32_t | CRC_initialize (uint32_t baseAddr, CRC_Channel_t channel, uint32_t crcWatchdogPreload, uint32_t crcBlockPreload) |
Initialize CRC channel and will configure watchdog and block preload value for given channel. More... | |
int32_t | CRC_verifyInitialize (uint32_t baseAddr, CRC_Channel_t channel, uint32_t crcWatchdogPreload, uint32_t crcBlockPreload) |
Verify the CRC watchdog and block preload value initialized for given channel. More... | |
int32_t | CRC_configure (uint32_t baseAddr, CRC_Channel_t channel, const CRC_Config *config) |
This API will configure CRC mode, pattern and sector count for given channel. More... | |
int32_t | CRC_verifyConfigure (uint32_t baseAddr, CRC_Channel_t channel, uint32_t patternCount, uint32_t sectorCount, CRC_OperationMode_t mode) |
This API will verify the configure of CRC mode, pattern and sector count for given channel. More... | |
int32_t | CRC_channelReset (uint32_t baseAddr, CRC_Channel_t channel) |
This API is used to reset the CRC channel. More... | |
int32_t | CRC_getPSASigRegAddr (uint32_t baseAddr, CRC_Channel_t channel, CRC_SignatureRegAddr *pCRCRegAddr) |
This API is used to get the PSA register address for given Channel. More... | |
int32_t | CRC_getPSASig (uint32_t baseAddr, CRC_Channel_t channel, CRC_Signature *pCRCPSASign) |
This API is used to get the PSA register value for given Channel. More... | |
int32_t | CRC_setPSASeedSig (uint32_t baseAddr, CRC_Channel_t channel, const CRC_Signature *pCRCPSASeedSign) |
This API is used to set the PSA seed value without compression for given Channel. More... | |
int32_t | CRC_getPSASectorSig (uint32_t baseAddr, CRC_Channel_t channel, CRC_Signature *pCRCSectorSign) |
This API is used to get sector signature Value/ CRC value for given channel. More... | |
int32_t | CRC_getHighestPriorityIntrStatus (uint32_t baseAddr, uint32_t *pIntVecAddr) |
This API is used to get the pending interrupt with highest priority. More... | |
int32_t | CRC_getIntrStatus (uint32_t baseAddr, CRC_Channel_t channel, uint32_t *pIntrStatus) |
This API is used to get the pending interrupts for given Channel. More... | |
int32_t | CRC_enableIntr (uint32_t baseAddr, CRC_Channel_t channel, uint32_t intrMask) |
This API is used to enable interrupts for given Channel. More... | |
int32_t | CRC_disableIntr (uint32_t baseAddr, CRC_Channel_t channel, uint32_t intrMask) |
This API is used to disable interrupts for given Channel. More... | |
int32_t | CRC_clearIntr (uint32_t baseAddr, CRC_Channel_t channel, uint32_t intrMask) |
This API is used to clear interrupts for given Channel. More... | |
int32_t | CRC_powerDownCtrl (uint32_t baseAddr, uint32_t ctrlFlag) |
This API is used to control the power down of the CRC module. More... | |
int32_t | CRC_isBusy (uint32_t baseAddr, CRC_Channel_t channel, uint32_t *pBusyFlag) |
This API is used to check if CRC is busy for given Channel. More... | |
int32_t | CRC_getCurSecNum (uint32_t baseAddr, CRC_Channel_t channel, uint32_t *pCurSecNum) |
This API is used to get the current sector number of which the signature verification fails in AUTO mode for given channel. More... | |
int32_t | CRC_getCurPSASig (uint32_t baseAddr, CRC_Channel_t channel, CRC_Signature *pCurPSASig) |
This API is used to get current known good signature value/ CRC value for given channel. More... | |
int32_t | CRC_getRawData (uint32_t baseAddr, CRC_Channel_t channel, CRC_Signature *pRawData) |
This API is used to get the uncompressed raw data value for given channel. More... | |
int32_t | CRC_dataBusTracingCtrl (uint32_t baseAddr, uint32_t ctrlFlag, CRC_DataBusMask_t dataBusMask, CRC_DataBusMask_t busEnableMask) |
This API is used to control the CRC data bus tracing. More... | |
int32_t | CRC_verifyBusTracingCtrl (uint32_t baseAddr, uint32_t ctrlFlag, CRC_DataBusMask_t dataBusMask, CRC_DataBusMask_t busEnableMask) |
This API is used to verify the control the CRC data bus tracing. More... | |
int32_t | CRC_readStaticRegs (uint32_t baseAddr, CRC_StaticRegs *pStaticRegs) |
This API is used to read static registers of CRC module. This API needs to be called after the initial configuration is done and hence mutliple read between static registers do not change the values. More... | |