STRUCT SYSC(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ struct sysc(9) β€” Kernel API Manual vibes ✨

okay so welcome to the struct sysc(9) page from the Kernel API Manual, bestie πŸ’– this is literally the whole glow-up for TI sysc interconnect target module registers and capabilities. no cap, it's giving "kernel internals but make it cute." let's get into it 🫢


🌸 NAME 🌸

struct sysc β€” the TI sysc interconnect target module registers and capabilities. periodt. πŸ’…


🌈 SYNOPSIS 🌈

like, here's the whole struct in all its main-character glory β€” copy it exactly, don't @ me:

struct sysc {
    struct device *dev;
    u64 module_pa;
    u32 module_size;
    void __iomem *module_va;
    int offsets[SYSC_MAX_REGS];
    struct ti_sysc_module_data *mdata;
    struct clk **clocks;
    const char **clock_roles;
    int nr_clocks;
    struct reset_control *rsts;
    const char *legacy_mode;
    const struct sysc_capabilities *cap;
    struct sysc_config cfg;
    struct ti_sysc_cookie cookie;
    const char *name;
    u32 revision;
    u32 sysconfig;
    unsigned int reserved:1;
    unsigned int enabled:1;
    unsigned int needs_resume:1;
    unsigned int child_needs_resume:1;
    struct delayed_work idle_work;
    void (*pre_reset_quirk)(struct sysc *sysc);
    void (*post_reset_quirk)(struct sysc *sysc);
    void (*reset_done_quirk)(struct sysc *sysc);
    void (*module_enable_quirk)(struct sysc *sysc);
    void (*module_disable_quirk)(struct sysc *sysc);
    void (*module_unlock_quirk)(struct sysc *sysc);
    void (*module_lock_quirk)(struct sysc *sysc);
 };

πŸŽ€ Members πŸŽ€

okay so every single field, explained with love β€” no skipping, no summarizing, we list all 29 like the icons they are πŸ’–

  • dev β€” the struct device pointer, like the main character's ID badge πŸͺͺ
  • module_pa β€” physical address of the interconnect target module, fr fr where it lives in memory-land
  • module_size β€” size of the interconnect target module, the literal footprint πŸ‘Ÿ
  • module_va β€” virtual address of the interconnect target module, the vibe it presents to software ✨
  • offsets β€” register offsets from the module base, like little GPS coordinates for registers πŸ—ΊοΈ
  • mdata β€” the ti-sysc to hwmod translation data for a module, the translator bestie 🧚
  • clocks β€” clocks used by the interconnect target module, tick tock energy ⏰
  • clock_roles β€” clock role names for the found clocks, giving each clock its own little name tag 🏷️
  • nr_clocks β€” number of clocks used by the interconnect target module, the headcount πŸ”’
  • rsts β€” resets used by the interconnect target module, the reset button squad πŸ”„
  • legacy_mode β€” configured for legacy mode if set, old-school but still iconic πŸ‘‘
  • cap β€” interconnect target module capabilities, the special skills list 🌟
  • cfg β€” interconnect target module configuration, its settings era πŸ’…
  • cookie β€” data used by legacy platform callbacks, a lil snack for the old code πŸͺ
  • name β€” name if available, so we know who we're dealing with πŸͺž
  • revision β€” interconnect target module revision, the version tea β˜•
  • sysconfig β€” saved sysconfig register value, a lil memory keepsake 🧠
  • reserved β€” target module is reserved and already in use, so don't touch, bestie 🚫
  • enabled β€” sysc runtime enabled status, like an "I'm awake" check βœ…
  • needs_resume β€” runtime resume needed on resume from suspend, sleepyhead alarm ⏰😴
  • child_needs_resume β€” runtime resume needed for child on resume from suspend, the kid also needs waking up πŸ‘Ά
  • idle_work β€” work structure used to perform delayed idle on a module, the "brb going idle" scheduled task πŸ“…
  • pre_reset_quirk β€” module specific pre-reset quirk, a lil something before reset πŸŒ€
  • post_reset_quirk β€” module specific post-reset quirk, a lil something after reset πŸŽ€
  • reset_done_quirk β€” module specific reset done quirk, celebrating reset completion πŸŽ‰
  • module_enable_quirk β€” module specific enable quirk, special enable behavior ✨
  • module_disable_quirk β€” module specific disable quirk, special disable behavior πŸ’€
  • module_unlock_quirk β€” module specific sysconfig unlock quirk, the "open sesame" moment πŸ”“
  • module_lock_quirk β€” module specific sysconfig lock quirk, the "lock it down" moment πŸ”’

πŸ¦‹ SEE ALSO πŸ¦‹

like, go look at these if you want the full lore β€” kernel file ./drivers/bus/ti-sysc.c and all these function besties:

sysc_init_resets(9), sysc_parse_and_check_child_range(9), sysc_check_one_child(9), sysc_parse_one(9), sysc_check_registers(9), sysc_ioremap(9), sysc_map_and_check_registers(9), sysc_show_rev(9), sysc_show_registers(9), sysc_write_sysconfig(9), sysc_context_notifier(9), sysc_add_restored(9)


ok that's the whole page, bestie β€” no details left behind, every field accounted for, every quirk named, every SEE ALSO reference present. you're welcome πŸ’…

this iconic page lives under ./drivers/bus and it's dated October 2026 β€” so mark your calendar, screenshot it, send it to the group chat, and stan responsibly πŸŒˆπŸ’–βœ¨

πŸ“¦ where this page comes from