tsl2563: fixed bug with disabling interrupts
authorDerek Basehore <dbasehore@chromium.org>
Thu, 4 Oct 2012 23:54:00 +0000 (00:54 +0100)
committerJonathan Cameron <jic23@kernel.org>
Sat, 17 Nov 2012 10:17:24 +0000 (10:17 +0000)
In tsl_2563_write_interrupt_config and tsl2562_remove, interrupts are not
disabled where they should be. This seems to be from a mistake of using |=
instead of &= in 2 lines of code.

Signed-off-by: Derek Basehore <dbasehore@chromium.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/staging/iio/light/tsl2563.c

index 954ca2c172c6414f55088cfb647404f96f8863f3..3f72543b188f504313d1c6cd65032d240f351ec2 100644 (file)
@@ -652,7 +652,7 @@ static int tsl2563_write_interrupt_config(struct iio_dev *indio_dev,
        }
 
        if (!state && (chip->intr & 0x30)) {
-               chip->intr |= ~0x30;
+               chip->intr &= ~0x30;
                ret = i2c_smbus_write_byte_data(chip->client,
                                                TSL2563_CMD | TSL2563_REG_INT,
                                                chip->intr);
@@ -814,7 +814,7 @@ static int __devexit tsl2563_remove(struct i2c_client *client)
        if (!chip->int_enabled)
                cancel_delayed_work(&chip->poweroff_work);
        /* Ensure that interrupts are disabled - then flush any bottom halves */
-       chip->intr |= ~0x30;
+       chip->intr &= ~0x30;
        i2c_smbus_write_byte_data(chip->client, TSL2563_CMD | TSL2563_REG_INT,
                                  chip->intr);
        flush_scheduled_work();