| /******************************************************************************* |
| Copyright (C) Marvell International Ltd. and its affiliates |
| |
| ******************************************************************************** |
| Marvell GPL License Option |
| |
| If you received this File from Marvell, you may opt to use, redistribute and/or |
| modify this File in accordance with the terms and conditions of the General |
| Public License Version 2, June 1991 (the "GPL License"), a copy of which is |
| available along with the File in the license.txt file or by writing to the Free |
| Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or |
| on the worldwide web at http://www.gnu.org/licenses/gpl.txt. |
| |
| THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED |
| WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY |
| DISCLAIMED. The GPL License provides additional details about this warranty |
| disclaimer. |
| |
| *******************************************************************************/ |
| |
| |
| /* #define RTC_DEBUG */ |
| |
| #include <common.h> |
| #include <command.h> |
| #include <rtc.h> |
| |
| #ifdef MV_INCLUDE_RTC |
| #include "rtc/integ_rtc/mvRtc.h" |
| #elif defined(CONFIG_RTC_DS1338_DS1339) |
| #include "rtc/ext_rtc/mvDS133x.h" |
| #endif |
| |
| #if defined(CONFIG_CMD_DATE) |
| |
| /* since this rtc dosen't support century we will use 20 as default */ |
| #define CENTURY 20 |
| |
| int rtc_get( struct rtc_time *tmp ) |
| { |
| MV_RTC_TIME time; |
| #ifdef MV_INCLUDE_RTC |
| mvRtcTimeGet(&time); |
| #elif defined(CONFIG_RTC_DS1338_DS1339) |
| mvRtcDS133xTimeGet(&time); |
| #endif |
| tmp->tm_year = (CENTURY * 100) + time.year; |
| tmp->tm_mon = time.month; |
| tmp->tm_mday = time.date; |
| tmp->tm_wday = time.day; |
| tmp->tm_hour = time.hours; |
| tmp->tm_min = time.minutes; |
| tmp->tm_sec = time.seconds; |
| tmp->tm_yday = 0; |
| tmp->tm_isdst= 0; |
| #ifdef RTC_DEBUG |
| printf( "Get DATE: %4d-%02d-%02d (wday=%d) TIME: %2d:%02d:%02d\n", |
| tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday, |
| tmp->tm_hour, tmp->tm_min, tmp->tm_sec ); |
| #endif |
| return 0; |
| } |
| |
| int rtc_set( struct rtc_time *tmp ) |
| { |
| MV_RTC_TIME time; |
| #ifdef RTC_DEBUG |
| printf( "Set DATE: %4d-%02d-%02d (wday=%d) TIME: %2d:%02d:%02d\n", |
| tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday, |
| tmp->tm_hour, tmp->tm_min, tmp->tm_sec); |
| #endif |
| time.month = tmp->tm_mon; |
| time.date = tmp->tm_mday; |
| time.day = tmp->tm_wday; |
| time.hours = tmp->tm_hour; |
| time.minutes = tmp->tm_min; |
| time.seconds = tmp->tm_sec; |
| if((tmp->tm_year/100) != CENTURY) |
| printf("Warning: century isn't supported to be set(always %d) \n",CENTURY); |
| time.year = tmp->tm_year%100; |
| #ifdef MV_INCLUDE_RTC |
| mvRtcTimeSet(&time); |
| #elif defined(CONFIG_RTC_DS1338_DS1339) |
| mvRtcDS133xTimeSet(&time); |
| #endif |
| return 0; |
| } |
| |
| void rtc_reset (void) |
| { |
| /* No need for init in any of the devices */ |
| /* The OSC enable bit in the DS1338 is clear at the first date set */ |
| } |
| |
| #endif /* CONFIG_CMD_DATE */ |