Skip to content

Commit

Permalink
hwmon: (w83795) Delay reading limit registers
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
Jean Delvare authored and Jean Delvare committed Oct 28, 2010
1 parent 0d7237b commit 2ae61de
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion drivers/hwmon/w83795.c
Original file line number Diff line number Diff line change
Expand Up @@ -371,6 +371,7 @@ struct w83795_data {
u8 beeps[6]; /* Register value */

char valid;
char valid_limits;
};

/*
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit 2ae61de

Please sign in to comment.