xilskey
Vitis Drivers API Documentation
ZynqMP EFUSE PS

Functions

u32 XilSKey_ZynqMp_EfusePs_CheckAesKeyCrc (u32 CrcValue)
 This function performs the CRC check of AES key. More...
 
u32 XilSKey_ZynqMp_EfusePs_ReadUserFuse (u32 *UseFusePtr, u8 UserFuse_Num, u8 ReadOption)
 This function is used to read a user fuse from the eFUSE or cache. More...
 
u32 XilSKey_ZynqMp_EfusePs_ReadPpk0Hash (u32 *Ppk0Hash, u8 ReadOption)
 This function is used to read the PPK0 hash from an eFUSE or eFUSE cache. More...
 
u32 XilSKey_ZynqMp_EfusePs_ReadPpk1Hash (u32 *Ppk1Hash, u8 ReadOption)
 This function is used to read the PPK1 hash from eFUSE or cache. More...
 
u32 XilSKey_ZynqMp_EfusePs_ReadSpkId (u32 *SpkId, u8 ReadOption)
 This function is used to read SPKID from eFUSE or cache based on user's read option. More...
 
void XilSKey_ZynqMp_EfusePs_ReadDna (u32 *DnaRead)
 This function is used to read DNA from eFUSE. More...
 
u32 XilSKey_ZynqMp_EfusePs_ReadSecCtrlBits (XilSKey_SecCtrlBits *ReadBackSecCtrlBits, u8 ReadOption)
 This function is used to read the PS eFUSE secure control bits from cache or eFUSE based on user input provided. More...
 
u32 XilSKey_ZynqMp_EfusePs_CacheLoad (void)
 This function reloads the cache of eFUSE so that can be directly read from cache. More...
 
u32 XilSKey_ZynqMp_EfusePs_Write (XilSKey_ZynqMpEPs *InstancePtr)
 This function is used to program the PS eFUSE of ZynqMP, based on user inputs. More...
 
u32 XilSkey_ZynqMpEfuseAccess (const u32 AddrHigh, const u32 AddrLow)
 This function is used by PMUFW IPI call handler for programming eFUSE. More...
 
void XilSKey_ZynqMp_EfusePs_SetTimerValues (void)
 This function sets timers for programming and reading from eFUSE. More...
 
u32 XilSKey_ZynqMp_EfusePs_ReadRow (u8 Row, XskEfusePs_Type EfuseType, u32 *RowData)
 This function returns particular row data directly from eFUSE array. More...
 
u32 XilSKey_ZynqMp_EfusePs_SetWriteConditions (void)
 This function sets all the required parameters to program eFUSE array. More...
 
u32 XilSKey_ZynqMp_EfusePs_WriteAndVerifyBit (u8 Row, u8 Column, XskEfusePs_Type EfuseType)
 This function programs and verifies the particular bit of eFUSE array. More...
 
u32 XilSKey_ZynqMp_EfusePs_Init (void)
 This function initializes sysmonpsu driver. More...
 
u32 XilSKey_ZynqMp_EfusePs_CheckForZeros (u8 RowStart, u8 RowEnd, XskEfusePs_Type EfuseType)
 This function is used verify eFUSE keys for Zeros. More...
 
u32 XilSKey_ZynqMp_EfusePs_WritePufHelprData (const XilSKey_Puf *InstancePtr)
 This function programs the PS eFUSEs with the PUF helper data. More...
 
u32 XilSKey_ZynqMp_EfusePs_ReadPufHelprData (u32 *Address)
 This function reads the PUF helper data from eFUSE. More...
 
u32 XilSKey_ZynqMp_EfusePs_WritePufChash (const XilSKey_Puf *InstancePtr)
 This function programs eFUSE with CHash value. More...
 
u32 XilSKey_ZynqMp_EfusePs_ReadPufChash (u32 *Address, u8 ReadOption)
 This function reads eFUSE PUF CHash data from the eFUSE array or cache based on the user read option. More...
 
