summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBharat Nihalani <bnihalani@nvidia.com>2010-06-11 17:17:25 +0530
committerGary King <gking@nvidia.com>2010-06-15 15:39:15 -0700
commitf1a27e645bbdba471dec3c044d5dcc6299698c52 (patch)
tree01ba7eb2ee9fe1f6fe9fa74b81ba381cca371f42
parentc3cda98348e9d9ffa0af9d55ff71adc43f50b84d (diff)
nvec-keyboard: move suspend-resume code to odm
Moved NvEc calls from nvec-keyboard driver to keyboard odm kit where all the remaining communication with NvEc resides. Change-Id: I12c528a7b54a02ccef5129d022934da3476e0fcf Reviewed-on: http://git-master/r/2471 Tested-by: Bharat Nihalani <bnihalani@nvidia.com> Reviewed-by: Varun Wadekar <vwadekar@nvidia.com> Reviewed-by: Gary King <gking@nvidia.com>
-rw-r--r--arch/arm/mach-tegra/odm_kit/platform/keyboard/nvodm_keyboard.c38
-rw-r--r--drivers/input/keyboard/tegra-nvec.c93
2 files changed, 32 insertions, 99 deletions
diff --git a/arch/arm/mach-tegra/odm_kit/platform/keyboard/nvodm_keyboard.c b/arch/arm/mach-tegra/odm_kit/platform/keyboard/nvodm_keyboard.c
index 86ba9cbc6083..81051933f4e0 100644
--- a/arch/arm/mach-tegra/odm_kit/platform/keyboard/nvodm_keyboard.c
+++ b/arch/arm/mach-tegra/odm_kit/platform/keyboard/nvodm_keyboard.c
@@ -47,18 +47,15 @@
#define NVODM_PRINTF(x)
#endif
-// wake from keyboard disabled for now
+// wake from keyboard
#define WAKE_FROM_KEYBOARD 1
-/* command main category */
-#define EC_KBC_COMMAND 0x5
+// enable/disable keyboard scanning in suspend
+#define KEYBOARD_SCANNING_DISABLED_IN_SUSPEND 0
/* number of LEDS on the keyboard */
enum {NUM_OF_LEDS = 3};
-/* Keyboard specific sub-commands */
-#define KBD_RESET_COMMAND 0xFF
-
/* Special Scan Code set 1 codes */
#define SC1_LSHIFT (0x2A)
#define SC1_RSHIFT (0x36)
@@ -468,6 +465,35 @@ NvBool NvOdmKeyboardToggleLights(NvU32 LedId)
NvBool NvOdmKeyboardPowerHandler(NvBool PowerDown)
{
+#if KEYBOARD_SCANNING_DISABLED_IN_SUSPEND
+ NvEcRequest Request = {0};
+ NvEcResponse Response = {0};
+ NvError err = NvError_Success;
+
+ /* disable keyboard scanning */
+ Request.PacketType = NvEcPacketType_Request;
+ Request.RequestType = NvEcRequestResponseType_Keyboard;
+ if (PowerDown)
+ Request.RequestSubtype =
+ (NvEcRequestResponseSubtype)NvEcKeyboardSubtype_Disable;
+ else
+ Request.RequestSubtype =
+ (NvEcRequestResponseSubtype)NvEcKeyboardSubtype_Enable;
+ Request.NumPayloadBytes = 0;
+
+ err = NvEcSendRequest(s_NvEcHandle, &Request, &Response,
+ sizeof(Request),
+ sizeof(Response));
+ if (err != NvError_Success) {
+ NvOsDebugPrintf("%s: scanning enable/disable request send fail\n", __func__);
+ return NV_FALSE;
+ }
+
+ if (Response.Status != NvEcStatus_Success) {
+ NvOsDebugPrintf("%s: scanning could not be enabled/disabled\n", __func__);
+ return NV_FALSE;
+ }
+#endif
return NV_TRUE;
}
diff --git a/drivers/input/keyboard/tegra-nvec.c b/drivers/input/keyboard/tegra-nvec.c
index 546da97b03be..c8ddf6fc6397 100644
--- a/drivers/input/keyboard/tegra-nvec.c
+++ b/drivers/input/keyboard/tegra-nvec.c
@@ -41,9 +41,6 @@
MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_LICENSE(DRIVER_LICENSE);
-#define NVEC_PAYLOAD 32
-#define KEYBOARD_SCANNING_DISABLED_IN_SUSPEND 0
-
/* The total number of scan codes will be (first - last) */
#define EC_FIRST_CODE 0x00
#define EC_LAST_CODE 0x58
@@ -261,8 +258,6 @@ struct nvec_keyboard
char name[128];
int shutdown;
unsigned short keycode[512];
- NvEcHandle hNvec;
- NvEcEventRegistrationHandle hEvent;
};
static int nvec_keyboard_recv(void *arg)
@@ -367,13 +362,6 @@ static int __devinit nvec_keyboard_probe(struct nvec_device *pdev)
__set_bit(extcode_tab_us102[i], input_dev->keybit);
}
- /* get EC handle */
- nverr = NvEcOpen(&keyboard->hNvec, 0 /* instance */);
- if (nverr != NvError_Success) {
- error = -ENODEV;
- goto fail_input_register;
- }
-
error = input_register_device(keyboard->input_dev);
if (error)
goto fail_input_register;
@@ -386,8 +374,6 @@ fail_thread_create:
NvOdmKeyboardDeInit();
fail_keyboard_init:
fail:
- NvEcClose(keyboard->hNvec);
- keyboard->hNvec = NULL;
input_free_device(input_dev);
kfree(keyboard);
@@ -401,8 +387,6 @@ static void nvec_keyboard_remove(struct nvec_device *dev)
(void)kthread_stop(keyboard->task);
NvOdmKeyboardDeInit();
- NvEcClose(keyboard->hNvec);
- keyboard->hNvec = NULL;
keyboard->shutdown = 1;
input_free_device(input_dev);
kfree(keyboard);
@@ -410,98 +394,21 @@ static void nvec_keyboard_remove(struct nvec_device *dev)
static int nvec_keyboard_suspend(struct nvec_device *pdev, pm_message_t state)
{
-#if KEYBOARD_SCANNING_DISABLED_IN_SUSPEND
- NvEcRequest Request = {0};
- NvEcResponse Response = {0};
- NvError err = NvError_Success;
-#endif
- struct input_dev *input_dev = nvec_get_drvdata(pdev);
- struct nvec_keyboard *keyboard = input_get_drvdata(input_dev);
-
- if (!keyboard) {
- printk("%s: device handle is NULL\n", __func__);
- return -1;
- }
-
-#if KEYBOARD_SCANNING_DISABLED_IN_SUSPEND
- /* disable keyboard scanning */
- Request.PacketType = NvEcPacketType_Request;
- Request.RequestType = NvEcRequestResponseType_Keyboard;
- Request.RequestSubtype =
- (NvEcRequestResponseSubtype)NvEcKeyboardSubtype_Disable;
- Request.NumPayloadBytes = 0;
-
- err = NvEcSendRequest(
- keyboard->hNvec,
- &Request,
- &Response,
- sizeof(Request),
- sizeof(Response));
- if (err != NvError_Success) {
- printk("%s: scanning disable request send fail\n", __func__);
- return -1;
- }
-
- if (Response.Status != NvEcStatus_Success) {
- printk("%s: scanning could not be disabled\n", __func__);
- return -1;
- }
-#endif
/* power down hardware */
if (!NvOdmKeyboardPowerHandler(NV_TRUE)) {
printk("%s: hardware power down fail\n", __func__);
return -1;
}
-
return 0;
}
static int nvec_keyboard_resume(struct nvec_device *pdev)
{
-#if KEYBOARD_SCANNING_DISABLED_IN_SUSPEND
- NvEcRequest Request = {0};
- NvEcResponse Response = {0};
- NvError err = NvError_Success;
-#endif
- struct input_dev *input_dev = nvec_get_drvdata(pdev);
- struct nvec_keyboard *keyboard = input_get_drvdata(input_dev);
-
- if (!keyboard) {
- printk("%s: device handle is NULL\n", __func__);
- return -1;
- }
-
/* power up hardware */
if (!NvOdmKeyboardPowerHandler(NV_FALSE)) {
printk("%s: hardware power up fail\n", __func__);
return -1;
}
-
-#if KEYBOARD_SCANNING_DISABLED_IN_SUSPEND
- /* re-enable keyboard scanning */
- Request.PacketType = NvEcPacketType_Request;
- Request.RequestType = NvEcRequestResponseType_Keyboard;
- Request.RequestSubtype =
- (NvEcRequestResponseSubtype)NvEcKeyboardSubtype_Enable;
- Request.NumPayloadBytes = 0;
-
- err = NvEcSendRequest(
- keyboard->hNvec,
- &Request,
- &Response,
- sizeof(Request),
- sizeof(Response));
- if (err != NvError_Success) {
- printk("%s: scanning enable request send fail\n", __func__);
- return -1;
- }
-
- if (Response.Status != NvEcStatus_Success) {
- printk("%s: scanning could not be enabled\n", __func__);
- return -1;
- }
-#endif
-
return 0;
}