#include <linux/kernel.h>
#include <linux/parport.h>
#include <linux/input.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/mutex.h>
#include <linux/slab.h>
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
#define TGFX_MAX_PORTS …
#define TGFX_MAX_DEVICES …
struct tgfx_config { … };
static struct tgfx_config tgfx_cfg[TGFX_MAX_PORTS];
module_param_array_named(…);
MODULE_PARM_DESC(…) …;
module_param_array_named(…);
MODULE_PARM_DESC(…) …;
module_param_array_named(…);
MODULE_PARM_DESC(…) …;
#define TGFX_REFRESH_TIME …
#define TGFX_TRIGGER …
#define TGFX_UP …
#define TGFX_DOWN …
#define TGFX_LEFT …
#define TGFX_RIGHT …
#define TGFX_THUMB …
#define TGFX_THUMB2 …
#define TGFX_TOP …
#define TGFX_TOP2 …
static int tgfx_buttons[] = …;
static struct tgfx { … } *tgfx_base[TGFX_MAX_PORTS];
static void tgfx_timer(struct timer_list *t)
{ … }
static int tgfx_open(struct input_dev *dev)
{ … }
static void tgfx_close(struct input_dev *dev)
{ … }
static void tgfx_attach(struct parport *pp)
{ … }
static void tgfx_detach(struct parport *port)
{ … }
static struct parport_driver tgfx_parport_driver = …;
static int __init tgfx_init(void)
{ … }
static void __exit tgfx_exit(void)
{ … }
module_init(…) …;
module_exit(tgfx_exit);