Sound Open Firmware
Loading...
Searching...
No Matches
header.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 *
3 * Copyright(c) 2016 Intel Corporation. All rights reserved.
4 *
5 * Author: Liam Girdwood <liam.r.girdwood@linux.intel.com>
6 * Keyon Jie <yang.jie@linux.intel.com>
7 */
8
15
16#ifndef __IPC_HEADER_H__
17#define __IPC_HEADER_H__
18
19#include <stdint.h>
20
25#if CONFIG_IPC_MAJOR_3
26#include <ipc3/header.h>
27#elif CONFIG_IPC_MAJOR_4
28#include <ipc4/header.h>
29#endif
30
35struct ipc_cmd_hdr;
36
37#define ipc_to_hdr(x) ((struct ipc_cmd_hdr *)x)
38
168
172
174#define SOF_GLB_TYPE_SHIFT 28
175#define SOF_GLB_TYPE_MASK (0xfUL << SOF_GLB_TYPE_SHIFT)
176#define SOF_GLB_TYPE(x) ((x) << SOF_GLB_TYPE_SHIFT)
177
179
183
185#define SOF_CMD_TYPE_SHIFT 16
186#define SOF_CMD_TYPE_MASK (0xfffL << SOF_CMD_TYPE_SHIFT)
187#define SOF_CMD_TYPE(x) ((x) << SOF_CMD_TYPE_SHIFT)
188
190
194
195#define SOF_IPC_GLB_REPLY SOF_GLB_TYPE(0x1U)
196#define SOF_IPC_GLB_COMPOUND SOF_GLB_TYPE(0x2U)
197#define SOF_IPC_GLB_TPLG_MSG SOF_GLB_TYPE(0x3U)
198#define SOF_IPC_GLB_PM_MSG SOF_GLB_TYPE(0x4U)
199#define SOF_IPC_GLB_COMP_MSG SOF_GLB_TYPE(0x5U)
200#define SOF_IPC_GLB_STREAM_MSG SOF_GLB_TYPE(0x6U)
201#define SOF_IPC_FW_READY SOF_GLB_TYPE(0x7U)
202#define SOF_IPC_GLB_DAI_MSG SOF_GLB_TYPE(0x8U)
203#define SOF_IPC_GLB_TRACE_MSG SOF_GLB_TYPE(0x9U)
204#define SOF_IPC_GLB_GDB_DEBUG SOF_GLB_TYPE(0xAU)
205#define SOF_IPC_GLB_TEST SOF_GLB_TYPE(0xBU)
206#define SOF_IPC_GLB_PROBE SOF_GLB_TYPE(0xCU)
207#define SOF_IPC_GLB_DEBUG SOF_GLB_TYPE(0xDU)
208
210
215
216#define SOF_IPC_TPLG_COMP_NEW SOF_CMD_TYPE(0x001)
217#define SOF_IPC_TPLG_COMP_FREE SOF_CMD_TYPE(0x002)
218#define SOF_IPC_TPLG_COMP_CONNECT SOF_CMD_TYPE(0x003)
219#define SOF_IPC_TPLG_PIPE_NEW SOF_CMD_TYPE(0x010)
220#define SOF_IPC_TPLG_PIPE_FREE SOF_CMD_TYPE(0x011)
221#define SOF_IPC_TPLG_PIPE_CONNECT SOF_CMD_TYPE(0x012)
222#define SOF_IPC_TPLG_PIPE_COMPLETE SOF_CMD_TYPE(0x013)
223#define SOF_IPC_TPLG_BUFFER_NEW SOF_CMD_TYPE(0x020)
224#define SOF_IPC_TPLG_BUFFER_FREE SOF_CMD_TYPE(0x021)
225
227
231
232#define SOF_IPC_PM_CTX_SAVE SOF_CMD_TYPE(0x001)
233#define SOF_IPC_PM_CTX_RESTORE SOF_CMD_TYPE(0x002)
234#define SOF_IPC_PM_CTX_SIZE SOF_CMD_TYPE(0x003)
235#define SOF_IPC_PM_CLK_SET SOF_CMD_TYPE(0x004)
236#define SOF_IPC_PM_CLK_GET SOF_CMD_TYPE(0x005)
237#define SOF_IPC_PM_CLK_REQ SOF_CMD_TYPE(0x006)
238#define SOF_IPC_PM_CORE_ENABLE SOF_CMD_TYPE(0x007)
239#define SOF_IPC_PM_GATE SOF_CMD_TYPE(0x008)
240
242
246
247#define SOF_IPC_COMP_SET_VALUE SOF_CMD_TYPE(0x001)
248#define SOF_IPC_COMP_GET_VALUE SOF_CMD_TYPE(0x002)
249#define SOF_IPC_COMP_SET_DATA SOF_CMD_TYPE(0x003)
250#define SOF_IPC_COMP_GET_DATA SOF_CMD_TYPE(0x004)
251#define SOF_IPC_COMP_NOTIFICATION SOF_CMD_TYPE(0x005)
252
254
258#define SOF_IPC_DAI_CONFIG SOF_CMD_TYPE(0x001)
259#define SOF_IPC_DAI_LOOPBACK SOF_CMD_TYPE(0x002)
260
262
266#define SOF_IPC_STREAM_PCM_PARAMS SOF_CMD_TYPE(0x001)
267#define SOF_IPC_STREAM_PCM_PARAMS_REPLY SOF_CMD_TYPE(0x002)
268#define SOF_IPC_STREAM_PCM_FREE SOF_CMD_TYPE(0x003)
269#define SOF_IPC_STREAM_TRIG_START SOF_CMD_TYPE(0x004)
270#define SOF_IPC_STREAM_TRIG_STOP SOF_CMD_TYPE(0x005)
271#define SOF_IPC_STREAM_TRIG_PAUSE SOF_CMD_TYPE(0x006)
272#define SOF_IPC_STREAM_TRIG_RELEASE SOF_CMD_TYPE(0x007)
273#define SOF_IPC_STREAM_TRIG_DRAIN SOF_CMD_TYPE(0x008)
274#define SOF_IPC_STREAM_TRIG_XRUN SOF_CMD_TYPE(0x009)
275#define SOF_IPC_STREAM_POSITION SOF_CMD_TYPE(0x00a)
276#define SOF_IPC_STREAM_VORBIS_PARAMS SOF_CMD_TYPE(0x010)
277#define SOF_IPC_STREAM_VORBIS_FREE SOF_CMD_TYPE(0x011)
278
280
284
285#define SOF_IPC_TRACE_DMA_PARAMS SOF_CMD_TYPE(0x001)
286#define SOF_IPC_TRACE_DMA_POSITION SOF_CMD_TYPE(0x002)
287#define SOF_IPC_TRACE_DMA_PARAMS_EXT SOF_CMD_TYPE(0x003)
288#define SOF_IPC_TRACE_FILTER_UPDATE SOF_CMD_TYPE(0x004)
289#define SOF_IPC_TRACE_DMA_FREE SOF_CMD_TYPE(0x005)
290
292
296
297#define SOF_IPC_PROBE_INIT SOF_CMD_TYPE(0x001)
298#define SOF_IPC_PROBE_DEINIT SOF_CMD_TYPE(0x002)
299#define SOF_IPC_PROBE_DMA_ADD SOF_CMD_TYPE(0x003)
300#define SOF_IPC_PROBE_DMA_INFO SOF_CMD_TYPE(0x004)
301#define SOF_IPC_PROBE_DMA_REMOVE SOF_CMD_TYPE(0x005)
302#define SOF_IPC_PROBE_POINT_ADD SOF_CMD_TYPE(0x006)
303#define SOF_IPC_PROBE_POINT_INFO SOF_CMD_TYPE(0x007)
304#define SOF_IPC_PROBE_POINT_REMOVE SOF_CMD_TYPE(0x008)
305
307
311
312#define SOF_IPC_DEBUG_MEM_USAGE SOF_CMD_TYPE(0x001)
313
315
319
320#define SOF_IPC_TEST_IPC_FLOOD SOF_CMD_TYPE(0x001)
321
323
327
329#define SOF_IPC_MESSAGE_ID(x) ((x) & 0xffff)
330
332#if CONFIG_IPC_MAJOR_4
333#define SOF_IPC_MSG_MAX_SIZE 0x1000
334#elif CONFIG_LIBRARY_STATIC || UNIT_TEST
335#define SOF_IPC_MSG_MAX_SIZE 0x2000
336#else
337#define SOF_IPC_MSG_MAX_SIZE 384
338#endif
340
348 uint32_t size;
349} __attribute__((packed, aligned(4)));
350
358 uint32_t size;
359 uint32_t cmd;
360} __attribute__((packed, aligned(4)));
361
368 int32_t error;
369} __attribute__((packed, aligned(4)));
370
381 uint32_t count;
382} __attribute__((packed, aligned(4)));
383
388 uint32_t arch; /* Identifier of architecture */
389 uint32_t totalsize; /* Total size of oops message */
390} __attribute__((packed, aligned(4)));
391
396 uint32_t configidhi; /* ConfigID hi 32bits */
397 uint32_t configidlo; /* ConfigID lo 32bits */
398 uint32_t numaregs; /* Special regs num */
399 uint32_t stackoffset; /* Offset to stack pointer from beginning of
400 * oops message
401 */
402 uint32_t stackptr; /* Stack ptr */
403} __attribute__((packed, aligned(4)));
404
406
407#endif /* __IPC_HEADER_H__ */
Command Header - Header for all IPC commands.
Definition header.h:357
uint32_t cmd
SOF_IPC_GLB_ + cmd.
Definition header.h:359
uint32_t size
size of structure
Definition header.h:358
Compound commands - SOF_IPC_GLB_COMPOUND.
Definition header.h:379
struct sof_ipc_cmd_hdr hdr
Definition header.h:380
uint32_t count
count of 0 means end of compound sequence
Definition header.h:381
OOPS header architecture specific data.
Definition header.h:387
uint32_t arch
Definition header.h:388
uint32_t totalsize
Definition header.h:389
OOPS header platform specific data.
Definition header.h:395
uint32_t configidhi
Definition header.h:396
uint32_t configidlo
Definition header.h:397
uint32_t stackoffset
Definition header.h:399
uint32_t numaregs
Definition header.h:398
uint32_t stackptr
Definition header.h:402
Structure Header - Header for all IPC structures except command structs.
Definition header.h:347
uint32_t size
size of structure
Definition header.h:348
Generic reply message.
Definition header.h:366
int32_t error
negative error numbers
Definition header.h:368
struct sof_ipc_cmd_hdr hdr
Definition header.h:367