From owner-cvs-all@FreeBSD.ORG Sun Sep 19 21:38:11 2004 Return-Path: Delivered-To: cvs-all@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id E7CC316A4CE; Sun, 19 Sep 2004 21:38:11 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id C172643D62; Sun, 19 Sep 2004 21:38:11 +0000 (GMT) (envelope-from marius@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id i8JLcB6J094538; Sun, 19 Sep 2004 21:38:11 GMT (envelope-from marius@repoman.freebsd.org) Received: (from marius@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id i8JLcBC7094537; Sun, 19 Sep 2004 21:38:11 GMT (envelope-from marius) Message-Id: <200409192138.i8JLcBC7094537@repoman.freebsd.org> From: Marius Strobl Date: Sun, 19 Sep 2004 21:38:11 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/dev/mk48txx mk48txx.c mk48txxreg.h X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 Sep 2004 21:38:12 -0000 marius 2004-09-19 21:38:11 UTC FreeBSD src repository Modified files: sys/dev/mk48txx mk48txx.c mk48txxreg.h Log: - Some of the upper bits of the time related (seconds, minutes, etc.) registers are control bits or depending on the model contain additional time bits with a different meaning than the lower ones. In order to only read the desired time bits and not change the upper bits on write use appropriate masks in the gettime and settime function respectively. Due to the polarity of the stop oscillator bit and the fact that the century bits aren't used on sparc64 not masking them didn't cause problems so far. - Fix two off-by-one errors in the handling of the day of week. The genclock code represents the dow as 0 - 6 with 0 being Sunday but the mk48txx use 1 - 7 with 1 being Sunday. In the settime function when writing the dow to the clock the range wasn't adjusted accordingly but the clock apparently played along nicely otherwise the second bug in the gettime function which mapped 1 - 7 to 0 - 6 but with 0 meaning Saturday would have been triggered. Fixing these makes the date being stored in the same format Sun/Solaris uses and cures the "Invalid time in real time clock. Check and reset the date immediately!" when the date was set under Solaris prior to booting FreeBSD/sparc64. [1] Looking at other clock drivers/code e.g. FreeBSD/alpha the former "bug", i.e. storing the dow as 0 - 6 even when the clock uses 1 - 7, seems to be common but might be on purpose for compatibility when multi-booting with other OS which do the same. So it might make sense to add a flag to handle the dow off-by-one for use of this driver on platforms other than sparc64. - Check the state of the battery on mk48txx that support this in the attach function. - Add a note that use of the century bit should be implemented but isn't required at the moment because it isn't used on sparc64. Problem noted by: joerg [1] MT5 candidate. Revision Changes Path 1.4 +53 -14 src/sys/dev/mk48txx/mk48txx.c 1.2 +78 -5 src/sys/dev/mk48txx/mk48txxreg.h