]> Pileus Git - ~andy/linux/blobdiff - drivers/w1/w1_io.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux...
[~andy/linux] / drivers / w1 / w1_io.c
index 765b37b62a4f608ceb062630ebae1afc6c5448fa..3135b2c63998c27b57cb8e1c56a563e8bb75751c 100644 (file)
@@ -158,13 +158,18 @@ EXPORT_SYMBOL_GPL(w1_write_8);
 static u8 w1_read_bit(struct w1_master *dev)
 {
        int result;
+       unsigned long flags;
 
+       /* sample timing is critical here */
+       local_irq_save(flags);
        dev->bus_master->write_bit(dev->bus_master->data, 0);
        w1_delay(6);
        dev->bus_master->write_bit(dev->bus_master->data, 1);
        w1_delay(9);
 
        result = dev->bus_master->read_bit(dev->bus_master->data);
+       local_irq_restore(flags);
+
        w1_delay(55);
 
        return result & 0x1;