]> err.no Git - linux-2.6/commitdiff
blackfin RTC driver: disable the write complete irq upon close
authorMike Frysinger <vapier.adi@gmail.com>
Tue, 5 Aug 2008 20:01:19 +0000 (13:01 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 5 Aug 2008 21:33:47 +0000 (14:33 -0700)
Signed-off-by: Mike Frysinger <vapier.adi@gmail.com>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
Cc: David Brownell <david-b@pacbell.net>
Cc: Alessandro Zummo <a.zummo@towertech.it>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/rtc/rtc-bfin.c

index 56656dd6b2c1462316cacb959bb386d23297840f..d53772f59ce5ba45ed3d982c2c49e83af5a7ade2 100644 (file)
@@ -144,13 +144,13 @@ static void bfin_rtc_sync_pending(struct device *dev)
  * Initialize the RTC.  Enable pre-scaler to scale RTC clock
  * to 1Hz and clear interrupt/status registers.
  */
  * Initialize the RTC.  Enable pre-scaler to scale RTC clock
  * to 1Hz and clear interrupt/status registers.
  */
-static void bfin_rtc_reset(struct device *dev)
+static void bfin_rtc_reset(struct device *dev, u16 rtc_ictl)
 {
        struct bfin_rtc *rtc = dev_get_drvdata(dev);
        dev_dbg_stamp(dev);
        bfin_rtc_sync_pending(dev);
        bfin_write_RTC_PREN(0x1);
 {
        struct bfin_rtc *rtc = dev_get_drvdata(dev);
        dev_dbg_stamp(dev);
        bfin_rtc_sync_pending(dev);
        bfin_write_RTC_PREN(0x1);
-       bfin_write_RTC_ICTL(RTC_ISTAT_WRITE_COMPLETE);
+       bfin_write_RTC_ICTL(rtc_ictl);
        bfin_write_RTC_SWCNT(0);
        bfin_write_RTC_ALARM(0);
        bfin_write_RTC_ISTAT(0xFFFF);
        bfin_write_RTC_SWCNT(0);
        bfin_write_RTC_ALARM(0);
        bfin_write_RTC_ISTAT(0xFFFF);
@@ -226,7 +226,7 @@ static int bfin_rtc_open(struct device *dev)
 
        ret = request_irq(IRQ_RTC, bfin_rtc_interrupt, IRQF_SHARED, to_platform_device(dev)->name, dev);
        if (!ret)
 
        ret = request_irq(IRQ_RTC, bfin_rtc_interrupt, IRQF_SHARED, to_platform_device(dev)->name, dev);
        if (!ret)
-               bfin_rtc_reset(dev);
+               bfin_rtc_reset(dev, RTC_ISTAT_WRITE_COMPLETE);
 
        return ret;
 }
 
        return ret;
 }
@@ -234,7 +234,7 @@ static int bfin_rtc_open(struct device *dev)
 static void bfin_rtc_release(struct device *dev)
 {
        dev_dbg_stamp(dev);
 static void bfin_rtc_release(struct device *dev)
 {
        dev_dbg_stamp(dev);
-       bfin_rtc_reset(dev);
+       bfin_rtc_reset(dev, 0);
        free_irq(IRQ_RTC, dev);
 }
 
        free_irq(IRQ_RTC, dev);
 }