summaryrefslogtreecommitdiff
path: root/drivers/misc
diff options
context:
space:
mode:
authorDaniel Solomon <daniels@nvidia.com>2011-11-21 17:33:10 -0800
committerVarun Wadekar <vwadekar@nvidia.com>2011-12-21 12:06:27 +0530
commitb1a7a10921afac1e9af7d02bbd4fac3d2414add7 (patch)
tree8ccce1c0d359aa1c1dfde832b82111a54a93d809 /drivers/misc
parent34e784bd579bc71302562e789925aad71d046d19 (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.c18
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,