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

dsp.h (1559B)


      1/* SPDX-License-Identifier: GPL-2.0+ */
      2/*
      3 * Copyright 2019 NXP
      4 *
      5 * Header file for the DSP IPC implementation
      6 */
      7
      8#ifndef _IMX_DSP_IPC_H
      9#define _IMX_DSP_IPC_H
     10
     11#include <linux/device.h>
     12#include <linux/types.h>
     13#include <linux/mailbox_client.h>
     14
     15#define DSP_MU_CHAN_NUM		4
     16
     17struct imx_dsp_chan {
     18	struct imx_dsp_ipc *ipc;
     19	struct mbox_client cl;
     20	struct mbox_chan *ch;
     21	char *name;
     22	int idx;
     23};
     24
     25struct imx_dsp_ops {
     26	void (*handle_reply)(struct imx_dsp_ipc *ipc);
     27	void (*handle_request)(struct imx_dsp_ipc *ipc);
     28};
     29
     30struct imx_dsp_ipc {
     31	/* Host <-> DSP communication uses 2 txdb and 2 rxdb channels */
     32	struct imx_dsp_chan chans[DSP_MU_CHAN_NUM];
     33	struct device *dev;
     34	struct imx_dsp_ops *ops;
     35	void *private_data;
     36};
     37
     38static inline void imx_dsp_set_data(struct imx_dsp_ipc *ipc, void *data)
     39{
     40	if (!ipc)
     41		return;
     42
     43	ipc->private_data = data;
     44}
     45
     46static inline void *imx_dsp_get_data(struct imx_dsp_ipc *ipc)
     47{
     48	if (!ipc)
     49		return NULL;
     50
     51	return ipc->private_data;
     52}
     53
     54#if IS_ENABLED(CONFIG_IMX_DSP)
     55
     56int imx_dsp_ring_doorbell(struct imx_dsp_ipc *dsp, unsigned int chan_idx);
     57
     58struct mbox_chan *imx_dsp_request_channel(struct imx_dsp_ipc *ipc, int idx);
     59void imx_dsp_free_channel(struct imx_dsp_ipc *ipc, int idx);
     60
     61#else
     62
     63static inline int imx_dsp_ring_doorbell(struct imx_dsp_ipc *ipc,
     64					unsigned int chan_idx)
     65{
     66	return -ENOTSUPP;
     67}
     68
     69struct mbox_chan *imx_dsp_request_channel(struct imx_dsp_ipc *ipc, int idx)
     70{
     71	return ERR_PTR(-EOPNOTSUPP);
     72}
     73
     74void imx_dsp_free_channel(struct imx_dsp_ipc *ipc, int idx) { }
     75
     76#endif
     77#endif /* _IMX_DSP_IPC_H */