aboutsummaryrefslogtreecommitdiff
path: root/scripts/stackusage
diff options
context:
space:
mode:
authorMichael Hamel <[email protected]>2008-07-04 09:59:30 -0700
committerLinus Torvalds <[email protected]>2008-07-04 10:40:05 -0700
commit471d47e3223311d2638755717f97dc9a298f6dc9 (patch)
tree6c3b5280f04776528bb7183aa1f2a3afe71534ca /scripts/stackusage
parent7a36a752d006f6874049da510297eeb7f09d92a7 (diff)
rtc-x1205: Fix alarm set
I have discovered that the current version of rtc-x1205.c does not work correctly when asked to set the alarm time by the RTC_WKALM_SET ioctl() call. This happens because the alarm registers do not behave like the current-time registers. They are non-volatile. Two things go wrong: - the X1205 requires a 10 msec delay after any attempt to write to the non-volatile registers. The x1205_set_datetime() routine does the write as 8 single-byte writes without any delay. Only the first write succeeds. The second is NAKed because the chip is busy. - the X1205 resets the RWEL bit after any write to the non-volatile registers. This would lock out any further writes after the first even with a 10msec delay. I fix this by doing a single 8-byte write and then waiting 10msec for the chip to be ready. A side effect of this change is that it will speed up x1205_rtc_set_time() which uses the same code. I have also implemented the 'enable' bit in the rtc_wkalm structure, which the existing driver does not attempt to do. I have modified both x1205_rtc_set_alarm() to set the AL0E bit, and x1205_rtc_read_alarm() to return it. I have tested this patch on a LinkSys NSLU2 under OpenWRT, but on no other hardware. On the NSLU2 the X1205 correctly asserts its IRQ pin when the alarm time matches the current time. [[email protected]: clean up over-parenthesisation] Signed-off-by: Michael Hamel <[email protected]> Signed-off-by: Alessandro Zummo <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
Diffstat (limited to 'scripts/stackusage')
0 files changed, 0 insertions, 0 deletions