summaryrefslogtreecommitdiffstats
path: root/drivers/input/keyboard
diff options
context:
space:
mode:
authorHeungJun Kim <riverful.kim@samsung.com>2011-02-23 21:42:49 -0800
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2011-02-23 21:43:38 -0800
commit5f62615ef5e50b0ad6c125fe1e38f2ac675012e2 (patch)
tree2e291e340c54d71b3c1ec5e859a15114a414f4d6 /drivers/input/keyboard
parentadf779c1ee1d5556ebd83e39a7189022d4ebce3a (diff)
Input: mcs_touchkey - add shutdown handler
The MCS50XX series has a HW bug that requires explicit chip power down. If chip is not powered down before shutting the system down the control pins (powerup, interrupt) are pulled up and residue current continues flowing into the chips making them continue consuming power. Signed-off-by: Heungjun Kim <riverful.kim@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Diffstat (limited to 'drivers/input/keyboard')
-rw-r--r--drivers/input/keyboard/mcs_touchkey.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/input/keyboard/mcs_touchkey.c b/drivers/input/keyboard/mcs_touchkey.c
index 03fa59a0b22..af1aab324a4 100644
--- a/drivers/input/keyboard/mcs_touchkey.c
+++ b/drivers/input/keyboard/mcs_touchkey.c
@@ -212,6 +212,14 @@ static int __devexit mcs_touchkey_remove(struct i2c_client *client)
return 0;
}
+static void mcs_touchkey_shutdown(struct i2c_client *client)
+{
+ struct mcs_touchkey_data *data = i2c_get_clientdata(client);
+
+ if (data->poweron)
+ data->poweron(false);
+}
+
#ifdef CONFIG_PM_SLEEP
static int mcs_touchkey_suspend(struct device *dev)
{
@@ -262,6 +270,7 @@ static struct i2c_driver mcs_touchkey_driver = {
},
.probe = mcs_touchkey_probe,
.remove = __devexit_p(mcs_touchkey_remove),
+ .shutdown = mcs_touchkey_shutdown,
.id_table = mcs_touchkey_id,
};