diff options
author | Jean Delvare <khali@linux-fr.org> | 2010-10-28 18:31:48 (GMT) |
---|---|---|
committer | Jean Delvare <khali@endymion.delvare> | 2010-10-28 18:31:48 (GMT) |
commit | 2ae61de90545fe3dadae8119181c430d89a8627b (patch) | |
tree | 9a2aa7cc29674089dd9cc202050d61c95f559407 /drivers/hwmon | |
parent | 0d7237bfd13a0a8df270654223c15a16b368a3bd (diff) | |
download | linux-2ae61de90545fe3dadae8119181c430d89a8627b.tar.xz |
hwmon: (w83795) Delay reading limit registers
Wait until we need the limit register values, instead of pre-reading
them. This saves 544 ms on modprobe on my test system. Obviously this
time is added when first running "sensors" or any other monitoring
application, but I think it is better than slowing down the boot.
Signed-off-by: Jean Delvare <khali@linux-fr.org>
Diffstat (limited to 'drivers/hwmon')
-rw-r--r-- | drivers/hwmon/w83795.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/hwmon/w83795.c b/drivers/hwmon/w83795.c index 511bced..6464a52 100644 --- a/drivers/hwmon/w83795.c +++ b/drivers/hwmon/w83795.c @@ -371,6 +371,7 @@ struct w83795_data { u8 beeps[6]; /* Register value */ char valid; + char valid_limits; }; /* @@ -498,6 +499,8 @@ static void w83795_update_limits(struct i2c_client *client) /* Read beep settings */ for (i = 0; i < ARRAY_SIZE(data->beeps); i++) data->beeps[i] = w83795_read(client, W83795_REG_BEEP(i)); + + data->valid_limits = 1; } static void w83795_update_pwm_config(struct i2c_client *client) @@ -564,6 +567,9 @@ static struct w83795_data *w83795_update_device(struct device *dev) mutex_lock(&data->update_lock); + if (!data->valid_limits) + w83795_update_limits(client); + if (!(time_after(jiffies, data->last_updated + HZ * 2) || !data->valid)) goto END; @@ -2017,7 +2023,6 @@ static int w83795_probe(struct i2c_client *client, } data->has_gain = w83795_read(client, W83795_REG_VMIGB_CTRL) & 0x0f; - w83795_update_limits(client); /* pwm and smart fan */ if (data->chip_type == w83795g) |