diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-23 18:51:32 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-23 18:51:32 -0500 |
commit | b6585dedac232ca79fe978d97a95fdaa6da24f66 (patch) | |
tree | 4d2d78300bb9bcfb40cb35450f78dd3af82c78d3 /drivers/hwmon/max1619.c | |
parent | a3ea9b584ed2acdeae817f0dc91a5880e0828a05 (diff) | |
parent | ded2b66615613093eeb83b81499bc270de8fc499 (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/i2c-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/i2c-2.6: (36 commits)
[PATCH] hwmon: add required idr locking
[PATCH] I2C: hwmon: Rename register parameters
[PATCH] I2C: Drop unneeded i2c-dev.h includes
[PATCH] I2C: i2c-ixp4xx: Add hwmon class
[PATCH] I2C: i2c-piix4: Add Broadcom HT-1000 support
[PATCH] I2C: i2c-amd756-s4882: Improve static mutex initialization
[PATCH] I2C: i2c-ali1535: Drop redundant mutex
[PATCH] i2c: Cleanup isp1301_omap
[PATCH] i2c: Fix i2c-ite name initialization
[PATCH] i2c: Drop the i2c-frodo bus driver
[PATCH] i2c: Optimize core_lists mutex usage
[PATCH] w83781d: Don't reset the chip by default
[PATCH] w83781d: Document the alarm and beep bits
[PATCH] w83627ehf: Refactor the sysfs interface
[PATCH] hwmon: Support the Pentium M VID code
[PATCH] hwmon: Add support for the Winbond W83687THF
[PATCH] hwmon: f71805f semaphore to mutex conversions
[PATCH] hwmon: Semaphore to mutex conversions
[PATCH] i2c: Semaphore to mutex conversions, part 3
[PATCH] i2c: Semaphore to mutex conversions, part 2
...
Diffstat (limited to 'drivers/hwmon/max1619.c')
-rw-r--r-- | drivers/hwmon/max1619.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/hwmon/max1619.c b/drivers/hwmon/max1619.c index 3abe330b22ce..b4135b5971f4 100644 --- a/drivers/hwmon/max1619.c +++ b/drivers/hwmon/max1619.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <linux/i2c.h> | 33 | #include <linux/i2c.h> |
34 | #include <linux/hwmon.h> | 34 | #include <linux/hwmon.h> |
35 | #include <linux/err.h> | 35 | #include <linux/err.h> |
36 | #include <linux/mutex.h> | ||
36 | 37 | ||
37 | static unsigned short normal_i2c[] = { 0x18, 0x19, 0x1a, | 38 | static unsigned short normal_i2c[] = { 0x18, 0x19, 0x1a, |
38 | 0x29, 0x2a, 0x2b, | 39 | 0x29, 0x2a, 0x2b, |
@@ -104,7 +105,7 @@ static struct i2c_driver max1619_driver = { | |||
104 | struct max1619_data { | 105 | struct max1619_data { |
105 | struct i2c_client client; | 106 | struct i2c_client client; |
106 | struct class_device *class_dev; | 107 | struct class_device *class_dev; |
107 | struct semaphore update_lock; | 108 | struct mutex update_lock; |
108 | char valid; /* zero until following fields are valid */ | 109 | char valid; /* zero until following fields are valid */ |
109 | unsigned long last_updated; /* in jiffies */ | 110 | unsigned long last_updated; /* in jiffies */ |
110 | 111 | ||
@@ -141,10 +142,10 @@ static ssize_t set_##value(struct device *dev, struct device_attribute *attr, co | |||
141 | struct max1619_data *data = i2c_get_clientdata(client); \ | 142 | struct max1619_data *data = i2c_get_clientdata(client); \ |
142 | long val = simple_strtol(buf, NULL, 10); \ | 143 | long val = simple_strtol(buf, NULL, 10); \ |
143 | \ | 144 | \ |
144 | down(&data->update_lock); \ | 145 | mutex_lock(&data->update_lock); \ |
145 | data->value = TEMP_TO_REG(val); \ | 146 | data->value = TEMP_TO_REG(val); \ |
146 | i2c_smbus_write_byte_data(client, reg, data->value); \ | 147 | i2c_smbus_write_byte_data(client, reg, data->value); \ |
147 | up(&data->update_lock); \ | 148 | mutex_unlock(&data->update_lock); \ |
148 | return count; \ | 149 | return count; \ |
149 | } | 150 | } |
150 | 151 | ||
@@ -262,7 +263,7 @@ static int max1619_detect(struct i2c_adapter *adapter, int address, int kind) | |||
262 | /* We can fill in the remaining client fields */ | 263 | /* We can fill in the remaining client fields */ |
263 | strlcpy(new_client->name, name, I2C_NAME_SIZE); | 264 | strlcpy(new_client->name, name, I2C_NAME_SIZE); |
264 | data->valid = 0; | 265 | data->valid = 0; |
265 | init_MUTEX(&data->update_lock); | 266 | mutex_init(&data->update_lock); |
266 | 267 | ||
267 | /* Tell the I2C layer a new client has arrived */ | 268 | /* Tell the I2C layer a new client has arrived */ |
268 | if ((err = i2c_attach_client(new_client))) | 269 | if ((err = i2c_attach_client(new_client))) |
@@ -330,7 +331,7 @@ static struct max1619_data *max1619_update_device(struct device *dev) | |||
330 | struct i2c_client *client = to_i2c_client(dev); | 331 | struct i2c_client *client = to_i2c_client(dev); |
331 | struct max1619_data *data = i2c_get_clientdata(client); | 332 | struct max1619_data *data = i2c_get_clientdata(client); |
332 | 333 | ||
333 | down(&data->update_lock); | 334 | mutex_lock(&data->update_lock); |
334 | 335 | ||
335 | if (time_after(jiffies, data->last_updated + HZ * 2) || !data->valid) { | 336 | if (time_after(jiffies, data->last_updated + HZ * 2) || !data->valid) { |
336 | dev_dbg(&client->dev, "Updating max1619 data.\n"); | 337 | dev_dbg(&client->dev, "Updating max1619 data.\n"); |
@@ -353,7 +354,7 @@ static struct max1619_data *max1619_update_device(struct device *dev) | |||
353 | data->valid = 1; | 354 | data->valid = 1; |
354 | } | 355 | } |
355 | 356 | ||
356 | up(&data->update_lock); | 357 | mutex_unlock(&data->update_lock); |
357 | 358 | ||
358 | return data; | 359 | return data; |
359 | } | 360 | } |