Input: mcs_touchkey - add shutdown handler
authorHeungJun Kim <riverful.kim@samsung.com>
Thu, 24 Feb 2011 05:42:49 +0000 (21:42 -0800)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Thu, 24 Feb 2011 05:43:38 +0000 (21:43 -0800)
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>
drivers/input/keyboard/mcs_touchkey.c

index 03fa59a0b2206525b5e56614401223f7d515da34..af1aab324a4c58c0e011ea8660e483802db2ef41 100644 (file)
@@ -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,
 };