zynqmp_pm_sec_read_reg(9)
π zynqmp_pm_sec_read_reg β bestie's guide to the Kernel API Manual (section 9) β¨
okay so picture this: you're deep in the Xilinx PM firmware world, and you need to securely read a little chunk of a node's registers. that's literally the whole vibe of this function. it's zynqmp_pm_sec_read_reg, it lives in the section 9 of the Kernel API Manual, and it's giving "trusted middleman energy" π«Ά
πΈ NAME πΈ
zynqmp_pm_sec_read_reg β a PM call that securely reads from a given offset of the node. no cap, that's it, that's the job π
π SYNOPSIS π
int zynqmp_pm_sec_read_reg (u32 node_id , u32 offset , u32 *ret_value );
three params, one int coming back at you. slay.
β¨ ARGUMENTS β¨ (the receipts)
node_idβ the Node Id of the device. like, which node are we even talking about, bestie? this one. π¦offsetβ the offset to be used. and heads up: it's a 20-bit offset, so don't go wild with the big numbers, ok? πΈret_valueβ your output data, read from the givenoffset, and it only shows up after the firmware access policy has been successfully enforced. so it's the "trust but verify" parameter, fr fr π₯
β RETURN β
Returns 0 on success, or an error value on failure. classic. no notes. π
π SEE ALSO π (the whole group chat, no one left out)
- Kernel file
./drivers/firmware/xilinx/zynqmp.c 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_invoke_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_mask_write_reg(9)β yeah, the write-y sibling, go say hi π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)
quick vibe check, bestie: ret_value is output β you're handing over a pointer, and you only get meaningful data back once the firmware access policy is successfully enforced. don't skip the return check. π
okay that's the whole page, mwah π β this lil beauty comes from the source path ./drivers/firmware/xilinx, dated October 2026, and it's filed under the Kernel API Manual, section 9. go read some more manpages, you icon πβ¨
π¦ 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