summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2024-07-01 08:51:52 +0300
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2026-03-25 07:14:21 +0300
commit24b3bc4a8f1bf90d742de14b664845deba2e52ab (patch)
treef9f970db1002d46530cd9b33b91f5898bfd0bec0
parentd911a55b29bc393cccdd9236bbbd7333eaeafe3c (diff)
downloadlinux-24b3bc4a8f1bf90d742de14b664845deba2e52ab.tar.xz
Input: auo-pixcir-ts - use guard notation when acquiring mutexes
This makes the code more compact and error handling more robust. Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
-rw-r--r--drivers/input/touchscreen/auo-pixcir-ts.c43
1 files changed, 22 insertions, 21 deletions
diff --git a/drivers/input/touchscreen/auo-pixcir-ts.c b/drivers/input/touchscreen/auo-pixcir-ts.c
index 363a4a1f1560..401b2264f585 100644
--- a/drivers/input/touchscreen/auo-pixcir-ts.c
+++ b/drivers/input/touchscreen/auo-pixcir-ts.c
@@ -415,9 +415,9 @@ static int auo_pixcir_suspend(struct device *dev)
struct i2c_client *client = to_i2c_client(dev);
struct auo_pixcir_ts *ts = i2c_get_clientdata(client);
struct input_dev *input = ts->input;
- int ret = 0;
+ int error;
- mutex_lock(&input->mutex);
+ guard(mutex)(&input->mutex);
/* when configured as wakeup source, device should always wake system
* therefore start device if necessary
@@ -425,21 +425,23 @@ static int auo_pixcir_suspend(struct device *dev)
if (device_may_wakeup(&client->dev)) {
/* need to start device if not open, to be wakeup source */
if (!input_device_enabled(input)) {
- ret = auo_pixcir_start(ts);
- if (ret)
- goto unlock;
+ error = auo_pixcir_start(ts);
+ if (error)
+ return error;
}
enable_irq_wake(client->irq);
- ret = auo_pixcir_power_mode(ts, AUO_PIXCIR_POWER_SLEEP);
+ error = auo_pixcir_power_mode(ts, AUO_PIXCIR_POWER_SLEEP);
+ if (error)
+ return error;
+
} else if (input_device_enabled(input)) {
- ret = auo_pixcir_stop(ts);
+ error = auo_pixcir_stop(ts);
+ if (error)
+ return error;
}
-unlock:
- mutex_unlock(&input->mutex);
-
- return ret;
+ return 0;
}
static int auo_pixcir_resume(struct device *dev)
@@ -447,29 +449,28 @@ static int auo_pixcir_resume(struct device *dev)
struct i2c_client *client = to_i2c_client(dev);
struct auo_pixcir_ts *ts = i2c_get_clientdata(client);
struct input_dev *input = ts->input;
- int ret = 0;
+ int error;
- mutex_lock(&input->mutex);
+ guard(mutex)(&input->mutex);
if (device_may_wakeup(&client->dev)) {
disable_irq_wake(client->irq);
/* need to stop device if it was not open on suspend */
if (!input_device_enabled(input)) {
- ret = auo_pixcir_stop(ts);
- if (ret)
- goto unlock;
+ error = auo_pixcir_stop(ts);
+ if (error)
+ return error;
}
/* device wakes automatically from SLEEP */
} else if (input_device_enabled(input)) {
- ret = auo_pixcir_start(ts);
+ error = auo_pixcir_start(ts);
+ if (error)
+ return error;
}
-unlock:
- mutex_unlock(&input->mutex);
-
- return ret;
+ return 0;
}
static DEFINE_SIMPLE_DEV_PM_OPS(auo_pixcir_pm_ops,