u32 XilSKey_ZynqMp_EfusePs_WritePufAux (const XilSKey_Puf *InstancePtr)
 This function programs eFUSE PUF auxiliary data. More...
 
u32 XilSKey_ZynqMp_EfusePs_ReadPufAux (u32 *Address, u8 ReadOption)
 This function reads eFUSE PUF auxiliary data from eFUSE array or cache based on user read option. More...
 
u32 XilSKey_Write_Puf_EfusePs_SecureBits (const XilSKey_Puf_Secure *WriteSecureBits)
 This function programs the eFUSE PUF secure bits. More...
 
u32 XilSKey_Read_Puf_EfusePs_SecureBits (XilSKey_Puf_Secure *SecureBitsRead, u8 ReadOption)
 This function is used to read the PS eFUSE PUF secure bits from cache or from eFUSE array. More...
 
u32 XilSKey_Puf_Registration (XilSKey_Puf *InstancePtr)
 This function performs registration of PUF which generates a new KEK and associated CHash, Auxiliary and PUF-syndrome data which are unique for each silicon. More...
 
u32 XilSKey_Puf_Regeneration (const XilSKey_Puf *InstancePtr)
 This function regenerates the PUF data so that the PUF's output can be used as the key source to the AES-GCM hardware cryptographic engine. More...
 

Function Documentation

u32 XilSKey_Puf_Regeneration ( const XilSKey_Puf *  InstancePtr)

This function regenerates the PUF data so that the PUF's output can be used as the key source to the AES-GCM hardware cryptographic engine.

Parameters
InstancePtris a pointer to the XilSKey_Puf instance.
Returns
  • XST_SUCCESS if regeneration was successful.
  • ERROR if regeneration was unsuccessful

References XILSKEY_PUF_KEK_REGEN_RDY_TIMEOUT, XilSKey_ZynqMp_EfusePs_ReadPufChash(), XSK_EFUSEPS_ERROR_PUF_ACCESS, XSK_EFUSEPS_ERROR_PUF_INVALID_REQUEST, and XSK_ZYNQMP_CSU_BASEADDR.

u32 XilSKey_Puf_Registration ( XilSKey_Puf *  InstancePtr)

This function performs registration of PUF which generates a new KEK and associated CHash, Auxiliary and PUF-syndrome data which are unique for each silicon.

Parameters
InstancePtrPointer to the XilSKey_Puf instance.
Returns
  • XST_SUCCESS if registration/re-registration was successful.
  • ERROR if registration was unsuccessful
Note
With the help of generated PUF syndrome data, it will be possible to re-generate same PUF KEK.

Request PUF to register. This will trigger an interrupt to CSUROM

References XSK_EFUSEPS_ERROR_PUF_DATA_OVERFLOW, XSK_EFUSEPS_ERROR_PUF_DATA_UNDERFLOW, XSK_EFUSEPS_ERROR_PUF_INVALID_REG_MODE, XSK_EFUSEPS_ERROR_PUF_TIMEOUT, XSK_EFUSEPS_PUF_REGISTRATION_COMPLETE, XSK_EFUSEPS_PUF_REGISTRATION_STARTED, and XSK_ZYNQMP_CSU_BASEADDR.

Referenced by main().

u32 XilSKey_Read_Puf_EfusePs_SecureBits ( XilSKey_Puf_Secure *  SecureBitsRead,
u8  ReadOption 
)

This function is used to read the PS eFUSE PUF secure bits from cache or from eFUSE array.

Parameters
SecureBitsRead- Pointer to the XilSKey_Puf_Secure structure which holds the read eFUSE secure bits from the PUF.
ReadOption- Indicates whether or not to read from the actual eFUSE array or from the eFUSE cache.
  • 0(XSK_EFUSEPS_READ_FROM_CACHE) Reads from cache
  • 1(XSK_EFUSEPS_READ_FROM_EFUSE) Reads from eFUSE array
