mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-19 10:44:14 +08:00
hwmon: (max6650) Cache alarm_en register
The alarm_en register is read each time the is_visible function is called. Since it is a configuration register, this is completely unnecessary. Read it once and cache its value. Cc: Jean-Francois Dagenais <jeff.dagenais@gmail.com> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
parent
bf8c9edaa5
commit
f5b20b11bb
@ -114,6 +114,7 @@ struct max6650_data {
|
|||||||
u8 count;
|
u8 count;
|
||||||
u8 dac;
|
u8 dac;
|
||||||
u8 alarm;
|
u8 alarm;
|
||||||
|
u8 alarm_en;
|
||||||
unsigned long cooling_dev_state;
|
unsigned long cooling_dev_state;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -545,8 +546,6 @@ static umode_t max6650_attrs_visible(struct kobject *kobj, struct attribute *a,
|
|||||||
{
|
{
|
||||||
struct device *dev = container_of(kobj, struct device, kobj);
|
struct device *dev = container_of(kobj, struct device, kobj);
|
||||||
struct max6650_data *data = dev_get_drvdata(dev);
|
struct max6650_data *data = dev_get_drvdata(dev);
|
||||||
struct i2c_client *client = data->client;
|
|
||||||
u8 alarm_en = i2c_smbus_read_byte_data(client, MAX6650_REG_ALARM_EN);
|
|
||||||
struct device_attribute *devattr;
|
struct device_attribute *devattr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -559,7 +558,7 @@ static umode_t max6650_attrs_visible(struct kobject *kobj, struct attribute *a,
|
|||||||
|| devattr == &sensor_dev_attr_fan1_fault.dev_attr
|
|| devattr == &sensor_dev_attr_fan1_fault.dev_attr
|
||||||
|| devattr == &sensor_dev_attr_gpio1_alarm.dev_attr
|
|| devattr == &sensor_dev_attr_gpio1_alarm.dev_attr
|
||||||
|| devattr == &sensor_dev_attr_gpio2_alarm.dev_attr) {
|
|| devattr == &sensor_dev_attr_gpio2_alarm.dev_attr) {
|
||||||
if (!(alarm_en & to_sensor_dev_attr(devattr)->index))
|
if (!(data->alarm_en & to_sensor_dev_attr(devattr)->index))
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -682,6 +681,13 @@ static int max6650_init_client(struct max6650_data *data,
|
|||||||
}
|
}
|
||||||
data->count = reg;
|
data->count = reg;
|
||||||
|
|
||||||
|
reg = i2c_smbus_read_byte_data(client, MAX6650_REG_ALARM_EN);
|
||||||
|
if (reg < 0) {
|
||||||
|
dev_err(dev, "Failed to read alarm configuration, aborting.\n");
|
||||||
|
return reg;
|
||||||
|
}
|
||||||
|
data->alarm_en = reg;
|
||||||
|
|
||||||
if (!of_property_read_u32(client->dev.of_node, "maxim,fan-target-rpm",
|
if (!of_property_read_u32(client->dev.of_node, "maxim,fan-target-rpm",
|
||||||
&target_rpm)) {
|
&target_rpm)) {
|
||||||
max6650_set_target(data, target_rpm);
|
max6650_set_target(data, target_rpm);
|
||||||
|
Loading…
Reference in New Issue
Block a user