STRUCT OF_GENPD_PROVIDER(9)
π struct of_genpd_provider(9) β the Kernel API Manual, bestie edition π
okay so real talk: this is the page for struct of_genpd_provider(9) from the Kernel API Manual, and it's literally the glow-up form you fill out to register a PM domain provider β¨. It's the little struct that says "hi yes I have power domains, come get 'em" β and we're gonna go through every single field together, no skips, no cap π.
β¨ NAME β¨
struct of_genpd_provider β the PM domain provider registration structure π«Ά (yes that's its whole job and it ate).
πΈ SYNOPSIS πΈ
struct of_genpd_provider {
struct list_head link;
struct device_node *node;
genpd_xlate_t xlate;
void *data;
};
lowkey stare at it for a sec β four fields, each one doing its little main character thing π
π¦ Members π¦
linkβ the entry in the global list of PM domain providers. it's giving "add me to the group chat" energy πnodeβ pointer to the device tree node of the PM domain provider. your provider's literal home address in the DT π³xlateβ provider-specific xlate callback that maps a set of specifier cells into a PM domain. bestie this is the translator β it takes those specifier cells and turns them into an actual PM domain, slay π§dataβ context pointer to be passed into thexlatecallback. the little bag of snacksxlategets handed when it gets called π
π SEE ALSO π
the kernel file it all lives in is ./drivers/pmdomain/core.c β go say hi, it's iconic π
and now the full friend group, in order, every single one, because we don't do "etc." around here:
dev_pm_genpd_set_performance_state(9)dev_pm_genpd_set_next_wakeup(9)dev_pm_genpd_get_next_hrtimer(9)dev_pm_genpd_set_hwmode(9)dev_pm_genpd_get_hwmode(9)dev_pm_genpd_rpm_always_on(9)dev_pm_genpd_is_on(9)pm_genpd_inc_rejected(9)genpd_queue_power_off_work(9)genpd_power_off(9)genpd_power_on(9)genpd_power_off_work_fn(9)__genpd_runtime_suspend(9)__genpd_runtime_resume(9)genpd_runtime_suspend(9)genpd_runtime_resume(9)genpd_power_off_unused(9)genpd_sync_power_off(9)genpd_sync_power_on(9)genpd_prepare(9)genpd_finish_suspend(9)genpd_suspend_noirq(9)genpd_finish_resume(9)genpd_resume_noirq(9)genpd_freeze_noirq(9)genpd_thaw_noirq(9)genpd_poweroff_noirq(9)genpd_restore_noirq(9)genpd_complete(9)dev_pm_genpd_suspend(9)dev_pm_genpd_resume(9)pm_genpd_add_device(9)pm_genpd_remove_device(9)dev_pm_genpd_add_notifier(9)dev_pm_genpd_remove_notifier(9)pm_genpd_add_subdomain(9)pm_genpd_remove_subdomain(9)pm_genpd_init(9)pm_genpd_remove(9)genpd_xlate_simple(9)genpd_xlate_onecell(9)genpd_add_provider(9)of_genpd_add_provider_simple(9)of_genpd_add_provider_onecell(9)of_genpd_del_provider(9)genpd_get_from_provider(9)of_genpd_add_child_ids(9)of_genpd_remove_child_ids(9)of_genpd_add_device(9)of_genpd_add_subdomain(9)of_genpd_remove_subdomain(9)of_genpd_remove_last(9)genpd_dev_pm_detach(9)genpd_dev_pm_attach(9)genpd_dev_pm_attach_by_id(9)genpd_dev_pm_attach_by_name(9)of_genpd_parse_idle_states(9)of_genpd_sync_state(9)
like, that's the whole squad, fifty-eight of them, fr fr ππ
ngl this page is short but it's doing the most β four fields carrying the entire provider registration vibe check π₯
okay that's the whole page bestie, go forth and register those PM domains π
sign-off time: this lil masterpiece comes from the ./drivers/pmdomain corner of the kernel, dated October 2026, and it's titled struct of_genpd_provider(9) β periodt ππΈβ¨
π¦ 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