summaryrefslogtreecommitdiff
path: root/drivers/input/touchscreen
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2024-08-06 16:48:00 -0700
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2026-03-25 07:53:59 -0700
commite65407f838368fb7ab98fb7f02cbf5b9377976d3 (patch)
treeb748b5ecd943ec2f87f30bfddb524b580e36ac97 /drivers/input/touchscreen
parent600a2db76bf28ab791774ed378d74c50f16e24d5 (diff)
downloadlwn-e65407f838368fb7ab98fb7f02cbf5b9377976d3.tar.gz
lwn-e65407f838368fb7ab98fb7f02cbf5b9377976d3.zip
Input: tsc2007 - 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>
Diffstat (limited to 'drivers/input/touchscreen')
-rw-r--r--drivers/input/touchscreen/tsc2007_core.c7
-rw-r--r--drivers/input/touchscreen/tsc2007_iio.c9
2 files changed, 6 insertions, 10 deletions
diff --git a/drivers/input/touchscreen/tsc2007_core.c b/drivers/input/touchscreen/tsc2007_core.c
index 948935de894b..524f14eb3da2 100644
--- a/drivers/input/touchscreen/tsc2007_core.c
+++ b/drivers/input/touchscreen/tsc2007_core.c
@@ -122,9 +122,10 @@ static irqreturn_t tsc2007_soft_irq(int irq, void *handle)
/* pen is down, continue with the measurement */
- mutex_lock(&ts->mlock);
- tsc2007_read_values(ts, &tc);
- mutex_unlock(&ts->mlock);
+ /* Serialize access between the ISR and IIO reads. */
+ scoped_guard(mutex, &ts->mlock) {
+ tsc2007_read_values(ts, &tc);
+ }
rt = tsc2007_calculate_resistance(ts, &tc);
diff --git a/drivers/input/touchscreen/tsc2007_iio.c b/drivers/input/touchscreen/tsc2007_iio.c
index 752eb7fe5da3..e9e495ec0b6c 100644
--- a/drivers/input/touchscreen/tsc2007_iio.c
+++ b/drivers/input/touchscreen/tsc2007_iio.c
@@ -41,7 +41,6 @@ static int tsc2007_read_raw(struct iio_dev *indio_dev,
struct tsc2007_iio *iio = iio_priv(indio_dev);
struct tsc2007 *tsc = iio->ts;
int adc_chan = chan->channel;
- int ret = 0;
if (adc_chan >= ARRAY_SIZE(tsc2007_iio_channel))
return -EINVAL;
@@ -49,7 +48,7 @@ static int tsc2007_read_raw(struct iio_dev *indio_dev,
if (mask != IIO_CHAN_INFO_RAW)
return -EINVAL;
- mutex_lock(&tsc->mlock);
+ guard(mutex)(&tsc->mlock);
switch (chan->channel) {
case 0:
@@ -92,11 +91,7 @@ static int tsc2007_read_raw(struct iio_dev *indio_dev,
/* Prepare for next touch reading - power down ADC, enable PENIRQ */
tsc2007_xfer(tsc, PWRDOWN);
- mutex_unlock(&tsc->mlock);
-
- ret = IIO_VAL_INT;
-
- return ret;
+ return IIO_VAL_INT;
}
static const struct iio_info tsc2007_iio_info = {