[PATCH 09/19] rtc: ds3232: use guard

From: alexandre . belloni

Date: Mon Oct 19 2026 - 17:25:41 EST


From: Alexandre Belloni <alexandre.belloni@xxxxxxxxxxx>

Use guard() to simplify error handling

Signed-off-by: Alexandre Belloni <alexandre.belloni@xxxxxxxxxxx>
---
drivers/rtc/rtc-ds3232.c | 50 ++++++++++++++++++----------------------
1 file changed, 22 insertions(+), 28 deletions(-)

diff --git a/drivers/rtc/rtc-ds3232.c b/drivers/rtc/rtc-ds3232.c
index d1ef9e0dad34..f6407c631d6d 100644
--- a/drivers/rtc/rtc-ds3232.c
+++ b/drivers/rtc/rtc-ds3232.c
@@ -389,45 +389,39 @@ static irqreturn_t ds3232_irq(int irq, void *dev_id)
int ret;
int stat, control;

- rtc_lock(ds3232->rtc);
+ guard(rtc_ops)(ds3232->rtc);

ret = regmap_read(ds3232->regmap, DS3232_REG_SR, &stat);
if (ret)
- goto unlock;
+ return IRQ_HANDLED;

if (stat & DS3232_REG_SR_A1F) {
ret = regmap_read(ds3232->regmap, DS3232_REG_CR, &control);
if (ret) {
dev_warn(ds3232->dev,
"Read Control Register error %d\n", ret);
- } else {
- /* disable alarm1 interrupt */
- control &= ~(DS3232_REG_CR_A1IE);
- ret = regmap_write(ds3232->regmap, DS3232_REG_CR,
- control);
- if (ret) {
- dev_warn(ds3232->dev,
- "Write Control Register error %d\n",
- ret);
- goto unlock;
- }
-
- /* clear the alarm pend flag */
- stat &= ~DS3232_REG_SR_A1F;
- ret = regmap_write(ds3232->regmap, DS3232_REG_SR, stat);
- if (ret) {
- dev_warn(ds3232->dev,
- "Write Status Register error %d\n",
- ret);
- goto unlock;
- }
-
- rtc_update_irq(ds3232->rtc, 1, RTC_AF | RTC_IRQF);
+ return IRQ_HANDLED;
+ }
+ /* disable alarm1 interrupt */
+ control &= ~(DS3232_REG_CR_A1IE);
+ ret = regmap_write(ds3232->regmap, DS3232_REG_CR, control);
+ if (ret) {
+ dev_warn(ds3232->dev,
+ "Write Control Register error %d\n", ret);
+ return IRQ_HANDLED;
}
- }

-unlock:
- rtc_unlock(ds3232->rtc);
+ /* clear the alarm pend flag */
+ stat &= ~DS3232_REG_SR_A1F;
+ ret = regmap_write(ds3232->regmap, DS3232_REG_SR, stat);
+ if (ret) {
+ dev_warn(ds3232->dev,
+ "Write Status Register error %d\n", ret);
+ return IRQ_HANDLED;
+ }
+
+ rtc_update_irq(ds3232->rtc, 1, RTC_AF | RTC_IRQF);
+ }

return IRQ_HANDLED;
}
--
2.56.0