STRUCT AMD_SDW_MANAGER(9)
π struct amd_sdw_manager(9) π
okay bestie, gather round, because we're about to get into the amd manager driver context β this is the struct that holds the whole vibe of the AMD SoundWire manager, from the Kernel API Manual, section 9. no cap, it's a big one. let's go π
β¨ NAME β¨
struct amd_sdw_manager β amd manager driver context. that's it, that's the whole name, she's literally the context struct for the AMD manager driver π¦
πΈ SYNOPSIS πΈ
here's the whole shape of her, exactly as she is, don't touch a single character:
struct amd_sdw_manager {
struct sdw_bus bus;
struct device *dev;
void __iomem *mmio;
void __iomem *acp_mmio;
struct work_struct amd_sdw_irq_thread;
struct work_struct amd_sdw_work;
struct mutex *acp_sdw_lock;
enum sdw_slave_status status[SDW_MAX_DEVICES + 1];
int num_din_ports;
int num_dout_ports;
int max_ports;
int cols_index;
int rows_index;
int *port_offset_map;
u32 instance;
u32 quirks;
u32 wake_en_mask;
u32 power_mode_mask;
u32 acp_rev;
bool clk_stopped;
struct sdw_amd_dai_runtime **dai_runtime_array;
};
like, look at her. she's organized. main character energy fr π
π Members π
okay so every single field, one by one, no skipping, we are NOT leaving anyone out (the way that I respect every member of this struct...):
busβ bus handle. the actual SoundWire bus she's running, right there πdevβ linux device. the linux device this whole thing hangs off of π§mmioβ SoundWire registers mmio base. the memory-mapped I/O base for the SoundWire registers β¨acp_mmioβ acp registers mmio base. same deal but for the ACP registers π§amd_sdw_irq_threadβ SoundWire manager irq workqueue. the workqueue that handles the manager's IRQ stuff π₯amd_sdw_workβ peripheral status work queue. this is the workqueue for peripheral status, lowkey important πacp_sdw_lockβ mutex to protect acp share register access. the lock you grab before touching the ACP share registers, do not skip her πstatusβ peripheral devices status array. array of statuses for all the peripheral devices, indexed by device π«Άnum_din_portsβ number of input ports. literally how many input ports there are π₯num_dout_portsβ number of output ports. same but output π€max_portsβ total number of input ports and output ports. both together, the whole port situation π―cols_indexβ Column index in frame shape. her column index in the frame shape (capital C, she's fancy) πrows_indexβ Rows index in frame shape. and the row index to match πport_offset_mapβ dynamic array to map port block offset. dynamic array doing the port-block-offset mapping β¨instanceβ SoundWire manager instance. which SoundWire manager instance this is π¦quirksβ SoundWire manager quirks. the quirks. every driver's got 'em πwake_en_maskβ wake enable mask per SoundWire manager. wake enable mask, one per manager π΄power_mode_maskβ flag interprets amd SoundWire manager power mode. this flag is the one interpreting the AMD SoundWire manager's power mode β‘acp_revβ acp pci device revision id. the ACP PCI device's revision id π§Ύclk_stoppedβ flag set to true when clock is stopped.truemeans clock's stopped, periodt β°dai_runtime_arrayβ dai runtime array. the DAI runtime array, and yes she's a**because she's extra π
π SEE ALSO π
go look at the kernel file ./include/linux/soundwire/sdw_amd.h β that's where the struct lives, fr fr. and then go meet her friends:
struct sdw_amd_dai_runtime(9)struct sdw_amd_acpi_info(9)struct sdw_amd_ctx(9)struct sdw_amd_res(9)
iykyk, the whole SoundWire AMD crew π«Ά
okay that's the page!! and just so we're on the same page β this beauty lives in ./include/linux/soundwire, it's the October 2026 edition, and yes, the title really is struct amd_sdw_manager(9). take care of her, she's iconic ππ
π¦ 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