dm: rtc: Rename gregorian day function
Change this function name to something more descriptive. Also return a failure code if it cannot calculate a correct value. Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: Heiko Schocher <hs@denx.de>
This commit is contained in:
parent
c3ec646dde
commit
199e87c340
|
@ -201,7 +201,7 @@ int mk_date (const char *datestr, struct rtc_time *tmp)
|
||||||
tmp->tm_min = val;
|
tmp->tm_min = val;
|
||||||
|
|
||||||
/* calculate day of week */
|
/* calculate day of week */
|
||||||
GregorianDay (tmp);
|
rtc_calc_weekday(tmp);
|
||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <command.h>
|
#include <command.h>
|
||||||
|
#include <errno.h>
|
||||||
#include <rtc.h>
|
#include <rtc.h>
|
||||||
|
|
||||||
#if defined(CONFIG_CMD_DATE) || defined(CONFIG_TIMESTAMP)
|
#if defined(CONFIG_CMD_DATE) || defined(CONFIG_TIMESTAMP)
|
||||||
|
@ -30,13 +31,15 @@ static int month_days[12] = {
|
||||||
/*
|
/*
|
||||||
* This only works for the Gregorian calendar - i.e. after 1752 (in the UK)
|
* This only works for the Gregorian calendar - i.e. after 1752 (in the UK)
|
||||||
*/
|
*/
|
||||||
void GregorianDay(struct rtc_time * tm)
|
int rtc_calc_weekday(struct rtc_time *tm)
|
||||||
{
|
{
|
||||||
int leapsToDate;
|
int leapsToDate;
|
||||||
int lastYear;
|
int lastYear;
|
||||||
int day;
|
int day;
|
||||||
int MonthOffset[] = { 0,31,59,90,120,151,181,212,243,273,304,334 };
|
int MonthOffset[] = { 0,31,59,90,120,151,181,212,243,273,304,334 };
|
||||||
|
|
||||||
|
if (tm->tm_year < 1753)
|
||||||
|
return -EINVAL;
|
||||||
lastYear=tm->tm_year-1;
|
lastYear=tm->tm_year-1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -64,6 +67,8 @@ void GregorianDay(struct rtc_time * tm)
|
||||||
day += lastYear*365 + leapsToDate + MonthOffset[tm->tm_mon-1] + tm->tm_mday;
|
day += lastYear*365 + leapsToDate + MonthOffset[tm->tm_mon-1] + tm->tm_mday;
|
||||||
|
|
||||||
tm->tm_wday=day%7;
|
tm->tm_wday=day%7;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void to_tm(int tim, struct rtc_time * tm)
|
void to_tm(int tim, struct rtc_time * tm)
|
||||||
|
@ -101,7 +106,7 @@ void to_tm(int tim, struct rtc_time * tm)
|
||||||
/*
|
/*
|
||||||
* Determine the day of week
|
* Determine the day of week
|
||||||
*/
|
*/
|
||||||
GregorianDay(tm);
|
rtc_calc_weekday(tm);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
|
/* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
|
||||||
|
|
|
@ -110,7 +110,7 @@ int rtc_get (struct rtc_time *tmp)
|
||||||
immap->im_cpm.cp_pbdat &= ~PB_SPI_CE; /* Disable DS1306 Chip */
|
immap->im_cpm.cp_pbdat &= ~PB_SPI_CE; /* Disable DS1306 Chip */
|
||||||
udelay (10);
|
udelay (10);
|
||||||
|
|
||||||
GregorianDay (tmp); /* Determine the day of week */
|
rtc_calc_weekday(tmp); /* Determine the day of week */
|
||||||
|
|
||||||
debug ("Get DATE: %4d-%02d-%02d (wday=%d) TIME: %2d:%02d:%02d\n",
|
debug ("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_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday,
|
||||||
|
|
|
@ -45,7 +45,6 @@ int rtc_get (struct rtc_time *);
|
||||||
int rtc_set (struct rtc_time *);
|
int rtc_set (struct rtc_time *);
|
||||||
void rtc_reset (void);
|
void rtc_reset (void);
|
||||||
|
|
||||||
void GregorianDay (struct rtc_time *);
|
|
||||||
void to_tm (int, struct rtc_time *);
|
void to_tm (int, struct rtc_time *);
|
||||||
unsigned long mktime (unsigned int, unsigned int, unsigned int,
|
unsigned long mktime (unsigned int, unsigned int, unsigned int,
|
||||||
unsigned int, unsigned int, unsigned int);
|
unsigned int, unsigned int, unsigned int);
|
||||||
|
@ -87,4 +86,15 @@ void rtc_write32(int reg, u32 value);
|
||||||
*/
|
*/
|
||||||
void rtc_init(void);
|
void rtc_init(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* rtc_calc_weekday() - Work out the weekday from a time
|
||||||
|
*
|
||||||
|
* This only works for the Gregorian calendar - i.e. after 1752 (in the UK).
|
||||||
|
* It sets time->tm_wdaay to the correct day of the week.
|
||||||
|
*
|
||||||
|
* @time: Time to inspect. tm_wday is updated
|
||||||
|
* @return 0 if OK, -EINVAL if the weekday could not be determined
|
||||||
|
*/
|
||||||
|
int rtc_calc_weekday(struct rtc_time *time);
|
||||||
|
|
||||||
#endif /* _RTC_H_ */
|
#endif /* _RTC_H_ */
|
||||||
|
|
Loading…
Reference in New Issue