root/include/linux/firmware/imx/dsp.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. imx_dsp_set_data
  2. imx_dsp_get_data
  3. imx_dsp_ring_doorbell

   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 
  17 struct 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 
  25 struct imx_dsp_ops {
  26         void (*handle_reply)(struct imx_dsp_ipc *ipc);
  27         void (*handle_request)(struct imx_dsp_ipc *ipc);
  28 };
  29 
  30 struct 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 
  38 static 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 
  46 static 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 
  56 int imx_dsp_ring_doorbell(struct imx_dsp_ipc *dsp, unsigned int chan_idx);
  57 
  58 #else
  59 
  60 static inline int imx_dsp_ring_doorbell(struct imx_dsp_ipc *ipc,
  61                                         unsigned int chan_idx)
  62 {
  63         return -ENOTSUPP;
  64 }
  65 
  66 #endif
  67 #endif /* _IMX_DSP_IPC_H */

/* [<][>][^][v][top][bottom][index][help] */