#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/ioport.h>
#include <linux/input.h>
#include <linux/pci.h>
#include <linux/slab.h>
#include <linux/serio.h>
#include <linux/delay.h>
#include <asm/io.h>
#define PS2_CTRL …
#define PS2_STATUS …
#define PS2_DATA …
#define PS2_CTRL_CLK …
#define PS2_CTRL_DAT …
#define PS2_CTRL_TXIRQ …
#define PS2_CTRL_ENABLE …
#define PS2_CTRL_RXIRQ …
#define PS2_STAT_CLK …
#define PS2_STAT_DAT …
#define PS2_STAT_PARITY …
#define PS2_STAT_RXFULL …
#define PS2_STAT_TXBUSY …
#define PS2_STAT_TXEMPTY …
struct pcips2_data { … };
static int pcips2_write(struct serio *io, unsigned char val)
{ … }
static irqreturn_t pcips2_interrupt(int irq, void *devid)
{ … }
static void pcips2_flush_input(struct pcips2_data *ps2if)
{ … }
static int pcips2_open(struct serio *io)
{ … }
static void pcips2_close(struct serio *io)
{ … }
static int pcips2_probe(struct pci_dev *dev, const struct pci_device_id *id)
{ … }
static void pcips2_remove(struct pci_dev *dev)
{ … }
static const struct pci_device_id pcips2_ids[] = …;
MODULE_DEVICE_TABLE(pci, pcips2_ids);
static struct pci_driver pcips2_driver = …;
module_pci_driver(…) …;
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;