_init_mpu_rt_base(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… _init_mpu_rt_base(9) β€” Kernel API Manual πŸŽ€

okay so bestie, welcome to the _init_mpu_rt_base(9) page ✨ this is a kernel API manual entry, and honestly? she's a little niche but she's iconic. let's get into it 🫢


🌸 NAME 🌸

_init_mpu_rt_base β€” populate the virtual address for a hwmod πŸ’–


✨ SYNOPSIS ✨

int _init_mpu_rt_base (struct omap_hwmod *oh , void *data , int index ,
       struct device_node *np );

like, that's the whole signature. four args, no cap πŸŽ€


πŸ¦‹ ARGUMENTS πŸ¦‹

  • oh β€” the struct omap_hwmod * she's gonna use to locate the virtual address. main character energy fr πŸ”₯
  • data β€” lowkey unused πŸ™ˆ caller should pass NULL, okay? don't be weird about it.
  • index β€” the index of the reg entry iospace in device tree πŸ‘‘
  • np β€” the struct device_node * of the IP block's device node in the DT data 🌈

πŸ’œ DESCRIPTION πŸ’œ

So what she does is cache the virtual address used by the MPU to access this IP block's registers 🧚 literally the whole job. And she does it early β€” because the OCP registers that are part of the device's address space need to be ioremapped properly, and that can't happen if nobody knows the VA yet. timing is everything, iykyk ⭐

Now, the vibe check on errors: if SYSC access is not needed, the registers will not be remapped β€” and non-availability of MPU access is not treated as an error πŸ’€ like she's not gonna yell at you for it. chill.

Returns 0 on success πŸŽ‰, -EINVAL if an invalid hwmod is passed 😭, and -ENXIO on absent or invalid register target address space πŸ™ˆ


πŸ”₯ SEE ALSO πŸ”₯

Kernel file ./arch/arm/mach-omap2/omap_hwmod.c plus this whole friend group:

struct clkctrl_provider(9), struct omap_hwmod_reset(9), struct omap_hwmod_soc_ops(9), _update_sysc_cache(9), _write_sysconfig(9), _set_master_standbymode(9), _set_slave_idlemode(9), _set_clockactivity(9), _set_softreset(9), _clear_softreset(9), _wait_softreset_complete(9), _set_dmadisable(9), _set_module_autoidle(9), _enable_wakeup(9), _add_initiator_dep(9), _del_initiator_dep(9), _init_main_clk(9), _init_interface_clks(9), _init_opt_clks(9), _enable_clocks(9), _omap4_clkctrl_managed_by_clkfwk(9), _omap4_has_clkctrl_clock(9), _disable_clocks(9), _omap4_enable_module(9), _omap4_wait_target_disable(9), _save_mpu_port_index(9), _find_mpu_rt_port(9), _enable_sysc(9), _idle_sysc(9), _shutdown_sysc(9), _lookup(9), _init_clkdm(9), _init_clocks(9), _lookup_hardreset(9), _assert_hardreset(9), _deassert_hardreset(9), _read_hardreset(9), _are_all_hardreset_lines_asserted(9), _are_any_hardreset_lines_asserted(9), _omap4_disable_module(9), _ocp_softreset(9), _reset(9), _omap4_update_context_lost(9), _omap4_get_context_lost(9), _enable(9), _idle(9), _shutdown(9), of_dev_hwmod_lookup(9), omap_hwmod_fix_mpu_rt_idx(9), omap_hwmod_parse_module_range(9), _init(9), _setup_iclk_autoidle(9), _setup_reset(9), _setup_postsetup(9), _setup(9), _register(9), _add_link(9), _register_link(9), _omap2xxx_3xxx_wait_target_ready(9), _omap4_wait_target_ready(9), _omap2_assert_hardreset(9), _omap2_deassert_hardreset(9), _omap2_is_hardreset_asserted(9), _omap4_assert_hardreset(9), _omap4_deassert_hardreset(9), _omap4_is_hardreset_asserted(9), _omap4_disable_direct_prcm(9), _am33xx_deassert_hardreset(9), omap_hwmod_softreset(9), omap_hwmod_lookup(9), omap_hwmod_for_each(9), omap_hwmod_register_links(9), _ensure_mpu_hwmod_is_setup(9), omap_hwmod_setup_one(9), omap_hwmod_check_sysc(9), omap_hwmod_init_regbits(9), omap_hwmod_init_reg_offs(9), omap_hwmod_init_sysc_flags(9), omap_hwmod_init_idlemodes(9), omap_hwmod_check_module(9), omap_hwmod_allocate_module(9), omap_hwmod_init_module(9), omap_hwmod_setup_earlycon_flags(9), omap_hwmod_setup_all(9), omap_hwmod_enable(9), omap_hwmod_idle(9), omap_hwmod_shutdown(9), omap_hwmod_get_mpu_rt_va(9), omap_hwmod_assert_hardreset(9), omap_hwmod_deassert_hardreset(9), omap_hwmod_for_each_by_class(9), omap_hwmod_set_postsetup_state(9), omap_hwmod_init(9)

bestie that's a lot of cross-references and yes you do need all of them. no skipping πŸ’…

mwah πŸ’‹ that's the page! shoutout to the source at ./arch/arm/mach-omap2 and the October 2026 datestamp β€” she's stamped, she's official, she's that girl πŸŽ€βœ¨

πŸ“¦ where this page comes from