diff options
author | Venu Byravarasu <vbyravarasu@nvidia.com> | 2010-08-10 10:12:05 +0530 |
---|---|---|
committer | Bharat Nihalani <bnihalani@nvidia.com> | 2010-08-17 03:16:19 -0700 |
commit | a0dab997adbb9ee7163b07a06a87e670dd16e425 (patch) | |
tree | 98c56b7395dae812e58049451e9aae8bcc587dca | |
parent | 3aa07d834b13113624d1841a3c3a811888591770 (diff) |
tegra accelerometer: power management changes
Added suspend and resume functionality to tegra
accelerometer, for supporting LP0 on Ventana
tested on Ventana-C
bug 716080
Change-Id: Ib57b3f2f0d3bec77839f40226f79cd60e222a366
Reviewed-on: http://git-master/r/4836
Tested-by: Venu Byravarasu <vbyravarasu@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
-rwxr-xr-x | arch/arm/mach-tegra/odm_kit/platform/accelerometer/nvodm_accelerometer_kxtf9.c | 15 | ||||
-rw-r--r-- | drivers/input/misc/tegra_odm_accel.c | 18 |
2 files changed, 31 insertions, 2 deletions
diff --git a/arch/arm/mach-tegra/odm_kit/platform/accelerometer/nvodm_accelerometer_kxtf9.c b/arch/arm/mach-tegra/odm_kit/platform/accelerometer/nvodm_accelerometer_kxtf9.c index a1775b4f3e38..1605cbe542d4 100755 --- a/arch/arm/mach-tegra/odm_kit/platform/accelerometer/nvodm_accelerometer_kxtf9.c +++ b/arch/arm/mach-tegra/odm_kit/platform/accelerometer/nvodm_accelerometer_kxtf9.c @@ -400,8 +400,9 @@ static NvBool kxtf9_Init(NvOdmAccelHandle hDevice) #endif #if MOTION_ONLY_ENABLE + // For getting continuous data from accelerometer, set DRDY = 1. //set PC1, RES & WUFE to 1. - RegVal |= 0XE2; // 0xC2; + RegVal |= 0XC2; #endif if(!WRITE_VERIFY(hDevice, kxtf9_CTRL_REG1, RegVal)) goto error; @@ -776,7 +777,17 @@ kxtf9_SetPowerState( NvOdmAccelHandle hDevice, NvOdmAccelPowerType PowerState) { - return NV_TRUE; + if (PowerState == NvOdmAccelPower_Fullrun) + { + NVODMACCELEROMETER_PRINTF(("\nkxtf9: Resume")); + return SetAccelerometerActive(hDevice, NV_TRUE); + + } + else // any other case, set accelerometer to standby. + { + NVODMACCELEROMETER_PRINTF(("\nkxtf9: Suspend")); + return SetAccelerometerActive(hDevice, NV_FALSE); + } } NvBool kxtf9_init(NvOdmAccelHandle* hDevice) diff --git a/drivers/input/misc/tegra_odm_accel.c b/drivers/input/misc/tegra_odm_accel.c index f08cc81b665e..5d7d49dcf402 100644 --- a/drivers/input/misc/tegra_odm_accel.c +++ b/drivers/input/misc/tegra_odm_accel.c @@ -403,9 +403,27 @@ static NvS32 tegra_acc_remove(struct platform_device *pdev) return 0; } +static int tegra_acc_suspend(struct platform_device *pAccel, pm_message_t state) +{ + if (NvOdmAccelSetPowerState(accel_dev->hOdmAcr, NvOdmAccelPower_Standby)) + return 0; + else + return -EIO; +} + +static int tegra_acc_resume(struct platform_device *pAccel) +{ + if (NvOdmAccelSetPowerState(accel_dev->hOdmAcr, NvOdmAccelPower_Fullrun)) + return 0; + else + return -EIO; +} + static struct platform_driver tegra_acc_driver = { .probe = tegra_acc_probe, .remove = tegra_acc_remove, + .suspend = tegra_acc_suspend, + .resume = tegra_acc_resume, .driver = { .name = "tegra_accelerometer", }, |