From 18fe8429cc53bbba215d69ab8c6293230095df70 Mon Sep 17 00:00:00 2001 From: Kevin Liu Date: Fri, 23 Mar 2012 15:02:36 -0700 Subject: [PATCH] --- yaml --- r: 295247 b: refs/heads/master c: fad0738dcf6feccf601f5a24b8ccd3b26894b337 h: refs/heads/master i: 295245: 0373095d6497f1955f0df9cc92f58f6136fa44ab 295243: 4865f59f11971ce0cfa0cae001cc3826f316ba06 295239: 7e92cb75cf9d95d1f3bb6fe65349eeaa06b73b5d 295231: 47df4a30286b2b02c3399aa6f420111cfa6e8f3a v: v3 --- [refs] | 2 +- trunk/drivers/rtc/rtc-max8925.c | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index d4c90782acb2..3a14c05efc44 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0cf30bdd919685b201f715ea347dd96d590942e8 +refs/heads/master: fad0738dcf6feccf601f5a24b8ccd3b26894b337 diff --git a/trunk/drivers/rtc/rtc-max8925.c b/trunk/drivers/rtc/rtc-max8925.c index ff6b9a2cb8e3..1459055a83aa 100644 --- a/trunk/drivers/rtc/rtc-max8925.c +++ b/trunk/drivers/rtc/rtc-max8925.c @@ -193,10 +193,17 @@ static int max8925_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm) ret = max8925_reg_read(info->rtc, MAX8925_RTC_IRQ_MASK); if (ret < 0) goto out; - if ((ret & ALARM0_IRQ) == 0) - alrm->enabled = 1; - else + if (ret & ALARM0_IRQ) { alrm->enabled = 0; + } else { + ret = max8925_reg_read(info->rtc, MAX8925_ALARM0_CNTL); + if (ret < 0) + goto out; + if (!ret) + alrm->enabled = 0; + else + alrm->enabled = 1; + } ret = max8925_reg_read(info->rtc, MAX8925_RTC_STATUS); if (ret < 0) goto out; @@ -221,8 +228,11 @@ static int max8925_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm) ret = max8925_bulk_write(info->rtc, MAX8925_ALARM0_SEC, TIME_NUM, buf); if (ret < 0) goto out; - /* only enable alarm on year/month/day/hour/min/sec */ - ret = max8925_reg_write(info->rtc, MAX8925_ALARM0_CNTL, 0x77); + if (alrm->enabled) + /* only enable alarm on year/month/day/hour/min/sec */ + ret = max8925_reg_write(info->rtc, MAX8925_ALARM0_CNTL, 0x77); + else + ret = max8925_reg_write(info->rtc, MAX8925_ALARM0_CNTL, 0x0); if (ret < 0) goto out; out: