pciepsu
Xilinx SDK Drivers API Documentation
xpciepsu.h File Reference

Overview

This file contains the software API definition of the Xilinx PSU PCI IP (psu_pcie).

This driver provides "C" function interface to application/upper layer to access the hardware.

Features The driver provides its user with entry points

  • To initialize and configure itself and the hardware
  • To access PCIe configuration space locally

Driver Initialization & Configuration

The XPciePsu_Config structure is used by the driver to configure itself. This configuration structure is typically created by the tool-chain based on HW build properties.

To support multiple runtime loading and initialization strategies employed by various operating systems, the driver instance can be initialized in the following way:

  • XPciePsu_LookupConfig(DeviceId) - Use the device identifier to find the static configuration structure defined in xpciepsu_g.c. This is setup by the tools.
  • XPciePsu_CfgInitialize(InstancePtr, CfgPtr, EffectiveAddress) - Uses a configuration structure provided by the caller. If running in a system with address translation, the provided virtual memory base address replaces the physical address present in the configuration structure.
MODIFICATION HISTORY:
Ver   Who  Date     Changes


1.0 bs 08/21/2018 First release

Functions

XPciePsu_Config * XPciePsu_LookupConfig (u16 DeviceId)
 This function looks for the configuration of PCIe from the configTable based on the unique device ID. More...
 
u32 XPciePsu_CfgInitialize (XPciePsu *InstancePtr, XPciePsu_Config *CfgPtr, UINTPTR EffectiveBrgAddress)
 This function initializes the config space and PCIe bridge. More...
 
u8 XPciePsu_EnumerateBus (XPciePsu *InstancePtr)
 This function starts PCIe enumeration. More...
 
u8 XPciePsu_ReadConfigSpace (XPciePsu *InstancePtr, u8 Bus, u8 Device, u8 Function, u16 Offset, u32 *DataPtr)
 This function read from remote configuration space location. More...
 
u8 XPciePsu_WriteConfigSpace (XPciePsu *InstancePtr, u8 Bus, u8 Device, u8 Function, u16 Offset, u32 Data)
 This function write to remote configuration space location. More...
 
u32 XPciePsu_ComposeExternalConfigAddress (u8 Bus, u8 Device, u8 Function, u16 Offset)
 This function Composes configuration space location. More...
 
u8 XPciePsu_HasCapability (XPciePsu *InstancePtr, u8 Bus, u8 Device, u8 Function, u8 CapId)
 This function returns whether capability Id is available or not for the particular Function. More...
 
u64 XPciePsu_GetCapability (XPciePsu *InstancePtr, u8 Bus, u8 Device, u8 Function, u8 CapId)
 This function returns offset to the matching capability ID from the Function's Linked list of the capability registers. More...
 
u8 XPciePsu_PrintAllCapabilites (XPciePsu *InstancePtr, u8 Bus, u8 Device, u8 Function)
 This function prints all the available capabilities in the Function. More...
 

Function Documentation

u32 XPciePsu_CfgInitialize ( XPciePsu *  InstancePtr,
XPciePsu_Config *  CfgPtr,
UINTPTR  EffectiveBrgAddress 
)

This function initializes the config space and PCIe bridge.

Parameters
InstancePtrpointer to XPciePsu Instance Pointer
CfgPtrpointer to XPciePsu_Config instrance Pointer.
EffectiveBrgAddressconfig brigReg address
Returns
XST_SUCCESS on success err on failure

Referenced by PcieInitRootComplex().

u32 XPciePsu_ComposeExternalConfigAddress ( u8  Bus,
u8  Device,
u8  Function,
u16  Offset 
)

This function Composes configuration space location.

Parameters
Bus
Device
Function
Offset
Returns
location address of the composed address

