W1: split master mutex to avoid deadlocks.
[pandora-kernel.git] / drivers / w1 / slaves / w1_ds2781.c
index 0d0c798..877daf7 100644 (file)
@@ -58,30 +58,16 @@ int w1_ds2781_io(struct device *dev, char *buf, int addr, size_t count,
        if (!dev)
                return -ENODEV;
 
-       mutex_lock(&sl->master->mutex);
+       mutex_lock(&sl->master->bus_mutex);
 
        ret = w1_ds2781_do_io(dev, buf, addr, count, io);
 
-       mutex_unlock(&sl->master->mutex);
+       mutex_unlock(&sl->master->bus_mutex);
 
        return ret;
 }
 EXPORT_SYMBOL(w1_ds2781_io);
 
-int w1_ds2781_io_nolock(struct device *dev, char *buf, int addr, size_t count,
-                       int io)
-{
-       int ret;
-
-       if (!dev)
-               return -ENODEV;
-
-       ret = w1_ds2781_do_io(dev, buf, addr, count, io);
-
-       return ret;
-}
-EXPORT_SYMBOL(w1_ds2781_io_nolock);
-
 int w1_ds2781_eeprom_cmd(struct device *dev, int addr, int cmd)
 {
        struct w1_slave *sl = container_of(dev, struct w1_slave, dev);
@@ -89,14 +75,14 @@ int w1_ds2781_eeprom_cmd(struct device *dev, int addr, int cmd)
        if (!dev)
                return -EINVAL;
 
-       mutex_lock(&sl->master->mutex);
+       mutex_lock(&sl->master->bus_mutex);
 
        if (w1_reset_select_slave(sl) == 0) {
                w1_write_8(sl->master, cmd);
                w1_write_8(sl->master, addr);
        }
 
-       mutex_unlock(&sl->master->mutex);
+       mutex_unlock(&sl->master->bus_mutex);
        return 0;
 }
 EXPORT_SYMBOL(w1_ds2781_eeprom_cmd);