From 32643217d84ca78ea266d4b00ad8fc8f7c7a0226 Mon Sep 17 00:00:00 2001 From: Alexandre Belloni Date: Mon, 19 Oct 2026 23:18:10 +0200 Subject: [PATCH] rtc: ds3232: use guard Use guard() to simplify error handling Link: https://patch.msgid.link/20261019211827.126262-9-alexandre.belloni@bootlin.com Signed-off-by: Alexandre Belloni --- 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; }