clkdm_register_autodeps(9)
π clkdm_register_autodeps β bestie's guide to the Kernel API Manual β¨
Okay so listen π«Ά this one lives in the Kernel API Manual and it's literally about registering autodeps (if required). Lowkey niche, highkey important. Let's get into it π
β¨ NAME β¨
clkdm_register_autodeps β register autodeps (if required) π
πΈ SYNOPSIS πΈ
int clkdm_register_autodeps (struct clkdm_autodep *ia );
π¦ ARGUMENTS π¦
iaβ pointer to a static array ofstruct clkdm_autodepto register. Yeah. Static. I said what I said, more on that below π
π DESCRIPTION π
So what this does is register clockdomain "automatic dependencies." These are clockdomain wakeup and sleep dependencies that get automatically added whenever the first clock inside a clockdomain is enabled, and removed whenever the last clock inside a clockdomain is disabled. Automatic. Iconic behavior, honestly β¨
These are currently only used on OMAP3 devices, and ngl they're deprecated, since they waste energy. Not the vibe. BUT β until the OMAP2/3 IP block enable/disable sequence can be converted to match the OMAP4 sequence, they are needed. So we keep them around, like that one friend who's chaotic but useful π
Bestie, timing matters: this must be called only after all of the SoC clockdomains are registered, since the function will resolve autodep clockdomain names into clockdomain pointers. Call it too early and it just doesn't have the info yet π
Also important: thestruct clkdm_autodepiaarray must be static, because this function does not copy the array elements. It's holding a reference to your array, not making its own copy β so if your array evaporates, so does everything. Periodt π
Returns:
-EACCESif called before any clockdomains have been registered π₯-EINVALif called with a nulliaargument π-EEXISTif autodeps have already been registered π0upon success π
β SEE ALSO β
Kernel file ./arch/arm/mach-omap2/clockdomain.c, plus the whole friend group:
_clkdm_register(9)_autodep_lookup(9)_resolve_clkdm_deps(9)_clkdm_add_wkdep(9)_clkdm_del_wkdep(9)_clkdm_add_sleepdep(9)_clkdm_del_sleepdep(9)clkdm_register_platform_funcs(9)clkdm_register_clkdms(9)clkdm_complete_init(9)clkdm_lookup(9)clkdm_for_each(9)clkdm_get_pwrdm(9)clkdm_add_wkdep(9)clkdm_del_wkdep(9)clkdm_read_wkdep(9)clkdm_clear_all_wkdeps(9)clkdm_add_sleepdep(9)clkdm_del_sleepdep(9)clkdm_read_sleepdep(9)clkdm_clear_all_sleepdeps(9)clkdm_sleep_nolock(9)clkdm_sleep(9)clkdm_wakeup_nolock(9)clkdm_wakeup(9)clkdm_allow_idle_nolock(9)clkdm_allow_idle(9)clkdm_deny_idle_nolock(9)clkdm_deny_idle(9)clkdm_add_autodeps(9)clkdm_del_autodeps(9)clkdm_clk_enable(9)clkdm_clk_disable(9)clkdm_hwmod_enable(9)clkdm_hwmod_disable(9)_clkdm_save_context(9)_clkdm_restore_context(9)clkdm_save_context(9)clkdm_restore_context(9)
Okay that's the whole thing, go read about clockdomains bestie π§ π
πΈ that's a wrap πΈ β sourced from ./arch/arm/mach-omap2, dated October 2026. Catch you in the next manpage, mwah ππ«Ά
π¦ 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