STRUCT SOF_IPC4_FW_REGISTERS(9)
π struct sof_i...fw_registers(9) β Kernel API Manual, bestie edition
okay so this is a page from the Kernel API Manual (yes, that one) and we're talking about a struct. not just any struct. the struct. sit down, grab a strawberry drink π, and let me tell you about struct sof_ipc4_fw_registers.
β¨ NAME β¨
struct sof_ipc4_fw_registers β FW Registers exposes additional DSP / FW state information to the driver π
like, literally its whole job is showing off extra DSP / FW state info to the driver. that's it. that's the vibe. π
πΈ SYNOPSIS πΈ
struct sof_ipc4_fw_registers {
u32 fw_status;
u32 lec;
u32 fps;
u32 lnec;
u32 ltr;
u32 rsvd0;
u32 rom_info;
u32 abi_ver;
u8 slave_core_sts[SOF_IPC4_MAX_SUPPORTED_ADSP_CORES];
u32 rsvd2[6];
struct sof_ipc4_pipeline_registers
pipeline_regs[SOF_IPC4_MAX_PIPELINE_REG_SLOTS];
struct sof_ipc4_peak_volume_regs
peak_vol_regs[SOF_IPC4_MAX_PEAK_VOL_REG_SLOTS];
struct sof_ipc4_llp_reading_slot
llp_gpdma_reading_slots[SOF_IPC4_MAX_LLP_GPDMA_READING_SLOTS];
struct sof_ipc4_llp_reading_slot
llp_sndw_reading_slots[SOF_IPC4_MAX_LLP_SNDW_READING_SLOTS];
struct sof_ipc4_llp_reading_slot llp_evad_reading_slot;
};
look at her. iconic. she has range: u32s at the top, a cute little u8 array doing its thing, some reserved padding because boundaries matter, and then a whole stack of nested structs at the bottom. main character energy from top to bottom π
β¨
π Members π
okay so now we go member by member, no skipping, and there are a LOT of them. i gotchu π«Ά
fw_statusβ Current ROM / FW status π« like, what's the ROM / FW doing right now.lecβ Last ROM / FW error code π the most recent oopsie from ROM / FW.fpsβ Current DSP clock status β° clock vibes, current ones, DSP-flavored.lnecβ Last Native Error Code(from external library) π yeah. straight from the external library, last one, native error code, exactly as written.ltrβ Copy of LTRC HW register value(FW only) π a copy, of the LTRC HW register value, and it's FW only, so don't come for her.rsvd0β Reserved0 π reserved. zero. that's her.rom_infoβ ROM info β the info, about the ROM.abi_verβ Version of the layout, set to the currentFW_REGS_ABI_VERπ₯ like, layout version, and it's set to the currentFW_REGS_ABI_VER, no cap.slave_core_stsβ Slave core states π the states of the slave cores.rsvd2β Reserved2 π reserved, round two, still reserved.pipeline_regsβ State of pipelines attached to host output gateways πΈ pipelines that are attached to host output gateways? their state. right here.peak_vol_regsβ State of PeakVol instances indexed by the PeakVol'sinstance_idπ state of the PeakVol instances, indexed by the PeakVol'sinstance_id. that indexing is the whole point, love her.llp_gpdma_reading_slotsβ LLP Readings for single link gateways π¦ LLP readings, single link gateways, that's the pairing.llp_sndw_reading_slotsβ SNDW aggregated link gateways π§ SNDW aggregated link gateways get the LLP readings here.llp_evad_reading_slotβ LLP Readings for EVAD gateway π note the singularslotβ this one's just one slot, not a whole array. EVAD gateway LLP readings live here.
reminder bestie:rsvd0andrsvd2are reserved β that means hands off, they're not yours to play with π
π SEE ALSO π
go read these next, i'm obsessed, iykyk:
- Kernel file
./sound/soc/sof/ipc4-fw-reg.hstruct struct sof_ipc4_pipeline_registers(9)struct sof_ipc4_peak_volume_regs(9)struct sof_ipc4_llp_reading(9)struct sof_ipc4_llp_reading_slot(9)
and that's the whole page, bestie π«Ά this was ./sound/soc/sof, dated October 2026, and the page itself will always be struct sof_i...fw_registers(9) in its heart. go forth and read your DSP / FW state information. slay. πβ¨π
π¦ 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