rtc: mv: add range
This RTC handles time from 2000-01-01 00:00:00 to 2099-12-31 23:59:59 with a weird rollover to 2000-06-23 00:00:00. Tested-by: Gregory CLEMENT <gregory.clement@bootlin.com> Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
This commit is contained in:
parent
5b25a71b68
commit
b46c5815be
|
@ -57,7 +57,7 @@ static int mv_rtc_set_time(struct device *dev, struct rtc_time *tm)
|
||||||
|
|
||||||
rtc_reg = (bin2bcd(tm->tm_mday) << RTC_MDAY_OFFS) |
|
rtc_reg = (bin2bcd(tm->tm_mday) << RTC_MDAY_OFFS) |
|
||||||
(bin2bcd(tm->tm_mon + 1) << RTC_MONTH_OFFS) |
|
(bin2bcd(tm->tm_mon + 1) << RTC_MONTH_OFFS) |
|
||||||
(bin2bcd(tm->tm_year % 100) << RTC_YEAR_OFFS);
|
(bin2bcd(tm->tm_year - 100) << RTC_YEAR_OFFS);
|
||||||
writel(rtc_reg, ioaddr + RTC_DATE_REG_OFFS);
|
writel(rtc_reg, ioaddr + RTC_DATE_REG_OFFS);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -156,7 +156,7 @@ static int mv_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alm)
|
||||||
<< RTC_MONTH_OFFS;
|
<< RTC_MONTH_OFFS;
|
||||||
|
|
||||||
if (alm->time.tm_year >= 0)
|
if (alm->time.tm_year >= 0)
|
||||||
rtc_reg |= (RTC_ALARM_VALID | bin2bcd(alm->time.tm_year % 100))
|
rtc_reg |= (RTC_ALARM_VALID | bin2bcd(alm->time.tm_year - 100))
|
||||||
<< RTC_YEAR_OFFS;
|
<< RTC_YEAR_OFFS;
|
||||||
|
|
||||||
writel(rtc_reg, ioaddr + RTC_ALARM_DATE_REG_OFFS);
|
writel(rtc_reg, ioaddr + RTC_ALARM_DATE_REG_OFFS);
|
||||||
|
@ -277,6 +277,9 @@ static int __init mv_rtc_probe(struct platform_device *pdev)
|
||||||
pdata->rtc->ops = &mv_rtc_ops;
|
pdata->rtc->ops = &mv_rtc_ops;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pdata->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000;
|
||||||
|
pdata->rtc->range_max = RTC_TIMESTAMP_END_2099;
|
||||||
|
|
||||||
ret = rtc_register_device(pdata->rtc);
|
ret = rtc_register_device(pdata->rtc);
|
||||||
if (!ret)
|
if (!ret)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue