pciepsu
Vitis Drivers API Documentation
xpciepsu_ep.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_EP_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 tk 02/13/2019 First release

Functions

void XPciePsu_EP_BridgeInitialize (XPciePsu *PciePsuPtr)
 This function initializes PCIe bridge. More...
 
void XPciePsu_EP_CfgInitialize (XPciePsu *PciePsuPtr, const XPciePsu_Config *ConfigPtr)
 This function initializes the config space. More...
 
void XPciePsu_EP_WaitForLinkup (XPciePsu *PciePsuPtr)
 This function waits for Pcie link to come up. More...
 
void XPciePsu_EP_WaitForEnumeration (XPciePsu *PciePsuPtr)
 This function waits for host to enumerate. More...
 
int XPciePsu_EP_SetupIngress (XPciePsu *PciePsuPtr, u32 IngressNum, u32 BarNum, u64 Dst)
 This function sets up ingress translation. More...
 

Function Documentation

void XPciePsu_EP_BridgeInitialize ( XPciePsu *  PciePsuPtr)

This function initializes PCIe bridge.

Parameters
PciePsuPtrpointer to XPciePsu Instance Pointer

References XPciePsu_ReadReg(), and XPciePsu_WriteReg().

Referenced by main().

void XPciePsu_EP_CfgInitialize ( XPciePsu *  PciePsuPtr,
const XPciePsu_Config *  ConfigPtr 
)

This function initializes the config space.

Parameters
PciePsuPtrpointer to XPciePsu Instance Pointer
ConfigPtrpointer to XPciePsu_Config instrance Pointer.
Returns
XST_SUCCESS on success err on failure

Referenced by XPciePsu_InitEndPoint().

int XPciePsu_EP_SetupIngress ( XPciePsu *  PciePsuPtr,
u32  IngressNum,
u32  BarNum,
u64  Dst 
)

This function sets up ingress translation.

Parameters
PciePsuPtrpointer to XPciePsu_Config Instance Pointer
IngressNumingress must be 0 to 7
BarNumbar no to setup ingress
Dst32 or 64 bit destination address

XST_SUCCESS if setup is successful XST_FAILURE if setup is fail

References XPciePsu_ReadReg(), and XPciePsu_WriteReg().

Referenced by main().

void XPciePsu_EP_WaitForEnumeration ( XPciePsu *  PciePsuPtr)

This function waits for host to enumerate.

On x86 BIOS sets memory enable bit On ARM64 it is set when driver gets inserted

Parameters
PciePsuPtrpointer to XPciePsu_Config Instance Pointer

References XPciePsu_ReadReg().

Referenced by main().

void XPciePsu_EP_WaitForLinkup ( XPciePsu *  PciePsuPtr)

This function waits for Pcie link to come up.

Parameters
PciePsuPtrpointer to XPciePsu_Config Instance Pointer

References XPciePsu_ReadReg().

Referenced by main().