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:
Baofeng Tian 2023-05-18 14:25:09 +08:00 committed by Ranjani Sridharan
parent 5e200efdee
commit bf6b875bd0
4 changed files with 69 additions and 78 deletions

View File

@ -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);

View File

@ -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__ */

View File

@ -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);

View File

@ -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;