Sound Open Firmware
Loading...
Searching...
No Matches
base-config.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause */
2/*
3 * Copyright(c) 2021 - 2023 Intel Corporation. All rights reserved.
4 */
5
6/*
7 * This file contains structures that are exact copies of an existing ABI used
8 * by IOT middleware. They are Intel specific and will be used by one middleware.
9 *
10 * Some of the structures may contain programming implementations that makes them
11 * unsuitable for generic use and general usage.
12 *
13 * This code is mostly copied "as-is" from existing C++ interface files hence the use of
14 * different style in places. The intention is to keep the interface as close as possible to
15 * original so it's easier to track changes with IPC host code.
16 */
17
25#ifndef __MODULE_IPC4_BASE_CONFIG_H__
26#define __MODULE_IPC4_BASE_CONFIG_H__
27
28#include <stdint.h>
29
53
66
87
104
113
127
139
146 uint32_t depth;
147 uint32_t ch_map;
148 uint32_t ch_cfg;
150 uint32_t channels_count : 8;
151 uint32_t valid_bit_depth : 8;
152 uint32_t s_type : 8;
153 uint32_t reserved : 8;
154} __attribute__((packed, aligned(4)));
155
161 uint32_t cpc;
162 uint32_t ibs;
163 uint32_t obs;
164 uint32_t is_pages;
166} __attribute__((packed, aligned(4)));
167
173 uint32_t pin_index;
174 uint32_t ibs;
176} __attribute__((packed, aligned(4)));
177
183 uint32_t pin_index;
184 uint32_t obs;
186} __attribute__((packed, aligned(4)));
187
197 uint8_t reserved[12];
202 uint8_t pin_formats[];
203} __attribute__((packed, aligned(4)));
204
209#define ipc4_calc_base_module_cfg_ext_size(in_pins, out_pins) \
210 (sizeof(struct ipc4_base_module_cfg_ext) + \
211 (in_pins) * sizeof(struct ipc4_input_pin_format) + \
212 (out_pins) * sizeof(struct ipc4_output_pin_format))
213
221} __attribute__((packed, aligned(4)));
222
233
240 uint32_t stream_type;
241
244
247} __attribute__((packed, aligned(4)));
248
254 uint32_t pin_count;
256} __attribute__((packed, aligned(4)));
257
265 uint32_t id;
266 uint32_t dp_queue_type;
268 uint32_t cp_usage_mask;
269 uint32_t stack_bytes;
271 uint32_t bss_used_bytes;
272 uint32_t ibs_bytes;
273 uint32_t obs_bytes;
274 uint32_t cpc;
275 uint32_t cpc_peak;
278 uint32_t input_gateway;
279 uint32_t output_gateway;
280} __attribute__((packed, aligned(4)));
281
287 uint32_t input_gateway;
288 uint32_t output_gateway;
289} __attribute__((packed, aligned(4)));
290
296 uint32_t dw;
297 struct {
298 uint32_t data16 : 16;
299 uint32_t id : 14;
300 uint32_t _rsvd : 2;
301 } f;
302} __attribute__((packed, aligned(4)));
303
304#endif /* __MODULE_IPC4_BASE_CONFIG_H__ */
ipc4_interleaved_style
Sample interleaving styles.
Definition base-config.h:109
ipc4_bit_depth
Container bit depth for sample storage in memory.
Definition base-config.h:58
ipc4_sampling_frequency
Standard PCM and encoded audio sampling frequencies supported by IPC4.
Definition base-config.h:34
ipc4_stream_type
Stream container encoding type.
Definition base-config.h:132
ipc4_channel_config
Audio channel configurations and speaker mappings.
Definition base-config.h:71
ipc4_channel_index
Logical channel position indices used in channel maps.
Definition base-config.h:92
ipc4_sample_type
Audio sample representation and arithmetic type.
Definition base-config.h:118
ipc4_base_module_params
Common 16-bit parameter IDs supported across all IPC4 module instances.
Definition base-config.h:227
@ IPC4_CHANNELS_INTERLEAVED
Channels interleaved sample-by-sample (L0, R0, L1, R1...).
Definition base-config.h:110
@ IPC4_CHANNELS_NONINTERLEAVED
Planar non-interleaved channels (all Left samples, then all Right).
Definition base-config.h:111
@ IPC4_DEPTH_32BIT
32-bit sample container depth.
Definition base-config.h:62
@ IPC4_DEPTH_64BIT
64-bit sample container depth.
Definition base-config.h:63
@ IPC4_DEPTH_8BIT
8-bit sample container depth.
Definition base-config.h:59
@ IPC4_DEPTH_16BIT
16-bit sample container depth.
Definition base-config.h:60
@ IPC4_DEPTH_24BIT
24-bit sample container depth (Default).
Definition base-config.h:61
@ IPC4_DEPTH_INVALID
Sentinel for invalid bit depth.
Definition base-config.h:64
@ IPC4_FS_18900HZ
18.9 kHz (SRC only for 44.1 kHz fractional rates).
Definition base-config.h:39
@ IPC4_FS_24000HZ
24.0 kHz (MP3, AAC, SRC only).
Definition base-config.h:41
@ IPC4_FS_12000HZ
12.0 kHz (MP3, AAC, SRC only).
Definition base-config.h:37
@ IPC4_FS_176400HZ
176.4 kHz studio master rate.
Definition base-config.h:49
@ IPC4_FS_192000HZ
192.0 kHz studio master rate.
Definition base-config.h:50
@ IPC4_FS_8000HZ
8.0 kHz sampling rate.
Definition base-config.h:35
@ IPC4_FS_22050HZ
22.05 kHz sampling rate.
Definition base-config.h:40
@ IPC4_FS_64000HZ
64.0 kHz (AAC, SRC only).
Definition base-config.h:46
@ IPC4_FS_88200HZ
88.2 kHz high-resolution audio.
Definition base-config.h:47
@ IPC4_FS_32000HZ
32.0 kHz sampling rate.
Definition base-config.h:42
@ IPC4_FS_37800HZ
37.8 kHz (SRC only for 44.1 kHz fractional rates).
Definition base-config.h:43
@ IPC4_FS_16000HZ
16.0 kHz sampling rate (standard voice/telephony).
Definition base-config.h:38
@ IPC4_FS_INVALID
Sentinel for invalid or uninitialized sampling rate.
Definition base-config.h:51
@ IPC4_FS_44100HZ
44.1 kHz CD audio sampling rate.
Definition base-config.h:44
@ IPC4_FS_96000HZ
96.0 kHz high-resolution audio.
Definition base-config.h:48
@ IPC4_FS_48000HZ
48.0 kHz standard DSP audio rate (Default).
Definition base-config.h:45
@ IPC4_FS_11025HZ
11.025 kHz sampling rate.
Definition base-config.h:36
@ IPC4_STREAM_PCM
Linear Pulse Code Modulated (PCM) uncompressed audio.
Definition base-config.h:133
@ IPC4_STREAM_MP3
MPEG-1 Audio Layer III encoded bitstream.
Definition base-config.h:134
@ IPC4_STREAM_INVALID
Sentinel for invalid stream type.
Definition base-config.h:137
@ IPC4_STREAM_COUNT
Total count of defined stream types.
Definition base-config.h:136
@ IPC4_STREAM_AAC
Advanced Audio Coding encoded bitstream.
Definition base-config.h:135
@ IPC4_CHANNEL_CONFIG_4_POINT_0
4.0 Cinema: Left, Center, Right & Center Surround.
Definition base-config.h:78
@ IPC4_CHANNEL_CONFIG_QUATRO
4.0 Surround: Left, Right, Left Surround & Right Surround.
Definition base-config.h:77
@ IPC4_CHANNEL_CONFIG_3_POINT_1
3.1 Audio: Left, Center, Right & LFE (PCM only).
Definition base-config.h:76
@ IPC4_CHANNEL_CONFIG_3_POINT_0
3.0 Audio: Left, Center & Right (MP3 & AAC only).
Definition base-config.h:75
@ IPC4_CHANNEL_CONFIG_STEREO
Standard stereo (Left & Right).
Definition base-config.h:73
@ IPC4_CHANNEL_CONFIG_I2S_DUAL_STEREO_1
Stereo (L,R) in 4 slots, 2nd stream: [ -, -, L, R ].
Definition base-config.h:83
@ IPC4_CHANNEL_CONFIG_DUAL_MONO
Dual mono: single logical channel duplicated into two slots.
Definition base-config.h:81
@ IPC4_CHANNEL_CONFIG_INVALID
Sentinel for unsupported channel configuration.
Definition base-config.h:85
@ IPC4_CHANNEL_CONFIG_MONO
Single mono channel.
Definition base-config.h:72
@ IPC4_CHANNEL_CONFIG_5_POINT_0
5.0 Surround: Left, Center, Right, Left Surround & Right Surround.
Definition base-config.h:79
@ IPC4_CHANNEL_CONFIG_5_POINT_1
5.1 Surround: Left, Center, Right, Left Surround, Right Surround & LFE.
Definition base-config.h:80
@ IPC4_CHANNEL_CONFIG_I2S_DUAL_STEREO_0
Stereo (L,R) in 4 slots, 1st stream: [ L, R, -, - ].
Definition base-config.h:82
@ IPC4_CHANNEL_CONFIG_2_POINT_1
2.1 Audio: Left, Right & LFE (PCM only).
Definition base-config.h:74
@ IPC4_CHANNEL_CONFIG_7_POINT_1
7.1 Surround: L, C, R, Ls, Rs, LFE, Left Side & Right Side.
Definition base-config.h:84
@ CHANNEL_RIGHT_SURROUND
Right Surround channel.
Definition base-config.h:98
@ CHANNEL_RIGHT_SIDE
Right Side Surround channel.
Definition base-config.h:100
@ CHANNEL_CENTER
Front Center channel.
Definition base-config.h:94
@ CHANNEL_LFE
Low Frequency Effects (subwoofer) channel.
Definition base-config.h:101
@ CHANNEL_INVALID
Unmapped or inactive channel slot.
Definition base-config.h:102
@ CHANNEL_RIGHT
Front Right channel.
Definition base-config.h:95
@ CHANNEL_CENTER_SURROUND
Center Surround channel.
Definition base-config.h:97
@ CHANNEL_LEFT_SIDE
Left Side Surround channel.
Definition base-config.h:99
@ CHANNEL_LEFT_SURROUND
Left Surround channel.
Definition base-config.h:96
@ CHANNEL_LEFT
Front Left channel.
Definition base-config.h:93
@ IPC4_TYPE_LSB_INTEGER
Integer with valid bits LSB-aligned in container (e.g.
Definition base-config.h:120
@ IPC4_TYPE_A_LAW
ITU-T G.711 A-law companded audio.
Definition base-config.h:124
@ IPC4_TYPE_MSB_INTEGER
Integer with valid bits MSB-aligned in container (e.g.
Definition base-config.h:119
@ IPC4_TYPE_UNSIGNED_INTEGER
Unsigned integer PCM.
Definition base-config.h:122
@ IPC4_TYPE_FLOAT
32-bit IEEE 754 floating point.
Definition base-config.h:123
@ IPC4_TYPE_SIGNED_INTEGER
Standard 2's complement signed integer (e.g.
Definition base-config.h:121
@ IPC4_TYPE_MU_LAW
ITU-T G.711 mu-law companded audio.
Definition base-config.h:125
@ IPC4_MOD_INST_ENABLE
Enable or disable module instance processing via ConfigSet (0 = disable, 1 = enable).
Definition base-config.h:231
@ IPC4_MOD_INST_PROPS
Retrieve module instance runtime memory and queue properties via LargeConfigGet.
Definition base-config.h:229
Standard audio format descriptor across all IPC4 modules and gateways.
Definition base-config.h:144
uint32_t s_type
Sample representation type (one of enum ipc4_sample_type).
Definition base-config.h:152
uint32_t valid_bit_depth
Number of significant valid bits within container (e.g.
Definition base-config.h:151
uint32_t depth
Container bit depth in bits (one of enum ipc4_bit_depth).
Definition base-config.h:146
uint32_t ch_map
32-bit channel map nibbles (CHANNEL_LEFT, CHANNEL_RIGHT, etc.).
Definition base-config.h:147
uint32_t interleaving_style
Sample layout (one of enum ipc4_interleaved_style).
Definition base-config.h:149
uint32_t ch_cfg
Channel topology configuration (one of enum ipc4_channel_config).
Definition base-config.h:148
uint32_t sampling_frequency
Sampling rate in Hz (one of enum ipc4_sampling_frequency).
Definition base-config.h:145
uint32_t channels_count
Active channel count (1 to 8).
Definition base-config.h:150
uint32_t reserved
Reserved padding bits; must be set to 0.
Definition base-config.h:153
Extended module configuration header describing dynamic input and output pins.
Definition base-config.h:192
uint16_t nb_output_pins
Number of output pin format entries following in pin_formats[] (maximum 8).
Definition base-config.h:196
uint8_t reserved[12]
Reserved padding; must be set to 0.
Definition base-config.h:197
uint8_t pin_formats[]
Variable-length array of input pin formats followed immediately by output pin formats.
Definition base-config.h:202
uint16_t nb_input_pins
Number of input pin format entries following in pin_formats[] (maximum 8).
Definition base-config.h:194
Base module configuration parameters provided upon module instantiation.
Definition base-config.h:160
uint32_t is_pages
Number of physical 4KB memory pages allocated for module state.
Definition base-config.h:164
uint32_t ibs
Input Buffer Size (IBS) in bytes required per processing frame.
Definition base-config.h:162
uint32_t cpc
Maximum Cycles Per Chunk (CPC) compute budget required by module.
Definition base-config.h:161
uint32_t obs
Output Buffer Size (OBS) in bytes produced per processing frame.
Definition base-config.h:163
struct ipc4_audio_format audio_fmt
Primary audio stream format of the module.
Definition base-config.h:165
Combined base and extended module configuration payload for easy parsing.
Definition base-config.h:218
struct ipc4_base_module_cfg base_cfg
Standard single-pin base module config.
Definition base-config.h:219
struct ipc4_base_module_cfg_ext base_cfg_ext
Extended multi-pin format descriptors.
Definition base-config.h:220
Direct gateway attachment identifiers for a module instance.
Definition base-config.h:286
uint32_t output_gateway
Node ID of attached output gateway (e.g.
Definition base-config.h:288
uint32_t input_gateway
Node ID of attached input gateway (e.g.
Definition base-config.h:287
Input pin format specification for multi-pin modules.
Definition base-config.h:172
struct ipc4_audio_format audio_fmt
Negotiated audio data format for this input pin.
Definition base-config.h:175
uint32_t pin_index
Zero-based logical index of the input pin.
Definition base-config.h:173
uint32_t ibs
Required input frame buffer size in bytes for this pin.
Definition base-config.h:174
Detailed module instance runtime state, memory consumption, and queue alignment.
Definition base-config.h:264
uint32_t id
Unique module instance identifier.
Definition base-config.h:265
uint32_t dp_queue_type
Data processing queue type.
Definition base-config.h:266
uint32_t queue_alignment
Buffer memory alignment in bytes required by DSP.
Definition base-config.h:267
uint32_t cp_usage_mask
Coprocessor / hardware accelerator usage bitmask.
Definition base-config.h:268
struct ipc4_pin_list_info input_queues
Connected input queue descriptors.
Definition base-config.h:276
uint32_t stack_bytes
Stack memory allocated for module instance thread.
Definition base-config.h:269
uint32_t input_gateway
Input gateway node ID if attached directly to gateway.
Definition base-config.h:278
uint32_t bss_total_bytes
Total BSS data section size in bytes.
Definition base-config.h:270
uint32_t ibs_bytes
Input buffer size in bytes.
Definition base-config.h:272
uint32_t obs_bytes
Output buffer size in bytes.
Definition base-config.h:273
uint32_t bss_used_bytes
Currently utilized BSS memory in bytes.
Definition base-config.h:271
struct ipc4_pin_list_info output_queues
Connected output queue descriptors.
Definition base-config.h:277
uint32_t cpc
Nominal Cycles Per Chunk compute requirement.
Definition base-config.h:274
uint32_t cpc_peak
Peak measured Cycles Per Chunk compute requirement.
Definition base-config.h:275
uint32_t output_gateway
Output gateway node ID if attached directly to gateway.
Definition base-config.h:279
Output pin format specification for multi-pin modules.
Definition base-config.h:182
uint32_t pin_index
Zero-based logical index of the output pin.
Definition base-config.h:183
uint32_t obs
Output frame buffer size in bytes for this pin.
Definition base-config.h:184
struct ipc4_audio_format audio_fmt
Negotiated audio data format for this output pin.
Definition base-config.h:185
List of active pin properties for a module instance.
Definition base-config.h:253
struct ipc4_pin_props pin_info[1]
Array of pin properties.
Definition base-config.h:255
uint32_t pin_count
Number of active pin property descriptors.
Definition base-config.h:254
Runtime properties of a module pin connection.
Definition base-config.h:238
uint32_t stream_type
Stream type (one of enum ipc4_stream_type).
Definition base-config.h:240
struct ipc4_audio_format format
Active audio format of the stream (valid when stream_type == IPC4_STREAM_PCM).
Definition base-config.h:243
uint32_t phys_queue_id
Physical DMA queue ID connected to this pin (-1 if unassigned).
Definition base-config.h:246
16-bit small parameter register encoding for MOD_CONFIG_SET/GET.
Definition base-config.h:295
uint32_t id
14-bit parameter identifier.
Definition base-config.h:299
struct ipc4_cfg_param_id_data::@124 f
uint32_t data16
16-bit parameter data payload.
Definition base-config.h:298
uint32_t _rsvd
Reserved bits.
Definition base-config.h:300
uint32_t dw
Raw 32-bit register value.
Definition base-config.h:296