forked from Minki/linux
b65769fc01
This fixes a bug in read_persistent_clock() which causes the system clock to lag the Real Time Clock by one month. The problem was noticed on a Mac, but theoretically it must also affect Atari, BVME6000 and Q40. The tm_mon value in the struct rtc_time passed to mach_hwclk() is zero-based, and atari_mste_hwclk(), atari_tt_hwclk(), bvme6000_hwclk(), mac_hwclk() and q40_hwclk() all make this adjustment. Unfortunately, dn_dummy_hwclk(), mvme147_hwclk(), mvme16x_hwclk(), sun3_hwclk() and sun3x_hwclk() fail to decrement tm_mon. Also m68328_hwclk() assumes a one-based tm_mon. Bring these platforms into line and fix read_persistent_clock() so it works correctly on all m68k platforms. The datasheets for the RTC devices found on the affected platforms all confirm that the year is stored as a value in the range 0-99 and the month is stored as a value in the range 1-12. Please refer to the datasheets for MC146818 (Apollo), DS1643 (MVME), ICM7170 (Sun 3) and M48T02 (Sun 3x). Reported-by: Stan Johnson <userm57@yahoo.com> Signed-off-by: Finn Thain <fthain@telegraphics.com.au> Reviewed-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> |
||
---|---|---|
.. | ||
.gitignore | ||
asm-offsets.c | ||
bootinfo_proc.c | ||
dma.c | ||
early_printk.c | ||
entry.S | ||
head.S | ||
ints.c | ||
irq.c | ||
machine_kexec.c | ||
Makefile | ||
module.c | ||
module.lds | ||
pcibios.c | ||
process.c | ||
ptrace.c | ||
relocate_kernel.S | ||
setup_mm.c | ||
setup_no.c | ||
setup.c | ||
signal.c | ||
sun3-head.S | ||
sys_m68k.c | ||
syscalltable.S | ||
time.c | ||
traps.c | ||
uboot.c | ||
vectors.c | ||
vmlinux-nommu.lds | ||
vmlinux-std.lds | ||
vmlinux-sun3.lds | ||
vmlinux.lds.S |