Skip to content

Commit

Permalink
dm: rtc: Rename mktime() and reduce the number of parameters
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
sjg20 committed May 6, 2015
1 parent 9f9276c commit 7142098
Show file tree
Hide file tree
Showing 14 changed files with 54 additions and 41 deletions.
3 changes: 1 addition & 2 deletions drivers/rtc/at91sam9_rtt.c
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,7 @@ int rtc_set (struct rtc_time *tmp)
at91_gpbr_t *gpbr = (at91_gpbr_t *) ATMEL_BASE_GPBR;
ulong tim;

tim = mktime (tmp->tm_year, tmp->tm_mon, tmp->tm_mday,
tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
tim = rtc_mktime(tmp);

/* clear alarm, set prescaler to 32768, clear counter */
writel(32768+AT91_RTT_RTTRST, &rtt->mr);
Expand Down
3 changes: 1 addition & 2 deletions drivers/rtc/bfin_rtc.c
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,7 @@ int rtc_set(struct rtc_time *tmp)
wait_for_complete();

/* Calculate number of seconds this incoming time represents */
remain = mktime(tmp->tm_year, tmp->tm_mon, tmp->tm_mday,
tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
remain = rtc_mktime(tmp);

/* Figure out how many days since epoch */
days = remain / NUM_SECS_IN_DAY;
Expand Down
23 changes: 12 additions & 11 deletions drivers/rtc/date.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
* will already get problems at other places on 2038-01-19 03:14:08)
*/
unsigned long
mktime (unsigned int year, unsigned int mon,
unsigned int day, unsigned int hour,
unsigned int min, unsigned int sec)
unsigned long rtc_mktime(const struct rtc_time *tm)
{
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 */
year -= 1;
}

return (((
(unsigned long) (year/4 - year/100 + year/400 + 367*mon/12 + day) +
year*365 - 719499
)*24 + hour /* now have hours */
)*60 + min /* now have minutes */
)*60 + sec; /* finally seconds */
days = (unsigned long)(year / 4 - year / 100 + year / 400 +
367 * mon / 12 + tm->tm_mday) +
year * 365 - 719499;
hours = days * 24 + tm->tm_hour;
return (hours * 60 + tm->tm_min) * 60 + tm->tm_sec;
}

