TOBCD
val = TOBCD(ct.sec) | (TOBCD(ct.min) << 8) |
(TOBCD(ct.hour) << 16) | (TOBCD( ct.dow + 1) << 24);
val = TOBCD(ct.day) | (TOBCD(ct.mon) << 8) |
(TOBCD(ct.year - YEAR_BASE) << 16);
RTC_WRITE4(rtc_sc, RTC_ALARM2_SECONDS, TOBCD(ct.sec));
RTC_WRITE4(rtc_sc, RTC_ALARM2_MINUTES, TOBCD(ct.min));
RTC_WRITE4(rtc_sc, RTC_ALARM2_HOURS, TOBCD(ct.hour));
RTC_WRITE4(rtc_sc, RTC_ALARM2_DAYS, TOBCD(ct.day));
RTC_WRITE4(rtc_sc, RTC_ALARM2_MONTHS, TOBCD(ct.mon));
RTC_WRITE4(rtc_sc, RTC_ALARM2_YEARS, TOBCD(ct.year - POSIX_BASE_YEAR));
time_regs.secs = TOBCD(ct.sec);
time_regs.mins = TOBCD(ct.min);
time_regs.hours = TOBCD(ct.hour);
time_regs.date = TOBCD(ct.day);
time_regs.month = TOBCD(ct.mon + 1);
time_regs.year = TOBCD(ct.year - 2000);
bct->year = TOBCD(ct.year % 100) | (TOBCD(ct.year / 100) << 8);
bct->mon = TOBCD(ct.mon);
bct->day = TOBCD(ct.day);
bct->hour = TOBCD(ct.hour);
bct->min = TOBCD(ct.min);
bct->sec = TOBCD(ct.sec);
(*sc->sc_write)(dev, DS1553_OFF_SECONDS, TOBCD(ct.sec) &
(*sc->sc_write)(dev, DS1553_OFF_MINUTES, TOBCD(ct.min) &
(*sc->sc_write)(dev, DS1553_OFF_HOURS, TOBCD(ct.hour) &
(*sc->sc_write)(dev, DS1553_OFF_DAYOFWEEK, TOBCD(ct.dow + 1) &
(*sc->sc_write)(dev, DS1553_OFF_DATE, TOBCD(ct.day) &
(*sc->sc_write)(dev, DS1553_OFF_MONTH, TOBCD(ct.mon) &
(*sc->sc_write)(dev, DS1553_OFF_YEAR, TOBCD(ct.year));