dm: rtc: Rename mktime() and reduce the number of parameters
Most callers unpack the structure and pass each member. It seems better to pass the whole structure instead, as with the C library. Also add an rtc_ prefix. Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: Heiko Schocher <hs@denx.de>
This commit is contained in:
parent
9f9276c34c
commit
714209832d
|
@ -54,8 +54,7 @@ int rtc_set (struct rtc_time *tmp)
|
||||||
at91_gpbr_t *gpbr = (at91_gpbr_t *) ATMEL_BASE_GPBR;
|
at91_gpbr_t *gpbr = (at91_gpbr_t *) ATMEL_BASE_GPBR;
|
||||||
ulong tim;
|
ulong tim;
|
||||||
|
|
||||||
tim = mktime (tmp->tm_year, tmp->tm_mon, tmp->tm_mday,
|
tim = rtc_mktime(tmp);
|
||||||
tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
|
|
||||||
|
|
||||||
/* clear alarm, set prescaler to 32768, clear counter */
|
/* clear alarm, set prescaler to 32768, clear counter */
|
||||||
writel(32768+AT91_RTT_RTTRST, &rtt->mr);
|
writel(32768+AT91_RTT_RTTRST, &rtt->mr);
|
||||||
|
|
|
@ -67,8 +67,7 @@ int rtc_set(struct rtc_time *tmp)
|
||||||
wait_for_complete();
|
wait_for_complete();
|
||||||
|
|
||||||
/* Calculate number of seconds this incoming time represents */
|
/* Calculate number of seconds this incoming time represents */
|
||||||
remain = mktime(tmp->tm_year, tmp->tm_mon, tmp->tm_mday,
|
remain = rtc_mktime(tmp);
|
||||||
tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
|
|
||||||
|
|
||||||
/* Figure out how many days since epoch */
|
/* Figure out how many days since epoch */
|
||||||
days = remain / NUM_SECS_IN_DAY;
|
days = remain / NUM_SECS_IN_DAY;
|
||||||
|
|
|
@ -128,22 +128,23 @@ int rtc_to_tm(int tim, struct rtc_time *tm)
|
||||||
* machines were long is 32-bit! (However, as time_t is signed, we
|
* machines were long is 32-bit! (However, as time_t is signed, we
|
||||||
* will already get problems at other places on 2038-01-19 03:14:08)
|
* will already get problems at other places on 2038-01-19 03:14:08)
|
||||||
*/
|
*/
|
||||||
unsigned long
|
unsigned long rtc_mktime(const struct rtc_time *tm)
|
||||||
mktime (unsigned int year, unsigned int mon,
|
|
||||||
unsigned int day, unsigned int hour,
|
|
||||||
unsigned int min, unsigned int sec)
|
|
||||||
{
|
{
|
||||||
if (0 >= (int) (mon -= 2)) { /* 1..12 -> 11,12,1..10 */
|
int mon = tm->tm_mon;
|
||||||
|
int year = tm->tm_year;
|
||||||
|
int days, hours;
|
||||||
|
|
||||||
|
mon -= 2;
|
||||||
|
if (0 >= (int)mon) { /* 1..12 -> 11,12,1..10 */
|
||||||
mon += 12; /* Puts Feb last since it has leap day */
|
mon += 12; /* Puts Feb last since it has leap day */
|
||||||
year -= 1;
|
year -= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (((
|
days = (unsigned long)(year / 4 - year / 100 + year / 400 +
|
||||||
(unsigned long) (year/4 - year/100 + year/400 + 367*mon/12 + day) +
|
367 * mon / 12 + tm->tm_mday) +
|
||||||
year*365 - 719499
|
year * 365 - 719499;
|
||||||
)*24 + hour /* now have hours */
|
hours = days * 24 + tm->tm_hour;
|
||||||
)*60 + min /* now have minutes */
|
return (hours * 60 + tm->tm_min) * 60 + tm->tm_sec;
|
||||||
)*60 + sec; /* finally seconds */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -180,8 +180,7 @@ int rtc_set (struct rtc_time *tmp)
|
||||||
{
|
{
|
||||||
ulong tim;
|
ulong tim;
|
||||||
|
|
||||||
tim = mktime (tmp->tm_year, tmp->tm_mon, tmp->tm_mday,
|
tim = rtc_mktime(tmp);
|
||||||
tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
|
|
||||||
|
|
||||||
immap->im_sitk.sitk_rtck = KAPWR_KEY;
|
immap->im_sitk.sitk_rtck = KAPWR_KEY;
|
||||||
immap->im_sit.sit_rtc = tim;
|
immap->im_sit.sit_rtc = tim;
|
||||||
|
|
|
@ -147,9 +147,7 @@ int rtc_set (struct rtc_time *tmp){
|
||||||
if (tmp->tm_year < 1970 || tmp->tm_year > 2069)
|
if (tmp->tm_year < 1970 || tmp->tm_year > 2069)
|
||||||
printf("WARNING: year should be between 1970 and 2069!\n");
|
printf("WARNING: year should be between 1970 and 2069!\n");
|
||||||
|
|
||||||
time = mktime(tmp->tm_year, tmp->tm_mon,
|
time = rtc_mktime(tmp);
|
||||||
tmp->tm_mday, tmp->tm_hour,
|
|
||||||
tmp->tm_min, tmp->tm_sec);
|
|
||||||
|
|
||||||
DEBUGR ("Set RTC s since 1.1.1970: %ld (0x%02lx)\n", time, time);
|
DEBUGR ("Set RTC s since 1.1.1970: %ld (0x%02lx)\n", time, time);
|
||||||
|
|
||||||
|
|
|
@ -104,8 +104,7 @@ int rtc_set(struct rtc_time *tmp)
|
||||||
tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday,
|
tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday,
|
||||||
tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
|
tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
|
||||||
|
|
||||||
new = mktime(tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_hour,
|
new = rtc_mktime(tmp);
|
||||||
tmp->tm_min, tmp->tm_sec);
|
|
||||||
|
|
||||||
now = ftrtc010_time();
|
now = ftrtc010_time();
|
||||||
|
|
||||||
|
|
|
@ -209,8 +209,7 @@ int rtc_set(struct rtc_time *tmp)
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
now = mktime(tmp->tm_year, tmp->tm_mon, tmp->tm_mday,
|
now = rtc_mktime(tmp);
|
||||||
tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
|
|
||||||
/* zero the fractional part first */
|
/* zero the fractional part first */
|
||||||
rc = DI_WRITE_WAIT(0, dtclr);
|
rc = DI_WRITE_WAIT(0, dtclr);
|
||||||
if (rc == 0)
|
if (rc == 0)
|
||||||
|
|
|
@ -51,8 +51,7 @@ int rtc_set(struct rtc_time *rtc)
|
||||||
if (!p)
|
if (!p)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
time = mktime(rtc->tm_year, rtc->tm_mon, rtc->tm_mday,
|
time = rtc_mktime(rtc);
|
||||||
rtc->tm_hour, rtc->tm_min, rtc->tm_sec);
|
|
||||||
day = time / 86400;
|
day = time / 86400;
|
||||||
time %= 86400;
|
time %= 86400;
|
||||||
|
|
||||||
|
|
|
@ -44,8 +44,7 @@ int rtc_set (struct rtc_time *tmp)
|
||||||
tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday,
|
tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_wday,
|
||||||
tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
|
tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
|
||||||
|
|
||||||
tim = mktime (tmp->tm_year, tmp->tm_mon, tmp->tm_mday,
|
tim = rtc_mktime(tmp);
|
||||||
tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
|
|
||||||
|
|
||||||
immr->im_sitk.sitk_rtck = KAPWR_KEY;
|
immr->im_sitk.sitk_rtck = KAPWR_KEY;
|
||||||
immr->im_sit.sit_rtc = tim;
|
immr->im_sit.sit_rtc = tim;
|
||||||
|
|
|
@ -40,8 +40,7 @@ int rtc_set(struct rtc_time *time)
|
||||||
struct rtc_regs *rtc_regs = (struct rtc_regs *)IMX_RTC_BASE;
|
struct rtc_regs *rtc_regs = (struct rtc_regs *)IMX_RTC_BASE;
|
||||||
uint32_t day, hour, min, sec;
|
uint32_t day, hour, min, sec;
|
||||||
|
|
||||||
sec = mktime(time->tm_year, time->tm_mon, time->tm_mday,
|
sec = rtc_mktime(time);
|
||||||
time->tm_hour, time->tm_min, time->tm_sec);
|
|
||||||
|
|
||||||
day = sec / (24 * 3600);
|
day = sec / (24 * 3600);
|
||||||
sec = sec % (24 * 3600);
|
sec = sec % (24 * 3600);
|
||||||
|
|
|
@ -52,8 +52,7 @@ int rtc_set(struct rtc_time *time)
|
||||||
{
|
{
|
||||||
uint32_t secs;
|
uint32_t secs;
|
||||||
|
|
||||||
secs = mktime(time->tm_year, time->tm_mon, time->tm_mday,
|
secs = rtc_mktime(time);
|
||||||
time->tm_hour, time->tm_min, time->tm_sec);
|
|
||||||
|
|
||||||
return mxs_rtc_set_time(secs);
|
return mxs_rtc_set_time(secs);
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,8 +72,7 @@ int rtc_set(struct rtc_time *tmp)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Calculate number of seconds this incoming time represents */
|
/* Calculate number of seconds this incoming time represents */
|
||||||
tim = mktime(tmp->tm_year, tmp->tm_mon, tmp->tm_mday,
|
tim = rtc_mktime(tmp);
|
||||||
tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
|
|
||||||
|
|
||||||
RTC_WRITE_REG(RTC_LR, tim);
|
RTC_WRITE_REG(RTC_LR, tim);
|
||||||
|
|
||||||
|
|
|
@ -45,9 +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);
|
||||||
|
|
||||||
unsigned long mktime (unsigned int, unsigned int, unsigned int,
|
|
||||||
unsigned int, unsigned int, unsigned int);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* rtc_read8() - Read an 8-bit register
|
* rtc_read8() - Read an 8-bit register
|
||||||
*
|
*
|
||||||
|
@ -110,4 +107,17 @@ int rtc_calc_weekday(struct rtc_time *time);
|
||||||
*/
|
*/
|
||||||
int rtc_to_tm(int time_t, struct rtc_time *time);
|
int rtc_to_tm(int time_t, struct rtc_time *time);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* rtc_mktime() - Convert a broken-out time into a time_t value
|
||||||
|
*
|
||||||
|
* The following fields need to be valid for this function to work:
|
||||||
|
* tm_sec, tm_min, tm_hour, tm_mday, tm_mon, tm_year
|
||||||
|
*
|
||||||
|
* Note that tm_wday and tm_yday are ignored.
|
||||||
|
*
|
||||||
|
* @time: Broken-out time to convert
|
||||||
|
* @return corresponding time_t value, seconds since 1970-01-01 00:00:00
|
||||||
|
*/
|
||||||
|
unsigned long rtc_mktime(const struct rtc_time *time);
|
||||||
|
|
||||||
#endif /* _RTC_H_ */
|
#endif /* _RTC_H_ */
|
||||||
|
|
|
@ -59,8 +59,7 @@ static int rtc_post_skip (ulong * diff)
|
||||||
|
|
||||||
static void rtc_post_restore (struct rtc_time *tm, unsigned int sec)
|
static void rtc_post_restore (struct rtc_time *tm, unsigned int sec)
|
||||||
{
|
{
|
||||||
time_t t = mktime (tm->tm_year, tm->tm_mon, tm->tm_mday, tm->tm_hour,
|
time_t t = rtc_mktime(tm) + sec;
|
||||||
tm->tm_min, tm->tm_sec) + sec;
|
|
||||||
struct rtc_time ntm;
|
struct rtc_time ntm;
|
||||||
|
|
||||||
rtc_to_tm(t, &ntm);
|
rtc_to_tm(t, &ntm);
|
||||||
|
@ -116,9 +115,16 @@ int rtc_post_test (int flags)
|
||||||
rtc_get (&svtm);
|
rtc_get (&svtm);
|
||||||
|
|
||||||
for (i = 0; i < 12; i++) {
|
for (i = 0; i < 12; i++) {
|
||||||
time_t t = mktime (ynl, i + 1, daysnl[i], 23, 59, 59);
|
time_t t;
|
||||||
struct rtc_time tm;
|
struct rtc_time tm;
|
||||||
|
|
||||||
|
tm.tm_year = ynl;
|
||||||
|
tm.tm_mon = i + 1;
|
||||||
|
tm.tm_mday = daysnl[i];
|
||||||
|
tm.tm_hour = 23;
|
||||||
|
tm.tm_min = 59;
|
||||||
|
tm.tm_sec = 59;
|
||||||
|
t = rtc_mktime(&tm);
|
||||||
rtc_to_tm(t, &tm);
|
rtc_to_tm(t, &tm);
|
||||||
rtc_set (&tm);
|
rtc_set (&tm);
|
||||||
|
|
||||||
|
@ -140,9 +146,17 @@ int rtc_post_test (int flags)
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < 12; i++) {
|
for (i = 0; i < 12; i++) {
|
||||||
time_t t = mktime (yl, i + 1, daysl[i], 23, 59, 59);
|
time_t t;
|
||||||
struct rtc_time tm;
|
struct rtc_time tm;
|
||||||
|
|
||||||
|
tm.tm_year = yl;
|
||||||
|
tm.tm_mon = i + 1;
|
||||||
|
tm.tm_mday = daysl[i];
|
||||||
|
tm.tm_hour = 23;
|
||||||
|
tm.tm_min = 59;
|
||||||
|
tm.tm_sec = 59;
|
||||||
|
t = rtc_mktime(&tm);
|
||||||
|
|
||||||
rtc_to_tm(t, &tm);
|
rtc_to_tm(t, &tm);
|
||||||
rtc_set (&tm);
|
rtc_set (&tm);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue