diff --git a/[refs] b/[refs] index 26e0257645f4..b33825148b7e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 68a436aec345c2bcd05dbdafae1f5f608ff8f61f +refs/heads/master: 3fd306c85adcde7209281cb663dd8ea247e97cc3 diff --git a/trunk/drivers/w1/w1_io.c b/trunk/drivers/w1/w1_io.c index 765b37b62a4f..3135b2c63998 100644 --- a/trunk/drivers/w1/w1_io.c +++ b/trunk/drivers/w1/w1_io.c @@ -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;