pciepsu: xpciepsu.h File Reference

| pciepsu Xilinx SDK Drivers API Documentation

- Overview
- APIs
- File List
- Examples

Functions
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

  InstancePtr | pointer to XPciePsu Instance Pointer
  CfgPtr | pointer to XPciePsu_Config instrance Pointer.
  EffectiveBrgAddress | config 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

  InstancePtr | pointer 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

  InstancePtr | pointer to XPciePsu Instance Pointer
  Bus | is the number of the Bus
  Device | is the number of the Device
  Function | is number of the Function
  cap | id 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

  InstancePtr | pointer to XPciePsu Instance Pointer
  Bus | is the number of the Bus
  Device | is the number of the Device
  Function | is number of the Function
  cap | id 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

  DeviceId | is 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

  InstancePtr | pointer to XPciePsu Instance Pointer
  Bus | is the number of the Bus
  Device | is the number of the Device
  Function | is 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

  InstancePtr | pointer to XPciePsu Instance Pointer
  Bus |
  Device |
  Function |
  Offset | location of the address to read data from.
  DataPtr | pointer 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

  InstancePtr | pointer to XPciePsu Instance Pointer
  Bus |
  Device |
  Function |
  Offset | location of the address to write data.
  Data | to be written on to the offset

Returns
  XST_SUCCESS on success XST_FAILURE on failure.

References XPciePsu_ComposeExternalConfigAddress().