genpd_dev_pm_attach(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– genpd_dev_pm_attach(9) πŸ’–

okay so bestie, we're in the Kernel API Manual today and this page is literally about genpd_dev_pm_attach β€” the little matchmaker that hooks your device up to its PM domain using DT πŸŽ€


✨ NAME ✨

genpd_dev_pm_attach β€” attach a device to its PM domain using DT πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

int genpd_dev_pm_attach (struct device *dev );

🌸 ARGUMENTS 🌸

  • dev β€” the device to attach. that's it, that's the whole vibe, it's the one you're introducing to its power domain 🫢

🌈 DESCRIPTION 🌈

So what it does is: it parses the device's OF node to find a PM domain specifier ✨ if such a specifier is found, it attaches the device to the retrieved pm_domain ops. no cap, that's the whole job πŸ‘‘

Now the return values, because this is where people get confused, and i refuse to let you be one of them:

  • Returns 1 on successfully attached PM domain πŸŽ‰
  • Returns 0 when the device don't need a PM domain, or when multiple power-domains exist for it πŸ™ˆ
  • else a negative error code πŸ’€
⚠️ big heads up: if a power-domain does exist for the device, but it cannot be found or turned on, then it returns -EPROBE_DEFER β€” and that's on purpose, so the device doesn't get probed and we re-try again later 🧚 not a bug, it's giving patience.

πŸ”₯ SEE ALSO πŸ”₯

Kernel file: ./drivers/pmdomain/core.c

and literally the entire extended genpd friend group, fr fr:

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), struct of_genpd_provider(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_by_id(9), genpd_dev_pm_attach_by_name(9), of_genpd_parse_idle_states(9), of_genpd_sync_state(9)


and that's the page, bestie πŸ“ this one lives in ./drivers/pmdomain and it's dated October 2026 β€” go forth and attach your devices, ilysm πŸ’œβœ¨

πŸ“¦ where this page comes from