Returns
  • XST_SUCCESS if reads successfully.
  • Errorcode on failure.

References XSK_EFUSEPS_RD_FROM_EFUSE_NOT_ALLOWED.

Referenced by main().

u32 XilSKey_Write_Puf_EfusePs_SecureBits ( const XilSKey_Puf_Secure *  WriteSecureBits)

This function programs the eFUSE PUF secure bits.

Parameters
WriteSecureBitsPointer to the XilSKey_Puf_Secure structure
Returns
  • XST_SUCCESS if eFUSE PUF secure bits are programmed successfully.
  • Errorcode on failure.

References XilSKey_ZynqMp_EfusePs_CacheLoad(), XilSKey_ZynqMp_EfusePs_SetWriteConditions(), XilSKey_ZynqMp_EfusePs_WriteAndVerifyBit(), XSK_EFUSEPS_ERROR_CONTROLLER_LOCK, XSK_EFUSEPS_ERROR_WRITE_PUF_RESERVED_BIT, XSK_EFUSEPS_ERROR_WRITE_PUF_SYN_INVLD, XSK_EFUSEPS_ERROR_WRITE_PUF_SYN_REG_DIS, and XSK_EFUSEPS_ERROR_WRITE_PUF_SYN_WRLK.

Referenced by main().

u32 XilSKey_ZynqMp_EfusePs_CacheLoad ( void  )

This function reloads the cache of eFUSE so that can be directly read from cache.

Returns
  • XST_SUCCESS on successful cache reload
  • ErrorCode on failure
Note
Not recommended to call this API frequently, if this API is called all the cache memory is reloded by reading eFUSE array, reading eFUSE bit multiple times may diminish the life time.

References XSK_EFUSEPS_ERROR_CACHE_LOAD, XSK_ZYNQMP_EFUSEPS_BASEADDR, and XSK_ZYNQMP_EFUSEPS_CACHE_LOAD_OFFSET.

Referenced by XilSKey_Write_Puf_EfusePs_SecureBits(), and XilSKey_ZynqMp_EfusePs_Write().

u32 XilSKey_ZynqMp_EfusePs_CheckAesKeyCrc ( u32  CrcValue)

This function performs the CRC check of AES key.

Parameters
CrcValueA 32 bit CRC value of an expected AES key.
Returns
  • XST_SUCCESS on successful CRC check.
  • ErrorCode on failure
Note
For Calculating the CRC of the AES key use the XilSKey_CrcCalculation() function or XilSkey_CrcCalculation_AesKey() function

References XilSKey_ZynqMp_EfusePs_SetTimerValues(), XSK_ZYNQMP_EFUSEPS_AES_CRC_OFFSET, and XSK_ZYNQMP_EFUSEPS_BASEADDR.

Referenced by XilSKey_ZynqMp_EfusePs_Write().

u32 XilSKey_ZynqMp_EfusePs_CheckForZeros ( u8  RowStart,
u8  RowEnd,
XskEfusePs_Type  EfuseType 
)

This function is used verify eFUSE keys for Zeros.

Parameters
RowStartis row number from which verification has to be started.
RowEndis row number till which verification has to be ended.
EfuseTypeis the type of the eFUSE in which these rows reside.
Returns
XST_SUCCESS if keys are not programmed. Errorcode on failure.

References XilSKey_ZynqMp_EfusePs_ReadRow().

u32 XilSKey_ZynqMp_EfusePs_Init ( void  )

This function initializes sysmonpsu driver.

Returns
XST_SUCCESS - On success ErrorCode - on Failure

References XilSKey_EfusePs_XAdcInit().

Referenced by XilSKey_ZynqMp_EfusePs_Write(), XilSKey_ZynqMp_EfusePs_WritePufAux(), XilSKey_ZynqMp_EfusePs_WritePufChash(), and XilSKey_ZynqMp_EfusePs_WritePufHelprData().

