@@ -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);