diff mbox

[U-Boot,06/20] dm: rtc: Rename gregorian day function

Message ID 1429555051-22335-7-git-send-email-sjg@chromium.org
State Accepted
Delegated to: Simon Glass
Headers show

Commit Message

Simon Glass April 20, 2015, 6:37 p.m. UTC
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>
---

 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(-)

Comments

Heiko Schocher April 21, 2015, 5:13 a.m. UTC | #1
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 <sjg@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 <hs@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_ */
>
Simon Glass May 4, 2015, 2:20 p.m. UTC | #2
On 20 April 2015 at 23:13, Heiko Schocher <hs@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 <sjg@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 <hs@denx.de>

Applied to u-boot-dm.
diff mbox

Patch

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_ */