xilnvm
Vitis Drivers API Documentation
xnvm_efuse_common.c File Reference

Overview

This file contains eFuse functions of xilnvm library and provides the access to program eFUSE.

MODIFICATION HISTORY:
Ver   Who  Date        Changes


3.0 kal 07/16/2022 Initial release dc 08/29/2022 Changed u8 to u32 type kal 09/29/2022 Removed unlock and lock of eFuse controller from the XNvm_EfuseCacheReload function 3.1 skg 10/25/2022 Added in body comments for APIs kal 03/07/2023 Added volatile keyword for Status variables 3.2 kum 04/11/2023 Moved Env monitor API's from versal xnvm_efuse.c to make use for both versal and versalnet vss 09/19/2023 Fixed MISRA-C Rule 8.7 violation 3.3 vss 12/31/2023 Added support for Program the eFuse protection bits only once ng 11/22/2023 Fixed doxygen grouping

 

Macros

eFuse macro definitions
#define XNVM_ONE_MICRO_SECOND   (1U)
 < One Micro Second Timeout More...
 
#define XNVM_EFUSE_TPGM_DIV   (200000UL)
 TRD Divisor value. More...
 
#define XNVM_EFUSE_TRD_DIV   (4608294UL)
 TRMD Divisor value. More...
 
#define XNVM_EFUSE_TRMD_DIV   (2000000UL)
 TSU_H_PS Divisor value. More...
 
#define XNVM_EFUSE_TSU_H_PS_DIV   (4807692UL)
 TSU_H_PS_CS Divisor value. More...
 
#define XNVM_EFUSE_TSU_H_PS_CS_DIV   (6993007UL)
 TSU_H_CS Divisor value. More...
 
#define XNVM_EFUSE_TSU_H_CS_DIV   (5434783UL)
 Default secure value for 32 bit. More...
 
#define XNVM_EFUSE_SEC_DEF_VAL_ALL_BIT_SET   (0xFFFFFFFFU)
 Default secure value for 8 bit. More...
 
#define XNVM_EFUSE_SEC_DEF_VAL_BYTE_SET   (0xFFU)
 Sysmon VCCPMC Amux ctrl value. More...
 
#define XNVM_EFUSE_SYSMON_VCCPMC_AMUX_CTRL   (0x0bU)
 Sysmon VCCPMC Abus sw1 value. More...
 
#define XNVM_EFUSE_SYSMON_VCCPMC_ABUS_SW1   (0x00U)
 Sysmon VCCPMC Abus sw0 value. More...
 
#define XNVM_EFUSE_SYSMON_VCCPMC_ABUS_SW0   (0x02U)
 Sysmon VCCPMC mode value. More...
 
#define XNVM_EFUSE_SYSMON_VCCPMC_MODE   (0x00U)
 Sysmon number of measurement registers. More...
 
#define XNVM_EFUSE_SYSMON_NUM_MEASURE_REGS   (0x20U)
 Sysmon number of supplies per flag. More...
 
#define XNVM_EFUSE_SYSMON_NUM_SUPPLIES_PER_FLAG   (32U)
 Sysmon Psv timeout value. More...
 
#define XNVM_EFUSE_SYSMONPSV_TIMEOUT   (100000U)
 Fraction multiplier value. More...
 
#define XNVM_EFUSE_FRACTION_MUL_VALUE   (1000000U)
 eFuse word length More...
 
#define XNVM_EFUSE_WORD_LEN   (4U)
 

Functions

void XNvm_EfuseDisablePowerDown (void)
 This function disables power down of eFUSE macros. More...
 
int XNvm_EfuseCacheReload (void)
 This function reloads the eFUSE cache, so that eFUSE values can be directly read from cache. More...
 
int XNvm_EfuseSetReadMode (XNvm_EfuseRdMode RdMode)
 This function sets read mode of eFUSE controller. More...
 
void XNvm_EfuseSetRefClk (void)
 This function sets reference clock of eFUSE controller. More...
 
void XNvm_EfuseEnableProgramming (void)
 This function enables programming mode of eFUSE controller. More...
 
int XNvm_EfuseDisableProgramming (void)
 This function disables programming mode of eFUSE controller. More...
 
int XNvm_EfuseResetReadMode (void)
 This function disables Margin Read mode of eFUSE controller. More...
 
