diff options
author | Nick Dyer <nick.dyer@itdev.co.uk> | 2012-08-01 16:46:01 +0100 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2013-09-14 12:37:37 -0700 |
commit | 046db820f1ccfd491ed38bd13f79bfeaf609f2db (patch) | |
tree | cc083e0c7bcc974f000a2b13d54c23ee655c4071 /drivers/input/touchscreen/atmel_mxt_ts.c | |
parent | cbf12a2015963b32ece5ae025cf6c6cc4abc8c39 (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.c | 15 |
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) |