summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2010-10-18 19:09:26 +0530
committerVarun Colbert <vcolbert@nvidia.com>2010-10-19 17:10:58 -0700
commitb5ec7cc7a010e333f63eac4e9ff605cb51361bfd (patch)
treede3b88c9db7eee6e3f634e8ac5c5a39e0b53fc7a /arch
parentb3c5b3ae3c492dcfc49dc1a7265b801398565d3b (diff)
[arm/tegra] kbc: Adding scanning timeout configuration.
Keyboard controller goes to continuous polling mode from wakeup mode if any key is pressed and stay for hw default to 5 second. This parameter was not configurable from odm. It is require to configure this parameter from odm based on platform. Adding support for keeping this time as configurable. The default time still be 5 second if it is not configured from odm. Change-Id: I0fc11cc2a2d64db33b00c048f87081b6181354fa Reviewed-on: http://git-master/r/8644 Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com> Tested-by: Laxman Dewangan <ldewangan@nvidia.com> Reviewed-by: Chun-Hung (Alex) Wu <chuwu@nvidia.com> Tested-by: Chun-Hung (Alex) Wu <chuwu@nvidia.com> Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Reviewed-by: Varun Colbert <vcolbert@nvidia.com> Tested-by: Varun Colbert <vcolbert@nvidia.com>
Diffstat (limited to 'arch')
-rwxr-xr-xarch/arm/mach-tegra/board-nvodm.c10
-rw-r--r--arch/arm/mach-tegra/include/mach/kbc.h3
-rw-r--r--arch/arm/mach-tegra/include/nvodm_query_kbc.h3
3 files changed, 16 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/board-nvodm.c b/arch/arm/mach-tegra/board-nvodm.c
index 1e93c42b4f7d..16adcb6f8ea1 100755
--- a/arch/arm/mach-tegra/board-nvodm.c
+++ b/arch/arm/mach-tegra/board-nvodm.c
@@ -753,8 +753,18 @@ static noinline void __init tegra_setup_kbc(void)
/* debounce time is reported from ODM in terms of clock ticks. */
pdata->debounce_cnt = temp;
+ /* Get the scanning timeout in terms of MilliSeconds.*/
+ temp = 0;
+ NvOdmKbcGetParameter(NvOdmKbcParameter_KeyScanTimeout, 1, &temp);
+ /* If value is 0 then set it to 5 second as default */
+ if (!temp)
+ temp = 5000;
+ /* Convert Milliseconds to clock count of 32Kz */
+ pdata->scan_timeout_cnt = temp*32;
+
/* repeat cycle is reported from ODM in milliseconds,
* but needs to be specified in 32KHz ticks */
+ temp = 0;
NvOdmKbcGetParameter(NvOdmKbcParameter_RepeatCycleTime, 1, &temp);
pdata->repeat_cnt = temp * 32;
diff --git a/arch/arm/mach-tegra/include/mach/kbc.h b/arch/arm/mach-tegra/include/mach/kbc.h
index 83810aef2612..ab2ee0a879b8 100644
--- a/arch/arm/mach-tegra/include/mach/kbc.h
+++ b/arch/arm/mach-tegra/include/mach/kbc.h
@@ -52,6 +52,9 @@ struct tegra_kbc_wake_key {
struct tegra_kbc_plat {
unsigned int debounce_cnt;
unsigned int repeat_cnt;
+ /* Number of clock count (32KHz) to keep scanning of key after
+ * Key is pressed. */
+ unsigned int scan_timeout_cnt;
int wake_cnt; /* 0:wake on any key >1:wake on wake_cfg */
struct tegra_kbc_pin_cfg pin_cfg[KBC_MAX_GPIO];
struct tegra_kbc_wake_key *wake_cfg;
diff --git a/arch/arm/mach-tegra/include/nvodm_query_kbc.h b/arch/arm/mach-tegra/include/nvodm_query_kbc.h
index f8078961978e..08ea045b2ff6 100644
--- a/arch/arm/mach-tegra/include/nvodm_query_kbc.h
+++ b/arch/arm/mach-tegra/include/nvodm_query_kbc.h
@@ -62,6 +62,9 @@ typedef enum
NvOdmKbcParameter_NumOfColumns,
NvOdmKbcParameter_DebounceTime,
NvOdmKbcParameter_RepeatCycleTime,
+ /* Amount of time in MilliSecond to continue the scanning of key
+ * once key is pressed. */
+ NvOdmKbcParameter_KeyScanTimeout,
NvOdmKbcParameter_Force32 = 0x7FFFFFFF
} NvOdmKbcParameter;