diff options
Diffstat (limited to 'drivers/input/touchscreen/imagis.c')
| -rw-r--r-- | drivers/input/touchscreen/imagis.c | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/drivers/input/touchscreen/imagis.c b/drivers/input/touchscreen/imagis.c index 3c8bbe284b73..7bbb00beec3b 100644 --- a/drivers/input/touchscreen/imagis.c +++ b/drivers/input/touchscreen/imagis.c @@ -366,32 +366,34 @@ static int imagis_suspend(struct device *dev) { struct i2c_client *client = to_i2c_client(dev); struct imagis_ts *ts = i2c_get_clientdata(client); - int retval = 0; - - mutex_lock(&ts->input_dev->mutex); + int error; - if (input_device_enabled(ts->input_dev)) - retval = imagis_stop(ts); + guard(mutex)(&ts->input_dev->mutex); - mutex_unlock(&ts->input_dev->mutex); + if (input_device_enabled(ts->input_dev)) { + error = imagis_stop(ts); + if (error) + return error; + } - return retval; + return 0; } static int imagis_resume(struct device *dev) { struct i2c_client *client = to_i2c_client(dev); struct imagis_ts *ts = i2c_get_clientdata(client); - int retval = 0; - - mutex_lock(&ts->input_dev->mutex); + int error; - if (input_device_enabled(ts->input_dev)) - retval = imagis_start(ts); + guard(mutex)(&ts->input_dev->mutex); - mutex_unlock(&ts->input_dev->mutex); + if (input_device_enabled(ts->input_dev)) { + error = imagis_start(ts); + if (error) + return error; + } - return retval; + return 0; } static DEFINE_SIMPLE_DEV_PM_OPS(imagis_pm_ops, imagis_suspend, imagis_resume); |
