Module Name: src
Committed By: macallan
Date: Fri Dec 14 22:05:36 UTC 2018
Modified Files:
src/sys/dev/i2c: ds1307.c files.i2c
Log Message:
add options DSRTC_YEAR_START_2K for machines which use 2000 and not 1970
as base to count years from, like Iyonix.
While there apply the offset when writing to the clock as well.
To generate a diff of this commit:
cvs rdiff -u -r1.29 -r1.30 src/sys/dev/i2c/ds1307.c
cvs rdiff -u -r1.96 -r1.97 src/sys/dev/i2c/files.i2c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/i2c/ds1307.c
diff -u src/sys/dev/i2c/ds1307.c:1.29 src/sys/dev/i2c/ds1307.c:1.30
--- src/sys/dev/i2c/ds1307.c:1.29 Tue Jun 26 06:03:57 2018
+++ src/sys/dev/i2c/ds1307.c Fri Dec 14 22:05:36 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: ds1307.c,v 1.29 2018/06/26 06:03:57 thorpej Exp $ */
+/* $NetBSD: ds1307.c,v 1.30 2018/12/14 22:05:36 macallan Exp $ */
/*
* Copyright (c) 2003 Wasabi Systems, Inc.
@@ -36,7 +36,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ds1307.c,v 1.29 2018/06/26 06:03:57 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ds1307.c,v 1.30 2018/12/14 22:05:36 macallan Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -54,6 +54,7 @@ __KERNEL_RCSID(0, "$NetBSD: ds1307.c,v 1
#include <dev/sysmon/sysmonvar.h>
#include "ioconf.h"
+#include "opt_dsrtc.h"
struct dsrtc_model {
const i2c_addr_t *dm_valid_addrs;
@@ -316,6 +317,7 @@ dsrtc_attach(device_t parent, device_t s
sc->sc_dev = self;
sc->sc_open = 0;
sc->sc_todr.cookie = sc;
+
if (dm->dm_flags & DSRTC_FLAG_BCD) {
sc->sc_todr.todr_gettime_ymdhms = dsrtc_gettime_ymdhms;
sc->sc_todr.todr_settime_ymdhms = dsrtc_settime_ymdhms;
@@ -325,6 +327,10 @@ dsrtc_attach(device_t parent, device_t s
}
sc->sc_todr.todr_setwen = NULL;
+#ifdef DSRTC_YEAR_START_2K
+ sc->sc_model.dm_flags |= DSRTC_FLAG_YEAR_START_2K;
+#endif
+
todr_attach(&sc->sc_todr);
if ((sc->sc_model.dm_flags & DSRTC_FLAG_TEMP) != 0) {
int error;
@@ -571,7 +577,7 @@ dsrtc_clock_write_ymdhms(struct dsrtc_so
{
struct dsrtc_model * const dm = &sc->sc_model;
uint8_t bcd[DSXXXX_RTC_SIZE], cmdbuf[2];
- int error;
+ int error, offset;
KASSERT(DSXXXX_RTC_SIZE >= dm->dm_rtc_size);
@@ -585,8 +591,15 @@ dsrtc_clock_write_ymdhms(struct dsrtc_so
bcd[DSXXXX_DATE] = bintobcd(dt->dt_day);
bcd[DSXXXX_DAY] = bintobcd(dt->dt_wday);
bcd[DSXXXX_MONTH] = bintobcd(dt->dt_mon);
- bcd[DSXXXX_YEAR] = bintobcd((dt->dt_year - POSIX_BASE_YEAR) % 100);
- if (dt->dt_year - POSIX_BASE_YEAR >= 100)
+
+ if (sc->sc_model.dm_flags & DSRTC_FLAG_YEAR_START_2K) {
+ offset = 2000;
+ } else {
+ offset = POSIX_BASE_YEAR;
+ }
+
+ bcd[DSXXXX_YEAR] = bintobcd((dt->dt_year - offset) % 100);
+ if (dt->dt_year - offset >= 100)
bcd[DSXXXX_MONTH] |= DSXXXX_MONTH_CENTURY;
if ((error = iic_acquire_bus(sc->sc_tag, I2C_F_POLL)) != 0) {
Index: src/sys/dev/i2c/files.i2c
diff -u src/sys/dev/i2c/files.i2c:1.96 src/sys/dev/i2c/files.i2c:1.97
--- src/sys/dev/i2c/files.i2c:1.96 Sun Sep 2 01:16:58 2018
+++ src/sys/dev/i2c/files.i2c Fri Dec 14 22:05:36 2018
@@ -1,4 +1,4 @@
-# $NetBSD: files.i2c,v 1.96 2018/09/02 01:16:58 jmcneill Exp $
+# $NetBSD: files.i2c,v 1.97 2018/12/14 22:05:36 macallan Exp $
obsolete defflag opt_i2cbus.h I2C_SCAN
define i2cbus { }
@@ -123,6 +123,7 @@ file dev/i2c/lm87.c lmenv
device dsrtc: sysmon_envsys
attach dsrtc at iic
file dev/i2c/ds1307.c dsrtc
+defflag opt_dsrtc.h DSRTC_YEAR_START_2K
# Xicor X1226 Real Time Clock
device xrtc