From owner-svn-src-all@FreeBSD.ORG Sat Dec 31 23:21:37 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3340E106566C; Sat, 31 Dec 2011 23:21:37 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0761A8FC16; Sat, 31 Dec 2011 23:21:37 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pBVNLaot087504; Sat, 31 Dec 2011 23:21:36 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pBVNLa8l087502; Sat, 31 Dec 2011 23:21:36 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <201112312321.pBVNLa8l087502@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Sat, 31 Dec 2011 23:21:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r229161 - head/sys/mips/cavium X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 31 Dec 2011 23:21:37 -0000 Author: gonzo Date: Sat Dec 31 23:21:36 2011 New Revision: 229161 URL: http://svn.freebsd.org/changeset/base/229161 Log: - struct clocktime sets different ranges for DOW and month comparing to struct timeval. for clocktime they should be 1..7 and 1..12 respectively - CAPK-0100ND uses RTC without centruy bit (DS1307) so set it 21st Modified: head/sys/mips/cavium/octeon_ds1337.c Modified: head/sys/mips/cavium/octeon_ds1337.c ============================================================================== --- head/sys/mips/cavium/octeon_ds1337.c Sat Dec 31 22:37:12 2011 (r229160) +++ head/sys/mips/cavium/octeon_ds1337.c Sat Dec 31 23:21:36 2011 (r229161) @@ -81,9 +81,9 @@ static int validate_ct_struct(struct clo CT_CHECK(ct->min < 0 || ct->min > 59, "minute"); CT_CHECK(ct->hour < 0 || ct->hour > 23, "hour"); CT_CHECK(ct->day < 1 || ct->day > 31, "day"); - CT_CHECK(ct->dow < 0 || ct->dow > 6, "day of week"); - CT_CHECK(ct->mon < 0 || ct->mon > 11, "month"); - CT_CHECK(ct->year < 0 || ct->year > 200,"year"); + CT_CHECK(ct->dow < 1 || ct->dow > 7, "day of week"); + CT_CHECK(ct->mon < 1 || ct->mon > 12, "month"); + CT_CHECK(ct->year > 2037,"year"); return rc; } @@ -124,10 +124,17 @@ uint32_t cvmx_rtc_ds1337_read(void) { ct.hour = (ct.hour + 12) % 24; } - ct.dow = (reg[3] & 0x7) - 1; /* Day of week field is 0..6 */ + ct.dow = (reg[3] & 0x7); /* Day of week field is 1..7 */ ct.day = bcd2bin(reg[4] & 0x3f); - ct.mon = bcd2bin(reg[5] & 0x1f) - 1; /* Month field is 0..11 */ - ct.year = ((reg[5] & 0x80) ? 100 : 0) + bcd2bin(reg[6]); + ct.mon = bcd2bin(reg[5] & 0x1f); /* Month field is 1..12 */ +#if defined(OCTEON_BOARD_CAPK_0100ND) + /* + * CAPK-0100ND uses DS1307 that does not have century bit + */ + ct.year = 2000 + bcd2bin(reg[6]); +#else + ct.year = ((reg[5] & 0x80) ? 2000 : 1900) + bcd2bin(reg[6]); +#endif if (validate_ct_struct(&ct)) @@ -166,11 +173,11 @@ int cvmx_rtc_ds1337_write(uint32_t time) reg[0] = bin2bcd(ct.sec); reg[1] = bin2bcd(ct.min); - reg[2] = bin2bcd(ct.hour); /* Force 0..23 format even if using AM/PM */ - reg[3] = bin2bcd(ct.dow + 1); + reg[2] = bin2bcd(ct.hour); /* Force 0..23 format even if using AM/PM */ + reg[3] = bin2bcd(ct.dow); reg[4] = bin2bcd(ct.day); - reg[5] = bin2bcd(ct.mon + 1); - if (ct.year >= 100) /* Set century bit*/ + reg[5] = bin2bcd(ct.mon); + if (ct.year >= 2000) /* Set century bit*/ { reg[5] |= 0x80; }