Linux Kernel Mentees list
 help / color / mirror / Atom feed
From: SeungJu Cheon <suunj1331@gmail.com>
To: jic23@kernel.org, linux-iio@vger.kernel.org
Cc: dlechner@baylibre.com, nuno.sa@analog.com, andy@kernel.org,
	apokusinski01@gmail.com, me@brighamcampbell.com,
	skhan@linuxfoundation.org, linux-kernel-mentees@lists.linux.dev,
	SeungJu Cheon <suunj1331@gmail.com>
Subject: [PATCH 2/4] iio: pressure: mpl3115: clean up interrupt handling and locking
Date: Sat, 30 May 2026 20:39:36 +0900	[thread overview]
Message-ID: <20260530113938.171540-3-suunj1331@gmail.com> (raw)
In-Reply-To: <20260530113938.171540-1-suunj1331@gmail.com>

Return IRQ_NONE instead of IRQ_HANDLED when reading
INT_SOURCE fails.

On shared interrupt lines, returning IRQ_HANDLED after a
failed register read may prevent other handlers from being
invoked.

Switch the trigger handler from explicit mutex_lock/unlock
to scoped_guard() for consistency with the locking style
used elsewhere in the driver.

Move mpl3115_config_interrupt() above the interrupt handler
in preparation for the FIFO support added in a subsequent
patch.

No functional change intended.

Signed-off-by: SeungJu Cheon <suunj1331@gmail.com>
---
 drivers/iio/pressure/mpl3115.c | 59 +++++++++++++++++-----------------
 1 file changed, 29 insertions(+), 30 deletions(-)

diff --git a/drivers/iio/pressure/mpl3115.c b/drivers/iio/pressure/mpl3115.c
index befb6d48efa9..52a3d0d59769 100644
--- a/drivers/iio/pressure/mpl3115.c
+++ b/drivers/iio/pressure/mpl3115.c
@@ -308,9 +308,8 @@ static irqreturn_t mpl3115_trigger_handler(int irq, void *p)
 	u8 buffer[16] __aligned(8) = { };
 	int ret;
 
-	mutex_lock(&data->lock);
-	ret = mpl3115_fill_trig_buffer(indio_dev, buffer);
-	mutex_unlock(&data->lock);
+	scoped_guard(mutex, &data->lock)
+		ret = mpl3115_fill_trig_buffer(indio_dev, buffer);
 	if (ret)
 		goto done;
 
@@ -322,6 +321,32 @@ static irqreturn_t mpl3115_trigger_handler(int irq, void *p)
 	return IRQ_HANDLED;
 }
 
+static int mpl3115_config_interrupt(struct mpl3115_data *data,
+				    u8 ctrl_reg1, u8 ctrl_reg4)
+{
+	int ret;
+
+	ret = i2c_smbus_write_byte_data(data->client, MPL3115_CTRL_REG1,
+					ctrl_reg1);
+	if (ret < 0)
+		return ret;
+
+	ret = i2c_smbus_write_byte_data(data->client, MPL3115_CTRL_REG4,
+					ctrl_reg4);
+	if (ret < 0)
+		goto reg1_cleanup;
+
+	data->ctrl_reg1 = ctrl_reg1;
+	data->ctrl_reg4 = ctrl_reg4;
+
+	return 0;
+
+reg1_cleanup:
+	i2c_smbus_write_byte_data(data->client, MPL3115_CTRL_REG1,
+				  data->ctrl_reg1);
+	return ret;
+}
+
 static const struct iio_event_spec mpl3115_temp_press_event[] = {
 	{
 		.type = IIO_EV_TYPE_THRESH,
@@ -381,7 +406,7 @@ static irqreturn_t mpl3115_interrupt_handler(int irq, void *private)
 
 	ret = i2c_smbus_read_byte_data(data->client, MPL3115_INT_SOURCE);
 	if (ret < 0)
-		return IRQ_HANDLED;
+		return IRQ_NONE;
 
 	if (!(ret & (MPL3115_INT_SRC_TTH | MPL3115_INT_SRC_PTH |
 		     MPL3115_INT_SRC_DRDY)))
@@ -420,32 +445,6 @@ static irqreturn_t mpl3115_interrupt_handler(int irq, void *private)
 	return IRQ_HANDLED;
 }
 
-static int mpl3115_config_interrupt(struct mpl3115_data *data,
-				    u8 ctrl_reg1, u8 ctrl_reg4)
-{
-	int ret;
-
-	ret = i2c_smbus_write_byte_data(data->client, MPL3115_CTRL_REG1,
-					ctrl_reg1);
-	if (ret < 0)
-		return ret;
-
-	ret = i2c_smbus_write_byte_data(data->client, MPL3115_CTRL_REG4,
-					ctrl_reg4);
-	if (ret < 0)
-		goto reg1_cleanup;
-
-	data->ctrl_reg1 = ctrl_reg1;
-	data->ctrl_reg4 = ctrl_reg4;
-
-	return 0;
-
-reg1_cleanup:
-	i2c_smbus_write_byte_data(data->client, MPL3115_CTRL_REG1,
-				  data->ctrl_reg1);
-	return ret;
-}
-
 static int mpl3115_set_trigger_state(struct iio_trigger *trig, bool state)
 {
 	struct iio_dev *indio_dev = iio_trigger_get_drvdata(trig);
-- 
2.52.0


  parent reply	other threads:[~2026-05-30 11:40 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-30 11:39 [PATCH 0/4] iio: pressure: mpl3115: add hardware FIFO support SeungJu Cheon
2026-05-30 11:39 ` [PATCH 1/4] iio: pressure: mpl3115: convert probe to fully devm managed SeungJu Cheon
2026-05-30 12:12   ` Andy Shevchenko
2026-05-31 10:46     ` SeungJu Cheon
2026-05-30 15:10   ` Jonathan Cameron
2026-05-31 10:49     ` SeungJu Cheon
2026-05-31 14:29       ` Jonathan Cameron
2026-05-30 11:39 ` SeungJu Cheon [this message]
2026-05-30 12:33   ` [PATCH 2/4] iio: pressure: mpl3115: clean up interrupt handling and locking Andy Shevchenko
2026-05-31 10:55     ` SeungJu Cheon
2026-05-30 15:23   ` Jonathan Cameron
2026-05-31 10:59     ` SeungJu Cheon
2026-05-30 11:39 ` [PATCH 3/4] iio: pressure: mpl3115: generalize interrupt pin routing SeungJu Cheon
2026-05-30 12:39   ` Andy Shevchenko
2026-05-31 11:01     ` SeungJu Cheon
2026-05-30 15:32   ` Jonathan Cameron
2026-05-31 11:08     ` SeungJu Cheon
2026-05-30 11:39 ` [PATCH 4/4] iio: pressure: mpl3115: add hardware FIFO support SeungJu Cheon
2026-05-30 13:32   ` Andy Shevchenko
2026-05-30 15:43     ` Jonathan Cameron
2026-06-02 10:31       ` Andy Shevchenko
2026-05-31 11:15     ` SeungJu Cheon
2026-05-30 16:05   ` Jonathan Cameron
2026-05-31 12:38     ` SeungJu Cheon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260530113938.171540-3-suunj1331@gmail.com \
    --to=suunj1331@gmail.com \
    --cc=andy@kernel.org \
    --cc=apokusinski01@gmail.com \
    --cc=dlechner@baylibre.com \
    --cc=jic23@kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel-mentees@lists.linux.dev \
    --cc=me@brighamcampbell.com \
    --cc=nuno.sa@analog.com \
    --cc=skhan@linuxfoundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox