diff options
-rw-r--r-- | drivers/rtc/rtc-max8907.c | 11 |
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 | } |