This module contains APIs to program and use the CRC module.
Files | |
file | crc/v0/crc.h |
CRC Driver API/interface file. | |
Data Structures | |
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... | |
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, uint32_t crcPatternCount, uint32_t crcSectorCount, CRC_OperationMode_t crcMode) |
This API will configure CRC mode, pattern and sector count for given channel. More... | |
int32_t | CRCVerifyConfigure (uint32_t baseAddr, CRC_Channel_t channel, uint32_t crcPatternCount, uint32_t crcSectorCount, CRC_OperationMode_t crcMode) |
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... | |
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 (4U) |
Max number of channels supported in CRC. More... | |
CRC Operation Mode | |
typedef uint32_t | CRC_OperationMode_t |
CRC operation mode supported. CRC can either operate in Semi-CPU, Full-CPU or Auto mode. More... | |
#define | CRC_OPERATION_MODE_DATA (CRC_CTRL2_CH1_MODE_DATA) |
#define | CRC_OPERATION_MODE_AUTO (CRC_CTRL2_CH1_MODE_AUTO) |
#define | CRC_OPERATION_MODE_SEMICPU (CRC_CTRL2_CH1_MODE_SEMICPU) |
#define | CRC_OPERATION_MODE_FULLCPU (CRC_CTRL2_CH1_MODE_FULLCPU) |
CRC channel | |
typedef uint32_t | CRC_Channel_t |
CRC channel supported. More... | |
#define | CRC_CHANNEL_1 (0x1U) |
#define | CRC_CHANNEL_2 (0x2U) |
#define | CRC_CHANNEL_3 (0x3U) |
#define | CRC_CHANNEL_4 (0x4U) |
CRC data bus type mask | |
typedef uint32_t | CRC_DataBusMask_t |
CRC data bus type mask selected for tracing control. More... | |
#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 |
#define CRC_CHANNEL_IRQSTATUS_RAW_MAIN_ALL |
Macro defines mask for all the interrupts for a channel.
#define CRC_PATTERN_COUNT_MAX (0x000FFFFFU) |
Macro defines maximum value of CRC Pattern Count.
#define CRC_SECTOR_COUNT_MAX (0x0000FFFFU) |
Macro defines maximum value of CRC Sector Count.
#define CRC_BCTOPLD_MAX (0x00FFFFFFU) |
Macro defines maximum value of CRC Block Complete Timeout Counter Preload.
#define CRC_WDTOPLD_MAX (0x00FFFFFFU) |
Macro defines maximum value of CRC Watchdog Timeout Counter Preload.
#define CRC_MAX_NUM_OF_CHANNELS (4U) |
Max number of channels supported in CRC.
#define CRC_OPERATION_MODE_DATA (CRC_CTRL2_CH1_MODE_DATA) |
Configure CRC operation mode to Data Captures
#define CRC_OPERATION_MODE_AUTO (CRC_CTRL2_CH1_MODE_AUTO) |
Configure CRC operation mode to Auto
#define CRC_OPERATION_MODE_SEMICPU (CRC_CTRL2_CH1_MODE_SEMICPU) |
Configure CRC operation mode to Semi-CPU
#define CRC_OPERATION_MODE_FULLCPU (CRC_CTRL2_CH1_MODE_FULLCPU) |
Configure CRC operation mode to Full-CPU
#define CRC_CHANNEL_1 (0x1U) |
Select channel 1 for operation
#define CRC_CHANNEL_2 (0x2U) |
Select channel 2 for operation
#define CRC_CHANNEL_3 (0x3U) |
Select channel 3 for operation
#define CRC_CHANNEL_4 (0x4U) |
Select channel 4 for operation
#define CRC_INTR_PRIORITY_CH1_FAIL (0x1U) |
Offset return for channel 1 fail interrupt
#define CRC_INTR_PRIORITY_CH2_FAIL (0x2U) |
Offset return for channel 1 fail interrupt
#define CRC_INTR_PRIORITY_CH3_FAIL (0x3U) |
Offset return for channel 1 fail interrupt
#define CRC_INTR_PRIORITY_CH4_FAIL (0x4U) |
Offset return for channel 4 fail interrupt
#define CRC_INTR_PRIORITY_CH1_COMPRESSION_DONE (0x9U) |
Offset return for channel 1 compression done interrupt
#define CRC_INTR_PRIORITY_CH2_COMPRESSION_DONE (0xaU) |
Offset return for channel 2 compression done interrupt
#define CRC_INTR_PRIORITY_CH3_COMPRESSION_DONE (0xbU) |
Offset return for channel 3 compression done interrupt
#define CRC_INTR_PRIORITY_CH4_COMPRESSION_DONE (0xcU) |
Offset return for channel 4 compression done interrupt
#define CRC_INTR_PRIORITY_CH1_OVERRUN (0x11U) |
Offset return for channel 1 overrun interrupt
#define CRC_INTR_PRIORITY_CH2_OVERRUN (0x12U) |
Offset return for channel 2 overrun interrupt
#define CRC_INTR_PRIORITY_CH3_OVERRUN (0x13U) |
Offset return for channel 3 overrun interrupt
#define CRC_INTR_PRIORITY_CH4_OVERRUN (0x14U) |
Offset return for channel 4 overrun interrupt
#define CRC_INTR_PRIORITY_CH1_UNDERRUN (0x19U) |
Offset return for channel 1 underrun interrupt
#define CRC_INTR_PRIORITY_CH2_UNDERRUN (0x1aU) |
Offset return for channel 2 underrun interrupt
#define CRC_INTR_PRIORITY_CH3_UNDERRUN (0x1bU) |
Offset return for channel 3 underrun interrupt
#define CRC_INTR_PRIORITY_CH4_UNDERRUN (0x1cU) |
Offset return for channel 4 underrun interrupt
#define CRC_INTR_PRIORITY_CH1_TIMEOUT (0x21U) |
Offset return for channel 1 timeout interrupt
#define CRC_INTR_PRIORITY_CH2_TIMEOUT (0x22U) |
Offset return for channel 2 timeout interrupt
#define CRC_INTR_PRIORITY_CH3_TIMEOUT (0x23U) |
Offset return for channel 3 timeout interrupt
#define CRC_INTR_PRIORITY_CH4_TIMEOUT (0x24U) |
Offset return for channel 4 timeout interrupt
#define CRC_DATA_BUS_ITCM_MASK (CRC_MCRC_BUS_SEL_ITC_MEN_MASK) |
Select tracing control of instruction TCM
#define CRC_DATA_BUS_DTCM_MASK (CRC_MCRC_BUS_SEL_DTC_MEN_MASK) |
Select tracing control of data TCM
#define CRC_DATA_BUS_VBUSM_MASK (CRC_MCRC_BUS_SEL_MEN_MASK) |
Select tracing control of VBUSM
#define CRC_DATA_BUS_MASK_ALL |
Select tracing control of all data buses
typedef uint32_t CRC_OperationMode_t |
CRC operation mode supported. CRC can either operate in Semi-CPU, Full-CPU or Auto mode.
typedef uint32_t CRC_Channel_t |
CRC channel supported.
typedef uint32_t CRC_IntrPriority_t |
The offset for the highest pending priority interrupt. These interrupt offset returned in CRC_getHighestPriorityIntrStatus function.
typedef uint32_t CRC_DataBusMask_t |
CRC data bus type mask selected for tracing control.
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.
baseAddr | Base address of the CRC registers. |
channel | Channel number to be initializaed. Values given by CRC_Channel_t. |
crcWatchdogPreload | It is used to check if DMA does supply a block of data responding to a request in a given time frame. |
crcBlockPreload | It is used to check if CRC for an entire block is completed in a given time frame. |
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.
baseAddr | Base address of the CRC registers. |
channel | Channel number to be verified initialization. Values given by CRC_Channel_t. |
crcWatchdogPreload | It is used to check if DMA does supply a block of data responding to a request in a given time frame. |
crcBlockPreload | It is used to check if CRC for an entire block is completed in a given time frame. |
int32_t CRC_configure | ( | uint32_t | baseAddr, |
CRC_Channel_t | channel, | ||
uint32_t | crcPatternCount, | ||
uint32_t | crcSectorCount, | ||
CRC_OperationMode_t | crcMode | ||
) |
This API will configure CRC mode, pattern and sector count for given channel.
baseAddr | Base address of the CRC registers. |
channel | Channel number to be configured. Values given by CRC_Channel_t. |
crcPatternCount | Number of data patterns in one sector to be compressed. |
crcSectorCount | Number of sectors in a block of memory. |
crcMode | CRC operational mode. Refer CRC_OperationMode_t. |
int32_t CRCVerifyConfigure | ( | uint32_t | baseAddr, |
CRC_Channel_t | channel, | ||
uint32_t | crcPatternCount, | ||
uint32_t | crcSectorCount, | ||
CRC_OperationMode_t | crcMode | ||
) |
This API will verify the configure of CRC mode, pattern and sector count for given channel.
baseAddr | Base address of the CRC registers. |
channel | Channel number to be verified configuration. Values given by CRC_Channel_t. |
crcPatternCount | Number of data patterns in one sector to be compressed. |
crcSectorCount | Number of sectors in a block of memory. |
crcMode | CRC operational mode. Refer CRC_OperationMode_t. |
int32_t CRC_channelReset | ( | uint32_t | baseAddr, |
CRC_Channel_t | channel | ||
) |
This API is used to reset the CRC channel.
baseAddr | Base address of the CRC registers. |
channel | Channel number for which reset is to be done. Values given by CRC_Channel_t. |
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.
baseAddr | Base address of the CRC registers. |
channel | Channel number for which PSA register address is to get. Values given by CRC_Channel_t. |
pCRCRegAddr | Pointer to CRC PSA register address structure. Refer structure CRC_SignatureRegAddr. |
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.
baseAddr | Base address of the CRC registers. |
channel | Channel number for which PSA register data is to get. Values given by CRC_Channel_t. |
pCRCPSASign | Pointer to CRC PSA signature values. Refer struct CRC_Signature. |
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.
baseAddr | Base address of the CRC registers. |
channel | Channel number for which PSA seed value to be set. Values given by CRC_Channel_t. |
pCRCPSASeedSign | Pointer to CRC PSA seed signature values. Refer struct CRC_Signature for details. |
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.
baseAddr | Base address of the CRC registers. |
channel | Channel number which was configured for CRC calculation. Values given by CRC_Channel_t. |
pCRCSectorSign | Pointer to CRC PSA sector signature values Refer struct CRC_Signature. |
int32_t CRC_getHighestPriorityIntrStatus | ( | uint32_t | baseAddr, |
uint32_t * | pIntVecAddr | ||
) |
This API is used to get the pending interrupt with highest priority.
baseAddr | Base address of the CRC registers. |
pIntVecAddr | Pointer to highest priority pending interrupt vector address defined in CRC_IntrPriority_t |
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.
baseAddr | Base address of the CRC registers. |
channel | Channel number for which pending interrupt is to get. Values given by CRC_Channel_t. |
pIntrStatus | Pointer to pending interrupt status/occurred. |
int32_t CRC_enableIntr | ( | uint32_t | baseAddr, |
CRC_Channel_t | channel, | ||
uint32_t | intrMask | ||
) |
This API is used to enable interrupts for given Channel.
baseAddr | Base address of the CRC registers. |
channel | Channel number for which interrupt is to enable. Values given by CRC_Channel_t. |
intrMask | Interrupts to enable. |
int32_t CRC_disableIntr | ( | uint32_t | baseAddr, |
CRC_Channel_t | channel, | ||
uint32_t | intrMask | ||
) |
This API is used to disable interrupts for given Channel.
baseAddr | Base address of the CRC registers. |
channel | Channel number for which interrupt is to disable. Values given by CRC_Channel_t. |
intrMask | Interrupts to disable. |
int32_t CRC_clearIntr | ( | uint32_t | baseAddr, |
CRC_Channel_t | channel, | ||
uint32_t | intrMask | ||
) |
This API is used to clear interrupts for given Channel.
baseAddr | Base address of the CRC registers. |
channel | Channel number for which interrupt is to clear. Values given by CRC_Channel_t. |
intrMask | Interrupts to clear status. |
int32_t CRC_powerDownCtrl | ( | uint32_t | baseAddr, |
uint32_t | ctrlFlag | ||
) |
This API is used to control the power down of the CRC module.
baseAddr | Base address of the CRC registers. |
ctrlFlag | Pointer to power control flag. CSL_TRUE: power down the CRC. CSL_FALSE: power on the CRC. |
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.
During Auto or Semi-CPU mode, the busy flag is set when the first data pattern of the block is compressed and remains set until the the last data pattern of the block is compressed. The flag is cleared when the last data pattern of the block is compressed.
baseAddr | Base address of the CRC registers. |
channel | Channel number for which busy status is to get. Values given by CRC_Channel_t. |
pBusyFlag | Pointer to busy flag. CSL_TRUE: CRC channel is busy. CSL_FALSE: CRC channel is free. |
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.
When a sector fails, the erroneous sector number is logged and the CRC fail interrupt is generated.
baseAddr | Base address of the CRC registers. |
channel | Channel number for which the curent sector number is to get. Values given by CRC_Channel_t. |
pCurSecNum | Pointer to current sector number. |
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.
baseAddr | Base address of the CRC registers. |
channel | Channel number for which current CRC value is to get. Values given by CRC_Channel_t. |
pCurPSASig | Pointer to current CRC PSA signature values Refer struct CRC_Signature. |
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.
baseAddr | Base address of the CRC registers. |
channel | Channel number for which raw data value is to get. Values given by CRC_Channel_t. |
pRawData | Pointer to raw data value Refer struct CRC_Signature. |
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.
Data tracing is only available on channel 1, when it is enabled, the operation mode is automatically reset to data capture mode on channel 1
baseAddr | Base address of the CRC registers. |
ctrlFlag | Data bus tracing control flag. CSL_TRUE: enable data tracing. CSL_FALSE: disable data tracing. |
dataBusMask | Data bus mask bits for which what data buses are to be selected. Values given by CRC_DataBusMask_t. |
busEnableMask | Data bus enable mask bits for which what data buses are to be enabled or disabled. Values given by CRC_DataBusMask_t. |
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.
baseAddr | Base address of the CRC registers. |
ctrlFlag | Data bus tracing control flag. CSL_TRUE: enable data tracing. CSL_FALSE: disable data tracing. |
dataBusMask | Data bus mask bits for which what data buses are to be selected. Values given by CRC_DataBusMask_t. |
busEnableMask | Data bus enable mask bits for which what data buses are to be enabled or disabled. Values given by CRC_DataBusMask_t. |
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.
baseAddr | Base Address of the CRC Registers. |
pStaticRegs | pointer to static registers to be read |