void XilSKey_ZynqMp_EfusePs_ReadDna ( u32 *  DnaRead)

This function is used to read DNA from eFUSE.

Parameters
DnaReadPointer to an array of 3 x u32 words which holds the readback DNA.

References XSK_ZYNQMP_EFUSEPS_BASEADDR, XSK_ZYNQMP_EFUSEPS_DNA_0_OFFSET, XSK_ZYNQMP_EFUSEPS_DNA_1_OFFSET, and XSK_ZYNQMP_EFUSEPS_DNA_2_OFFSET.

u32 XilSKey_ZynqMp_EfusePs_ReadPpk0Hash ( u32 *  Ppk0Hash,
u8  ReadOption 
)

This function is used to read the PPK0 hash from an eFUSE or eFUSE cache.

Parameters
Ppk0HashA pointer to an array which holds the readback PPK0 hash.
ReadOptionIndicates whether or not to read from the actual eFUSE array or from the eFUSE cache.
  • 0(XSK_EFUSEPS_READ_FROM_CACHE) Reads from eFUSE cache
  • 1(XSK_EFUSEPS_READ_FROM_EFUSE) Reads from eFUSE array
Returns
  • XST_SUCCESS on successful read
  • ErrorCode on failure
Note
It is highly recommended to read from eFuse cache. Because reading from efuse may reduce the life of the efuse. And Cache reload is required for obtaining updated values for ReadOption 0.

References XilSKey_EfusePs_ConvertBytesBeToLe(), XSK_EFUSEPS_RD_FROM_EFUSE_NOT_ALLOWED, XSK_ZYNQMP_EFUSEPS_BASEADDR, and XSK_ZYNQMP_EFUSEPS_PPK0_0_OFFSET.

Referenced by XilSKey_ZynqMp_EfusePs_Write().

u32 XilSKey_ZynqMp_EfusePs_ReadPpk1Hash ( u32 *  Ppk1Hash,
u8  ReadOption 
)

This function is used to read the PPK1 hash from eFUSE or cache.

Parameters
Ppk1HashPointer to an array which holds the readback PPK1 hash.
ReadOptionIndicates whether or not to read from the actual eFUSE array or from the eFUSE cache.
  • 0(XSK_EFUSEPS_READ_FROM_CACHE) Reads from eFUSE cache
  • 1(XSK_EFUSEPS_READ_FROM_EFUSE) Reads from eFUSE array
Returns
  • XST_SUCCESS on successful read
  • ErrorCode on failure
Note
It is highly recommended to read from eFuse cache. Because reading from efuse may reduce the life of the efuse. And Cache reload is required for obtaining updated values for ReadOption 0.

References XilSKey_EfusePs_ConvertBytesBeToLe(), XSK_EFUSEPS_RD_FROM_EFUSE_NOT_ALLOWED, XSK_ZYNQMP_EFUSEPS_BASEADDR, and XSK_ZYNQMP_EFUSEPS_PPK1_0_OFFSET.

Referenced by XilSKey_ZynqMp_EfusePs_Write().

u32 XilSKey_ZynqMp_EfusePs_ReadPufAux ( u32 *  Address,
u8  ReadOption 
)

This function reads eFUSE PUF auxiliary data from eFUSE array or cache based on user read option.

Parameters
AddressPointer which holds the read back value of PUF's auxiliary data.
ReadOptionIndicates whether or not to read from the actual eFUSE array or from the eFUSE cache.
  • 0(XSK_EFUSEPS_READ_FROM_CACHE) Reads from cache
  • 1(XSK_EFUSEPS_READ_FROM_EFUSE) Reads from eFUSE array
Returns
  • XST_SUCCESS if PUF auxiliary data is read successfully.
  • Errorcode on failure
Note
Cache reload is required for obtaining updated values for reading from cache.

