STRUCT LLCC_DRV_DATA(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct llcc_drv_data(9) β€” like, the Kernel API Manual, bestie πŸŽ€

Okay so this is the manual page for struct llcc_drv_data(9), and yes we're doing this, we're learning the LLCC driver today and honestly? It's giving main character energy. Let's go. ✨


🌸 NAME 🌸

struct llcc_drv_data β€” literally all the data that's associated with the LLCC driver, no cap. That's the whole vibe. πŸ’–


πŸ¦‹ SYNOPSIS πŸ¦‹

Like, here's the struct in all its glory, copy-pasted from the source with love:

struct llcc_drv_data {
    struct device *dev;
    struct regmap **regmaps;
    struct regmap *bcast_regmap;
    struct regmap *bcast_and_regmap;
    const struct llcc_slice_config *cfg;
    const struct llcc_edac_reg_offset *edac_reg_offset;
    struct mutex lock;
    u32 cfg_size;
    u32 num_banks;
    int ecc_irq;
    bool ecc_irq_configured;
    u32 version;
    struct llcc_slice_desc *desc;
 };

Not me obsessing over every single field, but like, we're gonna go through them all because that's just who I am. 🫢


🌈 MEMBERS 🌈

  • dev β€” the device back-pointer for this LLCC instance. It's lowkey the parent of the whole situation, y'know? πŸ’«
  • regmaps β€” the regmaps that are associated with the LLCC device. Plural! Multiple! Iconic. πŸ”₯
  • bcast_regmap β€” the regmap associated with the LLCC broadcast OR offset. Different regmap from the next one, don't get it twisted bestie.
  • bcast_and_regmap β€” the regmap associated with the LLCC broadcast AND offset. And!! Not or!! Yes the naming is doing the most but we respect it. πŸ’…
  • cfg β€” a pointer to the data structure for slice configuration. Like, it knows where the config lives. It's giving directory energy. πŸ—‚οΈ
  • edac_reg_offset β€” the offset of the LLCC EDAC registers. Just the offset, just the vibes. 🎯
  • lock β€” the mutex associated with each slice. Mutual exclusion, but make it per-slice, periodt. πŸ”’
  • cfg_size β€” the size of the config data table. A u32, so like, big enough. πŸ’«
  • num_banks β€” the number of LLCC banks. Also a u32. Count 'em. 🏦
  • ecc_irq β€” the interrupt for LLCC cache error detection and reporting. It's an int, it's an IRQ, it's doing important stuff. ⚑
  • ecc_irq_configured β€” okay so the original manpage genuinely gives us no description here 😭 it's a bool, it's right after ecc_irq, and it's giving mystery-girl. We do not invent lore in this house, so: no description in the source, none from me. πŸ™ˆ
  • version β€” indicates the LLCC version. Short, sweet, a u32, slays. πŸ”₯
  • desc β€” an array pointer of pre-allocated LLCC slice descriptors. Pre-allocated!! It's organized, it's prepared, it's ahead of schedule. πŸ‘‘

πŸ’œ SEE ALSO πŸ’œ

Like, go read the kernel file ./include/linux/soc/qcom/llcc-qcom.h for real, and also these lovely friends:

iykyk. Go click through the whole friend group, they're all bangers. πŸ§šβ€β™€οΈ

Fr fr though: if you're poking at ecc_irq_configured and expecting documentation, the page doesn't give you any β€” that's not me being lazy, that's the source being mysterious. πŸ’€

Okay bestie that's the whole page, you ate that, we both ate that. πŸ“ This came from ./include/linux/soc/qcom, dated October 2026, and it's serving struct llcc_drv_data(9) realness from the Kernel API Manual. Now go forth and read the source, mwah! πŸ’–βœ¨πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from