Back port from 2.6.22 kernel of LinkstationWiki's arm9 kernel diff -urN linux-2.6.20-arm9-mvsata/arch/arm/mach-mv88fxx81/Board/rtc/mvDS1339.c linux-2.6.20-arm9-mvsata-tsorg/arch/arm/mach-mv88fxx81/Board/rtc/mvDS1339.c --- linux-2.6.20-arm9-mvsata/arch/arm/mach-mv88fxx81/Board/rtc/mvDS1339.c 2007-09-02 00:10:54.000000000 +0900 +++ linux-2.6.20-arm9-mvsata-tsorg/arch/arm/mach-mv88fxx81/Board/rtc/mvDS1339.c 2007-08-31 01:29:37.000000000 +0900 @@ -108,6 +108,7 @@ *******************************************************************************/ MV_VOID mvRtcDS1339TimeSet(MV_RTC_TIME* time) { +#if defined(CONFIG_USE_RS5C372) MV_U8 tempValue; MV_U8 tens; MV_U8 single; @@ -158,7 +159,7 @@ tempValue = ((tens << RTC_CLOCK_10YEAR_SHF) & RTC_CLOCK_10YEAR_MSK )| ((single << RTC_CLOCK_YEAR_SHF) & RTC_CLOCK_YEAR_MSK); mvRtcCharWrite(RTC_CLOCK_YEAR,tempValue); - +#endif return; } @@ -181,6 +182,7 @@ *******************************************************************************/ MV_VOID mvRtcDS1339TimeGet(MV_RTC_TIME* time) { +#if defined(CONFIG_USE_RS5C372) MV_U8 tempValue; MV_U32 tens; MV_U32 single; @@ -225,7 +227,7 @@ tens = (tempValue & RTC_CLOCK_10YEAR_MSK) >> RTC_CLOCK_10YEAR_SHF; single = (tempValue & RTC_CLOCK_YEAR_MSK) >> RTC_CLOCK_YEAR_SHF; time->year = 10*tens + single; - +#endif return; } @@ -294,6 +296,7 @@ *******************************************************************************/ static MV_VOID mvRtcCharRead(MV_U32 offset, MV_U8 *data) { +#if defined(CONFIG_USE_RS5C372) MV_TWSI_SLAVE twsiSlave; twsiSlave.slaveAddr.type = mvBoardRtcTwsiAddrTypeGet(); @@ -302,7 +305,7 @@ twsiSlave.offset = offset; twsiSlave.moreThen256 = MV_FALSE; mvTwsiRead (&twsiSlave, data, 1); - +#endif return; } @@ -324,6 +327,7 @@ *******************************************************************************/ static MV_VOID mvRtcCharWrite(MV_U32 offset, MV_U8 data) { +#if defined(CONFIG_USE_RS5C372) MV_TWSI_SLAVE twsiSlave; twsiSlave.slaveAddr.type = mvBoardRtcTwsiAddrTypeGet(); @@ -332,6 +336,34 @@ twsiSlave.offset = offset; twsiSlave.moreThen256 = MV_FALSE; mvTwsiWrite (&twsiSlave, &data, 1); +#endif + return; +} + +////////////Below functions are added by YH. +/******************************************************************************* +* mvRtcDS1339TimeSet - Set the Alarm of the Real time clock +* +* DESCRIPTION: +* +* INPUT: +* Number would like to set. +* OUTPUT: +* None. +* +* RETURN: +* None. +* +*******************************************************************************/ +MV_VOID BufRtcDS1339AlarmBSet(int8_t data) +{ + mvRtcCharWrite(RTC_ALARM2_MINUTES, (MV_U8)data); + return; +} + +MV_VOID BufRtcDS1339AlarmBGet(int8_t *data) +{ + mvRtcCharRead(RTC_ALARM2_MINUTES, (MV_U8 *)data); return; } diff -urN linux-2.6.20-arm9-mvsata/arch/arm/mach-mv88fxx81/Board/rtc/mvDS1339.h linux-2.6.20-arm9-mvsata-tsorg/arch/arm/mach-mv88fxx81/Board/rtc/mvDS1339.h --- linux-2.6.20-arm9-mvsata/arch/arm/mach-mv88fxx81/Board/rtc/mvDS1339.h 2007-09-02 00:10:54.000000000 +0900 +++ linux-2.6.20-arm9-mvsata-tsorg/arch/arm/mach-mv88fxx81/Board/rtc/mvDS1339.h 2007-08-31 01:29:37.000000000 +0900 @@ -91,6 +91,9 @@ MV_VOID mvRtcDS1339AlarmSet(MV_RTC_TIME* time); +MV_VOID BufRtcDS1339AlarmBSet(int8_t data); + +MV_VOID BufRtcDS1339AlarmBGet(int8_t *data); #endif /* __INCmvDS1511h */ diff -urN linux-2.6.20-arm9-mvsata/arch/arm/mach-mv88fxx81/LSP/time.c linux-2.6.20-arm9-mvsata-tsorg/arch/arm/mach-mv88fxx81/LSP/time.c --- linux-2.6.20-arm9-mvsata/arch/arm/mach-mv88fxx81/LSP/time.c 2007-09-02 00:10:54.000000000 +0900 +++ linux-2.6.20-arm9-mvsata-tsorg/arch/arm/mach-mv88fxx81/LSP/time.c 2007-09-01 22:07:19.000000000 +0900 @@ -79,39 +79,39 @@ extern int (*set_rtc)(void); -/*static inline int rtc_set_time(struct rtc_time *tm) +static inline int mv_rtc_set_time(struct rtc_time *tm) { MV_RTC_TIME time; unsigned long temp_t; rtc_tm_to_time(tm, &temp_t); - to_tm(temp_t, &time);*/ + to_tm(temp_t, &time); /* same as in the U-Boot we use the year for century 20 only */ -/* time.year -= 2000; + time.year -= 2000; mvRtcDS1339TimeSet(&time); return 0; -}*/ +} -/*static int rtc_read_time(struct rtc_time *tm) +static int mv_rtc_read_time(struct rtc_time *tm) { MV_RTC_TIME time; unsigned long temp_t; - mvRtcDS1339TimeGet(&time);*/ + mvRtcDS1339TimeGet(&time); /* same as in the U-Boot we use the year for century 20 only */ -/* temp_t = mktime ( time.year + 2000, time.month, + temp_t = mktime ( time.year + 2000, time.month, time.date, time.hours, time.minutes, time.seconds); rtc_time_to_tm(temp_t, tm); return 0; -}*/ +} -static struct rtc_ops rtc_ops = { +static struct rtc_ops mv_rtc_ops = { .owner = THIS_MODULE, - .read_time = rtc_read_time, - .set_time = rtc_set_time, + .read_time = mv_rtc_read_time, + .set_time = mv_rtc_set_time, }; @@ -129,7 +129,7 @@ set_rtc = mv_set_rtc; - register_rtc(&rtc_ops); + register_rtc(&mv_rtc_ops); return 0; }