#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/gameport.h>
#include <linux/input.h>
#include <linux/jiffies.h>
#define DRIVER_DESC …
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…);
MODULE_LICENSE(…) …;
#define GRIP_MODE_GPP …
#define GRIP_MODE_BD …
#define GRIP_MODE_XT …
#define GRIP_MODE_DC …
#define GRIP_LENGTH_GPP …
#define GRIP_STROBE_GPP …
#define GRIP_LENGTH_XT …
#define GRIP_STROBE_XT …
#define GRIP_MAX_CHUNKS_XT …
#define GRIP_MAX_BITS_XT …
struct grip { … };
static int grip_btn_gpp[] = …;
static int grip_btn_bd[] = …;
static int grip_btn_xt[] = …;
static int grip_btn_dc[] = …;
static int grip_abs_gpp[] = …;
static int grip_abs_bd[] = …;
static int grip_abs_xt[] = …;
static int grip_abs_dc[] = …;
static char *grip_name[] = …;
static int *grip_abs[] = …;
static int *grip_btn[] = …;
static char grip_anx[] = …;
static char grip_cen[] = …;
static int grip_gpp_read_packet(struct gameport *gameport, int shift, unsigned int *data)
{ … }
static int grip_xt_read_packet(struct gameport *gameport, int shift, unsigned int *data)
{ … }
static void grip_poll(struct gameport *gameport)
{ … }
static int grip_open(struct input_dev *dev)
{ … }
static void grip_close(struct input_dev *dev)
{ … }
static int grip_connect(struct gameport *gameport, struct gameport_driver *drv)
{ … }
static void grip_disconnect(struct gameport *gameport)
{ … }
static struct gameport_driver grip_drv = …;
module_gameport_driver(…) …;