void XNvm_EfuseInitTimers (void)
 This function initializes eFUSE controller timers. More...
 
int XNvm_EfuseSetupController (XNvm_EfuseOpMode Op, XNvm_EfuseRdMode RdMode)
 This function setups eFUSE controller for given operation and read mode. More...
 
int XNvm_EfuseCheckForTBits (void)
 This function checks whether Tbits are programmed or not. More...
 
u32 XNvm_GetSysmonSupplyRegId (UINTPTR SysmonpsvSatBaseAddr)
 This function reads root register ID where measurement is stored in Root SysMon. More...
 
int XNvm_EfuseTempAndVoltChecks (const XSysMonPsv *SysMonInstPtr)
 This function performs the Temparature and Voltage checks to ensure that they are in limits before eFuse programming. More...
 
u32 XNvm_EfuseReadProtectionBits (u32 Mask)
 This function reads the corresponding eFuse protection bits. More...
 

Macro Definition Documentation

#define XNVM_EFUSE_FRACTION_MUL_VALUE   (1000000U)

eFuse word length

Referenced by XNvm_EfuseTempAndVoltChecks().

#define XNVM_EFUSE_SEC_DEF_VAL_ALL_BIT_SET   (0xFFFFFFFFU)

Default secure value for 8 bit.

Referenced by XNvm_EfuseSetReadMode(), XNvm_EfuseTempAndVoltChecks(), and XNvm_GetSysmonSupplyRegId().

#define XNVM_EFUSE_SEC_DEF_VAL_BYTE_SET   (0xFFU)

Sysmon VCCPMC Amux ctrl value.

Referenced by XNvm_EfuseSetReadMode().

#define XNVM_EFUSE_SYSMON_NUM_MEASURE_REGS   (0x20U)

Sysmon number of supplies per flag.

Referenced by XNvm_GetSysmonSupplyRegId().

#define XNVM_EFUSE_SYSMON_NUM_SUPPLIES_PER_FLAG   (32U)

Sysmon Psv timeout value.

Referenced by XNvm_EfuseTempAndVoltChecks().

#define XNVM_EFUSE_SYSMON_VCCPMC_ABUS_SW0   (0x02U)

Sysmon VCCPMC mode value.

Referenced by XNvm_GetSysmonSupplyRegId().

#define XNVM_EFUSE_SYSMON_VCCPMC_ABUS_SW1   (0x00U)

Sysmon VCCPMC Abus sw0 value.

Referenced by XNvm_GetSysmonSupplyRegId().

#define XNVM_EFUSE_SYSMON_VCCPMC_AMUX_CTRL   (0x0bU)

Sysmon VCCPMC Abus sw1 value.

Referenced by XNvm_GetSysmonSupplyRegId().

#define XNVM_EFUSE_SYSMON_VCCPMC_MODE   (0x00U)

Sysmon number of measurement registers.

Referenced by XNvm_GetSysmonSupplyRegId().

#define XNVM_EFUSE_SYSMONPSV_TIMEOUT   (100000U)

Fraction multiplier value.

Referenced by XNvm_EfuseTempAndVoltChecks().

#define XNVM_EFUSE_TPGM_DIV   (200000UL)

TRD Divisor value.

Referenced by XNvm_EfuseInitTimers().

#define XNVM_EFUSE_TRD_DIV   (4608294UL)

TRMD Divisor value.

Referenced by XNvm_EfuseInitTimers().

#define XNVM_EFUSE_TRMD_DIV   (2000000UL)

TSU_H_PS Divisor value.

Referenced by XNvm_EfuseInitTimers().

#define XNVM_EFUSE_TSU_H_CS_DIV   (5434783UL)

Default secure value for 32 bit.

Referenced by XNvm_EfuseInitTimers().

#define XNVM_EFUSE_TSU_H_PS_CS_DIV   (6993007UL)

TSU_H_CS Divisor value.

Referenced by XNvm_EfuseInitTimers().

#define XNVM_EFUSE_TSU_H_PS_DIV   (4807692UL)

TSU_H_PS_CS Divisor value.

Referenced by XNvm_EfuseInitTimers().

#define XNVM_ONE_MICRO_SECOND   (1U)

< One Micro Second Timeout

TPGM Divisor value

Referenced by XNvm_EfuseDisablePowerDown().