9#ifndef __SOF_IPC_TOPOLOGY_H__
10#define __SOF_IPC_TOPOLOGY_H__
22#include <sof/trace/trace.h>
37#include <ipc/topology.h>
38#define ipc_from_pipe_new(x) ((struct sof_ipc_pipe_new *)x)
39#define ipc_from_pipe_connect(x) ((struct sof_ipc_pipe_comp_connect *)x)
40#define ipc_from_comp_new(x) ((struct sof_ipc_comp *)x)
41#define ipc_from_dai_config(x) ((struct sof_ipc_dai_config *)x)
42#elif CONFIG_IPC_MAJOR_4
43#include <ipc4/pipeline.h>
44#include <ipc4/module.h>
45#include <ipc4/gateway.h>
46#define ipc_from_pipe_new(x) ((struct ipc4_pipeline_create *)x)
47#define ipc_from_pipe_connect(x) ((struct ipc4_module_bind_unbind *)x)
50const struct comp_driver *ipc4_get_comp_drv(uint32_t module_id);
51struct comp_dev *ipc4_get_comp_dev(uint32_t comp_id);
52int ipc4_add_comp_dev(
struct comp_dev *dev);
53#ifdef CONFIG_SOF_USERSPACE_LL
54struct ipc4_message_request;
56struct comp_dev *comp_new_ipc4_user(
struct ipc4_message_request *ipc4,
59int ipc4_chain_manager_create(
const struct ipc4_chain_dma *cdma);
60int ipc4_chain_dma_state(
struct comp_dev *dev,
const struct ipc4_chain_dma *cdma);
61int ipc4_create_chain_dma(
struct ipc *
ipc,
struct ipc4_chain_dma *cdma);
62int ipc4_trigger_chain_dma(
struct ipc *
ipc,
struct ipc4_chain_dma *cdma,
bool *delay);
63int ipc4_process_on_core(uint32_t core,
bool blocking);
64int ipc4_pipeline_complete(
struct ipc *
ipc, uint32_t comp_id, uint32_t cmd);
67 uint8_t *data_buffer,
size_t size);
68int ipc4_pipeline_prepare(
struct ipc_comp_dev *ppl_icd, uint32_t cmd);
69int ipc4_pipeline_trigger(
struct ipc_comp_dev *ppl_icd, uint32_t cmd,
bool *delayed);
70int ipc4_find_dma_config_multiple(
struct ipc_config_dai *
dai, uint8_t *data_buffer,
71 uint32_t
size, uint32_t device_id,
int dma_cfg_idx);
72const struct ipc4_pipeline_set_state_data *ipc4_get_pipeline_data_wrapper(
void);
75#error "No or invalid IPC MAJOR version selected."
78#define ipc_to_pipe_new(x) ((ipc_pipe_new *)x)
79#define ipc_to_pipe_connect(x) ((ipc_pipe_comp_connect *)x)
80#define ipc_to_comp_new(x) ((ipc_comp *)x)
84#define COMP_TYPE_ANY 0
85#define COMP_TYPE_COMPONENT 1
86#define COMP_TYPE_BUFFER 2
87#define COMP_TYPE_PIPELINE 3
90#define IPC_COMP_IGNORE_REMOTE 1
199 uint32_t ppl_id, uint32_t ignore_remote);
244#define ipc_get_comp_by_id(ipc, comp_id) ipc_get_comp_dev(ipc, COMP_TYPE_COMPONENT, comp_id)
245#define ipc_get_pipeline_by_id(ipc, ppln_id) ipc_get_comp_dev(ipc, COMP_TYPE_PIPELINE, ppln_id)
246#define ipc_get_buffer_by_id(ipc, buf_id) ipc_get_comp_dev(ipc, COMP_TYPE_BUFFER, buf_id)
#define list_item(item, type, member)
Definition list.h:80
static uint32_t pipeline_id(struct pipeline *p)
Retrieves pipeline id from pipeline.
Definition pipeline.h:261
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)
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:30
uint32_t ipc_pipe_comp_connect
Definition topology.h:29
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:28
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.
Audio component base device "class".
Definition component.h:645
uint32_t size
component's allocated size
Definition component.h:657
const struct comp_driver * drv
driver
Definition component.h:675
Audio component base driver "class".
Definition component.h:587
Definition dai-zephyr.h:49
struct list_item list
Definition topology.h:106
uint16_t core
Definition topology.h:95
uint32_t id
Definition topology.h:96
struct comp_buffer * cb
Definition topology.h:101
uint16_t type
Definition topology.h:94
struct pipeline * pipeline
Definition topology.h:102
struct comp_dev * cd
Definition topology.h:100
Definition ipc-config.h:65
Definition topology.h:107
uint32_t type
Definition tlv.h:0