Re: [U-Boot] [PATCH 06/20] dm: rtc: Rename gregorian day function
On 20 April 2015 at 23:13, Heiko Schocher h...@denx.de wrote: Hello Simon, Am 20.04.2015 20:37, schrieb Simon Glass: 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 s...@chromium.org --- common/cmd_date.c| 2 +- drivers/rtc/date.c | 9 +++-- drivers/rtc/ds1306.c | 2 +- include/rtc.h| 12 +++- 4 files changed, 20 insertions(+), 5 deletions(-) Acked-by: Heiko Schocher h...@denx.de Applied to u-boot-dm. ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH 06/20] dm: rtc: Rename gregorian day function
Hello Simon, Am 20.04.2015 20:37, schrieb Simon Glass: 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 s...@chromium.org --- common/cmd_date.c| 2 +- drivers/rtc/date.c | 9 +++-- drivers/rtc/ds1306.c | 2 +- include/rtc.h| 12 +++- 4 files changed, 20 insertions(+), 5 deletions(-) Acked-by: Heiko Schocher h...@denx.de bye, Heiko diff --git a/common/cmd_date.c b/common/cmd_date.c index e349166..3b7ac3e 100644 --- a/common/cmd_date.c +++ b/common/cmd_date.c @@ -196,7 +196,7 @@ int mk_date (const char *datestr, struct rtc_time *tmp) tmp-tm_min = val; /* calculate day of week */ - GregorianDay (tmp); + rtc_calc_weekday(tmp); return (0); default: diff --git a/drivers/rtc/date.c b/drivers/rtc/date.c index 15e6db0..2000565 100644 --- a/drivers/rtc/date.c +++ b/drivers/rtc/date.c @@ -11,6 +11,7 @@ #include common.h #include command.h +#include errno.h #include rtc.h #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) */ -void GregorianDay(struct rtc_time * tm) +int rtc_calc_weekday(struct rtc_time *tm) { int leapsToDate; int lastYear; int day; 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; /* @@ -64,6 +67,8 @@ void GregorianDay(struct rtc_time * tm) day += lastYear*365 + leapsToDate + MonthOffset[tm-tm_mon-1] + tm-tm_mday; tm-tm_wday=day%7; + + return 0; } 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 */ - GregorianDay(tm); + rtc_calc_weekday(tm); } /* Converts Gregorian date to seconds since 1970-01-01 00:00:00. diff --git a/drivers/rtc/ds1306.c b/drivers/rtc/ds1306.c index 1ec1837..3fe6721 100644 --- a/drivers/rtc/ds1306.c +++ b/drivers/rtc/ds1306.c @@ -110,7 +110,7 @@ int rtc_get (struct rtc_time *tmp) immap-im_cpm.cp_pbdat = ~PB_SPI_CE;/* Disable DS1306 Chip */ 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, tmp-tm_year, tmp-tm_mon, tmp-tm_mday, tmp-tm_wday, diff --git a/include/rtc.h b/include/rtc.h index 54e361e..96c696a 100644 --- a/include/rtc.h +++ b/include/rtc.h @@ -45,7 +45,6 @@ int rtc_get (struct rtc_time *); int rtc_set (struct rtc_time *); void rtc_reset (void); -void GregorianDay (struct rtc_time *); void to_tm (int, struct rtc_time *); unsigned long mktime (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); +/** + * 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_ */ -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH 06/20] 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 s...@chromium.org --- common/cmd_date.c| 2 +- drivers/rtc/date.c | 9 +++-- drivers/rtc/ds1306.c | 2 +- include/rtc.h| 12 +++- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/common/cmd_date.c b/common/cmd_date.c index e349166..3b7ac3e 100644 --- a/common/cmd_date.c +++ b/common/cmd_date.c @@ -196,7 +196,7 @@ int mk_date (const char *datestr, struct rtc_time *tmp) tmp-tm_min = val; /* calculate day of week */ - GregorianDay (tmp); + rtc_calc_weekday(tmp); return (0); default: diff --git a/drivers/rtc/date.c b/drivers/rtc/date.c index 15e6db0..2000565 100644 --- a/drivers/rtc/date.c +++ b/drivers/rtc/date.c @@ -11,6 +11,7 @@ #include common.h #include command.h +#include errno.h #include rtc.h #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) */ -void GregorianDay(struct rtc_time * tm) +int rtc_calc_weekday(struct rtc_time *tm) { int leapsToDate; int lastYear; int day; 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; /* @@ -64,6 +67,8 @@ void GregorianDay(struct rtc_time * tm) day += lastYear*365 + leapsToDate + MonthOffset[tm-tm_mon-1] + tm-tm_mday; tm-tm_wday=day%7; + + return 0; } 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 */ - GregorianDay(tm); + rtc_calc_weekday(tm); } /* Converts Gregorian date to seconds since 1970-01-01 00:00:00. diff --git a/drivers/rtc/ds1306.c b/drivers/rtc/ds1306.c index 1ec1837..3fe6721 100644 --- a/drivers/rtc/ds1306.c +++ b/drivers/rtc/ds1306.c @@ -110,7 +110,7 @@ int rtc_get (struct rtc_time *tmp) immap-im_cpm.cp_pbdat = ~PB_SPI_CE; /* Disable DS1306 Chip */ 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, tmp-tm_year, tmp-tm_mon, tmp-tm_mday, tmp-tm_wday, diff --git a/include/rtc.h b/include/rtc.h index 54e361e..96c696a 100644 --- a/include/rtc.h +++ b/include/rtc.h @@ -45,7 +45,6 @@ int rtc_get (struct rtc_time *); int rtc_set (struct rtc_time *); void rtc_reset (void); -void GregorianDay (struct rtc_time *); void to_tm (int, struct rtc_time *); unsigned long mktime (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); +/** + * 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_ */ -- 2.2.0.rc0.207.ga3a616c ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot