From: Arnav Kapoor <kapoorarnav43@gmail.com>
To: Jonathan Cameron <jic23@kernel.org>
Cc: "David Lechner" <dlechner@baylibre.com>,
"Nuno Sá" <nuno.sa@analog.com>,
"Andy Shevchenko" <andy@kernel.org>,
"Andy Shevchenko" <andriy.shevchenko@intel.com>,
"Gwendal Grignou" <gwendal@chromium.org>,
"Joshua Crofts" <joshua.crofts1@gmail.com>,
linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org,
"Arnav Kapoor" <kapoorarnav43@gmail.com>
Subject: [PATCH v4 1/3] iio: proximity: sx9310: keep the IRQ balanced across suspend and resume
Date: Sun, 1 Nov 2026 15:55:02 +0530 [thread overview]
Message-ID: <20261101102518.22757-2-kapoorarnav43@gmail.com> (raw)
In-Reply-To: <20261101102518.22757-1-kapoorarnav43@gmail.com>
sx9310_suspend() disables the interrupt first and returns with it still
disabled if a register access fails. Resume isn't called after a failed
suspend, so the interrupt is never enabled again. sx9310_resume() also
returns without enabling it on error.
Make the two mirror images: disable the interrupt as the last step of
suspend and enable it as the first step of resume, before anything can
fail. The driver works without an interrupt line, so skip both calls
when client->irq is 0, as sx_common already does.
Fixes: 72ad02b15d63 ("iio: Add SEMTECH SX9310/9311 sensor driver")
Signed-off-by: Arnav Kapoor <kapoorarnav43@gmail.com>
---
drivers/iio/proximity/sx9310.c | 32 ++++++++++++++++++--------------
1 file changed, 18 insertions(+), 14 deletions(-)
diff --git a/drivers/iio/proximity/sx9310.c b/drivers/iio/proximity/sx9310.c
index 79ba46d8a0aa..373037ca67d1 100644
--- a/drivers/iio/proximity/sx9310.c
+++ b/drivers/iio/proximity/sx9310.c
@@ -943,8 +943,6 @@ static int sx9310_suspend(struct device *dev)
u8 ctrl0;
int ret;
- disable_irq_nosync(data->client->irq);
-
guard(mutex)(&data->mutex);
ret = regmap_read(data->regmap, SX9310_REG_PROX_CTRL0,
&data->suspend_ctrl);
@@ -956,27 +954,33 @@ static int sx9310_suspend(struct device *dev)
if (ret)
return ret;
- return regmap_write(data->regmap, SX9310_REG_PAUSE, 0);
+ ret = regmap_write(data->regmap, SX9310_REG_PAUSE, 0);
+ if (ret)
+ return ret;
+
+ /* Last, as resume isn't called if suspend fails. */
+ if (data->client->irq)
+ disable_irq_nosync(data->client->irq);
+
+ return 0;
}
static int sx9310_resume(struct device *dev)
{
struct sx_common_data *data = iio_priv(dev_get_drvdata(dev));
+ struct regmap *map = data->regmap;
int ret;
- scoped_guard(mutex, &data->mutex) {
- ret = regmap_write(data->regmap, SX9310_REG_PAUSE, 1);
- if (ret)
- return ret;
+ if (data->client->irq)
+ enable_irq(data->client->irq);
- ret = regmap_write(data->regmap, SX9310_REG_PROX_CTRL0,
- data->suspend_ctrl);
- if (ret)
- return ret;
- }
+ guard(mutex)(&data->mutex);
- enable_irq(data->client->irq);
- return 0;
+ ret = regmap_write(map, SX9310_REG_PAUSE, 1);
+ if (ret)
+ return ret;
+
+ return regmap_write(map, SX9310_REG_PROX_CTRL0, data->suspend_ctrl);
}
static DEFINE_SIMPLE_DEV_PM_OPS(sx9310_pm_ops, sx9310_suspend, sx9310_resume);
--
2.53.0
next prev parent reply other threads:[~2026-11-01 10:25 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-01 10:25 [PATCH v4 0/3] iio: proximity: sx93xx: " Arnav Kapoor
2026-11-01 10:25 ` Arnav Kapoor [this message]
2026-11-01 10:25 ` [PATCH v4 2/3] iio: proximity: sx9324: " Arnav Kapoor
2026-11-01 10:25 ` [PATCH v4 3/3] iio: proximity: sx9360: " Arnav Kapoor
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=20261101102518.22757-2-kapoorarnav43@gmail.com \
--to=kapoorarnav43@gmail.com \
--cc=andriy.shevchenko@intel.com \
--cc=andy@kernel.org \
--cc=dlechner@baylibre.com \
--cc=gwendal@chromium.org \
--cc=jic23@kernel.org \
--cc=joshua.crofts1@gmail.com \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nuno.sa@analog.com \
/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
all inboxes | Powered by JetHome®