The Zynq UltraScale+ MPSoC 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 as such, can be called by other Linux modules with GPL compatible license. The function declarations are available in the following location:
include/linux/firmware/xilinx/zynqmp/firmware.hThe function implementations are available in the following location:
drivers/firmware/xilinx/zynqmp/firmware*.cProvide the correct node in the Linux device tree for proper driver initialization. The firmware driver relies on the 'firmware' node to detect the presence of PMU firmware, 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 following properties:
- Compatible: Must contain ‘xlnx,zynqmp-firmware’.
- Method: The method of calling the PM framework firmware. It should be ‘smc’.
Example:
firmware {
zynqmp_firmware: zynqmp-firmware { compatible = "xlnx,zynqmp-firmware"; method = "smc";
};
};
- Documentation/devicetree/bindings/soc/xilinx/xlnx,zynqmp-power.txt
- Documentation/devicetree/bindings/power/zynqmp-genpd.txt
- query_data
- ioctl
- clock_enable
- clock_disable
- clock_getstate
- clock_setdivider
- clock_getdivider
- clock_setrate
- clock_getrate
- clock_setparent
- clock_getparent
- pinctrl_request
- pinctrl_release
- pinctrl_set_function
- pinctrl_get_function
- pinctrl_set_config
- pinctrl_get_config