|
@@ -421,14 +421,17 @@ store_beep_enable(struct device *dev, struct device_attribute *attr,
|
|
|
|
|
|
/* Write any value to clear chassis alarm */
|
|
|
static ssize_t
|
|
|
-store_chassis_clear(struct device *dev,
|
|
|
- struct device_attribute *attr, const char *buf,
|
|
|
- size_t count)
|
|
|
+store_chassis_clear_legacy(struct device *dev,
|
|
|
+ struct device_attribute *attr, const char *buf,
|
|
|
+ size_t count)
|
|
|
{
|
|
|
struct i2c_client *client = to_i2c_client(dev);
|
|
|
struct w83793_data *data = i2c_get_clientdata(client);
|
|
|
u8 val;
|
|
|
|
|
|
+ dev_warn(dev, "Attribute chassis is deprecated, "
|
|
|
+ "use intrusion0_alarm instead\n");
|
|
|
+
|
|
|
mutex_lock(&data->update_lock);
|
|
|
val = w83793_read_value(client, W83793_REG_CLR_CHASSIS);
|
|
|
val |= 0x80;
|
|
@@ -437,6 +440,28 @@ store_chassis_clear(struct device *dev,
|
|
|
return count;
|
|
|
}
|
|
|
|
|
|
+/* Write 0 to clear chassis alarm */
|
|
|
+static ssize_t
|
|
|
+store_chassis_clear(struct device *dev,
|
|
|
+ struct device_attribute *attr, const char *buf,
|
|
|
+ size_t count)
|
|
|
+{
|
|
|
+ struct i2c_client *client = to_i2c_client(dev);
|
|
|
+ struct w83793_data *data = i2c_get_clientdata(client);
|
|
|
+ unsigned long val;
|
|
|
+ u8 reg;
|
|
|
+
|
|
|
+ if (strict_strtoul(buf, 10, &val) || val != 0)
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
+ mutex_lock(&data->update_lock);
|
|
|
+ reg = w83793_read_value(client, W83793_REG_CLR_CHASSIS);
|
|
|
+ w83793_write_value(client, W83793_REG_CLR_CHASSIS, reg | 0x80);
|
|
|
+ data->valid = 0; /* Force cache refresh */
|
|
|
+ mutex_unlock(&data->update_lock);
|
|
|
+ return count;
|
|
|
+}
|
|
|
+
|
|
|
#define FAN_INPUT 0
|
|
|
#define FAN_MIN 1
|
|
|
static ssize_t
|
|
@@ -1102,6 +1127,8 @@ static DEVICE_ATTR(vrm, S_IWUSR | S_IRUGO, show_vrm, store_vrm);
|
|
|
|
|
|
static struct sensor_device_attribute_2 sda_single_files[] = {
|
|
|
SENSOR_ATTR_2(chassis, S_IWUSR | S_IRUGO, show_alarm_beep,
|
|
|
+ store_chassis_clear_legacy, ALARM_STATUS, 30),
|
|
|
+ SENSOR_ATTR_2(intrusion0_alarm, S_IWUSR | S_IRUGO, show_alarm_beep,
|
|
|
store_chassis_clear, ALARM_STATUS, 30),
|
|
|
SENSOR_ATTR_2(beep_enable, S_IWUSR | S_IRUGO, show_beep_enable,
|
|
|
store_beep_enable, NOT_USED, NOT_USED),
|