[rtc-linux] [PATCH v3 5/8] rtc: ds3232-core: add register access error checks
From: Akinobu Mita <akinobu.mita@gmail.com>
Date: 2016-02-29 15:14:24
Subsystem:
real time clock (rtc) subsystem, the rest · Maintainers:
Alexandre Belloni, Linus Torvalds
Add missing register access error checks and make it return error code or print error message. Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> Cc: Alessandro Zummo <redacted> Cc: Alexandre Belloni <redacted> Cc: Dennis Aberilla <redacted> --- * New patch from this version drivers/rtc/rtc-ds3232-core.c | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-)
diff --git a/drivers/rtc/rtc-ds3232-core.c b/drivers/rtc/rtc-ds3232-core.c
index 7de30b3..bcce75b 100644
--- a/drivers/rtc/rtc-ds3232-core.c
+++ b/drivers/rtc/rtc-ds3232-core.c@@ -261,6 +261,8 @@ static int ds3232_set_alarm(struct device *dev, struct rtc_wkalrm *alarm) goto out; ret = regmap_bulk_write(ds3232->regmap, DS3232_REG_ALARM1, buf, 4); + if (ret) + goto out; if (alarm->enabled) { control |= DS3232_REG_CR_A1IE;
@@ -271,7 +273,7 @@ out: return ret; } -static void ds3232_update_alarm(struct device *dev, unsigned int enabled) +static int ds3232_update_alarm(struct device *dev, unsigned int enabled) { struct ds3232 *ds3232 = dev_get_drvdata(dev); int control;
@@ -307,10 +309,12 @@ static void ds3232_update_alarm(struct device *dev, unsigned int enabled) else /* disable alarm1 interrupt */ control &= ~(DS3232_REG_CR_A1IE); - regmap_write(ds3232->regmap, DS3232_REG_CR, control); + ret = regmap_write(ds3232->regmap, DS3232_REG_CR, control); unlock: mutex_unlock(&ds3232->mutex); + + return ret; } static int ds3232_alarm_irq_enable(struct device *dev, unsigned int enabled)
@@ -320,9 +324,7 @@ static int ds3232_alarm_irq_enable(struct device *dev, unsigned int enabled) if (ds3232->irq <= 0) return -EINVAL; - ds3232_update_alarm(dev, enabled); - - return 0; + return ds3232_update_alarm(dev, enabled); } static irqreturn_t ds3232_irq(int irq, void *dev_id)
@@ -363,11 +365,24 @@ static void ds3232_work(struct work_struct *work) } else { /* disable alarm1 interrupt */ control &= ~(DS3232_REG_CR_A1IE); - regmap_write(ds3232->regmap, DS3232_REG_CR, control); + 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; - regmap_write(ds3232->regmap, DS3232_REG_SR, stat); + 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);
--
2.5.0
--
--
You received this message because you are subscribed to "rtc-linux".
Membership options at http://groups.google.com/group/rtc-linux .
Please read http://groups.google.com/group/rtc-linux/web/checklist
before submitting a driver.
---
You received this message because you are subscribed to the Google Groups "rtc-linux" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rtc-linux+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.