_setup_postsetup(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… _setup_postsetup(9) β€” Kernel API Manual, bestie πŸ’…

okay so this is _setup_postsetup(9) from the Kernel API Manual, and it's literally the little function that handles the glow-up after _setup is done. πŸ¦‹

πŸŽ€ NAME πŸŽ€

_setup_postsetup β€” transition to the appropriate state after _setup. That's the whole vibe. ✨

🌸 SYNOPSIS 🌸

void _setup_postsetup (struct omap_hwmod *oh );

🧚 ARGUMENTS 🧚

  • oh β€” struct omap_hwmod *. Your IP block's main character struct πŸ’…

πŸ”₯ DESCRIPTION πŸ”₯

So _setup_postsetup takes the IP block represented by oh and puts it into a "post-setup" state β€” and that state is either IDLE, ENABLED, or DISABLED. And bestie, "post-setup" just means this function gets called at the end of _setup. That's it. No secret lore. 🫢

The postsetup state for an IP block can be changed by calling omap_hwmod_enter_postsetup_state early in the boot process, before one of the omap_hwmod_setup*() functions are called for that IP block. Timing matters, iykyk. ⏰

The IP block stays in this state until a PM runtime-based driver is loaded for that IP block. Here's the state tea:

  • A post-setup state of IDLE is appropriate for almost all IP blocks with runtime PM-enabled drivers, since those drivers are able to enable the IP block. Very slay, very flexible. πŸ’–
  • A post-setup state of ENABLED is appropriate for kernels with PM runtime disabled.
  • The DISABLED state is appropriate for unusual IP blocks such as the MPU WDTIMER on kernels without WDTIMER drivers included, since the WDTIMER starts running on reset and will reset the MPU if left active. Ma'am, that's dangerous β€” do not leave the WDTIMER active. πŸ’€
This post-setup mechanism is deprecated. Not me being dramatic β€” it's literally deprecated. 😭

Once all of the OMAP drivers have been converted to use PM runtime, and all of the IP block data and interconnect data is available to the hwmod code, it should be possible to replace this mechanism with a "lazy reset" arrangement. In a lazy reset setup, each IP block is enabled when the driver first probes, then all remaining IP blocks without drivers are either shut down or enabled after the drivers have loaded. That's the future dream scenario. 🌈

But this cannot take place until the above preconditions have been met, since otherwise the late reset code has no way of knowing which IP blocks are in use by drivers, and which ones are unused. So like, no skipping steps. 🧚

No return value. Nothing comes back out. The function is void. Periodt. πŸ‘‘

πŸ¦‹ SEE ALSO πŸ¦‹


and that's the page, bestie 🫢 it lives in the ./arch/arm/mach-omap2 corner of the source tree, it's the October 2026 edition, and it's called _setup_postsetup(9) β€” byeee πŸ’…βœ¨

πŸ“¦ where this page comes from