9#ifndef __SOF_IPC_TOPOLOGY_H__
10#define __SOF_IPC_TOPOLOGY_H__
20#include <sof/trace/trace.h>
35#include <ipc/topology.h>
36#define ipc_from_pipe_new(x) ((struct sof_ipc_pipe_new *)x)
37#define ipc_from_pipe_connect(x) ((struct sof_ipc_pipe_comp_connect *)x)
38#define ipc_from_comp_new(x) ((struct sof_ipc_comp *)x)
39#define ipc_from_dai_config(x) ((struct sof_ipc_dai_config *)x)
40#elif CONFIG_IPC_MAJOR_4
44#define ipc_from_pipe_new(x) ((struct ipc4_pipeline_create *)x)
45#define ipc_from_pipe_connect(x) ((struct ipc4_module_bind_unbind *)x)
49struct comp_dev *ipc4_get_comp_dev(uint32_t comp_id);
50int ipc4_add_comp_dev(
struct comp_dev *dev);
51#ifdef CONFIG_SOF_USERSPACE_LL
61int ipc4_process_on_core(uint32_t core,
bool blocking);
62int ipc4_pipeline_complete(
struct ipc *
ipc, uint32_t comp_id, uint32_t cmd);
65 uint8_t *data_buffer,
size_t size);
66int ipc4_pipeline_prepare(
struct ipc_comp_dev *ppl_icd, uint32_t cmd);
67int ipc4_pipeline_trigger(
struct ipc_comp_dev *ppl_icd, uint32_t cmd,
bool *delayed);
68int ipc4_find_dma_config_multiple(
struct ipc_config_dai *
dai, uint8_t *data_buffer,
69 uint32_t
size, uint32_t device_id,
int dma_cfg_idx);
73#error "No or invalid IPC MAJOR version selected."
76#define ipc_to_pipe_new(x) ((ipc_pipe_new *)x)
77#define ipc_to_pipe_connect(x) ((ipc_pipe_comp_connect *)x)
78#define ipc_to_comp_new(x) ((ipc_comp *)x)
82#define COMP_TYPE_ANY 0
83#define COMP_TYPE_COMPONENT 1
84#define COMP_TYPE_BUFFER 2
85#define COMP_TYPE_PIPELINE 3
88#define IPC_COMP_IGNORE_REMOTE 1
197 uint32_t ppl_id, uint32_t ignore_remote);
246#define ipc_get_comp_by_id(ipc, comp_id) ipc_get_comp_dev(ipc, COMP_TYPE_COMPONENT, comp_id)
247#define ipc_get_pipeline_by_id(ipc, ppln_id) ipc_get_comp_dev(ipc, COMP_TYPE_PIPELINE, ppln_id)
248#define ipc_get_buffer_by_id(ipc, buf_id) ipc_get_comp_dev(ipc, COMP_TYPE_BUFFER, buf_id)
Memory allocation API, zones, heaps, and alignment utilities.
Component interconnect buffer allocation and stream handling.
IPC4 audio gateway attributes, ALH, HDA, and SoundWire gateway definitions.
static uint32_t pipeline_id(struct pipeline *p)
Retrieves pipeline ID from pipeline structure.
Definition pipeline.h:291
IPC4 pipeline creation, states, priorities, and management commands.
IPC4 module instantiation, binding, pin configuration, and parameter definitions.
Audio pipeline management, graph scheduling, and execution control.
int ipc_comp_free(struct ipc *ipc, uint32_t comp_id)
Free an IPC component.
int ipc_pipeline_complete(struct ipc *ipc, uint32_t comp_id)
Complete an IPC pipeline.
int ipc_buffer_free(struct ipc *ipc, uint32_t buffer_id)
Free an IPC buffer.
int ipc_pipeline_new(struct ipc *ipc, ipc_pipe_new *pipeline)
Create a new IPC pipeline.
int ipc_buffer_new(struct ipc *ipc, const struct sof_ipc_buffer *buffer)
Create a new IPC buffer.
int ipc_comp_new(struct ipc *ipc, ipc_comp *new)
Create a new IPC component.
int comp_verify_params(struct comp_dev *dev, uint32_t flag, struct sof_ipc_stream_params *params)
Verify stream parameters against component capabilities.
int32_t ipc_comp_pipe_id(const struct ipc_comp_dev *icd)
Get pipeline ID from component.
int ipc_comp_dai_config(struct ipc *ipc, struct ipc_config_dai *common_config, void *spec_config)
Configure all DAI components attached to DAI.
int ipc_comp_connect(struct ipc *ipc, ipc_pipe_comp_connect *connect)
Connect components together on a pipeline.
int comp_buffer_connect(struct comp_dev *comp, uint32_t comp_core, struct comp_buffer *buffer, uint32_t dir)
connect component and buffer
uint32_t ipc_comp
Definition topology.h:28
uint32_t ipc_pipe_comp_connect
Definition topology.h:27
struct ipc_comp_dev * ipc_get_comp_by_ppl_id(struct ipc *ipc, uint16_t type, uint32_t ppl_id, uint32_t ignore_remote)
Get component device from pipeline ID and type.
struct ipc_comp_dev * ipc_get_ppl_comp(struct ipc *ipc, uint32_t pipeline_id, int dir)
Get buffer device from pipeline ID.
uint32_t ipc_pipe_new
Definition topology.h:26
int ipc_comp_disconnect(struct ipc *ipc, ipc_pipe_comp_connect *connect)
Disconnect components in a pipeline.
struct ipc_comp_dev * ipc_get_comp_dev(struct ipc *ipc, uint16_t type, uint32_t id)
Get component device from component type and ID.
int ipc_pipeline_free(struct ipc *ipc, uint32_t comp_id)
Free an IPC pipeline.
Sound Open Firmware global runtime context.
RTOS spinlock primitives and initialization.
Audio component interconnect buffer connecting two pipeline components.
Definition buffer.h:150
Audio component base device "class" used by all other component types.
Definition component.h:587
uint32_t size
Component allocated size in bytes.
Definition component.h:595
const struct comp_driver * drv
Component driver.
Definition component.h:608
Audio component base driver "class".
Definition component.h:528
Definition dai-zephyr.h:49
Direct DMA Chaining configuration command (SOF_IPC4_GLB_CHAIN_DMA).
Definition pipeline.h:391
Standard 64-bit IPC4 message request envelope.
Definition header.h:127
Payload array containing pipeline IDs for multi-pipeline state transitions.
Definition pipeline.h:197
struct list_item list
Definition topology.h:104
uint16_t core
Definition topology.h:93
uint32_t id
Definition topology.h:94
struct comp_buffer * cb
Definition topology.h:99
uint16_t type
Definition topology.h:92
struct pipeline * pipeline
Definition topology.h:100
struct comp_dev * cd
Definition topology.h:98
Definition ipc-config.h:65
Audio pipeline structure representing a stream graph and execution context.
Definition pipeline.h:72
Definition topology.h:107
Core task descriptor, task operations, and task execution state machine.