[U-Boot] [PATCH 07/20] dm: rtc: Rename to_tm() to rtc_to_tm() and add error code

Heiko Schocher hs at denx.de
Tue Apr 21 07:16:33 CEST 2015


Hello Simon,

Am 20.04.2015 20:37, schrieb Simon Glass:
> Rename this function so that it is clear that it is provided by the RTC.
> Also return an error when it cannot function as expected. This is unlikely
> to occur since it works for dates since 1752 and many RTCs do not support
> such old dates. Still it is better to be accurate.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
>   common/image.c             |  2 +-
>   drivers/rtc/at91sam9_rtt.c |  2 +-
>   drivers/rtc/bfin_rtc.c     |  2 +-
>   drivers/rtc/date.c         |  8 ++++++--
>   drivers/rtc/ds1374.c       |  2 +-
>   drivers/rtc/ftrtc010.c     |  2 +-
>   drivers/rtc/imxdi.c        |  2 +-
>   drivers/rtc/mc13xxx-rtc.c  |  2 +-
>   drivers/rtc/mcfrtc.c       |  2 +-
>   drivers/rtc/mpc8xx.c       |  2 +-
>   drivers/rtc/mx27rtc.c      |  2 +-
>   drivers/rtc/mxsrtc.c       |  2 +-
>   drivers/rtc/pl031.c        |  2 +-
>   include/rtc.h              | 15 ++++++++++++++-
>   net/sntp.c                 |  2 +-
>   post/drivers/rtc.c         |  6 +++---
>   16 files changed, 36 insertions(+), 19 deletions(-)

Thanks!

Acked-by: Heiko Schocher <hs at denx.de>

