The Versal ACAP power management for Linux is encapsulated in a power management driver, power domain driver, and platform firmware driver. The system-level API functions are exported and can be called by other Linux modules with GPL compatible license.
PM Firmware Driver
The function declarations are available in the following location: include/linux/firmware/xlnx-zynqmp.h
The function implementations are available in the following location: drivers/firmware/xilinx/zynqmp/zynqmp*.c
For proper driver intialization, you must provide the correct node in the Linux device tree . The firmware driver relies on the firmware node to detect the presence of PLM, determine the calling method (either smc or hvc) to the PM-Framework firmware layer, and to register the callback interrupt number.
The firmware node contains the following properties:
- Compatible
- Must contain xlnx,versal-firmware
- Method
- The method of calling the PM framework firmware should be smc. Note: Additional information is available in the following txt file of Linux Documentation: Documentation/devicetree/bindings/firmware/xilinx/xlnx,zynqmp-firmware.txt
Example:
firmware {
versal_firmware: versal-firmware {
compatible = "xlnx,versal-firmware";
method = "smc";
};
};
- Documentation/devicetree/bindings/power/reset/xilinx/xlnx,zynqmp-power.txt
- Documentation/devicetree/bindings/power/reset/xilinx/xlnx,zynqmp-genpd.txt