diff mbox

Re: mfd: tps6586x: add RTC driver for TI TPS6586x

Message ID 738e2c6d-2b72-4754-9187-db599e827cbb@17g2000prr.googlegroups.com
State Superseded
Headers show

Commit Message

Wei Ni March 9, 2011, 2:20 a.m. UTC
I use "diff -u" to generate diff patch again.
Please check it.


Thanks
Wei.
diff mbox

Patch

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