| pciepsu Vitis Drivers API Documentation

- Overview
- APIs
- File List
- Examples

Functions
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...
void | XPciePsu_Egress_EP_BridgeInitialize (XPciePsu *PciePsuPtr)
| This function initializes Egress PCIe bridge. More...
void | Do_Egress_Test (u32 *egress_src_lo)
| This function does Egress test. More...
int | XPciePsu_EP_SetupEgress (XPciePsu *PciePsuPtr, u32 IngressNum)
| This function sets up Egress translation. More...

## Function Documentation

void Do_Egress_Test | ( | u32 * | egress_src_lo | ) |

This function does Egress test.

Parameters

  egress | source address

Referenced by XPciePsu_EP_SetupEgress().

void XPciePsu_Egress_EP_BridgeInitialize | ( | XPciePsu * | PciePsuPtr | ) |

This function initializes Egress PCIe bridge.

Parameters

  PciePsuPtr | pointer to XPciePsu Instance Pointer

References XPciePsu_ReadReg(), and XPciePsu_WriteReg().

Referenced by main().

void XPciePsu_EP_BridgeInitialize | ( | XPciePsu * | PciePsuPtr | ) |

This function initializes PCIe bridge.

Parameters

  PciePsuPtr | pointer to XPciePsu Instance Pointer

References XPciePsu_ReadReg(), and XPciePsu_WriteReg().

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

This function initializes the config space.

Parameters

  PciePsuPtr | pointer to XPciePsu Instance Pointer
  ConfigPtr | pointer to XPciePsu_Config instrance Pointer.

Returns
  XST_SUCCESS on success err on failure

Referenced by XPciePsu_InitEndPoint().

int XPciePsu_EP_SetupEgress | ( | XPciePsu * | PciePsuPtr,
|  | u32 | EgressNum
| ) |  |

This function sets up Egress translation.

Parameters

  PciePsuPtr | pointer to XPciePsu_Config Instance Pointer
  EgressNum | ingress must be 0 to 7

Returns
  XST_SUCCESS if setup is successful XST_FAILURE if setup is fail

References Do_Egress_Test(), XPciePsu_ReadReg(), and XPciePsu_WriteReg().

Referenced by main().

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

This function sets up ingress translation.

Parameters

  PciePsuPtr | pointer to XPciePsu_Config Instance Pointer
  IngressNum | ingress must be 0 to 7
  BarNum | bar no to setup ingress
  Dst | 32 or 64 bit destination address

Returns
  XST_SUCCESS if setup is successful XST_FAILURE if setup is fail

References XPciePsu_ReadReg(), and XPciePsu_WriteReg().

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

  PciePsuPtr | pointer to XPciePsu_Config Instance Pointer

References XPciePsu_ReadReg().

void XPciePsu_EP_WaitForLinkup | ( | XPciePsu * | PciePsuPtr | ) |

This function waits for Pcie link to come up.

Parameters

  PciePsuPtr | pointer to XPciePsu_Config Instance Pointer

References XPciePsu_ReadReg().

Referenced by main().