From: Nick Dyer <nick.d...@itdev.co.uk>

This patch reports failures in suspend/resume

Signed-off-by: Nick Dyer <nick.d...@itdev.co.uk>
(cherry picked from ndyer/linux/for-upstream commit 93a57575403d)
[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_da...@mentor.com>
[jiada: Fix compilation warning
        Add commit description]
Signed-off-by: Jiada Wang <jiada_w...@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 ef8baf64659e..f8783e37436f 100644
--- a/drivers/input/touchscreen/atmel_mxt_ts.c
+++ b/drivers/input/touchscreen/atmel_mxt_ts.c
@@ -3425,10 +3425,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:
@@ -3453,28 +3455,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:
@@ -3487,29 +3503,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.17.1

Reply via email to