STRUCT SOF_IPC4_FW_REGISTERS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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 current FW_REGS_ABI_VER πŸ”₯ like, layout version, and it's set to the current FW_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's instance_id πŸ“ state of the PeakVol instances, indexed by the PeakVol's instance_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 singular slot β€” this one's just one slot, not a whole array. EVAD gateway LLP readings live here.
reminder bestie: rsvd0 and rsvd2 are 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.h struct
  • 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