#endif
3 changes: 1 addition & 2 deletions drivers/rtc/ds1306.c
Original file line number Diff line number Diff line change
Expand Up @@ -180,8 +180,7 @@ int rtc_set (struct rtc_time *tmp)
{
ulong tim;

tim = mktime (tmp->tm_year, tmp->tm_mon, tmp->tm_mday,
tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
tim = rtc_mktime(tmp);

immap->im_sitk.sitk_rtck = KAPWR_KEY;
immap->im_sit.sit_rtc = tim;
Expand Down
4 changes: 1 addition & 3 deletions drivers/rtc/ds1374.c
Original file line number Diff line number Diff line change
Expand Up @@ -147,9 +147,7 @@ int rtc_set (struct rtc_time *tmp){
if (tmp->tm_year < 1970 || tmp->tm_year > 2069)
printf("WARNING: year should be between 1970 and 2069!\n");

time = mktime(tmp->tm_year, tmp->tm_mon,
tmp->tm_mday, tmp->tm_hour,
tmp->tm_min, tmp->tm_sec);
time = rtc_mktime(tmp);

DEBUGR ("Set RTC s since 1.1.1970: %ld (0x%02lx)\n", time, time);

Expand Down
3 changes: 1 addition & 2 deletions drivers/rtc/ftrtc010.c
Original file line number Diff line number Diff line change
Expand Up @@ -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_hour, tmp->tm_min, tmp->tm_sec);

new = mktime(tmp->tm_year, tmp->tm_mon, tmp->tm_mday, tmp->tm_hour,
tmp->tm_min, tmp->tm_sec);
new = rtc_mktime(tmp);

now = ftrtc010_time();

Expand Down
3 changes: 1 addition & 2 deletions drivers/rtc/imxdi.c
Original file line number Diff line number Diff line change
Expand Up @@ -209,8 +209,7 @@ int rtc_set(struct rtc_time *tmp)
goto err;
}

now = mktime(tmp->tm_year, tmp->tm_mon, tmp->tm_mday,
tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
now = rtc_mktime(tmp);
/* zero the fractional part first */
rc = DI_WRITE_WAIT(0, dtclr);
if (rc == 0)
Expand Down
3 changes: 1 addition & 2 deletions drivers/rtc/mc13xxx-rtc.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,7 @@ int rtc_set(struct rtc_time *rtc)
if (!p)
return -1;

time = mktime(rtc->tm_year, rtc->tm_mon, rtc->tm_mday,
rtc->tm_hour, rtc->tm_min, rtc->tm_sec);
time = rtc_mktime(rtc);
day = time / 86400;
time %= 86400;

Expand Down
3 changes: 1 addition & 2 deletions drivers/rtc/mpc8xx.c
Original file line number Diff line number Diff line change
Expand Up @@ -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_hour, tmp->tm_min, tmp->tm_sec);

tim = mktime (tmp->tm_year, tmp->tm_mon, tmp->tm_mday,
tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
tim = rtc_mktime(tmp);

immr->im_sitk.sitk_rtck = KAPWR_KEY;
immr->im_sit.sit_rtc = tim;
Expand Down
3 changes: 1 addition & 2 deletions drivers/rtc/mx27rtc.c
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,7 @@ int rtc_set(struct rtc_time *time)
struct rtc_regs *rtc_regs = (struct rtc_regs *)IMX_RTC_BASE;
uint32_t day, hour, min, sec;

sec = mktime(time->tm_year, time->tm_mon, time->tm_mday,
time->tm_hour, time->tm_min, time->tm_sec);
sec = rtc_mktime(time);

day = sec / (24 * 3600);
sec = sec % (24 * 3600);
Expand Down
3 changes: 1 addition & 2 deletions drivers/rtc/mxsrtc.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,7 @@ int rtc_set(struct rtc_time *time)
{
uint32_t secs;

secs = mktime(time->tm_year, time->tm_mon, time->tm_mday,
time->tm_hour, time->tm_min, time->tm_sec);
secs = rtc_mktime(time);

return mxs_rtc_set_time(secs);
}
Expand Down
3 changes: 1 addition & 2 deletions drivers/rtc/pl031.c
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,7 @@ int rtc_set(struct rtc_time *tmp)
}

/* Calculate number of seconds this incoming time represents */
tim = mktime(tmp->tm_year, tmp->tm_mon, tmp->tm_mday,
tmp->tm_hour, tmp->tm_min, tmp->tm_sec);
tim = rtc_mktime(tmp);

RTC_WRITE_REG(RTC_LR, tim);

Expand Down
16 changes: 13 additions & 3 deletions include/rtc.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,6 @@ int rtc_get (struct rtc_time *);
int rtc_set (struct rtc_time *);
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
*
Expand Down Expand Up @@ -110,4 +107,17 @@ int rtc_calc_weekday(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_ */
22 changes: 18 additions & 4 deletions post/drivers/rtc.c
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,7 @@ static int rtc_post_skip (ulong * diff)

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,
tm->tm_min, tm->tm_sec) + sec;
time_t t = rtc_mktime(tm) + sec;
struct rtc_time ntm;

rtc_to_tm(t, &ntm);
Expand Down Expand Up @@ -116,9 +115,16 @@ int rtc_post_test (int flags)
rtc_get (&svtm);

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;

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_set (&tm);

Expand All @@ -140,9 +146,17 @@ int rtc_post_test (int flags)
}

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;

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_set (&tm);

Expand Down

0 comments on commit 7142098

Please sign in to comment.