On 13/11/2018 13:15:33+0100, Marek Szyprowski wrote: > Hi Krzysztof, > > On 2018-11-13 12:50, Krzysztof Kozlowski wrote: > > On Tue, 13 Nov 2018 at 12:33, Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> wrote: > >> (RTC,ALM)YEAR registers of Exynos built-in RTC device contains 3 BCD > >> characters. s3c-rtc driver uses only 2 lower of them and supports years > >> from 2000..2099 range. The third BCD value is typically set to 0, but it > >> looks that handling of it is broken in the hardware. It sometimes > >> defaults to a random (even non-BCD) value. This is not an issue > >> for handling RTCYEAR register, because bcd2bin() properly handles only > >> 8bit values (2 BCD characters, the third one is skipped). The problem > >> is however with ALMYEAR register and proper RTC alarm operation. When > >> YEAREN bit is set for the configured alarm, RTC hardware triggers alarm > >> only when ALMYEAR and RTCYEAR matches. This usually doesn't happen > >> because of the random noise on the third BCD character. > >> > >> Fix this by simply skipping setting ALMYEAR register in alarm > >> configuration. This workaround fixes broken alarm operation on Exynos > >> built-in rtc device. My tests revealed that the issue happens on the > >> following Exynos series: 3250, 4210, 4412, 5250 and 5410. > > Does it mean that alarm set for 20.11.2019 will be triggered also this > > year on 20.11.2018 (and any other year as well)? > Yes, this will trigger one year earlier. > The question is if this is really and issue in typical use cases... > Note that the core will already set the alarm again if it fired too early. So this is way better than not firing at all. -- Alexandre Belloni, Bootlin Embedded Linux and Kernel engineering https://bootlin.com