From patchwork Wed Mar 9 02:20:34 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Re: mfd: tps6586x: add RTC driver for TI TPS6586x Date: Tue, 08 Mar 2011 16:20:34 -0000 From: Wei Ni X-Patchwork-Id: 86053 Message-Id: <738e2c6d-2b72-4754-9187-db599e827cbb@17g2000prr.googlegroups.com> To: rtc-linux I use "diff -u" to generate diff patch again. Please check it. Thanks Wei. --- rtc-tps6586x.c-orig 2011-03-08 15:58:40.000000000 +0800 +++ rtc-tps6586x.c 2011-03-09 10:15:27.310598802 +0800 @@ -90,14 +90,6 @@ dev_err(dev, "requested time unsupported\n"); return -EINVAL; } - - if (alrm->enabled && !rtc->irq_en) { - enable_irq(rtc->irq); - rtc->irq_en = true; - } else if (!alrm->enabled && rtc->irq_en) { - disable_irq(rtc->irq); - rtc->irq_en = false; - } seconds -= rtc->epoch_start; @@ -147,6 +139,11 @@ dev_err(dev, "can't set alarm to requested time\n"); return -EINVAL; } + + if (rtc->irq_en && rtc->irq_en && (rtc->irq != -1)) { + disable_irq(rtc->irq); + rtc->irq_en = false; + } seconds -= rtc->epoch_start; ticks = (unsigned long long)seconds << 10; @@ -156,8 +153,15 @@ buff[2] = ticks & 0xff; err = tps6586x_writes(tps_dev, RTC_ALARM1_HI, sizeof(buff), buff); - if (err) + if (err) { dev_err(tps_dev, "unable to program alarm\n"); + return err; + } + + if (alrm->enabled && (rtc->irq != -1)) { + enable_irq(rtc->irq); + rtc->irq_en = true; + } return err; } @@ -272,6 +276,9 @@ epoch = &pdata->start; + epoch->year = 2009; + epoch->month = 1; + epoch->day = 1; rtc->epoch_start = mktime(epoch->year, epoch->month, epoch->day, epoch->hour, epoch->min, epoch->sec);