STRUCT SOF_IPC4_COPIER(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct_ipc4_copier(9) β€” the Kernel API Manual, but make it make sense

okay so bestie, welcome to the Kernel API Manual page for struct sof_ipc4_copier β€” yes that's the actual name, no I can't make it shorter, and yes it's giving "copier config data" realness ✨


🌸 NAME 🌸

struct sof_ipc4_copier β€” copier config data. that's it. that's the whole vibe. she's a config blob and she knows it πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

here's the whole struct, character for character, bc we do NOT paraphrase code in this house:

struct sof_ipc4_copier {
    struct sof_ipc4_copier_data data;
    u32 *copier_config;
    uint32_t ipc_config_size;
    void *ipc_config_data;
    struct sof_ipc4_available_audio_format available_fmt;
    u32 frame_fmt;
    struct sof_ipc4_msg msg;
    struct sof_ipc4_gtw_attributes *gtw_attr;
    u32 dai_type;
    int dai_index;
    struct sof_ipc4_dma_config_tlv dma_config_tlv[SOF_IPC4_DMA_DEVICE_MAX_COUNT];
};

like, look at her. all those fields. main character energy fr πŸ‘‘


πŸ’– Members πŸ’–

okay so every field, one by one, no skipping, because we respect her:

  • data β€” IPC copier data. the actual payload-ish core of the thing πŸ’«
  • copier_config β€” Copier + blob. yes, both. she contains multitudes 🫢
  • ipc_config_size β€” Size of copier_config. so you know how much of the blob is blob πŸ“
  • ipc_config_data β€” Copier module config data. the module-level config, separate from the above, don't @ me πŸ’…
  • available_fmt β€” Available audio format. what formats she'll accept. picky but valid ✨
  • frame_fmt β€” frame format. lowkey just the frame format 😌
  • msg β€” message structure for copier. the message-y one πŸ“¨
  • gtw_attr β€” Gateway attributes for copier blob. gateway stuff, very "gateway" of her 🌈
  • dai_type β€” DAI type. the type of DAI, iconic deduction πŸ”₯
  • dai_index β€” DAI index. and the index of that DAI. we love a duo πŸ‘―
  • dma_config_tlv β€” DMA configuration. it's an array of SOF_IPC4_DMA_DEVICE_MAX_COUNT of those, ngl that's the tea β˜•
bestie note: dma_config_tlv is literally declared as struct sof_ipc4_dma_config_tlv dma_config_tlv[SOF_IPC4_DMA_DEVICE_MAX_COUNT] β€” so it's not a pointer, it's a whole array living right there in the struct. do with that what you will πŸ’€

🧚 SEE ALSO 🧚

she does NOT exist in a vacuum, she's part of a whole ecosystem, and the kernel file is ./sound/soc/sof/ipc4-topology.h β€” go read it, it's a journey:

  • struct sof_ipc4_pipeline(9)
  • struct ipc4_pipeline_set_state_data(9)
  • struct sof_ipc4_pin_format(9)
  • struct sof_ipc4_available_audio_format(9)
  • struct sof_copier_gateway_cfg(9)
  • struct sof_ipc4_copier_data(9)
  • struct sof_ipc4_gtw_attributes(9)
  • struct sof_ipc4_dma_device_stream_ch_map(9)
  • struct sof_ipc4_dma_stream_ch_map(9)
  • struct sof_ipc4_dma_config(9)
  • struct sof_ipc4_dma_config_tlv(9)
  • struct sof_ipc4_ctrl_value_chan(9)
  • struct sof_ipc4_control_data(9)
  • struct sof_ipc4_control_msg_payload(9)
  • struct sof_ipc4_gain_params(9)
  • struct sof_ipc4_gain_data(9)
  • struct sof_ipc4_gain(9)
  • struct sof_ipc4_mixer(9)
  • struct sof_ipc4_src(9)
  • struct sof_ipc4_asrc(9)
  • struct sof_ipc4_base_module_cfg_ext(9)
  • struct sof_ipc4_process(9)

like that's 22 structs. twenty-two. she's connected, she's networked, she's the moment πŸ’…βœ¨


okay that's the whole page bestie!! πŸŽ€ this came out of ./sound/soc/sof, dated October 2026, and it's filed under struct sof_ipc4_copier(9) in the Kernel API Manual β€” go forth and configure your copiers, you're gonna slay πŸ’œπŸ¦‹πŸŒΈ

πŸ“¦ where this page comes from