bye,
Heiko
> diff --git a/common/image.c b/common/image.c
> index abc0d89..fdec496 100644
> --- a/common/image.c
> +++ b/common/image.c
> @@ -533,7 +533,7 @@ void genimg_print_time(time_t timestamp)
>   #ifndef USE_HOSTCC
>   	struct rtc_time tm;
>
> -	to_tm(timestamp, &tm);
> +	rtc_to_tm(timestamp, &tm);
>   	printf("%4d-%02d-%02d  %2d:%02d:%02d UTC\n",
>   			tm.tm_year, tm.tm_mon, tm.tm_mday,
>   			tm.tm_hour, tm.tm_min, tm.tm_sec);
> diff --git a/drivers/rtc/at91sam9_rtt.c b/drivers/rtc/at91sam9_rtt.c
> index 714dd2a..d3cdee0 100644
> --- a/drivers/rtc/at91sam9_rtt.c
> +++ b/drivers/rtc/at91sam9_rtt.c
> @@ -44,7 +44,7 @@ int rtc_get (struct rtc_time *tmp)
>   	} while (tim!=tim2);
>   	off = readl(&gpbr->reg[AT91_GPBR_INDEX_TIMEOFF]);
>   	/* off==0 means time is invalid, but we ignore that */
> -	to_tm (tim+off, tmp);
> +	rtc_to_tm(tim+off, tmp);
>   	return 0;
>   }
>
> diff --git a/drivers/rtc/bfin_rtc.c b/drivers/rtc/bfin_rtc.c
> index 4cf2d83..6cb1eba 100644
> --- a/drivers/rtc/bfin_rtc.c
> +++ b/drivers/rtc/bfin_rtc.c
> @@ -114,7 +114,7 @@ int rtc_get(struct rtc_time *tmp)
>
>   	/* Calculate the total number of seconds since epoch */
>   	time_in_sec = (tm_sec) + MIN_TO_SECS(tm_min) + HRS_TO_SECS(tm_hr) + DAYS_TO_SECS(tm_day);
> -	to_tm(time_in_sec, tmp);
> +	rtc_to_tm(time_in_sec, tmp);
>
>   	return 0;
>   }
> diff --git a/drivers/rtc/date.c b/drivers/rtc/date.c
> index 2000565..79beb94 100644
> --- a/drivers/rtc/date.c
> +++ b/drivers/rtc/date.c
> @@ -71,7 +71,7 @@ int rtc_calc_weekday(struct rtc_time *tm)
>   	return 0;
>   }
>
> -void to_tm(int tim, struct rtc_time * tm)
> +int rtc_to_tm(int tim, struct rtc_time *tm)
>   {
>   	register int    i;
>   	register long   hms, day;
> @@ -103,10 +103,14 @@ void to_tm(int tim, struct rtc_time * tm)
>   	/* Days are what is left over (+1) from all that. */
>   	tm->tm_mday = day + 1;
>
> +	/* Zero unused fields */
> +	tm->tm_yday = 0;
> +	tm->tm_isdst = 0;
> +
>   	/*
>   	 * Determine the day of week
>   	 */
> -	rtc_calc_weekday(tm);
> +	return rtc_calc_weekday(tm);
>   }
>
>   /* Converts Gregorian date to seconds since 1970-01-01 00:00:00.
> diff --git a/drivers/rtc/ds1374.c b/drivers/rtc/ds1374.c
> index 427b1eb..04793b5 100644
> --- a/drivers/rtc/ds1374.c
> +++ b/drivers/rtc/ds1374.c
> @@ -118,7 +118,7 @@ int rtc_get (struct rtc_time *tm){
>
>   	DEBUGR ("Get RTC s since 1.1.1970: %ld\n", time1);
>
> -	to_tm(time1, tm); /* To Gregorian Date */
> +	rtc_to_tm(time1, tm); /* To Gregorian Date */
>
>   	if (rtc_read(RTC_SR_ADDR) & RTC_SR_BIT_OSF) {
>   		printf ("### Warning: RTC oscillator has stopped\n");
> diff --git a/drivers/rtc/ftrtc010.c b/drivers/rtc/ftrtc010.c
> index 713dad2..3c5d955 100644
> --- a/drivers/rtc/ftrtc010.c
> +++ b/drivers/rtc/ftrtc010.c
> @@ -86,7 +86,7 @@ int rtc_get(struct rtc_time *tmp)
>   	now = ftrtc010_time() + readl(&rtc->record);
>   #endif
>
> -	to_tm(now, tmp);
> +	rtc_to_tm(now, tmp);
>
>   	return 0;
>   }
> diff --git a/drivers/rtc/imxdi.c b/drivers/rtc/imxdi.c
> index 0d7d736..e89034d 100644
> --- a/drivers/rtc/imxdi.c
> +++ b/drivers/rtc/imxdi.c
> @@ -192,7 +192,7 @@ int rtc_get(struct rtc_time *tmp)
>   	}
>
>   	now = __raw_readl(&data.regs->dtcmr);
> -	to_tm(now, tmp);
> +	rtc_to_tm(now, tmp);
>
>   err:
>   	return rc;
> diff --git a/drivers/rtc/mc13xxx-rtc.c b/drivers/rtc/mc13xxx-rtc.c
> index 528247a..30c4e66 100644
> --- a/drivers/rtc/mc13xxx-rtc.c
> +++ b/drivers/rtc/mc13xxx-rtc.c
> @@ -36,7 +36,7 @@ int rtc_get(struct rtc_time *rtc)
>
>   	tim = day1 * 86400 + time;
>
> -	to_tm(tim, rtc);
> +	rtc_to_tm(tim, rtc);
>
>   	rtc->tm_yday = 0;
>   	rtc->tm_isdst = 0;
> diff --git a/drivers/rtc/mcfrtc.c b/drivers/rtc/mcfrtc.c
> index 8961ca4..e02e297 100644
> --- a/drivers/rtc/mcfrtc.c
> +++ b/drivers/rtc/mcfrtc.c
> @@ -38,7 +38,7 @@ int rtc_get(struct rtc_time *tmp)
>   	tim = (tim * 60) + rtc_mins;
>   	tim = (tim * 60) + rtc->seconds;
>
> -	to_tm(tim, tmp);
> +	rtc_to_tm(tim, tmp);
>
>   	tmp->tm_yday = 0;
>   	tmp->tm_isdst = 0;
> diff --git a/drivers/rtc/mpc8xx.c b/drivers/rtc/mpc8xx.c
> index d239dae..796295d 100644
> --- a/drivers/rtc/mpc8xx.c
> +++ b/drivers/rtc/mpc8xx.c
> @@ -26,7 +26,7 @@ int rtc_get (struct rtc_time *tmp)
>
>   	tim = immr->im_sit.sit_rtc;
>
> -	to_tm (tim, tmp);
> +	rtc_to_tm(tim, tmp);
>
>   	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/drivers/rtc/mx27rtc.c b/drivers/rtc/mx27rtc.c
> index ae6595b..7ba74d3 100644
> --- a/drivers/rtc/mx27rtc.c
> +++ b/drivers/rtc/mx27rtc.c
> @@ -30,7 +30,7 @@ int rtc_get(struct rtc_time *time)
>
>   	sec += min * 60 + hour * 3600 + day * 24 * 3600;
>
> -	to_tm(sec, time);
> +	rtc_to_tm(sec, time);
>
>   	return 0;
>   }
> diff --git a/drivers/rtc/mxsrtc.c b/drivers/rtc/mxsrtc.c
> index 32ba8a3..82c2fbf 100644
> --- a/drivers/rtc/mxsrtc.c
> +++ b/drivers/rtc/mxsrtc.c
> @@ -43,7 +43,7 @@ int rtc_get(struct rtc_time *time)
>   	uint32_t secs;
>
>   	secs = readl(&rtc_regs->hw_rtc_seconds);
> -	to_tm(secs, time);
> +	rtc_to_tm(secs, time);
>
>   	return 0;
>   }
> diff --git a/drivers/rtc/pl031.c b/drivers/rtc/pl031.c
> index c4d1259..e6c1a6c 100644
> --- a/drivers/rtc/pl031.c
> +++ b/drivers/rtc/pl031.c
> @@ -97,7 +97,7 @@ int rtc_get(struct rtc_time *tmp)
>
>   	tim = RTC_READ_REG(RTC_DR);
>
> -	to_tm (tim, tmp);
> +	rtc_to_tm(tim, tmp);
>
>   	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 96c696a..4b7ce61 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 to_tm (int, struct rtc_time *);
>   unsigned long mktime (unsigned int, unsigned int, unsigned int,
>   		      unsigned int, unsigned int, unsigned int);
>
> @@ -97,4 +96,18 @@ void rtc_init(void);
>    */
>   int rtc_calc_weekday(struct rtc_time *time);
>
> +/**
> + * rtc_to_tm() - Convert a time_t value into a broken-out time
> + *
> + * The following fields are set up by this function:
> + *	tm_sec, tm_min, tm_hour, tm_mday, tm_mon, tm_year, tm_wday
> + *
> + * Note that tm_yday and tm_isdst are set to 0.
> + *
> + * @time_t:	Number of seconds since 1970-01-01 00:00:00
> + * @time:	Place to put the broken-out time
> + * @return 0 if OK, -EINVAL if the weekday could not be determined
> + */
> +int rtc_to_tm(int time_t, struct rtc_time *time);
> +
>   #endif	/* _RTC_H_ */
> diff --git a/net/sntp.c b/net/sntp.c
> index 6422eef..d7b9e55 100644
> --- a/net/sntp.c
> +++ b/net/sntp.c
> @@ -68,7 +68,7 @@ static void sntp_handler(uchar *pkt, unsigned dest, struct in_addr sip,
>   	 */
>   	memcpy(&seconds, &rpktp->transmit_timestamp, sizeof(ulong));
>
> -	to_tm(ntohl(seconds) - 2208988800UL + net_ntp_time_offset, &tm);
> +	rtc_to_tm(ntohl(seconds) - 2208988800UL + net_ntp_time_offset, &tm);
>   #if defined(CONFIG_CMD_DATE)
>   	rtc_set(&tm);
>   #endif
> diff --git a/post/drivers/rtc.c b/post/drivers/rtc.c
> index cd19f75..8d7a788 100644
> --- a/post/drivers/rtc.c
> +++ b/post/drivers/rtc.c
> @@ -63,7 +63,7 @@ static void rtc_post_restore (struct rtc_time *tm, unsigned int sec)
>   					   tm->tm_min, tm->tm_sec) + sec;
>   	struct rtc_time ntm;
>
> -	to_tm (t, &ntm);
> +	rtc_to_tm(t, &ntm);
>
>   	rtc_set (&ntm);
>   }
> @@ -119,7 +119,7 @@ int rtc_post_test (int flags)
>   		time_t t = mktime (ynl, i + 1, daysnl[i], 23, 59, 59);
>   		struct rtc_time tm;
>
> -		to_tm (t, &tm);
> +		rtc_to_tm(t, &tm);
>   		rtc_set (&tm);
>
>   		skipped++;
> @@ -143,7 +143,7 @@ int rtc_post_test (int flags)
>   		time_t t = mktime (yl, i + 1, daysl[i], 23, 59, 59);
>   		struct rtc_time tm;
>
> -		to_tm (t, &tm);
> +		rtc_to_tm(t, &tm);
>   		rtc_set (&tm);
>
>   		skipped++;
>

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany


More information about the U-Boot mailing list