mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-09-01 15:14:52 +00:00

'struct mtk_adsp_ipc_ops' is not modified in these drivers. Constifying this structure moves some data to a read-only section, so increase overall security. In order to do it, "struct mtk_adsp_ipc" also needs to be adjusted to this new const qualifier. On a x86_64, with allmodconfig: Before: ====== text data bss dec hex filename 15533 2383 0 17916 45fc sound/soc/sof/mediatek/mt8195/mt8195.o After: ===== text data bss dec hex filename 15557 2367 0 17924 4604 sound/soc/sof/mediatek/mt8195/mt8195.o Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> Link: https://msgid.link/r/a45d6b2b5ec040ea0fc78fca662c2dca3f13a49f.1718312321.git.christophe.jaillet@wanadoo.fr Signed-off-by: Mark Brown <broonie@kernel.org>
60 lines
1.2 KiB
C
60 lines
1.2 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (c) 2022 MediaTek Inc.
|
|
*/
|
|
|
|
#ifndef MTK_ADSP_IPC_H
|
|
#define MTK_ADSP_IPC_H
|
|
|
|
#include <linux/device.h>
|
|
#include <linux/types.h>
|
|
#include <linux/mailbox_controller.h>
|
|
#include <linux/mailbox_client.h>
|
|
|
|
#define MTK_ADSP_IPC_REQ 0
|
|
#define MTK_ADSP_IPC_RSP 1
|
|
#define MTK_ADSP_IPC_OP_REQ 0x1
|
|
#define MTK_ADSP_IPC_OP_RSP 0x2
|
|
|
|
enum {
|
|
MTK_ADSP_MBOX_REPLY,
|
|
MTK_ADSP_MBOX_REQUEST,
|
|
MTK_ADSP_MBOX_NUM,
|
|
};
|
|
|
|
struct mtk_adsp_ipc;
|
|
|
|
struct mtk_adsp_ipc_ops {
|
|
void (*handle_reply)(struct mtk_adsp_ipc *ipc);
|
|
void (*handle_request)(struct mtk_adsp_ipc *ipc);
|
|
};
|
|
|
|
struct mtk_adsp_chan {
|
|
struct mtk_adsp_ipc *ipc;
|
|
struct mbox_client cl;
|
|
struct mbox_chan *ch;
|
|
char *name;
|
|
int idx;
|
|
};
|
|
|
|
struct mtk_adsp_ipc {
|
|
struct mtk_adsp_chan chans[MTK_ADSP_MBOX_NUM];
|
|
struct device *dev;
|
|
const struct mtk_adsp_ipc_ops *ops;
|
|
void *private_data;
|
|
};
|
|
|
|
static inline void mtk_adsp_ipc_set_data(struct mtk_adsp_ipc *ipc, void *data)
|
|
{
|
|
ipc->private_data = data;
|
|
}
|
|
|
|
static inline void *mtk_adsp_ipc_get_data(struct mtk_adsp_ipc *ipc)
|
|
{
|
|
return ipc->private_data;
|
|
}
|
|
|
|
int mtk_adsp_ipc_send(struct mtk_adsp_ipc *ipc, unsigned int idx, uint32_t op);
|
|
|
|
#endif /* MTK_ADSP_IPC_H */
|