From 5be5f12199bb24f33016526baeb36492d2cbfa93 Mon Sep 17 00:00:00 2001 From: soren Date: Wed, 22 Mar 2000 20:38:22 +0000 Subject: [PATCH] The firmware uses the clock in BCD mode. --- sys/arch/cobalt/cobalt/clock.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/sys/arch/cobalt/cobalt/clock.c b/sys/arch/cobalt/cobalt/clock.c index a0f8519d375e..152e9ff46819 100644 --- a/sys/arch/cobalt/cobalt/clock.c +++ b/sys/arch/cobalt/cobalt/clock.c @@ -1,4 +1,4 @@ -/* $NetBSD: clock.c,v 1.1 2000/03/19 23:07:43 soren Exp $ */ +/* $NetBSD: clock.c,v 1.2 2000/03/22 20:38:22 soren Exp $ */ /* * Copyright (c) 2000 Soren S. Jorvang. All rights reserved. @@ -77,12 +77,14 @@ inittodr(base) MC146818_GETTOD(NULL, ®s) splx(s); - dt.dt_year = regs[MC_YEAR] + 2000; - dt.dt_mon = regs[MC_MONTH]; - dt.dt_day = regs[MC_DOM]; - dt.dt_hour = regs[MC_HOUR]; - dt.dt_min = regs[MC_MIN]; - dt.dt_sec = regs[MC_SEC]; + dt.dt_year = FROMBCD(regs[MC_YEAR]) + 2000; + dt.dt_mon = FROMBCD(regs[MC_MONTH]); + dt.dt_day = FROMBCD(regs[MC_DOM]); + dt.dt_wday = FROMBCD(regs[MC_DOW]); + dt.dt_hour = FROMBCD(regs[MC_HOUR]); + dt.dt_min = FROMBCD(regs[MC_MIN]); + dt.dt_sec = FROMBCD(regs[MC_SEC]); + time.tv_sec = clock_ymdhms_to_secs(&dt); return; @@ -100,13 +102,13 @@ resettodr(void) splx(s); clock_secs_to_ymdhms(time.tv_sec, &dt); - regs[MC_YEAR] = dt.dt_year % 100; - regs[MC_MONTH] = dt.dt_mon; - regs[MC_DOW] = dt.dt_wday; - regs[MC_DOM] = dt.dt_day; - regs[MC_HOUR] = dt.dt_hour; - regs[MC_MIN] = dt.dt_min; - regs[MC_SEC] = dt.dt_sec; + regs[MC_YEAR] = TOBCD(dt.dt_year % 100); + regs[MC_MONTH] = TOBCD(dt.dt_mon); + regs[MC_DOM] = TOBCD(dt.dt_day); + regs[MC_DOW] = TOBCD(dt.dt_wday); + regs[MC_HOUR] = TOBCD(dt.dt_hour); + regs[MC_MIN] = TOBCD(dt.dt_min); + regs[MC_SEC] = TOBCD(dt.dt_sec); s = splclock(); MC146818_PUTTOD(NULL, ®s);