From mboxrd@z Thu Jan 1 00:00:00 1970 From: Heiko Schocher Date: Tue, 21 Apr 2015 07:13:03 +0200 Subject: [U-Boot] [PATCH 06/20] dm: rtc: Rename gregorian day function In-Reply-To: <1429555051-22335-7-git-send-email-sjg@chromium.org> References: <1429555051-22335-1-git-send-email-sjg@chromium.org> <1429555051-22335-7-git-send-email-sjg@chromium.org> Message-ID: <5535DC5F.8060004@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 > --- > > 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 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 > #include > +#include > #include > > #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