aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorGuenter Roeck <linux@roeck-us.net>2013-01-26 18:15:37 -0500
committerGuenter Roeck <linux@roeck-us.net>2013-02-06 12:58:04 -0500
commitce603b18f30aea1216a00673a33805d4f5a5e16b (patch)
treed96326369050cf4e63388a07125bd0a9884d3846 /drivers
parentaebcbbfc4955929286a15a04592a2281d3e527db (diff)
hwmon: (pmbus) Add function to clear sensor cache
For PMBus chips, modifying one limit register may affect other limits. Since limits are all cached in the PMBus core driver, related changes are not reflected in reported limits. Introduce function to clear the attribute cache. After calling this function, the core pmbus driver re-reads all cached values. Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/hwmon/pmbus/pmbus.h1
-rw-r--r--drivers/hwmon/pmbus/pmbus_core.c8
2 files changed, 9 insertions, 0 deletions
diff --git a/drivers/hwmon/pmbus/pmbus.h b/drivers/hwmon/pmbus/pmbus.h
index 164d17706486..fa9beb3eb60c 100644
--- a/drivers/hwmon/pmbus/pmbus.h
+++ b/drivers/hwmon/pmbus/pmbus.h
@@ -369,6 +369,7 @@ struct pmbus_driver_info {
369 369
370/* Function declarations */ 370/* Function declarations */
371 371
372void pmbus_clear_cache(struct i2c_client *client);
372int pmbus_set_page(struct i2c_client *client, u8 page); 373int pmbus_set_page(struct i2c_client *client, u8 page);
373int pmbus_read_word_data(struct i2c_client *client, u8 page, u8 reg); 374int pmbus_read_word_data(struct i2c_client *client, u8 page, u8 reg);
374int pmbus_write_word_data(struct i2c_client *client, u8 page, u8 reg, u16 word); 375int pmbus_write_word_data(struct i2c_client *client, u8 page, u8 reg, u16 word);
diff --git a/drivers/hwmon/pmbus/pmbus_core.c b/drivers/hwmon/pmbus/pmbus_core.c
index 3b5c24dd0b75..32f4530cd1e8 100644
--- a/drivers/hwmon/pmbus/pmbus_core.c
+++ b/drivers/hwmon/pmbus/pmbus_core.c
@@ -113,6 +113,14 @@ struct pmbus_data {
113 u8 currpage; 113 u8 currpage;
114}; 114};
115 115
116void pmbus_clear_cache(struct i2c_client *client)
117{
118 struct pmbus_data *data = i2c_get_clientdata(client);
119
120 data->valid = false;
121}
122EXPORT_SYMBOL_GPL(pmbus_clear_cache);
123
116int pmbus_set_page(struct i2c_client *client, u8 page) 124int pmbus_set_page(struct i2c_client *client, u8 page)
117{ 125{
118 struct pmbus_data *data = i2c_get_clientdata(client); 126 struct pmbus_data *data = i2c_get_clientdata(client);