mirror of https://github.com/thesofproject/sof.git
ipcgtw: merge ipcgtw.h to ipcgtw_copier.h header file
No need to keep separate ipcgtw.h header file, merge it to ipcgtw_copier.h. Signed-off-by: Baofeng Tian <baofeng.tian@intel.com>
This commit is contained in:
parent
5e200efdee
commit
bf6b875bd0
|
@ -8,7 +8,6 @@
|
|||
#include <sof/lib/memory.h>
|
||||
#include <sof/ut.h>
|
||||
#include <rtos/init.h>
|
||||
#include <ipc4/ipcgtw.h>
|
||||
#include <ipc4/copier.h>
|
||||
#include <sof/audio/ipcgtw_copier.h>
|
||||
|
||||
|
@ -88,8 +87,8 @@ static inline struct comp_buffer *get_buffer(struct comp_dev *dev)
|
|||
return list_first_item(&dev->bsource_list, struct comp_buffer, sink_list);
|
||||
}
|
||||
|
||||
int ipcgtw_process_cmd(const struct ipc4_ipcgtw_cmd *cmd,
|
||||
void *reply_payload, uint32_t *reply_payload_size)
|
||||
int copier_ipcgtw_process(const struct ipc4_ipcgtw_cmd *cmd,
|
||||
void *reply_payload, uint32_t *reply_payload_size)
|
||||
{
|
||||
const struct ipc4_ipc_gateway_cmd_data *in;
|
||||
struct comp_dev *dev;
|
||||
|
@ -106,7 +105,7 @@ int ipcgtw_process_cmd(const struct ipc4_ipcgtw_cmd *cmd,
|
|||
if (!dev)
|
||||
return -ENODEV;
|
||||
|
||||
comp_dbg(dev, "ipcgtw_process_cmd(): %x %x",
|
||||
comp_dbg(dev, "copier_ipcgtw_process(): %x %x",
|
||||
cmd->primary.dat, cmd->extension.dat);
|
||||
|
||||
buf = get_buffer(dev);
|
||||
|
@ -120,7 +119,7 @@ int ipcgtw_process_cmd(const struct ipc4_ipcgtw_cmd *cmd,
|
|||
* 0 bytes free for SET_DATA.
|
||||
*/
|
||||
buf_c = NULL;
|
||||
comp_warn(dev, "ipcgtw_process_cmd(): no buffer found");
|
||||
comp_warn(dev, "copier_ipcgtw_process(): no buffer found");
|
||||
}
|
||||
|
||||
out = (struct ipc4_ipc_gateway_cmd_data_reply *)reply_payload;
|
||||
|
@ -169,7 +168,7 @@ int ipcgtw_process_cmd(const struct ipc4_ipcgtw_cmd *cmd,
|
|||
break;
|
||||
|
||||
default:
|
||||
comp_err(dev, "ipcgtw_process_cmd(): unexpected cmd: %u",
|
||||
comp_err(dev, "copier_ipcgtw_process(): unexpected cmd: %u",
|
||||
(unsigned int)cmd->primary.r.cmd);
|
||||
if (buf_c)
|
||||
buffer_release(buf_c);
|
||||
|
|
|
@ -1,69 +0,0 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause
|
||||
*
|
||||
* Copyright 2023 Intel Corporation. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef __SOF_IPC4_IPCGTW_H__
|
||||
#define __SOF_IPC4_IPCGTW_H__
|
||||
|
||||
/**< IPC header format for IPC gateway messages */
|
||||
struct ipc4_ipcgtw_cmd {
|
||||
union {
|
||||
uint32_t dat;
|
||||
|
||||
struct {
|
||||
/**< Command, see below */
|
||||
uint32_t cmd : 24;
|
||||
|
||||
/**< One of Global::Type */
|
||||
uint32_t type : 5;
|
||||
|
||||
/**< Msg::MSG_REQUEST */
|
||||
uint32_t rsp : 1;
|
||||
|
||||
/**< Msg::FW_GEN_MSG */
|
||||
uint32_t msg_tgt : 1;
|
||||
|
||||
uint32_t _reserved_0 : 1;
|
||||
} r;
|
||||
} primary;
|
||||
union {
|
||||
uint32_t dat;
|
||||
struct {
|
||||
uint32_t data_size : 30;
|
||||
uint32_t _reserved_0 : 2;
|
||||
} r;
|
||||
} extension;
|
||||
} __packed __aligned(4);
|
||||
|
||||
/**< Values of ipc4_ipcgtw_cmd::primary.r.cmd */
|
||||
enum {
|
||||
IPC4_IPCGWCMD_GET_DATA = 1,
|
||||
IPC4_IPCGWCMD_SET_DATA = 2,
|
||||
IPC4_IPCGWCMD_FLUSH_DATA = 3
|
||||
};
|
||||
|
||||
/* Incoming IPC gateway message */
|
||||
struct ipc4_ipc_gateway_cmd_data {
|
||||
/* node_id of the target gateway */
|
||||
union ipc4_connector_node_id node_id;
|
||||
/* Payload (actual size is in the header extension.r.data_size) */
|
||||
uint8_t payload[];
|
||||
};
|
||||
|
||||
/* Reply to IPC gateway message */
|
||||
struct ipc4_ipc_gateway_cmd_data_reply {
|
||||
union {
|
||||
uint32_t size_avail; /* Reply for IPC4_IPCGWCMD_GET_DATA */
|
||||
uint32_t size_consumed; /* Reply for IPC4_IPCGWCMD_SET_DATA */
|
||||
} u;
|
||||
/* Total reply size is returned in reply header extension.r.data_size.
|
||||
* This payload size if 4 bytes smaller (size of the union above).
|
||||
*/
|
||||
uint8_t payload[];
|
||||
};
|
||||
|
||||
int ipcgtw_process_cmd(const struct ipc4_ipcgtw_cmd *cmd,
|
||||
void *reply_payload, uint32_t *reply_payload_size);
|
||||
|
||||
#endif /* __SOF_IPC4_IPCGTW_H__ */
|
|
@ -18,6 +18,7 @@
|
|||
#include <ipc4/gateway.h>
|
||||
#include <sof/list.h>
|
||||
#include <ipc/stream.h>
|
||||
#include <ipc4/copier.h>
|
||||
|
||||
/* Host communicates with IPC gateways via global IPC messages. To address a particular
|
||||
* IPC gateway, its node_id is sent in message payload. Hence we need to keep a list of existing
|
||||
|
@ -34,6 +35,66 @@ struct ipcgtw_data {
|
|||
uint32_t buf_size;
|
||||
};
|
||||
|
||||
/**< IPC header format for IPC gateway messages */
|
||||
struct ipc4_ipcgtw_cmd {
|
||||
union {
|
||||
uint32_t dat;
|
||||
|
||||
struct {
|
||||
/**< Command, see below */
|
||||
uint32_t cmd : 24;
|
||||
|
||||
/**< One of Global::Type */
|
||||
uint32_t type : 5;
|
||||
|
||||
/**< Msg::MSG_REQUEST */
|
||||
uint32_t rsp : 1;
|
||||
|
||||
/**< Msg::FW_GEN_MSG */
|
||||
uint32_t msg_tgt : 1;
|
||||
|
||||
uint32_t _reserved_0 : 1;
|
||||
} r;
|
||||
} primary;
|
||||
union {
|
||||
uint32_t dat;
|
||||
struct {
|
||||
uint32_t data_size : 30;
|
||||
uint32_t _reserved_0 : 2;
|
||||
} r;
|
||||
} extension;
|
||||
} __packed __aligned(4);
|
||||
|
||||
/**< Values of ipc4_ipcgtw_cmd::primary.r.cmd */
|
||||
enum {
|
||||
IPC4_IPCGWCMD_GET_DATA = 1,
|
||||
IPC4_IPCGWCMD_SET_DATA = 2,
|
||||
IPC4_IPCGWCMD_FLUSH_DATA = 3
|
||||
};
|
||||
|
||||
/* Incoming IPC gateway message */
|
||||
struct ipc4_ipc_gateway_cmd_data {
|
||||
/* node_id of the target gateway */
|
||||
union ipc4_connector_node_id node_id;
|
||||
/* Payload (actual size is in the header extension.r.data_size) */
|
||||
uint8_t payload[];
|
||||
};
|
||||
|
||||
/* Reply to IPC gateway message */
|
||||
struct ipc4_ipc_gateway_cmd_data_reply {
|
||||
union {
|
||||
uint32_t size_avail; /* Reply for IPC4_IPCGWCMD_GET_DATA */
|
||||
uint32_t size_consumed; /* Reply for IPC4_IPCGWCMD_SET_DATA */
|
||||
} u;
|
||||
/* Total reply size is returned in reply header extension.r.data_size.
|
||||
* This payload size if 4 bytes smaller (size of the union above).
|
||||
*/
|
||||
uint8_t payload[];
|
||||
};
|
||||
|
||||
int copier_ipcgtw_process(const struct ipc4_ipcgtw_cmd *cmd,
|
||||
void *reply_payload, uint32_t *reply_payload_size);
|
||||
|
||||
int copier_ipcgtw_params(struct ipcgtw_data *ipcgtw_data, struct comp_dev *dev,
|
||||
struct sof_ipc_stream_params *params);
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
#include <ipc4/module.h>
|
||||
#include <ipc4/pipeline.h>
|
||||
#include <ipc4/notification.h>
|
||||
#include <ipc4/ipcgtw.h>
|
||||
#include <sof/audio/ipcgtw_copier.h>
|
||||
#include <ipc/trace.h>
|
||||
#include <user/trace.h>
|
||||
|
||||
|
@ -537,8 +537,8 @@ static int ipc4_process_ipcgtw_cmd(struct ipc4_message_request *ipc4)
|
|||
* quite weird: seems one extra copying can be eliminated.
|
||||
*/
|
||||
|
||||
err = ipcgtw_process_cmd((const struct ipc4_ipcgtw_cmd *)ipc4, ipc->comp_data,
|
||||
&reply_size);
|
||||
err = copier_ipcgtw_process((const struct ipc4_ipcgtw_cmd *)ipc4, ipc->comp_data,
|
||||
&reply_size);
|
||||
/* reply size is returned in header extension dword */
|
||||
msg_reply.extension = reply_size;
|
||||
|
||||
|
|
Loading…
Reference in New Issue