#include <linux/interrupt.h>
#include <linux/spinlock.h>
#include <linux/mutex.h>
#include <linux/delay.h>
#include <linux/slab.h>
#include <linux/err.h>
#include <linux/io.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/mailbox_controller.h>
#define INTR_SET_OFS …
#define INTR_STAT_OFS …
#define INTR_CLR_OFS …
#define MHU_SEC_OFFSET …
#define MHU_LP_OFFSET …
#define MHU_HP_OFFSET …
#define TX_REG_OFFSET …
#define MHU_CHANS …
struct platform_mhu_link { … };
struct platform_mhu { … };
static irqreturn_t platform_mhu_rx_interrupt(int irq, void *p)
{ … }
static bool platform_mhu_last_tx_done(struct mbox_chan *chan)
{ … }
static int platform_mhu_send_data(struct mbox_chan *chan, void *data)
{ … }
static int platform_mhu_startup(struct mbox_chan *chan)
{ … }
static void platform_mhu_shutdown(struct mbox_chan *chan)
{ … }
static const struct mbox_chan_ops platform_mhu_ops = …;
static int platform_mhu_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id platform_mhu_dt_ids[] = …;
MODULE_DEVICE_TABLE(of, platform_mhu_dt_ids);
static struct platform_driver platform_mhu_driver = …;
module_platform_driver(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;