#include <linux/err.h>
#include <linux/firmware/imx/ipc.h>
#include <linux/firmware/imx/sci.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/kernel.h>
#include <linux/mailbox_client.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/of.h>
#include <linux/of_platform.h>
#include <linux/platform_device.h>
#define SCU_MU_CHAN_NUM …
#define MAX_RX_TIMEOUT …
struct imx_sc_chan { … };
struct imx_sc_ipc { … };
enum imx_sc_error_codes { … };
static int imx_sc_linux_errmap[IMX_SC_ERR_LAST] = …;
static struct imx_sc_ipc *imx_sc_ipc_handle;
static inline int imx_sc_to_linux_errno(int errno)
{ … }
int imx_scu_get_handle(struct imx_sc_ipc **ipc)
{ … }
EXPORT_SYMBOL(…);
static void imx_scu_tx_done(struct mbox_client *cl, void *mssg, int r)
{ … }
static void imx_scu_rx_callback(struct mbox_client *c, void *msg)
{ … }
static int imx_scu_ipc_write(struct imx_sc_ipc *sc_ipc, void *msg)
{ … }
int imx_scu_call_rpc(struct imx_sc_ipc *sc_ipc, void *msg, bool have_resp)
{ … }
EXPORT_SYMBOL(…);
static int imx_scu_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id imx_scu_match[] = …;
static struct platform_driver imx_scu_driver = …;
static int __init imx_scu_driver_init(void)
{ … }
subsys_initcall_sync(imx_scu_driver_init);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;