STRUCT HDAC_EXT2_LINK(9)
π struct hdac_ext2_link(9) π
okay so bestie, welcome to the struct hdac_ext2_link(9) page β this is straight out of the Kernel API Manual and it's literally the HDAudio extended+alternate link. yes that's a lot of adjectives. it ate. let's get into it π«Ά
β¨ NAME β¨
struct hdac_ext2_link β HDAudio extended+alternate link. that's it, that's the whole name, and it's iconic π
πΈ SYNOPSIS πΈ
here's the whole struct, typed out exactly, no cap:
struct hdac_ext2_link {
struct hdac_ext_link hext_link;
bool alt;
bool intc;
bool ofls;
bool lss;
int slcount;
int elid;
int elver;
u32 leptr;
struct mutex eml_lock;
int sublink_ref_count[HDAML_MAX_SUBLINKS];
void __iomem *base_ptr;
u32 instance_offset;
u32 shim_offset;
u32 ip_offset;
u32 shim_vs_offset;
unsigned long mic_privacy_mask;
};
π Members π
okay now the member-by-member vibe check, one by one, nobody gets left out:
hext_linkβ astruct hdac_ext_link. it's the ext link inside the ext2 link, like a little link inception moment πaltβ flag set for alternate extended links. alternate as inβ¨different eraβ¨intcβ boolean for interrupt capable. it can get interrupted, and honestly same πoflsβ boolean for offload support. it's giving delegation πlssβ boolean for link synchronization capabilities. keeping everybody in sync, main character energy fr frslcountβ sublink count. how many sublinks we're dealing with here π’elidβ extended link ID (theAZX_REG_ML_LEPTR_ID_defines). it's the ID bestie, it has one πͺͺelverβ extended link version. which version? this one. no cap π«leptrβ extended link pointer. it points at stuff. that's the job π«‘eml_lockβ mutual exclusion to access shared registers, e.g. theCPA/SPAbits in theLCTLregister. do NOT touch the shared registers without holding this, that's the whole point πsublink_ref_countβ array of refcounts, required to power-manage sublinks independently.HDAML_MAX_SUBLINKSof them, one per sublink, so each one can be power-managed on its own little journey πbase_ptrβ pointer to shim/ip/shim_vs space. avoid __iomem *, very mysterious, very "don't ask" πinstance_offsetβ offset between each of theslcountinstances managed by link. the spacing between the instances, literally πshim_offsetβ offset to the SHIM register base. shim base located βip_offsetβ offset to the IP register base. ip base located βshim_vs_offsetβ offset to the vendor-specific (VS) SHIM base. the VS shim, very exclusive πmic_privacy_maskβ bitmask of sublinks where mic privacy is applied. anunsigned long, and yes it's protecting your mic, say thank you π€
π¦ SEE ALSO π¦
- Kernel file
./sound/soc/sof/intel/hda-mlink.cβ go read the source, iykyk π
and that's the page!! signing off from ./sound/soc/sof/intel, dated October 2026, struct hdac_ext2_link(9) β mwah, slay, go power-manage those sublinks independently πβ¨π
π¦ 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