| From 18a60e1f5509cc04c28383814cc5e9129f4fc51b Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sun, 6 Jan 2019 08:21:03 +0000 |
| Subject: rtc: cmos: ignore bogus century byte |
| |
| From: Eric Wong <e@80x24.org> |
| |
| [ Upstream commit 2a4daadd4d3e507138f8937926e6a4df49c6bfdc ] |
| |
| Older versions of Libreboot and Coreboot had an invalid value |
| (`3' in my case) in the century byte affecting the GM45 in |
| the Thinkpad X200. Not everybody's updated their firmwares, |
| and Linux <= 4.2 was able to read the RTC without problems, |
| so workaround this by ignoring invalid values. |
| |
| Fixes: 3c217e51d8a272b9 ("rtc: cmos: century support") |
| |
| Cc: Alexandre Belloni <alexandre.belloni@bootlin.com> |
| Cc: Alessandro Zummo <a.zummo@towertech.it> |
| Cc: Sylvain Chouleur <sylvain.chouleur@intel.com> |
| Cc: Patrick McDermott <patrick.mcdermott@libiquity.com> |
| Cc: linux-rtc@vger.kernel.org |
| Signed-off-by: Eric Wong <e@80x24.org> |
| Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/rtc/rtc-mc146818-lib.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/drivers/rtc/rtc-mc146818-lib.c b/drivers/rtc/rtc-mc146818-lib.c |
| index 2f1772a358ca5..18a6f15e313d8 100644 |
| --- a/drivers/rtc/rtc-mc146818-lib.c |
| +++ b/drivers/rtc/rtc-mc146818-lib.c |
| @@ -82,7 +82,7 @@ unsigned int mc146818_get_time(struct rtc_time *time) |
| time->tm_year += real_year - 72; |
| #endif |
| |
| - if (century) |
| + if (century > 20) |
| time->tm_year += (century - 19) * 100; |
| |
| /* |
| -- |
| 2.20.1 |
| |