]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/mips/lasat/ds1603.c
[PATCH] jbd: avoid kfree(NULL)
[linux-2.6-omap-h63xx.git] / arch / mips / lasat / ds1603.c
index 9d7812e03dcd9322f5410963e8a63398878d57d2..7dced67c55ebe3959ba9d5efe8b4eaac9750eb05 100644 (file)
@@ -8,6 +8,7 @@
 #include <asm/lasat/lasat.h>
 #include <linux/delay.h>
 #include <asm/lasat/ds1603.h>
+#include <asm/time.h>
 
 #include "ds1603.h"
 
@@ -138,19 +139,27 @@ static void rtc_end_op(void)
 unsigned long ds1603_read(void)
 {
        unsigned long word;
+       unsigned long flags;
+
+       spin_lock_irqsave(&rtc_lock, flags);
        rtc_init_op();
        rtc_write_byte(READ_TIME_CMD);
        word = rtc_read_word();
        rtc_end_op();
+       spin_unlock_irqrestore(&rtc_lock, flags);
        return word;
 }
 
 int ds1603_set(unsigned long time)
 {
+       unsigned long flags;
+
+       spin_lock_irqsave(&rtc_lock, flags);
        rtc_init_op();
        rtc_write_byte(SET_TIME_CMD);
        rtc_write_word(time);
        rtc_end_op();
+       spin_unlock_irqrestore(&rtc_lock, flags);
 
        return 0;
 }