#include <linux/hwmon.h>
#include <linux/err.h>
#include <linux/init.h>
+#include <linux/mutex.h>
#include <asm/io.h>
/* Address is autodetected, there is no default value */
struct smsc47b397_data {
struct i2c_client client;
struct class_device *class_dev;
- struct semaphore lock;
+ struct mutex lock;
- struct semaphore update_lock;
+ struct mutex update_lock;
unsigned long last_updated; /* in jiffies */
int valid;
struct smsc47b397_data *data = i2c_get_clientdata(client);
int res;
- down(&data->lock);
+ mutex_lock(&data->lock);
outb(reg, client->addr);
res = inb_p(client->addr + 1);
- up(&data->lock);
+ mutex_unlock(&data->lock);
return res;
}
struct smsc47b397_data *data = i2c_get_clientdata(client);
int i;
- down(&data->update_lock);
+ mutex_lock(&data->update_lock);
if (time_after(jiffies, data->last_updated + HZ) || !data->valid) {
dev_dbg(&client->dev, "starting device update...\n");
dev_dbg(&client->dev, "... device update complete\n");
}
- up(&data->update_lock);
+ mutex_unlock(&data->update_lock);
return data;
}
new_client = &data->client;
i2c_set_clientdata(new_client, data);
new_client->addr = address;
- init_MUTEX(&data->lock);
+ mutex_init(&data->lock);
new_client->adapter = adapter;
new_client->driver = &smsc47b397_driver;
new_client->flags = 0;
strlcpy(new_client->name, "smsc47b397", I2C_NAME_SIZE);
- init_MUTEX(&data->update_lock);
+ mutex_init(&data->update_lock);
if ((err = i2c_attach_client(new_client)))
goto error_free;