[PATCH v1] rtc: rv8803: fix off-by-one in month counting

tm_mon has a range from 0..11, but the RTC expects 1..12. So we adapt the month accordingly. This was determined when comparing the driver with the corresponding linux kernel driver.
Signed-off-by: Oliver Graute oliver.graute@kococonnector.com --- drivers/rtc/rv8803.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/rtc/rv8803.c b/drivers/rtc/rv8803.c index 66b37443de..3e3c50a872 100644 --- a/drivers/rtc/rv8803.c +++ b/drivers/rtc/rv8803.c @@ -49,7 +49,7 @@ static int rv8803_rtc_set(struct udevice *dev, const struct rtc_time *tm) printf("WARNING: year should be between 2000 and 2099!\n");
buf[RTC_YR_REG_ADDR] = bin2bcd(tm->tm_year % 100); - buf[RTC_MON_REG_ADDR] = bin2bcd(tm->tm_mon); + buf[RTC_MON_REG_ADDR] = bin2bcd(tm->tm_mon + 1); buf[RTC_DAY_REG_ADDR] = 1 << (tm->tm_wday & 0x7); buf[RTC_DATE_REG_ADDR] = bin2bcd(tm->tm_mday); buf[RTC_HR_REG_ADDR] = bin2bcd(tm->tm_hour); @@ -90,7 +90,7 @@ static int rv8803_rtc_get(struct udevice *dev, struct rtc_time *tm) tm->tm_min = bcd2bin(buf[RTC_MIN_REG_ADDR] & 0x7F); tm->tm_hour = bcd2bin(buf[RTC_HR_REG_ADDR] & 0x3F); tm->tm_mday = bcd2bin(buf[RTC_DATE_REG_ADDR] & 0x3F); - tm->tm_mon = bcd2bin(buf[RTC_MON_REG_ADDR] & 0x1F); + tm->tm_mon = bcd2bin(buf[RTC_MON_REG_ADDR] & 0x1F) - 1; tm->tm_year = bcd2bin(buf[RTC_YR_REG_ADDR]) + 2000; tm->tm_wday = fls(buf[RTC_DAY_REG_ADDR] & 0x7F) - 1; tm->tm_yday = 0;

Am 2022-04-26 09:26, schrieb Oliver Graute:
tm_mon has a range from 0..11, but the RTC expects 1..12. So we adapt the month accordingly. This was determined when comparing the driver with the corresponding linux kernel driver.
Signed-off-by: Oliver Graute oliver.graute@kococonnector.com
Reviewed-by: Michael Walle michael@walle.cc
-michael

Hello Oliver,
On 26.04.22 09:26, Oliver Graute wrote:
tm_mon has a range from 0..11, but the RTC expects 1..12. So we adapt the month accordingly. This was determined when comparing the driver with the corresponding linux kernel driver.
Signed-off-by: Oliver Graute oliver.graute@kococonnector.com
drivers/rtc/rv8803.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
This seems like a bug to me, good catch!
Reviewed-by: Heiko Schocher hs@denx.de
bye, Heiko

On Tue, Apr 26, 2022 at 09:26:12AM +0200, Oliver Graute wrote:
tm_mon has a range from 0..11, but the RTC expects 1..12. So we adapt the month accordingly. This was determined when comparing the driver with the corresponding linux kernel driver.
Signed-off-by: Oliver Graute oliver.graute@kococonnector.com Reviewed-by: Michael Walle michael@walle.cc Reviewed-by: Heiko Schocher hs@denx.de
Applied to u-boot/master, thanks!
participants (4)
-
Heiko Schocher
-
Michael Walle
-
Oliver Graute
-
Tom Rini