Hi,

On 04-03-19 08:05, Chen, Hu wrote:
From: "he, bo" <bo...@intel.com>

On some laptops, kxcjk1013 is powered off when system enters S3. We need
restore the range regiter during resume. Otherwise, the sensor doesn't
work properly after S3.

Signed-off-by: he, bo <bo...@intel.com>
Signed-off-by: Chen, Hu <hu1.c...@intel.com>

Thank you for the patch.

---
Changes in v2:
- Handle return value independently in resume callback.

  drivers/iio/accel/kxcjk-1013.c | 5 +++++
  1 file changed, 5 insertions(+)

diff --git a/drivers/iio/accel/kxcjk-1013.c b/drivers/iio/accel/kxcjk-1013.c
index 7096e577b23f..17837e26bcf2 100644
--- a/drivers/iio/accel/kxcjk-1013.c
+++ b/drivers/iio/accel/kxcjk-1013.c
@@ -1437,6 +1437,11 @@ static int kxcjk1013_resume(struct device *dev)
mutex_lock(&data->mutex);
        ret = kxcjk1013_set_mode(data, OPERATION);
+       if (ret < 0) {
+               mutex_unlock(&data->mutex);
+               return ret;
+       }
+       ret = kxcjk1013_set_range(data, data->range);
        mutex_unlock(&data->mutex);
return ret;


I'm not a fan of the extra unlock, IMHO it would be better to instead do:

        mutex_lock(&data->mutex);
        ret = kxcjk1013_set_mode(data, OPERATION);
        if (ret == 0)
                ret = kxcjk1013_set_range(data, data->range);
        mutex_unlock(&data->mutex);

Regards,

Hans

Reply via email to