References XPCIEPSU_ECAM_BUS_MASK, XPCIEPSU_ECAM_BUS_SHIFT, XPCIEPSU_ECAM_DEV_MASK, XPCIEPSU_ECAM_DEV_SHIFT, XPCIEPSU_ECAM_FUN_MASK, XPCIEPSU_ECAM_FUN_SHIFT, XPCIEPSU_ECAM_MASK, XPCIEPSU_ECAM_REG_MASK, and XPCIEPSU_ECAM_REG_SHIFT.

Referenced by XPciePsu_GetCapability(), XPciePsu_ReadConfigSpace(), and XPciePsu_WriteConfigSpace().

u8 XPciePsu_EnumerateBus ( XPciePsu *  InstancePtr)

This function starts PCIe enumeration.

Parameters
InstancePtrpointer to XPciePsu Instance Pointer
Returns
1 if success 0 if fails

Referenced by main().

u64 XPciePsu_GetCapability ( XPciePsu *  InstancePtr,
u8  Bus,
u8  Device,
u8  Function,
u8  CapId 
)

This function returns offset to the matching capability ID from the Function's Linked list of the capability registers.

Parameters
InstancePtrpointer to XPciePsu Instance Pointer
Busis the number of the Bus
Deviceis the number of the Device
Functionis number of the Function
capid to get capability pointer offset
Returns
u64 capability pointer if available 0 if not available.

References XPciePsu_ComposeExternalConfigAddress(), and XPciePsu_ReadConfigSpace().

u8 XPciePsu_HasCapability ( XPciePsu *  InstancePtr,
u8  Bus,
u8  Device,
u8  Function,
u8  CapId 
)

This function returns whether capability Id is available or not for the particular Function.

Parameters
InstancePtrpointer to XPciePsu Instance Pointer
Busis the number of the Bus
Deviceis the number of the Device
Functionis number of the Function
capid to check capability pointer availability
Returns
u32 0 if capability is not available 1 if capability is available

References XPciePsu_ReadConfigSpace().

XPciePsu_Config* XPciePsu_LookupConfig ( u16  DeviceId)

This function looks for the configuration of PCIe from the configTable based on the unique device ID.

The table XPciePsu_ConfigTable[] contains the configuration information for each device in the system.

Parameters
DeviceIdis the unique device ID of the device being looked up.
Returns
A pointer to the configuration table entry corresponding to the given device ID, or NULL if no match is found.

Referenced by PcieInitRootComplex(), and XPciePsu_InitEndPoint().

u8 XPciePsu_PrintAllCapabilites ( XPciePsu *  InstancePtr,
u8  Bus,
u8  Device,
u8  Function 
)

This function prints all the available capabilities in the Function.

Parameters
InstancePtrpointer to XPciePsu Instance Pointer
Busis the number of the Bus
Deviceis the number of the Device
Functionis number of the Function
Returns
XST_SUCCESS on success XST_FAILURE on failure.

References XPciePsu_ReadConfigSpace().

u8 XPciePsu_ReadConfigSpace ( XPciePsu *  InstancePtr,
u8  Bus,
u8  Device,
u8  Function,
u16  Offset,
u32 *  DataPtr 
)

This function read from remote configuration space location.

Parameters
InstancePtrpointer to XPciePsu Instance Pointer
Bus
Device
Function
Offsetlocation of the address to read data from.
DataPtrpointer store date available in the offset
Returns
XST_SUCCESS on success XST_FAILURE on failure.

References XPciePsu_ComposeExternalConfigAddress().

Referenced by XPciePsu_GetCapability(), XPciePsu_HasCapability(), and XPciePsu_PrintAllCapabilites().

u8 XPciePsu_WriteConfigSpace ( XPciePsu *  InstancePtr,
u8  Bus,
u8  Device,
u8  Function,
u16  Offset,
u32  Data 
)

This function write to remote configuration space location.

Parameters
InstancePtrpointer to XPciePsu Instance Pointer
Bus
Device
Function
Offsetlocation of the address to write data.
Datato be written on to the offset
Returns
XST_SUCCESS on success XST_FAILURE on failure.

References XPciePsu_ComposeExternalConfigAddress().