drivers: rtc: correctly convert seconds to time structure
Variable 'days' must be defined as signed int. Otherwise the conversion
fails for some dates, e.g. 2004-08-25. Cf function rtc_time64_to_tm() in
the Linux kernel source.
Fixes: 992c1db455
"drivers: rtc: resolve year 2038 problem in rtc_to_tm"
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
parent
c1d6e0bbfd
commit
952061352a
@ -31,10 +31,14 @@ static int rtc_month_days(unsigned int month, unsigned int year)
|
||||
/*
|
||||
* rtc_to_tm - Converts u64 to rtc_time.
|
||||
* Convert seconds since 01-01-1970 00:00:00 to Gregorian date.
|
||||
*
|
||||
* This function is copied from rtc_time64_to_tm() in the Linux kernel.
|
||||
* But in U-Boot January is month 1 and we do not subtract 1900 from the year.
|
||||
*/
|
||||
void rtc_to_tm(u64 time, struct rtc_time *tm)
|
||||
{
|
||||
unsigned int month, year, secs, days;
|
||||
unsigned int month, year, secs;
|
||||
int days;
|
||||
|
||||
days = div_u64_rem(time, 86400, &secs);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user