summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVenu Byravarasu <vbyravarasu@nvidia.com>2010-08-10 10:12:05 +0530
committerBharat Nihalani <bnihalani@nvidia.com>2010-08-17 03:16:19 -0700
commita0dab997adbb9ee7163b07a06a87e670dd16e425 (patch)
tree98c56b7395dae812e58049451e9aae8bcc587dca
parent3aa07d834b13113624d1841a3c3a811888591770 (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-xarch/arm/mach-tegra/odm_kit/platform/accelerometer/nvodm_accelerometer_kxtf9.c15
-rw-r--r--drivers/input/misc/tegra_odm_accel.c18
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",
},