summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorDavid Yu <davyu@nvidia.com>2013-09-08 12:20:36 +0900
committerGabby Lee <galee@nvidia.com>2013-09-09 19:22:22 -0700
commit7fe774334a1a255fbc37710a89b6f2656a3881d2 (patch)
tree48542a1d42b826c010ac5ebf607ac00684864b51 /drivers
parent1b1a734c164a306cf240c39d9873f4d07cf9dcf3 (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.c13
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;