References XSK_EFUSEPS_RD_FROM_EFUSE_NOT_ALLOWED, XSK_ZYNQMP_EFUSEPS_BASEADDR, and XSK_ZYNQMP_EFUSEPS_PUF_MISC_OFFSET.

Referenced by main(), and XilSKey_ZynqMp_EfusePs_WritePufAux().

u32 XilSKey_ZynqMp_EfusePs_ReadPufChash ( u32 *  Address,
u8  ReadOption 
)

This function reads eFUSE PUF CHash data from the eFUSE array or cache based on the user read option.

Parameters
AddressPointer which holds the read back value of the chash.
ReadOptionIndicates whether or not to read from the actual eFUSE array or from the eFUSE cache.
  • 0(XSK_EFUSEPS_READ_FROM_CACHE) Reads from cache
  • 1(XSK_EFUSEPS_READ_FROM_EFUSE) Reads from eFUSE array
Returns
  • XST_SUCCESS if programs successfully.
  • Errorcode on failure
Note
Cache reload is required for obtaining updated values for reading from cache..

References XSK_EFUSEPS_RD_FROM_EFUSE_NOT_ALLOWED, XSK_ZYNQMP_EFUSEPS_BASEADDR, and XSK_ZYNQMP_EFUSEPS_PUF_CHASH_OFFSET.

Referenced by main(), XilSKey_Puf_Regeneration(), and XilSKey_ZynqMp_EfusePs_WritePufChash().

u32 XilSKey_ZynqMp_EfusePs_ReadPufHelprData ( u32 *  Address)

This function reads the PUF helper data from eFUSE.

Parameters
AddressPointer to data array which holds the PUF helper data read from eFUSEs.
Returns
  • XST_SUCCESS if reads successfully.
  • Errorcode on failure.
Note
This function only reads from eFUSE non-volatile memory. There is no option to read from Cache.

References XilSKey_ZynqMp_EfusePs_ReadRow(), XilSKey_ZynqMp_EfusePs_SetTimerValues(), XSK_EFUSEPS_ERROR_CONTROLLER_LOCK, and XSK_ZYNQMP_EFUSEPS_PUF_ROW_UPPER_MASK.

Referenced by main().

u32 XilSKey_ZynqMp_EfusePs_ReadRow ( u8  Row,
XskEfusePs_Type  EfuseType,
u32 *  RowData 
)

This function returns particular row data directly from eFUSE array.

Parameters
Rowspecifies the row number to read.
EfuseTypespecifies the eFUSE type.
RowDatais a pointer to 32 bit variable to hold the data read from provided data
Returns
XST_SUCCESS - On success ErrorCode - on Failure

References XSK_EFUSEPS_ERROR_READ, XSK_EFUSEPS_ERROR_READ_NOT_DONE, XSK_ZYNQMP_EFUSEPS_BASEADDR, XSK_ZYNQMP_EFUSEPS_ISR_OFFSET, XSK_ZYNQMP_EFUSEPS_RD_ADDR_OFFSET, and XSK_ZYNQMP_EFUSEPS_RD_DATA_OFFSET.

Referenced by XilSKey_ZynqMp_EfusePs_CheckForZeros(), XilSKey_ZynqMp_EfusePs_ReadPufHelprData(), and XilSKey_ZynqMp_EfusePs_WriteAndVerifyBit().

u32 XilSKey_ZynqMp_EfusePs_ReadSecCtrlBits ( XilSKey_SecCtrlBits *  ReadBackSecCtrlBits,
u8  ReadOption 
)

This function is used to read the PS eFUSE secure control bits from cache or eFUSE based on user input provided.

Parameters
ReadBackSecCtrlBitsPointer to the XilSKey_SecCtrlBits which holds the read secure control bits.
ReadOptionIndicates whether or not to read from the actual eFUSE array or from the eFUSE cache.
  • 0(XSK_EFUSEPS_READ_FROM_CACHE) Reads from eFUSE cache
  • 1(XSK_EFUSEPS_READ_FROM_EFUSE) Reads from eFUSE array
