zynqmp_pm_invoke_fn(9)
π zynqmp_pm_invoke_fn β kernel API manual
Okay bestie, so this page is literally all about zynqmp_pm_invoke_fn β it's the Kernel API Manual entry for invoking the system-level platform management layer caller function, and the way it works depends on your configuration. No cap, it's giving "gateway to the firmware" energy. π«Ά
β¨ NAME β¨
zynqmp_pm_invoke_fn β invoke the system-level platform management layer caller function depending on the configuration. Periodt. π
π SYNOPSIS π
int zynqmp_pm_invoke_fn (u32 pm_api_id , u32 *ret_payload , u32 num_args
, ... );
π ARGUMENTS π
pm_api_idβ the requested PM-API call. Like, which vibe are we asking the firmware for? πret_payloadβ returned value array. This is where the answer lands, bestie. π¦num_argsβ number of arguments to the requested PM-API call. Gotta count them fr fr....β variable arguments. Surprise extras, iykyk. π
πΈ DESCRIPTION πΈ
So basically this function invokes the platform management function for SMC or HVC call, depending on configuration. It follows the SMC Calling Convention (SMCCC) for SMC64, and the formula is literally:
Pm Function Identifier, PM_SIP_SVC + PM_API_ID =
((SMC_TYPE_FAST << FUNCID_TYPE_SHIFT)
((SMC_64) << FUNCID_CC_SHIFT)
((SIP_START) << FUNCID_OEN_SHIFT)
((PM_API_ID) & FUNCID_NUM_MASK))
Let me break it down, bestie:
PM_SIP_SVCβ Registered ZynqMP SIP Service Call.PM_API_IDβ Platform Management API ID.
That's the whole lore. It's not doing extra, it's just packing the right bits so the firmware knows what's up. π§
π₯ RETURN π₯
Returns status, either success or error+reason. So like, either "slay, we're good" or "here's why not." π
π¦ SEE ALSO π¦
Kernel file ./drivers/firmware/xilinx/zynqmp.c and all these besties:
struct zynqmp_devinfo(9)struct pm_api_feature_data(9)zynqmp_pm_ret_code(9)do_fw_call_smc(9)do_fw_call_hvc(9)zynqmp_pm_feature(9)zynqmp_pm_is_function_supported(9)zynqmp_pm_invoke_fw_fn(9)zynqmp_pm_get_api_version(9)zynqmp_pm_get_chipid(9)zynqmp_pm_get_family_info(9)zynqmp_pm_get_sip_svc_version(9)zynqmp_pm_get_trustzone_version(9)get_set_conduit_method(9)zynqmp_pm_query_data(9)zynqmp_pm_clock_enable(9)zynqmp_pm_clock_disable(9)zynqmp_pm_clock_getstate(9)zynqmp_pm_clock_setdivider(9)zynqmp_pm_clock_getdivider(9)zynqmp_pm_clock_setparent(9)zynqmp_pm_clock_getparent(9)zynqmp_pm_set_pll_frac_mode(9)zynqmp_pm_get_pll_frac_mode(9)zynqmp_pm_set_pll_frac_data(9)zynqmp_pm_get_pll_frac_data(9)zynqmp_pm_set_sd_tapdelay(9)zynqmp_pm_sd_dll_reset(9)zynqmp_pm_ospi_mux_select(9)zynqmp_pm_write_ggs(9)zynqmp_pm_read_ggs(9)zynqmp_pm_write_pggs(9)zynqmp_pm_read_pggs(9)zynqmp_pm_set_boot_health_status(9)zynqmp_pm_reset_assert(9)zynqmp_pm_reset_get_status(9)zynqmp_pm_fpga_load(9)zynqmp_pm_fpga_get_status(9)zynqmp_pm_fpga_get_config_status(9)zynqmp_pm_pinctrl_request(9)zynqmp_pm_pinctrl_release(9)zynqmp_pm_pinctrl_set_function(9)zynqmp_pm_pinctrl_get_config(9)zynqmp_pm_pinctrl_set_config(9)zynqmp_pm_bootmode_read(9)zynqmp_pm_bootmode_write(9)zynqmp_pm_init_finalize(9)zynqmp_pm_set_suspend_mode(9)zynqmp_pm_request_node(9)zynqmp_pm_release_node(9)zynqmp_pm_get_rpu_mode(9)zynqmp_pm_set_rpu_mode(9)zynqmp_pm_set_tcm_config(9)zynqmp_pm_get_node_status(9)zynqmp_pm_get_rpu_node_status(9)zynqmp_pm_force_pwrdwn(9)zynqmp_pm_request_wake(9)zynqmp_pm_start_rpu(9)zynqmp_pm_stop_rpu(9)zynqmp_pm_set_requirement(9)zynqmp_pm_load_pdi(9)zynqmp_pm_efuse_access(9)zynqmp_pm_register_notifier(9)zynqmp_pm_system_shutdown(9)zynqmp_pm_set_feature_config(9)zynqmp_pm_get_feature_config(9)zynqmp_pm_sec_read_reg(9)zynqmp_pm_sec_mask_write_reg(9)zynqmp_pm_set_sd_config(9)zynqmp_pm_set_gem_config(9)struct zynqmp_pm_shutdown_scope(9)zynqmp_pm_is_shutdown_scope_valid(9)zynqmp_clear_pm_state(9)
This page is from ./drivers/firmware/xilinx and was last updated in October 2026. Stay slay, bestie β now go invoke some PM-APIs responsibly πβ¨π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms