STRUCT CM_LL_DATA(9)
πΈ NAME πΈ
okay so struct cm_ll_data is literally just a lil bag of fn ptrs to per-SoC CM function implementations β that's it, that's the whole vibe, and honestly? iconic. π
β¨
this page lives in the Kernel API Manual btw, in case the header wasn't enough of a giveaway π«Ά
β¨ SYNOPSIS β¨
bestie. look at this struct. it's giving "table of function pointers" main character energy π₯
struct cm_ll_data {
int (*split_idlest_reg)(struct clk_omap_reg *idlest_reg, s16 *prcm_inst, u8 *idlest_reg_id);
int (*wait_module_ready)(u8 part, s16 prcm_mod, u16 idlest_reg, u8 idlest_shift);
int (*wait_module_idle)(u8 part, s16 prcm_mod, u16 idlest_reg, u8 idlest_shift);
void (*module_enable)(u8 mode, u8 part, u16 inst, u16 clkctrl_offs);
void (*module_disable)(u8 part, u16 inst, u16 clkctrl_offs);
u32 (*xlate_clkctrl)(u8 part, u16 inst, u16 clkctrl_offs);
};
like, every single field is a pointer to a function, no cap. so the SoC-specific implementation can slide in and do its thing π
π MEMBERS π
okay bestie, here's the member-by-member breakdown, and yes we're going through all of them β the way that I would never skip one π
split_idlest_regβ ptr to the SoC CM-specificsplit_idlest_regimpl. it's the one that handles splitting up that idlest reg situation, and that's literally its whole job πwait_module_readyβ ptr to the SoC CM-specificwait_module_readyimpl. waiting for the module to be ready? yeah. that one. β¨wait_module_idleβ ptr to the SoC CM-specificwait_module_idleimpl. same energy as the last one but for idle instead of ready β subtle difference, big consequences, iykyk πmodule_enableβ ptr to the SoC CM-specificmodule_enableimpl. turning the module on, SoC-specific flavour π¦module_disableβ ptr to the SoC CM-specificmodule_disableimpl. the reverse, obviously. turning it off. balance restored βxlate_clkctrlβ ptr to the SoC CM-specific clkctrl xlate addr impl. it's theu32-returning one, it translates the clkctrl addr, and it ate π₯
lowkey the pattern here is just: six function pointers, six per-SoC implementations, and every single one of them is doing the CM-specific version of a thing. no invented lore, that's fr fr what the page says π
π SEE ALSO π
if you wanna go deeper (and you do, bestie, i know you), the Kernel file to go look at is:
./arch/arm/mach-omap2/cm.h
like, that's the reference the page gives you. go read it. it's giving required reading for the group chat πβ¨
π§ and that's the whole page! every member, every pointer, every single signature β nothing skipped, nothing summarised, we ate and left no crumbs π
mwah π this little rewrite was brought to you by the ./arch/arm/mach-omap2 gang, dated October 2026, and yes that date is real, don't come for me π
π¦ 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