Using the API for Pin Management - 2023.2 English

Versal Adaptive SoC System Software Developers Guide (UG1304)

Document ID
Release Date
2023.2 English

There are EEMI APIs available that allow PUs to manage pins in the system. Each pin is identified by a unique PinId. A processor node could obtain a list of PinIds accessible to that PU by using the XPm_Query API.

Use the following APIs to request or release control of a pin:

  • XStatus XPm_PinCtrlRequest(const u32 PinId)
  • XStatus XPm_PinCtrlRelease(const u32 PinId)

You can configure a pin for use by different functional units. Use the XPm_Query API to obtain a list of functional units accessible to a pin, which is identified by FunctionId. Request a pin before assigning a functional unit to a pin. Most functional units are associated with a device. Use the XPm_RequestNode API to request the device before assigning it to a pin.

  • XStatus XPm_PinCtrlGetFunction(const u32 PinId, u32 *const FunctionId)
  • XStatus XPm_PinCtrlSetFunction(const u32 PinId, const u32 FunctionId)

Use the following APIs to configure a pin for different operating characteristics. For a list of possible ParamIds and ParamVals, see BSP and Libraries Document Collection (UG643).

  • XStatus XPm_PinCtrlGetParameter(const u32 PinId, const u32 ParamId, u32 *const ParamVal)
  • XStatus XPm_PinCtrlSetParameter(const u32 PinId, const u32 ParamId, const u32 ParamVal)