STRUCT AMD_SDW_MANAGER(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– 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. true means 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