diff options
author | David Yu <davyu@nvidia.com> | 2013-09-08 12:20:36 +0900 |
---|---|---|
committer | Gabby Lee <galee@nvidia.com> | 2013-09-09 19:22:22 -0700 |
commit | 7fe774334a1a255fbc37710a89b6f2656a3881d2 (patch) | |
tree | 48542a1d42b826c010ac5ebf607ac00684864b51 /drivers | |
parent | 1b1a734c164a306cf240c39d9873f4d07cf9dcf3 (diff) |
input: misc: mpu: fix nvi_pwr_mgmt_1_war
Interrupt is not generated after nvi_accl_enable intermittently.
Not reading i2c after i2c write failure fixes the issue.
Bug 1362994
Change-Id: Icf97b39e740f14d8d76519116e73a38c7f08eed0
Signed-off-by: David Yu <davyu@nvidia.com>
Reviewed-on: http://git-master/r/271849
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Erik Lilliebjerg <elilliebjerg@nvidia.com>
Reviewed-by: Robert Collins <rcollins@nvidia.com>
Reviewed-by: Gabby Lee <galee@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/input/misc/mpu/inv_gyro.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/input/misc/mpu/inv_gyro.c b/drivers/input/misc/mpu/inv_gyro.c index f8322beb23b9..34ec3a52c6cd 100644 --- a/drivers/input/misc/mpu/inv_gyro.c +++ b/drivers/input/misc/mpu/inv_gyro.c @@ -683,12 +683,13 @@ static int nvi_pwr_mgmt_1_war(struct inv_gyro_state_s *inf) int err; for (i = 0; i < POWER_UP_TIME; i++) { - inv_i2c_single_write(inf, inf->reg->pwr_mgmt_1, 0); - val = -1; - err = inv_i2c_read(inf, inf->reg->pwr_mgmt_1, 1, &val); - if (!val) - break; - + err = inv_i2c_single_write(inf, inf->reg->pwr_mgmt_1, 0); + if (err > 0) { + val = -1; + err = inv_i2c_read(inf, inf->reg->pwr_mgmt_1, 1, &val); + if (err > 0 && !val) + break; + } mdelay(1); } inf->hw.pwr_mgmt_1 = val; |