#include <linux/bitops.h>
#include <linux/clk.h>
#include <linux/err.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/remoteproc.h>
#include "remoteproc_internal.h"
#define REG_AUX_CTRL …
#define REG_AUX_MSG_ACK …
#define REG_AUX_MSG …
#define REG_CORE_MSG_ACK …
#define REG_CORE_MSG …
#define AUX_CTRL_SLEEP …
#define AUX_CTRL_MSG_IRQ_EN …
#define AUX_CTRL_NMI_RESETS …
#define AUX_CTRL_NMI …
#define AUX_CTRL_SW_RESET …
static bool auto_boot;
module_param(auto_boot, bool, 0400);
MODULE_PARM_DESC(…) …;
struct vpu_mem_map { … };
struct vpu_mem_info { … };
static const struct vpu_mem_map vpu_mem_map[] = …;
struct vpu { … };
static int ingenic_rproc_prepare(struct rproc *rproc)
{ … }
static int ingenic_rproc_unprepare(struct rproc *rproc)
{ … }
static int ingenic_rproc_start(struct rproc *rproc)
{ … }
static int ingenic_rproc_stop(struct rproc *rproc)
{ … }
static void ingenic_rproc_kick(struct rproc *rproc, int vqid)
{ … }
static void *ingenic_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, bool *is_iomem)
{ … }
static const struct rproc_ops ingenic_rproc_ops = …;
static irqreturn_t vpu_interrupt(int irq, void *data)
{ … }
static int ingenic_rproc_probe(struct platform_device *pdev)
{ … }
static const struct of_device_id ingenic_rproc_of_matches[] = …;
MODULE_DEVICE_TABLE(of, ingenic_rproc_of_matches);
static struct platform_driver ingenic_rproc_driver = …;
module_platform_driver(…) …;
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;