Returns
  • XST_SUCCESS if reads successfully
  • XST_FAILURE if reading is failed
Note
It is highly recommended to read from eFuse cache. Because reading from efuse may reduce the life of the efuse. And Cache reload is required for obtaining updated values for ReadOption 0.

References XSK_EFUSEPS_RD_FROM_EFUSE_NOT_ALLOWED.

Referenced by main().

u32 XilSKey_ZynqMp_EfusePs_ReadSpkId ( u32 *  SpkId,
u8  ReadOption 
)

This function is used to read SPKID from eFUSE or cache based on user's read option.

Parameters
SpkIdPointer to a 32 bit variable which holds SPK ID.
ReadOptionIndicates whether or not to read from the actual eFUSE array or from the eFUSE cache.
  • 0(XSK_EFUSEPS_READ_FROM_CACHE) Reads from eFUSE cache
  • 1(XSK_EFUSEPS_READ_FROM_EFUSE) Reads from eFUSE array
Returns
  • XST_SUCCESS on successful read
  • ErrorCode on failure
Note
It is highly recommended to read from eFuse cache. Because reading from efuse may reduce the life of the efuse. And Cache reload is required for obtaining updated values for ReadOption 0.

References XSK_EFUSEPS_RD_FROM_EFUSE_NOT_ALLOWED, XSK_ZYNQMP_EFUSEPS_BASEADDR, and XSK_ZYNQMP_EFUSEPS_SPK_ID_OFFSET.

u32 XilSKey_ZynqMp_EfusePs_ReadUserFuse ( u32 *  UseFusePtr,
u8  UserFuse_Num,
u8  ReadOption 
)

This function is used to read a user fuse from the eFUSE or cache.

Parameters
UseFusePtrPointer to an array which holds the readback user fuse.
UserFuse_NumA variable which holds the user fuse number. Range is (User fuses: 0 to 7)
ReadOptionIndicates whether or not to read from the actual eFUSE array or from the eFUSE cache.
  • 0(XSK_EFUSEPS_READ_FROM_CACHE) Reads from eFUSE cache
  • 1(XSK_EFUSEPS_READ_FROM_EFUSE) Reads from eFUSE array
Returns
  • XST_SUCCESS on successful read
  • ErrorCode on failure
Note
It is highly recommended to read from eFuse cache. Because reading from efuse may reduce the life of the efuse. And Cache reload is required for obtaining updated values for ReadOption 0.

References XSK_EFUSEPS_RD_FROM_EFUSE_NOT_ALLOWED, XSK_ZYNQMP_EFUSEPS_BASEADDR, and XSK_ZYNQMP_EFUSEPS_USER_0_OFFSET.

u32 XilSKey_ZynqMp_EfusePs_SetWriteConditions ( void  )

This function sets all the required parameters to program eFUSE array.

Returns
XST_SUCCESS - On success ErrorCode - on Failure

References XilSKey_ZynqMp_EfusePs_SetTimerValues(), and XSK_EFUSEPS_ERROR_IN_TBIT_PATTERN.

Referenced by XilSKey_Write_Puf_EfusePs_SecureBits(), XilSKey_ZynqMp_EfusePs_Write(), XilSKey_ZynqMp_EfusePs_WritePufAux(), XilSKey_ZynqMp_EfusePs_WritePufChash(), and XilSKey_ZynqMp_EfusePs_WritePufHelprData().

u32 XilSKey_ZynqMp_EfusePs_Write ( XilSKey_ZynqMpEPs *  InstancePtr)

This function is used to program the PS eFUSE of ZynqMP, based on user inputs.

Parameters
InstancePtrPointer to the XilSKey_ZynqMpEPs.
Returns
  • XST_SUCCESS if programs successfully.
  • Errorcode on failure
