cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

mtk-adsp-ipc.h (1242B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * Copyright (c) 2022 MediaTek Inc.
      4 */
      5
      6#ifndef MTK_ADSP_IPC_H
      7#define MTK_ADSP_IPC_H
      8
      9#include <linux/device.h>
     10#include <linux/types.h>
     11#include <linux/mailbox_controller.h>
     12#include <linux/mailbox_client.h>
     13
     14#define MTK_ADSP_IPC_REQ 0
     15#define MTK_ADSP_IPC_RSP 1
     16#define MTK_ADSP_IPC_OP_REQ 0x1
     17#define MTK_ADSP_IPC_OP_RSP 0x2
     18
     19enum {
     20	MTK_ADSP_MBOX_REPLY,
     21	MTK_ADSP_MBOX_REQUEST,
     22	MTK_ADSP_MBOX_NUM,
     23};
     24
     25struct mtk_adsp_ipc;
     26
     27struct mtk_adsp_ipc_ops {
     28	void (*handle_reply)(struct mtk_adsp_ipc *ipc);
     29	void (*handle_request)(struct mtk_adsp_ipc *ipc);
     30};
     31
     32struct mtk_adsp_chan {
     33	struct mtk_adsp_ipc *ipc;
     34	struct mbox_client cl;
     35	struct mbox_chan *ch;
     36	char *name;
     37	int idx;
     38};
     39
     40struct mtk_adsp_ipc {
     41	struct mtk_adsp_chan chans[MTK_ADSP_MBOX_NUM];
     42	struct device *dev;
     43	struct mtk_adsp_ipc_ops *ops;
     44	void *private_data;
     45};
     46
     47static inline void mtk_adsp_ipc_set_data(struct mtk_adsp_ipc *ipc, void *data)
     48{
     49	if (!ipc)
     50		return;
     51
     52	ipc->private_data = data;
     53}
     54
     55static inline void *mtk_adsp_ipc_get_data(struct mtk_adsp_ipc *ipc)
     56{
     57	if (!ipc)
     58		return NULL;
     59
     60	return ipc->private_data;
     61}
     62
     63int mtk_adsp_ipc_send(struct mtk_adsp_ipc *ipc, unsigned int idx, uint32_t op);
     64
     65#endif /* MTK_ADSP_IPC_H */