iio: imu: inv-mpu6050: Fix interrupt pin configuration
authorAdriana Reus <adriana.reus@intel.com>
Fri, 12 Feb 2016 11:44:42 +0000 (13:44 +0200)
committerJonathan Cameron <jic23@kernel.org>
Sat, 13 Feb 2016 20:52:47 +0000 (20:52 +0000)
The select/deselect_bypass duo writes the irq number into the interrupt
configuration register.
If there is a i2c slave device connected to the mpu (eg. a magnetometer)
then this can hinder interrupt delivery for the accelerometer and
gyroscope.
Set this register to the default configuration.

Signed-off-by: Adriana Reus <adriana.reus@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/imu/inv_mpu6050/inv_mpu_core.c
drivers/iio/imu/inv_mpu6050/inv_mpu_iio.h

index 0852b7fa777e91924642221fc5488a722bb33048..1121f4ee2914e4e58295588010c2b6218ad18d7b 100644 (file)
@@ -129,7 +129,7 @@ static int inv_mpu6050_select_bypass(struct i2c_adapter *adap, void *mux_priv,
        if (!ret) {
                st->powerup_count++;
                ret = inv_mpu6050_write_reg_unlocked(st, st->reg->int_pin_cfg,
-                                                    st->client->irq |
+                                                    INV_MPU6050_INT_PIN_CFG |
                                                     INV_MPU6050_BIT_BYPASS_EN);
        }
 write_error:
@@ -147,7 +147,7 @@ static int inv_mpu6050_deselect_bypass(struct i2c_adapter *adap,
        mutex_lock(&indio_dev->mlock);
        /* It doesn't really mattter, if any of the calls fails */
        inv_mpu6050_write_reg_unlocked(st, st->reg->int_pin_cfg,
-                                      st->client->irq);
+                                      INV_MPU6050_INT_PIN_CFG);
        st->powerup_count--;
        if (!st->powerup_count)
                inv_mpu6050_write_reg_unlocked(st, st->reg->pwr_mgmt_1,
index db0a4a2758ab1b5d4bf219aa86e8d4a934b0b0d2..455b99db64ba8a00b748e6c8d9b77a2c77dd9a57 100644 (file)
@@ -185,6 +185,7 @@ struct inv_mpu6050_state {
 
 #define INV_MPU6050_REG_INT_PIN_CFG    0x37
 #define INV_MPU6050_BIT_BYPASS_EN      0x2
+#define INV_MPU6050_INT_PIN_CFG                0
 
 /* init parameters */
 #define INV_MPU6050_INIT_FIFO_RATE           50