xilplmi
Vitis Drivers API Documentation
2ve_2vm/xplmi_plat.c File Reference

Overview

This file contains the PLMI versal_2ve_2vm platform specific code.

MODIFICATION HISTORY:
Ver   Who  Date        Changes


1.00 bm 07/06/2022 Initial release dc 07/12/2022 Added XPlmi_RomISR() API kpt 07/21/2022 Added KAT APIs bm 07/22/2022 Update EAM logic for In-Place PLM Update bm 07/22/2022 Retain critical data structures after In-Place PLM Update bm 07/22/2022 Shutdown modules gracefully during update 1.01 bm 11/07/2022 Clear SSS Cfg Error in SSSCfgSbiDma for Versal Net ng 11/11/2022 Fixed doxygen file name error kpt 01/04/2023 Added XPlmi_CheckandUpdateFipsState to update FIPS state bm 03/11/2023 Modify XPlmi_PreInit to return Status dd 03/28/2023 Updated doxygen comments ng 03/30/2023 Updated algorithm and return values in doxygen comments 1.02 bm 04/28/2023 Update Pmc IRO frequency by detecting the part dd 05/24/2023 Updated doxygen comments ng 05/31/2023 Initialised IsKatRan state to False bm 07/06/2023 Initialize address buffer list ng 06/26/2023 Added support for system device-tree flow sk 07/18/2023 Updated error codes in VerifyAddrRange function sk 07/31/2023 Added redundant write for SSS Config kpt 08/28/2023 Reread from efuse cache to enhance security sk 09/07/2023 Added redundancy check in XPlmi_SetPmcIroFreq for updating the MB Freq ng 09/22/2023 Fixed missing header for microblaze sleep 1.03 sk 14/12/2023 PSM & PMC buffer list saving to handle in-place update mss 01/09/2024 Added PMC RAM check condition in Xplmi_VerifyAddr API pre 01/22/2024 Updated XPlmi_SetPmcIroFreq to support both ES1 and production samples ng 02/12/2024 optimised u8 vars to u32 for size reduction ma 03/05/2024 Fixed improper timestamp issue after In-place PLM update ma 03/15/2024 Do not stop PIT3 timer during In-place PLM update 1.04 sk 08/26/2024 Updated EAM support for Versal 2VE and 2VM Devices yog 09/09/2024 Updated XPlmi_VerifyAddrRange API to handle ASU memory regions nb 09/16/2024 Register interrupt for PMC power interrupts sk 12/13/2024 Updated PSM buffer defines to PPU RAM pre 12/24/2024 Assigned PmcBuffers to data of PmcBufferList 2.2 vss 02/11/2025 Updated SSS configuration correctly. sk 02/26/2025 Updated status variable as volatile in XPlmi_GenericHandler sk 03/17/2025 Updated XPlmi_VerifyAddrRange function to handle RPU cluster TCM memory ranges sk 03/25/2025 Corrected configuration of the PMC IRO Freq obs 04/11/2025 Removed HNIC and PKI related code in XPlmi_UpdateFipsState

 

Macros

#define XPLMI_ROM_VERSION_1_0   (0x10U)
 ROM version 1. More...
 
#define XPLMI_SSSCFG_SHA0_MASK   (0x000F0000U)
 SHA0 mask. More...
 
#define XPLMI_SSSCFG_SHA1_MASK   (0x0F000000U)
 SHA1 mask. More...
 
#define XPLMI_SSSCFG_AES_MASK   (0x0000F000U)
 AES mask. More...
 
#define XPLMI_SSS_SHA0_DMA0   (0x000C0000U)
 SHA0 DMA0. More...
 
#define XPLMI_SSS_SHA0_DMA1   (0x00070000U)
 SHA0 DMA1. More...
 
#define XPLMI_SSS_SHA1_DMA0   (0x0A000000U)
 SHA1 DMA0. More...
 
#define XPLMI_SSS_SHA1_DMA1   (0x0F000000U)
 SHA1 DMA1. More...
 
#define XPLMI_SSS_AES_DMA0   (0x0000E000U)
 AES DMA0. More...
 
#define XPLMI_SSS_AES_DMA1   (0x00005000U)
 AES DMA1. More...
 
#define XPLMI_LPDINITIALIZED_VER   (1U)
 LPD initialized version. More...
 
#define XPLMI_LPDINITIALIZED_LCVER   (1U)
 LPD initialized LC version. More...
 
#define XPLMI_UART_BASEADDR_VER   (1U)
 UART base address version. More...
 
#define XPLMI_UART_BASEADDR_LCVER   (1U)
 UART base address LC version. More...
 
#define XPLMI_TRACE_LOG_VERSION   (1U)
 Trace log version. More...
 
#define XPLMI_TRACE_LOG_LCVERSION   (1U)
 Trace log LC version. More...
 
#define XPLMI_BOARD_PARAMS_VERSION   (1U)
 Board parameters version. More...
 
#define XPLMI_BOARD_PARAMS_LCVERSION   (1U)
 Board parameters LC version. More...
 
#define XPLMI_XIOMODULE_VERSION   (1U)
 IOModule version. More...
 
#define XPLMI_XIOMODULE_LCVERSION   (1U)
 IOModule LC version. More...
 
#define XPLMI_PMC_VOLTAGE_MULTIPLIER   (32768.0f)
 Voltage multiplier for Sysmon. More...
 
#define XPLMI_PMC_IRO_FREQ_233_MHZ   (233000000U)
 PMC IRO frequency 233Mhz. More...
 
