#include <asm/unaligned.h>
#include <linux/hid.h>
#include <linux/hwmon.h>
#include <linux/jiffies.h>
#include <linux/module.h>
#define STATUS_REPORT_ID …
#define STATUS_VALIDITY …
static const char *const kraken2_temp_label[] = …;
static const char *const kraken2_fan_label[] = …;
struct kraken2_priv_data { … };
static umode_t kraken2_is_visible(const void *data,
enum hwmon_sensor_types type,
u32 attr, int channel)
{ … }
static int kraken2_read(struct device *dev, enum hwmon_sensor_types type,
u32 attr, int channel, long *val)
{ … }
static int kraken2_read_string(struct device *dev, enum hwmon_sensor_types type,
u32 attr, int channel, const char **str)
{ … }
static const struct hwmon_ops kraken2_hwmon_ops = …;
static const struct hwmon_channel_info * const kraken2_info[] = …;
static const struct hwmon_chip_info kraken2_chip_info = …;
static int kraken2_raw_event(struct hid_device *hdev,
struct hid_report *report, u8 *data, int size)
{ … }
static int kraken2_probe(struct hid_device *hdev,
const struct hid_device_id *id)
{ … }
static void kraken2_remove(struct hid_device *hdev)
{ … }
static const struct hid_device_id kraken2_table[] = …;
MODULE_DEVICE_TABLE(hid, kraken2_table);
static struct hid_driver kraken2_driver = …;
static int __init kraken2_init(void)
{ … }
static void __exit kraken2_exit(void)
{ … }
late_initcall(kraken2_init);
module_exit(kraken2_exit);
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;