diff options
author | Daniel Solomon <daniels@nvidia.com> | 2011-11-21 17:33:10 -0800 |
---|---|---|
committer | Varun Wadekar <vwadekar@nvidia.com> | 2011-12-21 12:06:27 +0530 |
commit | b1a7a10921afac1e9af7d02bbd4fac3d2414add7 (patch) | |
tree | 8ccce1c0d359aa1c1dfde832b82111a54a93d809 /drivers/misc | |
parent | 34e784bd579bc71302562e789925aad71d046d19 (diff) |
misc: mpu3050: Allow accelerometer to enter suspend during LP
The KXTF9's control reg PC1 bit was being set for both
suspend and resume config structs in kxtf9_set_odr().
This caused the accelerometer to be turned on during both
suspend and resume.
Bug 902379
Cherry-picked From: http://git-master/r/#change,65983
Signed-off-by: Daniel Solomon <daniels@nvidia.com>
Change-Id: If0a17af5b4538008dbf4d4f8b2d280f8d3981e3f
Reviewed-on: http://git-master/r/69260
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Daniel Solomon <daniels@nvidia.com>
Tested-by: Daniel Solomon <daniels@nvidia.com>
Reviewed-by: Yu-Huan Hsu <yhsu@nvidia.com>
Reviewed-by: Robert Collins <rcollins@nvidia.com>
Diffstat (limited to 'drivers/misc')
-rw-r--r-- | drivers/misc/mpu3050/accel/kxtf9.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/drivers/misc/mpu3050/accel/kxtf9.c b/drivers/misc/mpu3050/accel/kxtf9.c index e2490af1ca77..938cd572a8fd 100644 --- a/drivers/misc/mpu3050/accel/kxtf9.c +++ b/drivers/misc/mpu3050/accel/kxtf9.c @@ -263,9 +263,6 @@ static int kxtf9_set_odr(void *mlsl_handle, bits = 0; } - if (odr != 0) - config->ctrl_reg1 |= 0x80; - config->reg_odr = bits; kxtf9_set_dur(mlsl_handle, pdata, config, apply, config->dur); @@ -498,6 +495,8 @@ static int kxtf9_config(void *mlsl_handle, struct ext_slave_platform_data *pdata, struct ext_slave_config *data) { + int retval; + long odr; struct kxtf9_private_data *private_data = pdata->private_data; if (!data->data) return ML_ERROR_INVALID_PARAMETER; @@ -509,10 +508,15 @@ static int kxtf9_config(void *mlsl_handle, data->apply, *((long *)data->data)); case MPU_SLAVE_CONFIG_ODR_RESUME: - return kxtf9_set_odr(mlsl_handle, pdata, - &private_data->resume, - data->apply, - *((long *)data->data)); + odr = *((long *)data->data); + if (odr != 0) + private_data->resume.ctrl_reg1 |= 0x80; + + retval = kxtf9_set_odr(mlsl_handle, pdata, + &private_data->resume, + data->apply, + odr); + return retval; case MPU_SLAVE_CONFIG_FSR_SUSPEND: return kxtf9_set_fsr(mlsl_handle, pdata, &private_data->suspend, |