lkml.org 
[lkml]   [2019]   [Aug]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH v1 14/63] Input: atmel_mxt_ts - report failures in suspend/resume
Date
From: Nick Dyer <nick.dyer@itdev.co.uk>

(cherry picked from ndyer/linux/for-upstream commit 93a57575403de4dd07cd64807d3c2ed7f2cca262)
[gdavis: Resolve forward port conflicts due to applying upstream
commit 96a938aa214e ("Input: atmel_mxt_ts - remove platform
data support").]
Signed-off-by: George G. Davis <george_davis@mentor.com>
[jiada: Fix compilation warning]
Signed-off-by: Jiada Wang <jiada_wang@mentor.com>
---
drivers/input/touchscreen/atmel_mxt_ts.c | 51 ++++++++++++++++++------
1 file changed, 39 insertions(+), 12 deletions(-)

diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
index 907eebeff465..a54c595c76b9 100644
--- a/drivers/input/touchscreen/atmel_mxt_ts.c
+++ b/drivers/input/touchscreen/atmel_mxt_ts.c
@@ -3421,10 +3421,12 @@ static void mxt_reset_slots(struct mxt_data *data)
mxt_input_sync(data);
}

-static void mxt_start(struct mxt_data *data)
+static int mxt_start(struct mxt_data *data)
{
+ int ret = 0;
+
if (!data->suspended || data->in_bootloader)
- return;
+ return 0;

switch (data->suspend_mode) {
case MXT_SUSPEND_T9_CTRL:
@@ -3449,28 +3451,42 @@ static void mxt_start(struct mxt_data *data)
*/
mxt_process_messages_until_invalid(data);

- mxt_set_t7_power_cfg(data, MXT_POWER_CFG_RUN);
+ ret = mxt_set_t7_power_cfg(data, MXT_POWER_CFG_RUN);
+ if (ret)
+ return ret;

/* Recalibrate since chip has been in deep sleep */
- mxt_t6_command(data, MXT_COMMAND_CALIBRATE, 1, false);
+ ret = mxt_t6_command(data, MXT_COMMAND_CALIBRATE, 1, false);
+ if (ret)
+ return ret;
+
+ ret = mxt_acquire_irq(data);
+ if (ret)
+ return ret;

- mxt_acquire_irq(data);
break;
}

data->suspended = false;
+
+ return 0;
}

-static void mxt_stop(struct mxt_data *data)
+static int mxt_stop(struct mxt_data *data)
{
+ int ret;
+
if (data->suspended || data->in_bootloader)
- return;
+ return 0;

switch (data->suspend_mode) {
case MXT_SUSPEND_T9_CTRL:
/* Touch disable */
- mxt_write_object(data,
+ ret = mxt_write_object(data,
MXT_TOUCH_MULTI_T9, MXT_T9_CTRL, 0);
+ if (ret)
+ return ret;
+
break;

case MXT_SUSPEND_REGULATOR:
@@ -3483,29 +3499,40 @@ static void mxt_stop(struct mxt_data *data)
default:
disable_irq(data->irq);

- mxt_set_t7_power_cfg(data, MXT_POWER_CFG_DEEPSLEEP);
+ ret = mxt_set_t7_power_cfg(data, MXT_POWER_CFG_DEEPSLEEP);
+ if (ret)
+ return ret;

mxt_reset_slots(data);
break;
}

data->suspended = true;
+ return 0;
}

static int mxt_input_open(struct input_dev *dev)
{
struct mxt_data *data = input_get_drvdata(dev);
+ int ret;

- mxt_start(data);
+ ret = mxt_start(data);

- return 0;
+ if (ret)
+ dev_err(&data->client->dev, "%s failed rc=%d\n", __func__, ret);
+
+ return ret;
}

static void mxt_input_close(struct input_dev *dev)
{
struct mxt_data *data = input_get_drvdata(dev);
+ int ret;

- mxt_stop(data);
+ ret = mxt_stop(data);
+
+ if (ret)
+ dev_err(&data->client->dev, "%s failed rc=%d\n", __func__, ret);
}

static int mxt_parse_device_properties(struct mxt_data *data)
--
2.19.2
\
 
 \ /
  Last update: 2019-08-16 10:40    [W:0.040 / U:2.356 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site