From e52b6ecd44e9ff4d15de28ddbc7c604b1ff78be0 Mon Sep 17 00:00:00 2001 From: Marc Dietrich Date: Sun, 27 Jan 2013 17:43:41 +0100 Subject: [PATCH] --- yaml --- r: 354271 b: refs/heads/master c: 518945fbfbe9e2bc39057115aa23e25b084a03e0 h: refs/heads/master i: 354269: f0a99080881cb4b5b39407b474e0c3f2c6e465d8 354267: 58a4ba9cd073067760dbedb95aa6465605e6e943 354263: 02d5b083e6720055d2a5f8a71d6d8f4a6d5f28ae 354255: 471427e40b1b4dfb2f0e9d94f3a32295914f1248 354239: 0e89c249cc27a1da43e82cb1b74881ef701acc17 v: v3 --- [refs] | 2 +- trunk/drivers/staging/nvec/nvec.c | 29 ++++++++++++++++++++++------- trunk/drivers/staging/nvec/nvec.h | 4 +++- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index dba38f2e2932..422ee5942738 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9915518887e83764269d5b617d01782893877ed3 +refs/heads/master: 518945fbfbe9e2bc39057115aa23e25b084a03e0 diff --git a/trunk/drivers/staging/nvec/nvec.c b/trunk/drivers/staging/nvec/nvec.c index 2830946860d1..6fab02faa4a8 100644 --- a/trunk/drivers/staging/nvec/nvec.c +++ b/trunk/drivers/staging/nvec/nvec.c @@ -72,8 +72,10 @@ enum nvec_msg_category { NVEC_MSG_TX, }; -static const unsigned char EC_DISABLE_EVENT_REPORTING[3] = "\x04\x00\x00"; -static const unsigned char EC_ENABLE_EVENT_REPORTING[3] = "\x04\x00\x01"; +enum nvec_sleep_subcmds { + GLOBAL_EVENTS, +}; + static const unsigned char EC_GET_FIRMWARE_VERSION[2] = "\x07\x15"; static struct nvec_chip *nvec_power_handle; @@ -317,6 +319,20 @@ struct nvec_msg *nvec_write_sync(struct nvec_chip *nvec, } EXPORT_SYMBOL(nvec_write_sync); +/** + * nvec_toggle_global_events - enables or disables global event reporting + * @nvec: nvec handle + * @state: true for enable, false for disable + * + * This switches on/off global event reports by the embedded controller. + */ +static void nvec_toggle_global_events(struct nvec_chip *nvec, bool state) +{ + unsigned char global_events[] = { NVEC_SLEEP, GLOBAL_EVENTS, state }; + + nvec_write_async(nvec, global_events, 3); +} + /** * nvec_request_master - Process outgoing messages * @work: A &struct work_struct (the tx_worker member of &struct nvec_chip) @@ -711,7 +727,7 @@ static void nvec_disable_i2c_slave(struct nvec_chip *nvec) static void nvec_power_off(void) { - nvec_write_async(nvec_power_handle, EC_DISABLE_EVENT_REPORTING, 3); + nvec_toggle_global_events(nvec_power_handle, false); nvec_write_async(nvec_power_handle, "\x04\x01", 2); } @@ -815,8 +831,7 @@ static int tegra_nvec_probe(struct platform_device *pdev) /* enable event reporting */ - nvec_write_async(nvec, EC_ENABLE_EVENT_REPORTING, - sizeof(EC_ENABLE_EVENT_REPORTING)); + nvec_toggle_global_events(nvec, true); nvec->nvec_status_notifier.notifier_call = nvec_status_notifier; nvec_register_notifier(nvec, &nvec->nvec_status_notifier, 0); @@ -856,7 +871,7 @@ static int tegra_nvec_remove(struct platform_device *pdev) { struct nvec_chip *nvec = platform_get_drvdata(pdev); - nvec_write_async(nvec, EC_DISABLE_EVENT_REPORTING, 3); + nvec_toggle_global_events(nvec, false); mfd_remove_devices(nvec->dev); cancel_work_sync(&nvec->rx_work); cancel_work_sync(&nvec->tx_work); @@ -891,7 +906,7 @@ static int nvec_resume(struct device *dev) dev_dbg(nvec->dev, "resuming\n"); tegra_init_i2c_slave(nvec); - nvec_write_async(nvec, EC_ENABLE_EVENT_REPORTING, 3); + nvec_toggle_global_events(nvec, true); return 0; } diff --git a/trunk/drivers/staging/nvec/nvec.h b/trunk/drivers/staging/nvec/nvec.h index ba6ed8f4e8a3..bfcd9a9b36e1 100644 --- a/trunk/drivers/staging/nvec/nvec.h +++ b/trunk/drivers/staging/nvec/nvec.h @@ -71,7 +71,9 @@ enum nvec_event_size { enum nvec_msg_type { NVEC_SYS = 1, NVEC_BAT, - NVEC_KBD = 5, + NVEC_GPIO, + NVEC_SLEEP, + NVEC_KBD, NVEC_PS2, NVEC_CNTL, NVEC_KB_EVT = 0x80,