hwmon: (adm9240) Implement the standard intrusion detection interface
We have a standard intrusion detection interface now, drivers should implement it. I've left the old interface in place for the time being, with a deprecation warning, it will be removed later. Signed-off-by: Jean Delvare <khali@linux-fr.org> Acked-by: Guenter Roeck <guenter.roeck@ericsson.com>
This commit is contained in:
parent
f790674d3f
commit
0de2b24480
@ -155,7 +155,7 @@ connected to a normally open switch.
|
|||||||
The ADM9240 provides an internal open drain on this line, and may output
|
The ADM9240 provides an internal open drain on this line, and may output
|
||||||
a 20 ms active low pulse to reset an external Chassis Intrusion latch.
|
a 20 ms active low pulse to reset an external Chassis Intrusion latch.
|
||||||
|
|
||||||
Clear the CI latch by writing value 1 to the sysfs chassis_clear file.
|
Clear the CI latch by writing value 0 to the sysfs intrusion0_alarm file.
|
||||||
|
|
||||||
Alarm flags reported as 16-bit word
|
Alarm flags reported as 16-bit word
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
* Alarms 16-bit map of active alarms
|
* Alarms 16-bit map of active alarms
|
||||||
* Analog Out 0..1250 mV output
|
* Analog Out 0..1250 mV output
|
||||||
*
|
*
|
||||||
* Chassis Intrusion: clear CI latch with 'echo 1 > chassis_clear'
|
* Chassis Intrusion: clear CI latch with 'echo 0 > intrusion0_alarm'
|
||||||
*
|
*
|
||||||
* Test hardware: Intel SE440BX-2 desktop motherboard --Grant
|
* Test hardware: Intel SE440BX-2 desktop motherboard --Grant
|
||||||
*
|
*
|
||||||
@ -476,13 +476,16 @@ static ssize_t set_aout(struct device *dev,
|
|||||||
static DEVICE_ATTR(aout_output, S_IRUGO | S_IWUSR, show_aout, set_aout);
|
static DEVICE_ATTR(aout_output, S_IRUGO | S_IWUSR, show_aout, set_aout);
|
||||||
|
|
||||||
/* chassis_clear */
|
/* chassis_clear */
|
||||||
static ssize_t chassis_clear(struct device *dev,
|
static ssize_t chassis_clear_legacy(struct device *dev,
|
||||||
struct device_attribute *attr,
|
struct device_attribute *attr,
|
||||||
const char *buf, size_t count)
|
const char *buf, size_t count)
|
||||||
{
|
{
|
||||||
struct i2c_client *client = to_i2c_client(dev);
|
struct i2c_client *client = to_i2c_client(dev);
|
||||||
unsigned long val = simple_strtol(buf, NULL, 10);
|
unsigned long val = simple_strtol(buf, NULL, 10);
|
||||||
|
|
||||||
|
dev_warn(dev, "Attribute chassis_clear is deprecated, "
|
||||||
|
"use intrusion0_alarm instead\n");
|
||||||
|
|
||||||
if (val == 1) {
|
if (val == 1) {
|
||||||
i2c_smbus_write_byte_data(client,
|
i2c_smbus_write_byte_data(client,
|
||||||
ADM9240_REG_CHASSIS_CLEAR, 0x80);
|
ADM9240_REG_CHASSIS_CLEAR, 0x80);
|
||||||
@ -490,7 +493,29 @@ static ssize_t chassis_clear(struct device *dev,
|
|||||||
}
|
}
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
static DEVICE_ATTR(chassis_clear, S_IWUSR, NULL, chassis_clear);
|
static DEVICE_ATTR(chassis_clear, S_IWUSR, NULL, chassis_clear_legacy);
|
||||||
|
|
||||||
|
static ssize_t chassis_clear(struct device *dev,
|
||||||
|
struct device_attribute *attr,
|
||||||
|
const char *buf, size_t count)
|
||||||
|
{
|
||||||
|
struct i2c_client *client = to_i2c_client(dev);
|
||||||
|
struct adm9240_data *data = i2c_get_clientdata(client);
|
||||||
|
unsigned long val;
|
||||||
|
|
||||||
|
if (strict_strtoul(buf, 10, &val) || val != 0)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
mutex_lock(&data->update_lock);
|
||||||
|
i2c_smbus_write_byte_data(client, ADM9240_REG_CHASSIS_CLEAR, 0x80);
|
||||||
|
data->valid = 0; /* Force cache refresh */
|
||||||
|
mutex_unlock(&data->update_lock);
|
||||||
|
dev_dbg(&client->dev, "chassis intrusion latch cleared\n");
|
||||||
|
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
static SENSOR_DEVICE_ATTR(intrusion0_alarm, S_IRUGO | S_IWUSR, show_alarm,
|
||||||
|
chassis_clear, 12);
|
||||||
|
|
||||||
static struct attribute *adm9240_attributes[] = {
|
static struct attribute *adm9240_attributes[] = {
|
||||||
&sensor_dev_attr_in0_input.dev_attr.attr,
|
&sensor_dev_attr_in0_input.dev_attr.attr,
|
||||||
@ -532,6 +557,7 @@ static struct attribute *adm9240_attributes[] = {
|
|||||||
&dev_attr_alarms.attr,
|
&dev_attr_alarms.attr,
|
||||||
&dev_attr_aout_output.attr,
|
&dev_attr_aout_output.attr,
|
||||||
&dev_attr_chassis_clear.attr,
|
&dev_attr_chassis_clear.attr,
|
||||||
|
&sensor_dev_attr_intrusion0_alarm.dev_attr.attr,
|
||||||
&dev_attr_cpu0_vid.attr,
|
&dev_attr_cpu0_vid.attr,
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user