#include <linux/device.h>
#include <linux/hid.h>
#include <linux/kernel.h>
#include <linux/leds.h>
#include <linux/module.h>
#include "hid-ids.h"
#define GT683R_BUFFER_SIZE …
enum gt683r_led_mode { … };
enum gt683r_panels { … };
static const char * const gt683r_panel_names[] = …;
struct gt683r_led { … };
static const struct hid_device_id gt683r_led_id[] = …;
MODULE_DEVICE_TABLE(hid, gt683r_led_id);
static void gt683r_brightness_set(struct led_classdev *led_cdev,
enum led_brightness brightness)
{ … }
static ssize_t mode_show(struct device *dev,
struct device_attribute *attr,
char *buf)
{ … }
static ssize_t mode_store(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t count)
{ … }
static int gt683r_led_snd_msg(struct gt683r_led *led, u8 *msg)
{ … }
static int gt683r_leds_set(struct gt683r_led *led, u8 leds)
{ … }
static int gt683r_mode_set(struct gt683r_led *led, u8 mode)
{ … }
static void gt683r_led_work(struct work_struct *work)
{ … }
static DEVICE_ATTR_RW(mode);
static struct attribute *gt683r_led_attrs[] = …;
static const struct attribute_group gt683r_led_group = …;
static const struct attribute_group *gt683r_led_groups[] = …;
static int gt683r_led_probe(struct hid_device *hdev,
const struct hid_device_id *id)
{ … }
static void gt683r_led_remove(struct hid_device *hdev)
{ … }
static struct hid_driver gt683r_led_driver = …;
module_hid_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;