iio: imu: inv-mpu6050: Fix interrupt pin configuration

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>
This commit is contained in:
Adriana Reus 2016-02-12 13:44:42 +02:00 committed by Jonathan Cameron
parent f836c45922
commit c278ac0ecd
2 changed files with 3 additions and 2 deletions

View File

@ -129,7 +129,7 @@ static int inv_mpu6050_select_bypass(struct i2c_adapter *adap, void *mux_priv,
if (!ret) { if (!ret) {
st->powerup_count++; st->powerup_count++;
ret = inv_mpu6050_write_reg_unlocked(st, st->reg->int_pin_cfg, 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); INV_MPU6050_BIT_BYPASS_EN);
} }
write_error: write_error:
@ -147,7 +147,7 @@ static int inv_mpu6050_deselect_bypass(struct i2c_adapter *adap,
mutex_lock(&indio_dev->mlock); mutex_lock(&indio_dev->mlock);
/* It doesn't really mattter, if any of the calls fails */ /* It doesn't really mattter, if any of the calls fails */
inv_mpu6050_write_reg_unlocked(st, st->reg->int_pin_cfg, inv_mpu6050_write_reg_unlocked(st, st->reg->int_pin_cfg,
st->client->irq); INV_MPU6050_INT_PIN_CFG);
st->powerup_count--; st->powerup_count--;
if (!st->powerup_count) if (!st->powerup_count)
inv_mpu6050_write_reg_unlocked(st, st->reg->pwr_mgmt_1, inv_mpu6050_write_reg_unlocked(st, st->reg->pwr_mgmt_1,

View File

@ -185,6 +185,7 @@ struct inv_mpu6050_state {
#define INV_MPU6050_REG_INT_PIN_CFG 0x37 #define INV_MPU6050_REG_INT_PIN_CFG 0x37
#define INV_MPU6050_BIT_BYPASS_EN 0x2 #define INV_MPU6050_BIT_BYPASS_EN 0x2
#define INV_MPU6050_INT_PIN_CFG 0
/* init parameters */ /* init parameters */
#define INV_MPU6050_INIT_FIFO_RATE 50 #define INV_MPU6050_INIT_FIFO_RATE 50