#include <linux/hid.h>
#include <linux/input.h>
#include <linux/module.h>
#include <linux/usb.h>
#include <linux/workqueue.h>
#include "hid-ids.h"
#define ELO_PERIODIC_READ_INTERVAL …
#define ELO_SMARTSET_CMD_TIMEOUT …
#define ELO_FLUSH_SMARTSET_RESPONSES …
#define ELO_SEND_SMARTSET_COMMAND …
#define ELO_GET_SMARTSET_RESPONSE …
#define ELO_DIAG …
#define ELO_SMARTSET_PACKET_SIZE …
struct elo_priv { … };
static struct workqueue_struct *wq;
static bool use_fw_quirk = …;
module_param(use_fw_quirk, bool, S_IRUGO);
MODULE_PARM_DESC(…) …;
static int elo_input_configured(struct hid_device *hdev,
struct hid_input *hidinput)
{ … }
static void elo_process_data(struct input_dev *input, const u8 *data, int size)
{ … }
static int elo_raw_event(struct hid_device *hdev, struct hid_report *report,
u8 *data, int size)
{ … }
static int elo_smartset_send_get(struct usb_device *dev, u8 command,
void *data)
{ … }
static int elo_flush_smartset_responses(struct usb_device *dev)
{ … }
static void elo_work(struct work_struct *work)
{ … }
static bool elo_broken_firmware(struct usb_device *dev)
{ … }
static int elo_probe(struct hid_device *hdev, const struct hid_device_id *id)
{ … }
static void elo_remove(struct hid_device *hdev)
{ … }
static const struct hid_device_id elo_devices[] = …;
MODULE_DEVICE_TABLE(hid, elo_devices);
static struct hid_driver elo_driver = …;
static int __init elo_driver_init(void)
{ … }
module_init(…) …;
static void __exit elo_driver_exit(void)
{ … }
module_exit(elo_driver_exit);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;