STRUCT SDW_INTEL_LINK_RES(9)
π struct sdw_intel_link_res(9) β from the Kernel API Manual, bestie π
Okay so picture this: you're deep in the SoundWire Intel sauce, and you need the struct that holds, like, all the link resources. That's this one. It's called sdw_intel_link_res, and ngl it's literally described as "Soundwire Intel link resource structure, typically populated by the controller driver" β so the controller driver is the one doing the filling-in, you're just here to read it. π«Ά
β¨ SYNOPSIS β¨
struct sdw_intel_link_res {
const struct sdw_intel_hw_ops *hw_ops;
void __iomem *mmio_base;
void __iomem *registers;
u32 ip_offset;
void __iomem *shim;
void __iomem *shim_vs;
void __iomem *alh;
int irq;
const struct sdw_intel_ops *ops;
struct device *dev;
struct mutex *shim_lock;
u32 *shim_mask;
u32 clock_stop_quirks;
bool mic_privacy;
u32 link_mask;
struct sdw_cdns *cdns;
struct list_head list;
struct hdac_bus *hbus;
};
Like, look at her. Eighteen fields of pure main character energy. π
π Members π
Time for the roster. Every single one, no skipping, periodt. π
hw_opsβ the platform-specific ops. iykyk.mmio_baseβ mmio base of SoundWire registers. That's the address you start from, bestie.registersβ Link IO registers base. Different base, same vibe. β¨ip_offsetβ offset forMCP_IPregisters. Little hop from the start of things.shimβ Audio shim pointer. That's it, that's the whole thing.shim_vsβ Audio vendor-specific shim pointer. The β¨vendorβ¨ one. Fancy.alhβ ALH (Audio Link Hub) pointer. The hub! The moment!irqβ Interrupt line. It's anintand it WILL interrupt you. πopsβ Shim callback ops. Callback girlies rise.devβ device implementinghw_paramsandfreecallbacks. She's the one doing the work fr fr.shim_lockβ mutex to handle access to shared SHIM registers. Shared = you gotta lock it, no cap. πshim_maskβ global pointer to check SHIM register initialization. "Global pointer", mind you β note theu32 *, not au32, bestie.clock_stop_quirksβ mask defining requested behavior onpm_suspend. Quirks are always the spicy part. πΆοΈmic_privacyβ ACE version supports microphone privacy. Abool. Respect the privacy. πlink_maskβ global mask needed for power-up/down sequences. Needed, not optional β needed.cdnsβ Cadence master descriptor. Cadence is the master here, we just live in her house. πlistβ used to walk-through all masters exposed by the same controller. Group chat of masters, basically. π¦hbusβhdac_buspointer, needed for power management. Pointer. Power. Necessary. π
Heads up:shim_lockandshim_maskare pointers andshim_maskis a global pointer β if you're poking at those without locking, that's a you problem and the kernel will make it a you problem even harder. π
π SEE ALSO π
- Kernel file
./drivers/soundwire/intel.hβ go read it, it's giving context. struct sdw_intel_bpt(9)β the other one, also a whole thing.
And that's the page, bestie! This masterpiece came to you from ./drivers/soundwire, dated October 2026, in the Kernel API Manual β go forth and populate your link resources responsibly. πππΈβπ§ββοΈπ₯
π¦ 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