aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/rtc/rtc-max8907.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/rtc/rtc-max8907.c b/drivers/rtc/rtc-max8907.c
index 86afb797125d..5d0ce597ba83 100644
--- a/drivers/rtc/rtc-max8907.c
+++ b/drivers/rtc/rtc-max8907.c
@@ -51,7 +51,7 @@ static irqreturn_t max8907_irq_handler(int irq, void *data)
51{ 51{
52 struct max8907_rtc *rtc = data; 52 struct max8907_rtc *rtc = data;
53 53
54 regmap_update_bits(rtc->regmap, MAX8907_REG_ALARM0_CNTL, 0x7f, 0); 54 regmap_write(rtc->regmap, MAX8907_REG_ALARM0_CNTL, 0);
55 55
56 rtc_update_irq(rtc->rtc_dev, 1, RTC_IRQF | RTC_AF); 56 rtc_update_irq(rtc->rtc_dev, 1, RTC_IRQF | RTC_AF);
57 57
@@ -64,7 +64,7 @@ static void regs_to_tm(u8 *regs, struct rtc_time *tm)
64 bcd2bin(regs[RTC_YEAR1]) - 1900; 64 bcd2bin(regs[RTC_YEAR1]) - 1900;
65 tm->tm_mon = bcd2bin(regs[RTC_MONTH] & 0x1f) - 1; 65 tm->tm_mon = bcd2bin(regs[RTC_MONTH] & 0x1f) - 1;
66 tm->tm_mday = bcd2bin(regs[RTC_DATE] & 0x3f); 66 tm->tm_mday = bcd2bin(regs[RTC_DATE] & 0x3f);
67 tm->tm_wday = (regs[RTC_WEEKDAY] & 0x07) - 1; 67 tm->tm_wday = (regs[RTC_WEEKDAY] & 0x07);
68 if (regs[RTC_HOUR] & HOUR_12) { 68 if (regs[RTC_HOUR] & HOUR_12) {
69 tm->tm_hour = bcd2bin(regs[RTC_HOUR] & 0x01f); 69 tm->tm_hour = bcd2bin(regs[RTC_HOUR] & 0x01f);
70 if (tm->tm_hour == 12) 70 if (tm->tm_hour == 12)
@@ -88,7 +88,7 @@ static void tm_to_regs(struct rtc_time *tm, u8 *regs)
88 regs[RTC_YEAR1] = bin2bcd(low); 88 regs[RTC_YEAR1] = bin2bcd(low);
89 regs[RTC_MONTH] = bin2bcd(tm->tm_mon + 1); 89 regs[RTC_MONTH] = bin2bcd(tm->tm_mon + 1);
90 regs[RTC_DATE] = bin2bcd(tm->tm_mday); 90 regs[RTC_DATE] = bin2bcd(tm->tm_mday);
91 regs[RTC_WEEKDAY] = tm->tm_wday + 1; 91 regs[RTC_WEEKDAY] = tm->tm_wday;
92 regs[RTC_HOUR] = bin2bcd(tm->tm_hour); 92 regs[RTC_HOUR] = bin2bcd(tm->tm_hour);
93 regs[RTC_MIN] = bin2bcd(tm->tm_min); 93 regs[RTC_MIN] = bin2bcd(tm->tm_min);
94 regs[RTC_SEC] = bin2bcd(tm->tm_sec); 94 regs[RTC_SEC] = bin2bcd(tm->tm_sec);
@@ -153,7 +153,7 @@ static int max8907_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
153 tm_to_regs(&alrm->time, regs); 153 tm_to_regs(&alrm->time, regs);
154 154
155 /* Disable alarm while we update the target time */ 155 /* Disable alarm while we update the target time */
156 ret = regmap_update_bits(rtc->regmap, MAX8907_REG_ALARM0_CNTL, 0x7f, 0); 156 ret = regmap_write(rtc->regmap, MAX8907_REG_ALARM0_CNTL, 0);
157 if (ret < 0) 157 if (ret < 0)
158 return ret; 158 return ret;
159 159
@@ -163,8 +163,7 @@ static int max8907_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
163 return ret; 163 return ret;
164 164
165 if (alrm->enabled) 165 if (alrm->enabled)
166 ret = regmap_update_bits(rtc->regmap, MAX8907_REG_ALARM0_CNTL, 166 ret = regmap_write(rtc->regmap, MAX8907_REG_ALARM0_CNTL, 0x77);
167 0x7f, 0x7f);
168 167
169 return ret; 168 return ret;
170} 169}