#include <linux/acpi.h>
#include <linux/dmi.h>
#include <linux/hwmon.h>
#include <linux/init.h>
#include <linux/jiffies.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/units.h>
#include <linux/wmi.h>
#define ASUSWMI_MONITORING_GUID …
#define ASUSWMI_METHODID_GET_VALUE …
#define ASUSWMI_METHODID_UPDATE_BUFFER …
#define ASUSWMI_METHODID_GET_INFO …
#define ASUSWMI_METHODID_GET_NUMBER …
#define ASUSWMI_METHODID_GET_VERSION …
#define ASUS_WMI_MAX_STR_SIZE …
#define DMI_EXACT_MATCH_ASUS_BOARD_NAME(name) …
static const struct dmi_system_id asus_wmi_dmi_table[] = …;
MODULE_DEVICE_TABLE(dmi, asus_wmi_dmi_table);
enum asus_wmi_sensor_class { … };
enum asus_wmi_location { … };
enum asus_wmi_type { … };
enum asus_wmi_source { … };
static enum hwmon_sensor_types asus_data_types[] = …;
static u32 hwmon_attributes[hwmon_max] = …;
struct asus_wmi_sensor_info { … };
struct asus_wmi_wmi_info { … };
struct asus_wmi_sensors { … };
static int asus_wmi_call_method(u32 method_id, u32 *args, struct acpi_buffer *output)
{ … }
static int asus_wmi_get_version(u32 *version)
{ … }
static int asus_wmi_get_item_count(u32 *count)
{ … }
static int asus_wmi_hwmon_add_chan_info(struct hwmon_channel_info *asus_wmi_hwmon_chan,
struct device *dev, int num,
enum hwmon_sensor_types type, u32 config)
{ … }
static int asus_wmi_sensor_info(int index, struct asus_wmi_sensor_info *s)
{ … }
static int asus_wmi_update_buffer(int source)
{ … }
static int asus_wmi_get_sensor_value(u8 index, long *value)
{ … }
static int asus_wmi_update_values_for_source(u8 source, struct asus_wmi_sensors *sensor_data)
{ … }
static int asus_wmi_scale_sensor_value(u32 value, int data_type)
{ … }
static int asus_wmi_get_cached_value_or_update(const struct asus_wmi_sensor_info *sensor,
struct asus_wmi_sensors *sensor_data,
u32 *value)
{ … }
static int asus_wmi_hwmon_read(struct device *dev, enum hwmon_sensor_types type,
u32 attr, int channel, long *val)
{ … }
static int asus_wmi_hwmon_read_string(struct device *dev,
enum hwmon_sensor_types type, u32 attr,
int channel, const char **str)
{ … }
static umode_t asus_wmi_hwmon_is_visible(const void *drvdata,
enum hwmon_sensor_types type, u32 attr,
int channel)
{ … }
static const struct hwmon_ops asus_wmi_hwmon_ops = …;
static struct hwmon_chip_info asus_wmi_chip_info = …;
static int asus_wmi_configure_sensor_setup(struct device *dev,
struct asus_wmi_sensors *sensor_data)
{ … }
static int asus_wmi_probe(struct wmi_device *wdev, const void *context)
{ … }
static const struct wmi_device_id asus_wmi_id_table[] = …;
static struct wmi_driver asus_sensors_wmi_driver = …;
module_wmi_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;