Delete PM-related uncommented calls from nvec_kbd
 Make wakeup events configurable through /sys/module/nvec/parameters/wakeup_on_*

Signed-off-by: Pierre-Hugues Husson <[email protected]>
---
 drivers/staging/nvec/nvec.c     |   42 +++++++++++++++++++++++++++++++++++++++
 drivers/staging/nvec/nvec_kbd.c |    5 +--
 2 files changed, 44 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/nvec/nvec.c b/drivers/staging/nvec/nvec.c
index 52af8ec..758a558 100644
--- a/drivers/staging/nvec/nvec.c
+++ b/drivers/staging/nvec/nvec.c
@@ -795,6 +795,45 @@ static int __devexit tegra_nvec_remove(struct 
platform_device *pdev)
 
 #ifdef CONFIG_PM
 
+static int wakeup_on_lid = 1;
+static int wakeup_on_power_button = 1;
+static int wakeup_on_any_key = 0;
+static int wakeup_on_home_key = 1;
+module_param(wakeup_on_lid, int, 0644);
+module_param(wakeup_on_power_button, int, 0644);
+module_param(wakeup_on_any_key, int, 0644);
+module_param(wakeup_on_home_key, int, 0644);
+
+static void tegra_nvec_setup_wakeup_events(struct nvec_chip *nvec) {
+       {
+               //Resume on LID
+               char cmd[]={ 0x01, 0xFD, 0x01, 0x00, 0x00, 0x02, 0x00};
+               cmd[2]=!!wakeup_on_lid;
+               nvec_write_async(nvec, cmd, sizeof(cmd));
+       }
+
+       {
+               //Resume on Power button
+               char cmd[]={ 0x01, 0xFD, 0x01, 0x00, 0x00, 0x01, 0x00};
+               cmd[2]=!!wakeup_on_power_button;
+               nvec_write_async(nvec, cmd, sizeof(cmd));
+       }
+
+       {
+               //Resume on any key press
+               char cmd[]={ 0x05, 0x03, 0x01, 0x01};
+               cmd[2]=!!wakeup_on_any_key;
+               nvec_write_async(nvec, cmd, sizeof(cmd));
+       }
+
+       {
+               //Resume on home key press
+               char cmd[]={ 0x05, 0x03, 0x01, 0x02};
+               cmd[2]=!!wakeup_on_home_key;
+               nvec_write_async(nvec, cmd, sizeof(cmd));
+       }
+}
+
 static int tegra_nvec_suspend(struct platform_device *pdev, pm_message_t state)
 {
        struct nvec_chip *nvec = platform_get_drvdata(pdev);
@@ -803,12 +842,15 @@ static int tegra_nvec_suspend(struct platform_device 
*pdev, pm_message_t state)
        dev_dbg(nvec->dev, "suspending\n");
        nvec_write_async(nvec, "\x0d\x10\x59\x94", 4);
 
+       tegra_nvec_setup_wakeup_events(nvec);
+
        /* keep these sync or you'll break suspend */
        msg = nvec_write_sync(nvec, EC_DISABLE_EVENT_REPORTING, 3);
        nvec_msg_free(nvec, msg);
        msg = nvec_write_sync(nvec, "\x04\x02", 2);
        nvec_msg_free(nvec, msg);
 
+
        nvec_disable_i2c_slave(nvec);
 
        return 0;
diff --git a/drivers/staging/nvec/nvec_kbd.c b/drivers/staging/nvec/nvec_kbd.c
index a4ce5a7..c599f6e7 100644
--- a/drivers/staging/nvec/nvec_kbd.c
+++ b/drivers/staging/nvec/nvec_kbd.c
@@ -140,10 +140,9 @@ static int __devinit nvec_kbd_probe(struct platform_device 
*pdev)
        /* Enable keyboard */
        nvec_write_async(nvec, "\x05\xf4", 2);
 
-       /* keyboard reset? */
-       nvec_write_async(nvec, "\x05\x03\x01\x01", 4);
-       nvec_write_async(nvec, "\x05\x04\x01", 3);
+       //Send 0xff (reset keyboard) on PS2 bus
        nvec_write_async(nvec, "\x06\x01\xff\x03", 4);
+
 /*     FIXME
        wait until keyboard reset is finished
        or until we have a sync write */
-- 
1.7.3.4


_______________________________________________
Mailing list: https://launchpad.net/~ac100
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~ac100
More help   : https://help.launchpad.net/ListHelp

Reply via email to