summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/odm_kit/query
diff options
context:
space:
mode:
authorSachin Nikam <snikam@nvidia.com>2010-04-05 15:38:03 +0530
committerGary King <gking@nvidia.com>2010-04-05 20:29:46 -0700
commit6dbb4916287e842f3e8541a980e30ee0cc9479b4 (patch)
treeaf080feed52db654296f1098cc0c7467e6bbbcc0 /arch/arm/mach-tegra/odm_kit/query
parent27f64e9323656140b969d0f77cc2b898e8929a75 (diff)
nvec_battery:Handling critical battery condition
1. nvec.h:Correcting enum ordering for NvEcBatterySubtype as per ECI specs. NvEcBatterySubtype_SetRemainingCapacityAlarm and NvEcBatterySubtype_GetRemainingCapacityAlar >> Verified 2. Registering interrupt for LOW_BAT# from T20 pinmux table:- GPIO interrupt for Low battery on port w and pin 3 >> Already verified on Wince. On Android when 0% power is left device is shutdown. Harmony has this setting around 9.3V which is less when the battery is at 0%. 3. Enabling LOW_BAT# as a wakeup source 11 from suspend >> As point no. 2 is wokring this should also work. This is not verfied as in suspend battery discharge is slow. 4. Enabling Low capacity alarm as a wakeup source suspend >> As remaining capacity alarm is working this should also work. This is not verfied as in suspend battery discharge is slow. 5. Setting the 10% of Design capacit as threshold for Remaining capacity alaram event. >> Verified 6. Adding 4 functions which are needed for EC firmware validation NvOdmBatterySetRemCapacityAlarm NvOdmBatteryGetRemCapacityAlarm NvOdmBatterySetConfiguration NvOdmBatteryGetConfiguration >> Verified 7. Calling kernel_power_off() when device is running on only battery and it is ctitically low to gracefully shutdown the system. >> Verified Tested on harmony + eclair + battery Change-Id: I6f4c8a1866ba63c293813b180cc5b74714aa23cd Reviewed-on: http://git-master/r/976 Reviewed-by: Sachin Nikam <snikam@nvidia.com> Tested-by: Sachin Nikam <snikam@nvidia.com> Tested-by: Bharat Nihalani <bnihalani@nvidia.com> Reviewed-by: Gary King <gking@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/odm_kit/query')
-rw-r--r--arch/arm/mach-tegra/odm_kit/query/harmony/nvodm_query.c2
-rw-r--r--arch/arm/mach-tegra/odm_kit/query/harmony/nvodm_query_gpio.c9
2 files changed, 10 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/odm_kit/query/harmony/nvodm_query.c b/arch/arm/mach-tegra/odm_kit/query/harmony/nvodm_query.c
index 63116a5d9557..b21a8bd57ed5 100644
--- a/arch/arm/mach-tegra/odm_kit/query/harmony/nvodm_query.c
+++ b/arch/arm/mach-tegra/odm_kit/query/harmony/nvodm_query.c
@@ -305,7 +305,7 @@ static NvOdmWakeupPadInfo s_NvOdmWakeupPadInfo[] =
{NV_FALSE, 8, NvOdmWakeupPadPolarity_AnyEdge}, // Wake Event 8 - gmi_wp_n (MICRO SD_CD)
{NV_FALSE, 9, NvOdmWakeupPadPolarity_High}, // Wake Event 9 - gp3_ps[2] (KB_COL10)
{NV_FALSE, 10, NvOdmWakeupPadPolarity_High}, // Wake Event 10 - gmi_ad21 (Accelerometer_TH/TAP)
- {NV_FALSE, 11, NvOdmWakeupPadPolarity_Low}, // Wake Event 11 - spi2_cs2 (PEN_INT, AUDIO-IRQ)
+ {NV_TRUE, 11, NvOdmWakeupPadPolarity_Low}, // Wake Event 11 - spi2_cs2 (PEN_INT, AUDIO-IRQ, LOW_BAT#)
{NV_FALSE, 12, NvOdmWakeupPadPolarity_Low}, // Wake Event 12 - spi2_cs1 (HEADSET_DET, not used)
{NV_FALSE, 13, NvOdmWakeupPadPolarity_Low}, // Wake Event 13 - sdio1_dat1
{NV_FALSE, 14, NvOdmWakeupPadPolarity_High}, // Wake Event 14 - gp3_pv[6] (WLAN_INT)
diff --git a/arch/arm/mach-tegra/odm_kit/query/harmony/nvodm_query_gpio.c b/arch/arm/mach-tegra/odm_kit/query/harmony/nvodm_query_gpio.c
index 1868bffa7fd7..8d384db176ee 100644
--- a/arch/arm/mach-tegra/odm_kit/query/harmony/nvodm_query_gpio.c
+++ b/arch/arm/mach-tegra/odm_kit/query/harmony/nvodm_query_gpio.c
@@ -153,6 +153,11 @@ static const NvOdmGpioPinInfo s_WakeFromKeyBoard[] = {
{NVODM_PORT('a'), 0, NvOdmGpioPinActiveState_Low} // EC Keyboard Wakeup
};
+static const NvOdmGpioPinInfo s_Battery[] = {
+ // Low Battery
+ {NVODM_PORT('w'), 3, NvOdmGpioPinActiveState_Low},
+};
+
const NvOdmGpioPinInfo *NvOdmQueryGpioPinMap(NvOdmGpioPinGroup Group,
NvU32 Instance, NvU32 *pCount)
{
@@ -224,6 +229,10 @@ const NvOdmGpioPinInfo *NvOdmQueryGpioPinMap(NvOdmGpioPinGroup Group,
*pCount = NVODM_ARRAY_SIZE(s_WakeFromKeyBoard);
return s_WakeFromKeyBoard;
+ case NvOdmGpioPinGroup_Battery:
+ *pCount = NVODM_ARRAY_SIZE(s_Battery);
+ return s_Battery;
+
default:
*pCount = 0;
return NULL;