]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/w1/masters/ds2490.c
W1: ds2490.c simplify and fix ds_touch_bit
[linux-2.6-omap-h63xx.git] / drivers / w1 / masters / ds2490.c
index 1b632d549e790b242920440a624377d7afead906..c4ff70b2c7c4ef40735c06d971ee90686aba307c 100644 (file)
@@ -490,28 +490,15 @@ static int ds_set_pullup(struct ds_device *dev, int delay)
 
 static int ds_touch_bit(struct ds_device *dev, u8 bit, u8 *tbit)
 {
-       int err, count;
+       int err;
        struct ds_status st;
-       u16 value = (COMM_BIT_IO | COMM_IM) | ((bit) ? COMM_D : 0);
-       u16 cmd;
 
-       err = ds_send_control(dev, value, 0);
+       err = ds_send_control(dev, COMM_BIT_IO | COMM_IM | (bit ? COMM_D : 0),
+               0);
        if (err)
                return err;
 
-       count = 0;
-       do {
-               err = ds_wait_status(dev, &st);
-               if (err)
-                       return err;
-
-               cmd = st.command0 | (st.command1 << 8);
-       } while (cmd != value && ++count < 10);
-
-       if (err < 0 || count >= 10) {
-               printk(KERN_ERR "Failed to obtain status.\n");
-               return -EINVAL;
-       }
+       ds_wait_status(dev, &st);
 
        err = ds_recv_data(dev, tbit, sizeof(*tbit));
        if (err < 0)