Re: [PATCH] rtc: s3c-rtc: Avoid using broken ALMYEAR register

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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...

The only other workaround I see is to store the requested alarm time in
the driver context and check each time when it triggers interrupt if the
year matches requested value.

> ...

Best regards
-- 
Marek Szyprowski, PhD
Samsung R&D Institute Poland




[Index of Archives]     [Linux SoC Development]     [Linux Rockchip Development]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Linux SCSI]     [Yosemite News]

  Powered by Linux