Re: [PATCH] rtc: Add support for century bits to m41t62 (rv4162) RTC devices

From: Alexandre Belloni
Date: Thu Oct 03 2019 - 07:48:35 EST


Hello,

On 11/09/2019 17:48:03+0200, Lukasz Majewski wrote:
> This change adds support for 'century bits' on 4162 family of RTC devices
> (from ST or microcrystal), which allow storing time beyond year 2099.
>
> For rv4162 century bits - CB1[7]:CB0[6] are stored in reg6 - 0x6 (MONTH):
> CB1 CB0
> 0 0 (year 2000 - 2099)
> 0 1 (year 2100 - 2199)
> 1 0 (year 2200 - 2299)
> 1 1 (year 2300 - 2399)
>
> The driver has been also adjusted to allow setting time up to year 2399
> if the M41T80_FEATURE_CB is set in its DTS/I2C data.
>
> There shall be no functional changes for devices not supporting this
> feature. However, other devices - like m41t80 - have different approaches
> to handle century information.
>

This does not work because the RTC doesn't handle leap years on century
properly. This means that if you do that, then there is no guarantee the
date will be the correct after 2099. As far as the m41t62 and rv4162
are concerned, there is no way to make the century bits useful.

See the datasheet:

"During any year which is a multiple of 4, the RV-4162 RTC will
automatically insert leap day, February 29. Therefore, the application
software must correct for this during the exception years (2100, 2200,
etc.) as noted above."

--
Alexandre Belloni, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com