diff options
| author | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-07 11:15:23 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-07 11:15:23 -0800 |
| commit | 3f00d3e8fb963968a922d821a9a53b503b687e81 (patch) | |
| tree | dfac1c73ae63f8d48340f3bbb77ee53b322c59e9 /arch/mips/lasat/ds1603.c | |
| parent | 407cf84f956ee4b52da5508d5357b8ae212ff77c (diff) | |
| parent | a637a114f36b94a1ad8b9867f43bac0414958420 (diff) | |
Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
Diffstat (limited to 'arch/mips/lasat/ds1603.c')
| -rw-r--r-- | arch/mips/lasat/ds1603.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/mips/lasat/ds1603.c b/arch/mips/lasat/ds1603.c index 9d7812e03dcd..7dced67c55eb 100644 --- a/arch/mips/lasat/ds1603.c +++ b/arch/mips/lasat/ds1603.c @@ -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; } |
