#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/usb/input.h>
struct atp_info { … };
static void atp_complete_geyser_1_2(struct urb *urb);
static void atp_complete_geyser_3_4(struct urb *urb);
static const struct atp_info fountain_info = …;
static const struct atp_info geyser1_info = …;
static const struct atp_info geyser2_info = …;
static const struct atp_info geyser3_info = …;
static const struct atp_info geyser4_info = …;
#define ATP_DEVICE(prod, info) …
static const struct usb_device_id atp_table[] = …;
MODULE_DEVICE_TABLE(usb, atp_table);
#define ATP_XSENSORS …
#define ATP_YSENSORS …
#define ATP_SMOOTHSIZE …
#define ATP_PRESSURE …
#define ATP_THRESHOLD …
#define ATP_SCALE …
#define ATP_GEYSER_MODE_READ_REQUEST_ID …
#define ATP_GEYSER_MODE_WRITE_REQUEST_ID …
#define ATP_GEYSER_MODE_REQUEST_VALUE …
#define ATP_GEYSER_MODE_REQUEST_INDEX …
#define ATP_GEYSER_MODE_VENDOR_VALUE …
enum atp_status_bits { … };
struct atp { … };
#define dbg_dump(msg, tab) …
#define dprintk(format, a...) …
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
static int threshold = …;
module_param(threshold, int, 0644);
MODULE_PARM_DESC(…) …;
static int debug;
module_param(debug, int, 0644);
MODULE_PARM_DESC(…) …;
static int atp_geyser_init(struct atp *dev)
{ … }
static void atp_reinit(struct work_struct *work)
{ … }
static int atp_calculate_abs(struct atp *dev, int offset, int nb_sensors,
int fact, int *z, int *fingers)
{ … }
static inline void atp_report_fingers(struct input_dev *input, int fingers)
{ … }
#define ATP_URB_STATUS_SUCCESS …
#define ATP_URB_STATUS_ERROR …
#define ATP_URB_STATUS_ERROR_FATAL …
static int atp_status_check(struct urb *urb)
{ … }
static void atp_detect_size(struct atp *dev)
{ … }
static void atp_complete_geyser_1_2(struct urb *urb)
{ … }
static void atp_complete_geyser_3_4(struct urb *urb)
{ … }
static int atp_open(struct input_dev *input)
{ … }
static void atp_close(struct input_dev *input)
{ … }
static int atp_handle_geyser(struct atp *dev)
{ … }
static int atp_probe(struct usb_interface *iface,
const struct usb_device_id *id)
{ … }
static void atp_disconnect(struct usb_interface *iface)
{ … }
static int atp_recover(struct atp *dev)
{ … }
static int atp_suspend(struct usb_interface *iface, pm_message_t message)
{ … }
static int atp_resume(struct usb_interface *iface)
{ … }
static int atp_reset_resume(struct usb_interface *iface)
{ … }
static struct usb_driver atp_driver = …;
module_usb_driver(…) …;