Note
After eFUSE programming is complete, the cache is automatically reloaded so all programmed eFUSE bits can be directly read from cache.

Check the temperature and voltage(VCC_AUX and VCC_PINT_LP)

References XilSkey_CrcCalculation_AesKey(), XilSKey_Efuse_ConvertBitsToBytes(), XilSKey_EfusePs_ConvertBytesBeToLe(), XilSKey_ZynqMp_EfusePs_CacheLoad(), XilSKey_ZynqMp_EfusePs_CheckAesKeyCrc(), XilSKey_ZynqMp_EfusePs_Init(), XilSKey_ZynqMp_EfusePs_ReadPpk0Hash(), XilSKey_ZynqMp_EfusePs_ReadPpk1Hash(), XilSKey_ZynqMp_EfusePs_SetWriteConditions(), XilSKey_ZynqMp_EfusePs_Temp_Vol_Checks(), XSK_EFUSEPS_ERROR_BEFORE_PROGRAMMING, XSK_EFUSEPS_ERROR_CMPLTD_EFUSE_PRGRM_WITH_ERR, XSK_EFUSEPS_ERROR_CONTROLLER_LOCK, XSK_EFUSEPS_ERROR_PPK0_BIT_CANT_REVERT, XSK_EFUSEPS_ERROR_PPK1_BIT_CANT_REVERT, XSK_EFUSEPS_ERROR_SPKID_BIT_CANT_REVERT, XSK_EFUSEPS_ERROR_VERIFICATION, XSK_EFUSEPS_ERROR_WRITE_AES_KEY, XSK_EFUSEPS_ERROR_WRITE_PPK0_HASH, XSK_EFUSEPS_ERROR_WRITE_PPK1_HASH, XSK_EFUSEPS_ERROR_WRITE_SPK_ID, XSK_EFUSEPS_ERROR_WRITE_USER0_FUSE, XSK_EFUSEPS_ERROR_WRITE_USER1_FUSE, XSK_EFUSEPS_ERROR_WRITE_USER2_FUSE, XSK_EFUSEPS_ERROR_WRITE_USER3_FUSE, XSK_EFUSEPS_ERROR_WRITE_USER4_FUSE, XSK_EFUSEPS_ERROR_WRITE_USER5_FUSE, XSK_EFUSEPS_ERROR_WRITE_USER6_FUSE, XSK_EFUSEPS_ERROR_WRITE_USER7_FUSE, XSK_ZYNQMP_EFUSEPS_BASEADDR, and XSK_ZYNQMP_EFUSEPS_SPK_ID_OFFSET.

u32 XilSKey_ZynqMp_EfusePs_WriteAndVerifyBit ( u8  Row,
u8  Column,
XskEfusePs_Type  EfuseType 
)

This function programs and verifies the particular bit of eFUSE array.

Parameters
Rowspecifies the row number.
Columnspecifies the column number.
EfuseTypespecifies the eFUSE type.
Returns
XST_SUCCESS - On success ErrorCode - on Failure

References XilSKey_ZynqMp_EfusePs_ReadRow(), XSK_EFUSEPS_ERROR_VERIFICATION, XSK_ZYNQMP_EFUSEPS_BASEADDR, and XSK_ZYNQMP_EFUSEPS_CFG_OFFSET.

Referenced by XilSKey_Write_Puf_EfusePs_SecureBits(), XilSKey_ZynqMp_EfusePs_WritePufAux(), and XilSKey_ZynqMp_EfusePs_WritePufChash().

u32 XilSKey_ZynqMp_EfusePs_WritePufAux ( const XilSKey_Puf *  InstancePtr)

This function programs eFUSE PUF auxiliary data.

Parameters
InstancePtrPointer to the XilSKey_Puf instance.
Returns
  • XST_SUCCESS if the eFUSE is programmed successfully.
  • Errorcode on failure
