#include <linux/platform_device.h>
#include <linux/uio_driver.h>
#include <linux/spinlock.h>
#include <linux/bitops.h>
#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/platform_data/uio_dmem_genirq.h>
#include <linux/stringify.h>
#include <linux/pm_runtime.h>
#include <linux/dma-mapping.h>
#include <linux/slab.h>
#include <linux/irq.h>
#include <linux/of.h>
#include <linux/of_platform.h>
#include <linux/of_address.h>
#define DRIVER_NAME …
#define DMEM_MAP_ERROR …
struct uio_dmem_genirq_platdata { … };
enum { … };
static int uio_dmem_genirq_open(struct uio_info *info, struct inode *inode)
{ … }
static int uio_dmem_genirq_release(struct uio_info *info, struct inode *inode)
{ … }
static irqreturn_t uio_dmem_genirq_handler(int irq, struct uio_info *dev_info)
{ … }
static int uio_dmem_genirq_irqcontrol(struct uio_info *dev_info, s32 irq_on)
{ … }
static void uio_dmem_genirq_pm_disable(void *data)
{ … }
static int uio_dmem_genirq_probe(struct platform_device *pdev)
{ … }
static int uio_dmem_genirq_runtime_nop(struct device *dev)
{ … }
static const struct dev_pm_ops uio_dmem_genirq_dev_pm_ops = …;
#ifdef CONFIG_OF
static const struct of_device_id uio_of_genirq_match[] = …;
MODULE_DEVICE_TABLE(of, uio_of_genirq_match);
#endif
static struct platform_driver uio_dmem_genirq = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS(…) …;