#include <linux/platform_device.h>
#include <linux/module.h>
#include <linux/serio.h>
#include <linux/errno.h>
#include <linux/interrupt.h>
#include <linux/of.h>
#include <linux/of_irq.h>
#include <linux/device.h>
#include <linux/delay.h>
#include <linux/err.h>
#include <linux/slab.h>
#include <linux/string.h>
#include <linux/kernel.h>
#include <linux/io.h>
struct apbps2_regs { … };
#define APBPS2_STATUS_DR …
#define APBPS2_STATUS_PE …
#define APBPS2_STATUS_FE …
#define APBPS2_STATUS_KI …
#define APBPS2_STATUS_RF …
#define APBPS2_STATUS_TF …
#define APBPS2_STATUS_TCNT …
#define APBPS2_STATUS_RCNT …
#define APBPS2_CTRL_RE …
#define APBPS2_CTRL_TE …
#define APBPS2_CTRL_RI …
#define APBPS2_CTRL_TI …
struct apbps2_priv { … };
static int apbps2_idx;
static irqreturn_t apbps2_isr(int irq, void *dev_id)
{ … }
static int apbps2_write(struct serio *io, unsigned char val)
{ … }
static int apbps2_open(struct serio *io)
{ … }
static void apbps2_close(struct serio *io)
{ … }
static int apbps2_of_probe(struct platform_device *ofdev)
{ … }
static void apbps2_of_remove(struct platform_device *of_dev)
{ … }
static const struct of_device_id apbps2_of_match[] = …;
MODULE_DEVICE_TABLE(of, apbps2_of_match);
static struct platform_driver apbps2_of_driver = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;