Note
To generate auxiliary data, please use XilSKey_Puf_Registration function.

References XilSKey_Efuse_ConvertBitsToBytes(), XilSKey_ZynqMp_EfusePs_Init(), XilSKey_ZynqMp_EfusePs_ReadPufAux(), XilSKey_ZynqMp_EfusePs_SetWriteConditions(), XilSKey_ZynqMp_EfusePs_Temp_Vol_Checks(), XilSKey_ZynqMp_EfusePs_WriteAndVerifyBit(), XSK_EFUSEPS_ERROR_CONTROLLER_LOCK, and XSK_EFUSEPS_ERROR_PUF_AUX_ALREADY_PROGRAMMED.

Referenced by main().

u32 XilSKey_ZynqMp_EfusePs_WritePufChash ( const XilSKey_Puf *  InstancePtr)

This function programs eFUSE with CHash value.

Parameters
InstancePtrPointer to the XilSKey_Puf instance.
Returns
  • XST_SUCCESS if chash is programmed successfully.
  • An Error code on failure
Note
To generate the CHash value, please use XilSKey_Puf_Registration function.

References XilSKey_Efuse_ConvertBitsToBytes(), XilSKey_ZynqMp_EfusePs_Init(), XilSKey_ZynqMp_EfusePs_ReadPufChash(), XilSKey_ZynqMp_EfusePs_SetWriteConditions(), XilSKey_ZynqMp_EfusePs_Temp_Vol_Checks(), XilSKey_ZynqMp_EfusePs_WriteAndVerifyBit(), XSK_EFUSEPS_ERROR_CONTROLLER_LOCK, and XSK_EFUSEPS_ERROR_PUF_CHASH_ALREADY_PROGRAMMED.

Referenced by main().

u32 XilSKey_ZynqMp_EfusePs_WritePufHelprData ( const XilSKey_Puf *  InstancePtr)

This function programs the PS eFUSEs with the PUF helper data.

Parameters
InstancePtrPointer to the XilSKey_Puf instance.
Returns
  • XST_SUCCESS if programs successfully.
  • Errorcode on failure
Note
To generate PufSyndromeData please use XilSKey_Puf_Registration API

References XilSKey_Efuse_ConvertBitsToBytes(), XilSKey_ZynqMp_EfusePs_Init(), XilSKey_ZynqMp_EfusePs_SetWriteConditions(), XilSKey_ZynqMp_EfusePs_Temp_Vol_Checks(), XSK_EFUSEPS_ERROR_CONTROLLER_LOCK, and XSK_ZYNQMP_EFUSEPS_PUF_ROW_UPPER_MASK.

Referenced by main().

u32 XilSkey_ZynqMpEfuseAccess ( const u32  AddrHigh,
const u32  AddrLow 
)

This function is used by PMUFW IPI call handler for programming eFUSE.

Register Read Write Size in bytes Offset
Version YES NO 0x0 0x4
DNA YES NO 0xc 0xC
User0 YES YES 0x4 0x20
User1 YES YES 0x4 0x24
User2 YES YES 0x4 0x28
User3 YES YES 0x4 0x2c
User4 YES YES 0x4 0x30
User5 YES YES 0x4 0x34
User6 YES YES 0x4 0x38
User7 YES YES 0x4 0x3C
Misc user YES YES 0x4 0x40
Secure control YES YES 0x4 0x58
SPK ID YES YES 0x4 0x5C
AES key NO YES 0x20 0x60
PPK0 hash YES YES 0x30 0xA0
PPK1 hash YES YES 0x30 0xD0
Parameters
AddrHighHigher 32-bit address of the XilSKey_Efuse structure.
AddrLowLower 32-bit address of the XilSKey_Efuse structure.
Returns
XST_SUCCESS - On success ErrorCode - on Failure

References XSK_EFUSEPS_ERROR_ADDR_ACCESS.