_init(9)
πΈ NAME πΈ
_init β initialize internal data for the hwmod @oh
This is _init(9) from the Kernel API Manual, bestie. We're doing phase-one hwmod setup, and yes, it's giving very internal-data-structures energy. π
β¨ SYNOPSIS β¨
int _init (struct omap_hwmod *oh , void *data );
π ARGUMENTS π
ohβstruct omap_hwmod *dataβ(unused)β literally just vibing in the parameter list, no cap.
π¦ DESCRIPTION π¦
Okay so _init looks up the clocks and the address space that the MPU uses to access registers belonging to the hwmod oh. At this point, oh must already be registered β that's the whole prerequisite, periodt. This is the first of two phases for hwmod initialization.
The code called here does not touch any hardware registers. Not a single one. It simply prepares internal data structures, which is honestly iconic of it.
Return vibe check: it returns 0 upon success, or if the hwmod isn't registered, or if the hwmod's address space is not defined. On failure, you get -EINVAL. That's the whole deal. π«Ά
π₯ SEE ALSO π₯
Kernel file ./arch/arm/mach-omap2/omap_hwmod.c and the whole extended 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_mpu_rt_base(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)
That's the whole page, bestie. Source/version: ./arch/arm/mach-omap2 Β· date: October 2026 Β· manual: _init(9) Β· Kernel API Manual. Stay hydrated and remember: phase one does not touch hardware registers. π
β¨
π¦ 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