diff options
Diffstat (limited to 'drivers/misc/mic/imx-card/imx_mic_boot.h')
-rw-r--r-- | drivers/misc/mic/imx-card/imx_mic_boot.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/drivers/misc/mic/imx-card/imx_mic_boot.h b/drivers/misc/mic/imx-card/imx_mic_boot.h new file mode 100644 index 000000000000..12bf2571f486 --- /dev/null +++ b/drivers/misc/mic/imx-card/imx_mic_boot.h @@ -0,0 +1,75 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +// Copyright 2020 NXP + +#ifndef IMX_MIC_BOOT_H +#define IMX_MIC_BOOT_H + +#include "../bus/vop_bus.h" + +/** + * struct imx_mic_device - MIC device information. + * + * @mmio: MMIO bar information. + */ +struct imx_mic_device { + struct mic_mw mmio; +}; + +/** + * struct mic_irq - opaque pointer used as cookie. + */ +struct mic_irq; + +/** + * struct imx_mic_intr - MIC interrupt information. + */ +struct imx_mic_intr { + struct device *dev; + void __iomem *base; + struct clk *clk_aside; + struct clk *clk_bside; + struct device *pd_aside; + struct device *pd_bside; + int irq; + u32 doorbell_reg_base; + u32 doorbell_reg_size; + irqreturn_t (*config_intr)(int irq, void *data); + void *config_intr_priv; + irqreturn_t (*data_intr)(int irq, void *data); + void *data_intr_priv; +}; + +/** + * struct imx_mic_driver - MIC card driver information. + * + * @name: Name for MIC driver. + * @dev: The device backing this MIC. + * @mdev: MIC device information for the host. + * @mintr: MIC interrupt information fot this MIC device. + * @vpdev: Virtio over PCIe device on the VOP virtual bus. + * @mepf: endpoint function for MIC. + */ +struct imx_mic_driver { + char name[20]; + struct device *dev; + struct imx_mic_device mdev; + struct imx_mic_intr *mintr; + struct vop_device *vpdev; + struct imx_mic_epf *mepf; +}; + +/** + * export symbol from mic boot. + */ +void imx_mic_send_intr(struct imx_mic_driver *mdrv, int db); + +/** + * export symbol from mic intr. + */ +int imx_mic_intr_init(struct imx_mic_driver *mdrv); +void imx_mic_intr_uninit(struct imx_mic_driver *mdrv); +void imx_mic_intr_enable(struct imx_mic_driver *mdrv, int index); +void imx_mic_intr_disable(struct imx_mic_driver *mdrv, int index); +void imx_mic_intr_ack(struct imx_mic_driver *mdrv, int index); + +#endif |