summaryrefslogtreecommitdiff
path: root/drivers/input/touchscreen/atmel_mxt_ts.c
diff options
context:
space:
mode:
authorNick Dyer <nick.dyer@itdev.co.uk>2012-08-01 16:46:01 +0100
committerDan Willemsen <dwillemsen@nvidia.com>2013-09-14 12:37:37 -0700
commit046db820f1ccfd491ed38bd13f79bfeaf609f2db (patch)
treecc083e0c7bcc974f000a2b13d54c23ee655c4071 /drivers/input/touchscreen/atmel_mxt_ts.c
parentcbf12a2015963b32ece5ae025cf6c6cc4abc8c39 (diff)
Input: atmel_mxt_ts - replace soft reset on resume with calibrate
It is counterproductive to reset the chip on resume, since it will result in a long delay. The power consumption in deep sleep mode is minimal. However it is necessary to issue a calibrate after the chip has spent any time in deep sleep. Signed-off-by: Nick Dyer <nick.dyer@itdev.co.uk> Rebase-Id: Rbef6c3449fbe8bf0e48f7d6f4ec22dcb8a1ad4b1
Diffstat (limited to 'drivers/input/touchscreen/atmel_mxt_ts.c')
-rw-r--r--drivers/input/touchscreen/atmel_mxt_ts.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
index e40ad576d267..fd13fb2bceaa 100644
--- a/drivers/input/touchscreen/atmel_mxt_ts.c
+++ b/drivers/input/touchscreen/atmel_mxt_ts.c
@@ -1293,6 +1293,15 @@ static void mxt_start(struct mxt_data *data)
return;
error = mxt_set_power_cfg(data, MXT_POWER_CFG_RUN);
+ if (error)
+ return;
+
+ /* At this point, it may be necessary to clear state
+ * by disabling/re-enabling the noise suppression object */
+
+ /* Recalibrate since chip has been in deep sleep */
+ error = mxt_write_object(data, MXT_GEN_COMMAND_T6,
+ MXT_COMMAND_CALIBRATE, 1);
if (!error)
dev_dbg(dev, "MXT started\n");
@@ -1485,12 +1494,6 @@ static int mxt_resume(struct device *dev)
struct mxt_data *data = i2c_get_clientdata(client);
struct input_dev *input_dev = data->input_dev;
- /* Soft reset */
- mxt_write_object(data, MXT_GEN_COMMAND_T6,
- MXT_COMMAND_RESET, 1);
-
- msleep(MXT_RESET_TIME);
-
mutex_lock(&input_dev->mutex);
if (input_dev->users)