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

