diff options
Diffstat (limited to 'rtc')
-rw-r--r-- | rtc/mc146818.c | 10 | ||||
-rw-r--r-- | rtc/mk48t59.c | 18 |
2 files changed, 26 insertions, 2 deletions
diff --git a/rtc/mc146818.c b/rtc/mc146818.c index 1d65808..20b1b3e 100644 --- a/rtc/mc146818.c +++ b/rtc/mc146818.c @@ -69,10 +69,13 @@ void rtc_get (struct rtc_time *tmp) wday = rtc_read (RTC_DAY_OF_WEEK); mon = rtc_read (RTC_MONTH); year = rtc_read (RTC_YEAR); +#ifdef CONFIG_AMIGAONEG3SE + wday -= 1; /* VIA 686 stores Sunday = 1, Monday = 2, ... */ +#endif #ifdef RTC_DEBUG printf ( "Get RTC year: %02x mon/cent: %02x mday: %02x wday: %02x " "hr: %02x min: %02x sec: %02x\n", - year, mon_cent, mday, wday, + year, mon, mday, wday, hour, min, sec ); printf ( "Alarms: month: %02x hour: %02x min: %02x sec: %02x\n", rtc_read (RTC_CONFIG_D) & 0x3F, @@ -111,8 +114,11 @@ void rtc_set (struct rtc_time *tmp) rtc_write (RTC_YEAR, bin2bcd(tmp->tm_year % 100)); rtc_write (RTC_MONTH, bin2bcd(tmp->tm_mon)); - +#ifdef CONFIG_AMIGAONEG3SE + rtc_write (RTC_DAY_OF_WEEK, bin2bcd(tmp->tm_wday)+1); +#else rtc_write (RTC_DAY_OF_WEEK, bin2bcd(tmp->tm_wday)); +#endif rtc_write (RTC_DATE_OF_MONTH, bin2bcd(tmp->tm_mday)); rtc_write (RTC_HOURS, bin2bcd(tmp->tm_hour)); rtc_write (RTC_MINUTES, bin2bcd(tmp->tm_min )); diff --git a/rtc/mk48t59.c b/rtc/mk48t59.c index 2d3c278..664d310 100644 --- a/rtc/mk48t59.c +++ b/rtc/mk48t59.c @@ -65,6 +65,24 @@ static void rtc_write (short reg, uchar val) out8(RTC(reg),val); } +#elif defined(CONFIG_AMIGAONEG3SE) + +#include "../board/MAI/AmigaOneG3SE/via686.h" +#include "../board/MAI/AmigaOneG3SE/memio.h" + + +static uchar rtc_read (short reg) +{ + out_byte(CMOS_ADDR, (uint8)reg); + return in_byte(CMOS_DATA); +} + +static void rtc_write (short reg, uchar val) +{ + out_byte(CMOS_ADDR, (uint8)reg); + out_byte(CMOS_DATA, (uint8)val); +} + #else # error Board specific rtc access functions should be supplied #endif |