#define pr_fmt(fmt) …
#include <linux/module.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/jiffies.h>
#include <linux/mutex.h>
#include <linux/err.h>
#include <linux/delay.h>
#include <linux/platform_device.h>
#include <linux/hwmon.h>
#include <linux/hwmon-sysfs.h>
#include <linux/dmi.h>
#include <linux/io.h>
#define ABIT_UGURU3_SETTINGS_BANK …
#define ABIT_UGURU3_SENSORS_BANK …
#define ABIT_UGURU3_MISC_BANK …
#define ABIT_UGURU3_ALARMS_START …
#define ABIT_UGURU3_SETTINGS_START …
#define ABIT_UGURU3_VALUES_START …
#define ABIT_UGURU3_BOARD_ID …
#define ABIT_UGURU3_TEMP_HIGH_ALARM_ENABLE …
#define ABIT_UGURU3_VOLT_HIGH_ALARM_ENABLE …
#define ABIT_UGURU3_VOLT_LOW_ALARM_ENABLE …
#define ABIT_UGURU3_TEMP_HIGH_ALARM_FLAG …
#define ABIT_UGURU3_VOLT_HIGH_ALARM_FLAG …
#define ABIT_UGURU3_VOLT_LOW_ALARM_FLAG …
#define ABIT_UGURU3_FAN_LOW_ALARM_ENABLE …
#define ABIT_UGURU3_BEEP_ENABLE …
#define ABIT_UGURU3_SHUTDOWN_ENABLE …
#define ABIT_UGURU3_IN_SENSOR …
#define ABIT_UGURU3_TEMP_SENSOR …
#define ABIT_UGURU3_FAN_SENSOR …
#define ABIT_UGURU3_WAIT_TIMEOUT …
#define ABIT_UGURU3_SYNCHRONIZE_TIMEOUT …
#define ABIT_UGURU3_NAME …
#define ABIT_UGURU3_DEBUG(format, arg...) …
#define ABIT_UGURU3_MAX_NO_SENSORS …
#define ABIT_UGURU3_IN_NAMES_LENGTH …
#define ABIT_UGURU3_TEMP_NAMES_LENGTH …
#define ABIT_UGURU3_FAN_NAMES_LENGTH …
#define ABIT_UGURU3_SYSFS_NAMES_LENGTH …
#define ABIT_UGURU3_BASE …
#define ABIT_UGURU3_CMD …
#define ABIT_UGURU3_DATA …
#define ABIT_UGURU3_REGION_LENGTH …
#define ABIT_UGURU3_SUCCESS …
#define ABIT_UGURU3_STATUS_READY_FOR_READ …
#define ABIT_UGURU3_STATUS_BUSY …
struct abituguru3_sensor_info { … };
#define ABIT_UGURU3_MAX_DMI_NAMES …
struct abituguru3_motherboard_info { … };
struct abituguru3_data { … };
static const struct abituguru3_motherboard_info abituguru3_motherboards[] = …;
static bool force;
module_param(force, bool, 0);
MODULE_PARM_DESC(…) …;
static bool verbose = …;
module_param(verbose, bool, 0644);
MODULE_PARM_DESC(…) …;
static const char *never_happen = …;
static const char *report_this = …;
static int abituguru3_wait_while_busy(struct abituguru3_data *data)
{ … }
static int abituguru3_wait_for_read(struct abituguru3_data *data)
{ … }
static int abituguru3_synchronize(struct abituguru3_data *data)
{ … }
static int abituguru3_read(struct abituguru3_data *data, u8 bank, u8 offset,
u8 count, u8 *buf)
{ … }
static int abituguru3_read_increment_offset(struct abituguru3_data *data,
u8 bank, u8 offset, u8 count,
u8 *buf, int offset_count)
{ … }
static struct abituguru3_data *abituguru3_update_device(struct device *dev);
static ssize_t show_value(struct device *dev,
struct device_attribute *devattr, char *buf)
{ … }
static ssize_t show_alarm(struct device *dev,
struct device_attribute *devattr, char *buf)
{ … }
static ssize_t show_mask(struct device *dev,
struct device_attribute *devattr, char *buf)
{ … }
static ssize_t show_label(struct device *dev,
struct device_attribute *devattr, char *buf)
{ … }
static ssize_t show_name(struct device *dev,
struct device_attribute *devattr, char *buf)
{ … }
static const
struct sensor_device_attribute_2 abituguru3_sysfs_templ[3][10] = …;
static struct sensor_device_attribute_2 abituguru3_sysfs_attr[] = …;
static int abituguru3_probe(struct platform_device *pdev)
{ … }
static void abituguru3_remove(struct platform_device *pdev)
{ … }
static struct abituguru3_data *abituguru3_update_device(struct device *dev)
{ … }
static int abituguru3_suspend(struct device *dev)
{ … }
static int abituguru3_resume(struct device *dev)
{ … }
static DEFINE_SIMPLE_DEV_PM_OPS(abituguru3_pm, abituguru3_suspend, abituguru3_resume);
static struct platform_driver abituguru3_driver = …;
static int __init abituguru3_dmi_detect(void)
{ … }
static int __init abituguru3_detect(void)
{ … }
static struct platform_device *abituguru3_pdev;
static int __init abituguru3_init(void)
{ … }
static void __exit abituguru3_exit(void)
{ … }
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
module_init(…) …;
module_exit(abituguru3_exit);