Switch to the new bcd_clocktime conversion routines, and add calls to the

new clock_dbgprint_xxx() functions.
This commit is contained in:
Ian Lepore 2018-03-05 00:43:53 +00:00
parent 0ad122a966
commit 6d27b68a1a
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=330433

View File

@ -297,7 +297,7 @@ static int
s390rtc_gettime(device_t dev, struct timespec *ts) s390rtc_gettime(device_t dev, struct timespec *ts)
{ {
uint8_t bcd[S390_RT1_NBYTES]; uint8_t bcd[S390_RT1_NBYTES];
struct clocktime ct; struct bcd_clocktime bct;
int error; int error;
error = s390rtc_read(dev, S390_REALTIME1, bcd, S390_RT1_NBYTES); error = s390rtc_read(dev, S390_REALTIME1, bcd, S390_RT1_NBYTES);
@ -310,37 +310,39 @@ s390rtc_gettime(device_t dev, struct timespec *ts)
/* /*
* Convert the register values into something useable. * Convert the register values into something useable.
*/ */
ct.nsec = 0; bct.nsec = 0;
ct.sec = FROMBCD(bcd[S390_RT1_SECOND]); bct.sec = bcd[S390_RT1_SECOND];
ct.min = FROMBCD(bcd[S390_RT1_MINUTE]); bct.min = bcd[S390_RT1_MINUTE];
ct.hour = FROMBCD(bcd[S390_RT1_HOUR] & 0x3f); bct.hour = bcd[S390_RT1_HOUR] & 0x3f;
ct.day = FROMBCD(bcd[S390_RT1_DAY]); bct.day = bcd[S390_RT1_DAY];
ct.dow = bcd[S390_RT1_WDAY] & 0x07; bct.dow = bcd[S390_RT1_WDAY] & 0x07;
ct.mon = FROMBCD(bcd[S390_RT1_MONTH]); bct.mon = bcd[S390_RT1_MONTH];
ct.year = FROMBCD(bcd[S390_RT1_YEAR]) + 2000; bct.year = bcd[S390_RT1_YEAR];
return (clock_ct_to_ts(&ct, ts)); clock_dbgprint_bcd(dev, CLOCK_DBG_READ, &bct);
return (clock_bcd_to_ts(&bct, ts, false));
} }
static int static int
s390rtc_settime(device_t dev, struct timespec *ts) s390rtc_settime(device_t dev, struct timespec *ts)
{ {
uint8_t bcd[S390_RT1_NBYTES]; uint8_t bcd[S390_RT1_NBYTES];
struct clocktime ct; struct bcd_clocktime bct;
clock_ts_to_ct(ts, &ct); clock_ts_to_bcd(ts, &bct, false);
clock_dbgprint_bcd(dev, CLOCK_DBG_WRITE, &bct);
/* /*
* Convert our time representation into something the S-xx390 * Convert our time representation into something the S-xx390
* can understand. * can understand.
*/ */
bcd[S390_RT1_SECOND] = TOBCD(ct.sec); bcd[S390_RT1_SECOND] = bct.sec;
bcd[S390_RT1_MINUTE] = TOBCD(ct.min); bcd[S390_RT1_MINUTE] = bct.min;
bcd[S390_RT1_HOUR] = TOBCD(ct.hour); bcd[S390_RT1_HOUR] = bct.hour;
bcd[S390_RT1_DAY] = TOBCD(ct.day); bcd[S390_RT1_DAY] = bct.day;
bcd[S390_RT1_WDAY] = ct.dow; bcd[S390_RT1_WDAY] = bct.dow;
bcd[S390_RT1_MONTH] = TOBCD(ct.mon); bcd[S390_RT1_MONTH] = bct.mon;
bcd[S390_RT1_YEAR] = TOBCD(ct.year % 100); bcd[S390_RT1_YEAR] = bct.year & 0xff;
return (s390rtc_write(dev, S390_REALTIME1, bcd, S390_RT1_NBYTES)); return (s390rtc_write(dev, S390_REALTIME1, bcd, S390_RT1_NBYTES));
} }