#define XPLMI_PPU_BUFFER_DS_VER   (1U)
 PPU buffers Data structure version. More...
 
#define XPLMI_PPU_BUFFER_DS_LCVER   (1U)
 PPU buffers Data structure LC version. More...
 
#define XPLMI_PMC_BUFFER_DS_VER   (1U)
 PMC buffers Data structure version. More...
 
#define XPLMI_PMC_BUFFER_DS_LCVER   (1U)
 PMC buffers Data structure LC version. More...
 
#define XPLMI_PPU_BUFFER_LIST_DS_VER   (1U)
 PPU buffer list Data structure version. More...
 
#define XPLMI_PPU_BUFFER_LIST_DS_LCVER   (1U)
 PPU buffer list Data structure LC version. More...
 
#define XPLMI_PMC_BUFFER_LIST_DS_VER   (1U)
 PMC buffer list Data structure version. More...
 
#define XPLMI_PMC_BUFFER_LIST_DS_LCVER   (1U)
 PMC buffer list Data structure LC version. More...
 

Functions

XInterruptHandler * XPlmi_GetTopLevelIntrTbl (void)
 This function provides pointer to g_TopLevelInterruptTable. More...
 
u8 XPlmi_GetTopLevelIntrTblSize (void)
 This function provides size of g_TopLevelInterruptTable. More...
 
XPlmi_BoardParams * XPlmi_GetBoardParams (void)
 This function provides pointer to BoardParams. More...
 
XIOModule * XPlmi_GetIOModuleInst (void)
 This function provides pointer to IOModule structure. More...
 
u32 * XPlmi_GetLpdInitialized (void)
 This function provides LpdInitialized variable pointer. More...
 
u32 * XPlmi_GetUartBaseAddr (void)
 This function provides LpdInitialized variable pointer. More...
 
int XPlmi_PreInit (void)
 This function performs plmi pre-initializaton. More...
 
void XPlmi_RtcaPlatInit (void)
 This function performs initialization of platform specific RCTA registers. More...
 
void XPlmi_PrintRomVersion (void)
 This function prints ROM version using ROM digest value. More...
 
void XPlmi_SssMask (u32 DmaSrc)
 This function masks the secure stream switch value. More...
 
XPlmi_CircularBuffer * XPlmi_GetTraceLogInst (void)
 This function provides TraceLog instance. More...
 
int XPlmi_GenericHandler (XPlmi_ModuleOp Op)
 This function is used for shutdown operation before In-place PLM Update. More...
 
void XPlmi_GetReadbackSrcDest (u32 SlrType, u64 *SrcAddr, u64 *DestAddrRead)
 This function processes and provides SrcAddr and DestAddr for cfi readback. More...
 
void XPlmi_GicAddTask (u32 PlmIntrId)
 This will add the GIC interrupt task handler to the TaskQueue. More...
 
void XPlmi_IpiIntrHandler (void *CallbackRef)
 This function is the Ipi interrupt handler for the device. More...
 
int XPlmi_RegisterNEnableIpi (void)
 This function registers and enables IPI interrupt. More...
 
void XPlmi_EnableIomoduleIntr (void)
 This function registers and enables IPI interrupt. More...
 
u32 XPlmi_GetRomIroFreq (void)
 This function provides the Iro Frequency used in ROM. More...
 
int XPlmi_SetPmcIroFreq (void)
 It sets the PMC IRO frequency. More...
 
int XPlmi_VerifyAddrRange (u64 StartAddr, u64 EndAddr)
 This function is used to check if the given address range is valid. More...
 
XPlmi_WaitForDmaDone_t XPlmi_GetPlmiWaitForDone (u64 DestAddr)
 This function is used to check and wait for DMA done when sending data to SSIT Slave SLRs. More...
 
u32 XPlmi_GetGicIntrId (u32 GicPVal, u32 GicPxVal)
 This function provides Gic interrupt id. More...
 
u32 XPlmi_GetIpiIntrId (u32 BufferIndex)
 This function provides IPI interrupt id. More...
 
int XPlmi_RomISR (XPlmi_RomIntr RomServiceReq)
 This function raises an interrupt request to ROM and waits for completion. More...
 
u32 XPlmi_IsFipsModeEn (void)
 This function return FIPS mode. More...
 
u32 XPlmi_GetRomKatStatus (void)
 This function returns ROM KAT status. More...
 
void XPlmi_GetBootKatStatus (volatile u32 *PlmKatStatus)
 This function returns KAT status from RCTA area. More...
 
void XPlmi_ClearSSSCfgErr (void)
 This function clears SSS Cfg error set during ROM PCR Extension. More...
 
XPlmi_FipsKatMask * XPlmi_GetFipsKatMaskInstance (void)
 This function returns XPlmi_FipsKatMask instance. More...
 
int XPlmi_CheckAndUpdateFipsState (void)
 This function checks and updates the FIPS state in RTCA. More...
 
void XPlmi_UpdateCryptoStatus (u32 Mask, u32 Val)
 This function sets or clears crypto bit in RTCA based on mask. More...
 
u32 XPlmi_GetCryptoStatus (u32 Mask)
 This function returns crypto status flag. More...
 
u8 XPlmi_IsKatRan (u32 PlmKatMask)
 This function will return KAT status of given mask. More...
 
XPlmi_BufferList * XPlmi_GetBufferList (u32 BufferListType)
 This function defines BufferList and returns the address of the same. More...