STRUCT INTEL_SST_DRV(9)
π NAME π
struct intel_sst_drv β driver ops, bestie. that's the whole vibe. it's the big struct that holds everything about the SST driver π
so like, quick heads up before we go: this page is from the Kernel API Manual, section 9, and the star of the show is struct intel_sst_drv(9). ok now let's get into it β¨
π SYNOPSIS π
struct intel_sst_drv {
int sst_state;
int irq_num;
unsigned short dev_id;
void __iomem *ddr;
void __iomem *shim;
void __iomem *mailbox;
void __iomem *iram;
void __iomem *dram;
unsigned int mailbox_add;
unsigned int iram_base;
unsigned int dram_base;
unsigned int shim_phy_add;
unsigned int iram_end;
unsigned int dram_end;
unsigned int ddr_end;
unsigned int ddr_base;
unsigned int mailbox_recv_offset;
struct list_head block_list;
struct list_head ipc_dispatch_list;
struct sst_platform_info *pdata;
struct list_head rx_list;
struct work_struct ipc_post_msg_wq;
wait_queue_head_t wait_queue;
struct workqueue_struct *post_msg_wq;
unsigned int tstamp;
struct stream_info streams[MAX_NUM_STREAMS+1];
spinlock_t ipc_spin_lock;
spinlock_t block_lock;
spinlock_t rx_msg_lock;
struct pci_dev *pci;
struct device *dev;
volatile long unsigned pvt_id;
struct mutex sst_lock;
unsigned int stream_cnt;
unsigned int csr_value;
void *fw_in_mem;
struct sst_sg_list fw_sg_list, library_list;
struct intel_sst_ops *ops;
struct sst_info info;
struct pm_qos_request *qos;
unsigned int use_dma;
unsigned int use_lli;
atomic_t fw_clear_context;
bool lib_dwnld_reqd;
struct list_head memcpy_list;
struct sst_ipc_reg ipc_reg;
struct sst_mem_mgr lib_mem_mgr;
char firmware_name[FW_NAME_SIZE];
struct snd_sst_fw_version fw_version;
struct sst_fw_save *fw_save;
};
likeβ¦ look at her. absolutely iconic. every field is doing its little job π«Ά
π¦ Members π¦
ok so not every field gets a shoutout below β only the ones the docs actually talk about. don't come for me, I'm just reporting what's there π
sst_stateβ the current sst device state. literally the mood ring of the device.dev_idβ device identifier. it's thepci_idfor pci devices and theacpi_idfor acpi devices. iykyk.shimβ SST shim pointer β¨mailboxβ SST mailbox pointer π¬iramβ SST IRAM pointerdramβ SST DRAM pointershim_phy_addβ SST shim phy addripc_dispatch_listβ ipc messages that got dispatchedpdataβ SST info passed as a part of pci platform datarx_listβ to copy theprocess_reply/process_msgfrom DSPipc_post_msg_wqβ wq to post IPC messages contextpost_msg_wqβ wq to post IPC messagesstreamsβ sst stream contextsipc_spin_lockβ spin lock to handle audio shim access and ipc queueblock_lockβ spin lock to add block toblock_listand assignpvt_idrx_msg_lockβ spin lock to handle the rx messages from the DSPpciβ sst pci device struture (yes, that's how it's spelled in the original, no I will not be fixing it, it's canon now π)devβ pointer to current device structpvt_idβ sst private idsst_lockβ sst device lockstream_cntβ total sst active stream countqosβ PM Qos struct firmware_name : Firmware / Library name
ngl that last one is doing a little too much in one bullet, but I'm keeping it exactly as the docs hand it to me. facts are facts π
π SEE ALSO π
Kernel file ./sound/soc/intel/atom/sst/sst.h, plus these absolute main characters:
struct sst_block(9)struct stream_info(9)struct sst_fw_header(9)struct fw_module_header(9)struct fw_block_info(9)
go read them, they're the supporting cast and they ate πΈ
and that's the page bestie!! π this one lives at ./sound/soc/intel/atom/sst, dated October 2026, and it's filed under struct intel_sst_drv(9) in the Kernel API Manual. slay, bye πβ¨
π¦ 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