linux-stable/drivers/rtc
Marek Szyprowski d4e3d38b90 rtc: s3c-rtc: Avoid using broken ALMYEAR register
[ Upstream commit 50c8aec421 ]

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

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-12-17 20:37:45 +01:00
..
class.c rtc: add generic nvmem support 2017-07-07 13:14:14 +02:00
hctosys.c rtc: hctosys: Add missing range error reporting 2018-11-21 09:24:14 +01:00
interface.c rtc: ensure rtc_set_alarm fails when alarms are not supported 2018-08-03 07:50:23 +02:00
Kconfig rtc: Add Realtek RTD1295 2017-09-05 09:55:02 +02:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nvmem.c rtc: add generic nvmem support 2017-07-07 13:14:14 +02:00
rtc-88pm80x.c
rtc-88pm860x.c rtc: 88pm860x: prevent use-after-free on device remove 2019-05-31 06:47:21 -07:00
rtc-ab-b5ze-s3.c
rtc-ab3100.c
rtc-ab8500.c
rtc-abx80x.c rtc: abx80x: use devm_add_action_or_reset() 2016-07-19 17:27:42 +02:00
rtc-ac100.c clk: divider: fix incorrect usage of container_of 2018-04-12 12:32:13 +02:00
rtc-armada38x.c rtc: armada38x: fix possible race condition 2019-11-20 18:00:51 +01:00
rtc-as3722.c rtc: as3722: Drop IRQF_EARLY_RESUME flag 2016-03-14 17:08:25 +01:00
rtc-asm9260.c rtc: asm9260: fix module autoload 2016-10-19 08:45:48 +02:00
rtc-at32ap700x.c rtc: constify rtc_class_ops structures 2016-09-02 01:24:06 +02:00
rtc-at91rm9200.c rtc: at91rm9200: remove race condition 2017-07-07 13:14:12 +02:00
rtc-at91rm9200.h
rtc-at91sam9.c rtc: at91sam9: Fix missing spin_lock_init() 2016-07-26 00:09:18 +02:00
rtc-au1xxx.c rtc: constify rtc_class_ops structures 2017-01-11 17:23:06 +01:00
rtc-bfin.c rtc: constify rtc_class_ops structures 2017-01-11 17:23:06 +01:00
rtc-bq32k.c rtc: bq32k: Add OF device ID table 2017-03-09 01:29:17 +01:00
rtc-bq4802.c rtc: bq4802: add error handling for devm_ioremap 2018-09-26 08:38:13 +02:00
rtc-brcmstb-waketimer.c rtc: brcmstb-waketimer: fix error handling in brcmstb_waketmr_probe() 2018-03-19 08:42:49 +01:00
rtc-cmos.c Merge branches 'pm-sleep' and 'powercap' 2017-05-22 20:32:05 +02:00
rtc-coh901331.c rtc: constify rtc_class_ops structures 2016-09-02 01:24:06 +02:00
rtc-core.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
rtc-cpcap.c rtc: cpcap: fix improper use of IRQ_NONE for request_threaded_irq 2017-04-14 12:08:52 +02:00
rtc-da9052.c rtc: explicitly set tm_sec = 0 for drivers with minute accurancy 2016-07-19 18:15:21 +02:00
rtc-da9055.c rtc: explicitly set tm_sec = 0 for drivers with minute accurancy 2016-07-19 18:15:21 +02:00
rtc-da9063.c rtc: da9063: set uie_unsupported when relevant 2019-05-08 07:20:49 +02:00
rtc-davinci.c rtc: constify rtc_class_ops structures 2016-09-02 01:24:06 +02:00
rtc-dev.c rtc: remove .open() and .release() 2017-08-24 16:34:51 +02:00
rtc-digicolor.c rtc: constify rtc_class_ops structures 2016-09-02 01:24:06 +02:00
rtc-dm355evm.c mfd: dm355evm_msp: Move header file out of I2C realm 2017-08-15 08:06:14 +01:00
rtc-ds1216.c rtc: remove useless DRV_VERSION 2016-05-20 12:33:51 +02:00
rtc-ds1286.c rtc: ds1286: move header to linux/rtc 2016-07-08 16:23:11 +02:00
rtc-ds1302.c rtc: constify rtc_class_ops structures 2016-09-02 01:24:06 +02:00
rtc-ds1305.c rtc: simplify implementations of read_alarm 2016-07-09 10:24:45 +02:00
rtc-ds1307.c RTC for 4.14 2017-09-13 10:56:00 -07:00
rtc-ds1343.c rtc: simplify implementations of read_alarm 2016-07-09 10:24:45 +02:00
rtc-ds1347.c rtc: ds1347: changed raw spi calls to register map calls 2016-09-22 00:14:40 +02:00
rtc-ds1374.c rtc: ds1374: wdt: Fix stop/start ioctl always returning -EINVAL 2017-05-04 14:46:25 +02:00
rtc-ds1390.c
rtc-ds1511.c rtc: remove useless DRV_VERSION 2016-05-20 12:33:51 +02:00
rtc-ds1553.c rtc: remove useless DRV_VERSION 2016-05-20 12:33:51 +02:00
rtc-ds1672.c rtc: constify i2c_device_id 2017-09-01 01:10:11 +02:00
rtc-ds1685.c rtc: simplify implementations of read_alarm 2016-07-09 10:24:45 +02:00
rtc-ds1742.c rtc: remove useless DRV_VERSION 2016-05-20 12:33:51 +02:00
rtc-ds2404.c rtc: ds2404: move rtc-ds2404.h to platform_data 2016-06-27 10:48:28 +02:00
rtc-ds3232.c rtc: ds3232: add temperature support 2017-07-06 22:37:16 +02:00
rtc-efi-platform.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
rtc-efi.c rtc: efi: Fail probing if RTC reads don't work 2016-06-06 17:07:33 +02:00
rtc-em3027.c rtc: constify i2c_device_id 2017-09-01 01:10:11 +02:00
rtc-ep93xx.c rtc: remove useless DRV_VERSION 2016-05-20 12:33:51 +02:00
rtc-fm3130.c
rtc-ftrtc010.c rtc: gemini/ftrtc010: rename driver and symbols 2017-07-06 22:37:15 +02:00
rtc-generic.c rtc: generic: remove get_rtc_time/set_rtc_time wrappers 2016-06-04 00:23:35 +02:00
rtc-goldfish.c rtc: goldfish: Add missing MODULE_LICENSE 2018-05-25 16:18:02 +02:00
rtc-hid-sensor-time.c iio/hid-sensors: Fix IIO_CHAN_INFO_RAW returning wrong values for signed numbers 2018-12-17 09:28:49 +01:00
rtc-hym8563.c rtc: hym8563: in .read_alarm set .tm_sec to 0 to signal minute accuracy 2016-07-19 18:18:06 +02:00
rtc-imxdi.c sched/wait: Disambiguate wq_entry->task_list and wq_head->task_list naming 2017-06-20 12:19:14 +02:00
rtc-isl1208.c rtc: isl1208: Add OF device ID table 2017-03-09 01:29:27 +01:00
rtc-isl12022.c rtc: remove useless DRV_VERSION 2016-05-20 12:33:51 +02:00
rtc-jz4740.c rtc: jz4740: make the driver buildable as a module again 2017-01-26 23:03:21 +01:00
rtc-lib.c rtc: Fix overflow when converting time64_t to rtc_time 2019-03-27 14:13:55 +09:00
rtc-lp8788.c
rtc-lpc24xx.c
rtc-lpc32xx.c
rtc-ls1x.c rtc: constify rtc_class_ops structures 2017-01-11 17:23:06 +01:00
rtc-m41t80.c rtc: m41t80: Correct alarm month range with RTC reads 2019-01-09 17:14:52 +01:00
rtc-m41t93.c
rtc-m41t94.c
rtc-m48t35.c rtc: remove useless DRV_VERSION 2016-05-20 12:33:51 +02:00
rtc-m48t59.c
rtc-m48t86.c rtc: m48t86: remove unused platform_data 2017-02-21 21:23:13 +01:00
rtc-max6900.c rtc: constify i2c_device_id 2017-09-01 01:10:11 +02:00
rtc-max6902.c
rtc-max6916.c rtc: add support for Maxim max6916 2016-06-04 16:05:59 +02:00
rtc-max8907.c
rtc-max8925.c rtc: max8925: remove redundant check on ret 2017-07-31 00:17:48 +02:00
rtc-max8997.c
rtc-max8998.c
rtc-max77686.c rtc: max77686: Use REGMAP_IRQ_REG for regmap-rtc-irqs initialisation 2016-03-14 17:08:27 +01:00
rtc-mc13xxx.c rtc: mc13xxx: remove UIE signaling 2016-05-20 12:33:51 +02:00
rtc-mc146818-lib.c rtc: move mc146818 helper functions out-of-line 2016-06-26 01:20:08 +02:00
rtc-mcp795.c rtc: mcp795: add alarm support. 2017-01-11 17:23:04 +01:00
rtc-moxart.c
rtc-mpc5121.c
rtc-mrst.c rtc: simplify implementations of read_alarm 2016-07-09 10:24:45 +02:00
rtc-msm6242.c
rtc-mt6397.c rtc: mt6397: fix possible race condition 2019-11-20 17:59:51 +01:00
rtc-mv.c
rtc-mxc.c rtc: mxc: avoid disabling interrupts on device close 2017-08-24 16:23:16 +02:00
rtc-nuc900.c rtc: rtc-nuc900: fix loop timeout test 2017-07-06 22:37:16 +02:00
rtc-omap.c rtc: omap: fix error path when pinctrl_register fails 2018-12-01 09:42:58 +01:00
rtc-opal.c rtc: opal: Fix OPAL RTC driver OPAL_BUSY loops 2018-05-01 12:58:24 -07:00
rtc-palmas.c rtc: constify rtc_class_ops structures 2016-09-02 01:24:06 +02:00
rtc-pcap.c
rtc-pcf2123.c rtc: pcf2123: Add missing error code assignment before test 2016-08-31 18:21:34 +02:00
rtc-pcf2127.c rtc: pcf2127: fix a kmemleak caused in pcf2127_i2c_gather_write 2018-12-01 09:42:53 +01:00
rtc-pcf8523.c rtc: pcf8523: set xtal load capacitance from DT 2019-11-06 12:42:56 +01:00
rtc-pcf8563.c rtc: pcf8563: fix output clock rate 2017-12-20 10:10:23 +01:00
rtc-pcf8583.c
rtc-pcf50633.c rtc: constify rtc_class_ops structures 2016-09-02 01:24:06 +02:00
rtc-pcf85063.c rtc: pcf85063: do not register a RTC device if chip is not present 2016-11-04 23:08:59 +01:00
rtc-pic32.c rtc: pic32: Delete owner assignment 2016-08-31 18:21:35 +02:00
rtc-pl030.c rtc: pl030: fix possible race condition 2019-11-20 17:59:51 +01:00
rtc-pl031.c rtc: pl031: make interrupt optional 2017-12-25 14:26:25 +01:00
rtc-pm8xxx.c rtc: rtc-pm8xxx: Add support for pm8018 rtc 2016-08-31 09:33:33 +01:00
rtc-proc.c
rtc-ps3.c
rtc-puv3.c rtc: puv3: make alarms useful 2017-08-22 12:05:21 +02:00
rtc-pxa.c rtc: pxa: fix possible race condition 2017-08-24 11:03:34 +02:00
rtc-r7301.c rtc: add support for EPSON TOYOCOM RTC-7301SF/DG 2016-12-19 00:59:21 +01:00
rtc-r9701.c
rtc-rc5t583.c rtc: explicitly set tm_sec = 0 for drivers with minute accurancy 2016-07-19 18:15:21 +02:00
rtc-rk808.c rtc: rk808: fix possible race condition 2018-05-25 16:18:01 +02:00
rtc-rp5c01.c rtc: rp5c01: fix possible race condition 2018-05-25 16:18:01 +02:00
rtc-rs5c313.c rtc: remove useless DRV_VERSION 2016-05-20 12:33:51 +02:00
rtc-rs5c348.c rtc: remove useless DRV_VERSION 2016-05-20 12:33:51 +02:00
rtc-rs5c372.c rtc: rs5c372: Add OF device ID table 2017-03-09 01:29:34 +01:00
rtc-rtd119x.c rtc: Add Realtek RTD1295 2017-09-05 09:55:02 +02:00
rtc-rv3029c2.c rtc: constify i2c_device_id 2017-09-01 01:10:11 +02:00
rtc-rv8803.c rtc: rv8803: fix the rv8803 id in the OF table 2019-11-20 17:59:39 +01:00
rtc-rx4581.c
rtc-rx6110.c rtc: constify rtc_class_ops structures 2016-09-02 01:24:06 +02:00
rtc-rx8010.c rtc: rx8010: Add OF device ID table 2017-03-09 01:29:21 +01:00
rtc-rx8025.c rtc: constify rtc_class_ops structures 2016-09-02 01:24:06 +02:00
rtc-rx8581.c rtc: rx8581: Add OF device ID table 2017-03-09 01:29:31 +01:00
rtc-s3c.c rtc: s3c-rtc: Avoid using broken ALMYEAR register 2019-12-17 20:37:45 +01:00
rtc-s3c.h
rtc-s5m.c rtc: s5m: De-inline large functions to save space 2016-03-14 17:08:18 +01:00
rtc-s35390a.c rtc: s35390a: Change buf's type to u8 in s35390a_init 2019-12-01 09:13:44 +01:00
rtc-sa1100.c rtc: sa1100: make alarms useful 2017-08-24 11:03:35 +02:00
rtc-sa1100.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
rtc-sh.c rtc: sh: Fix invalid alarm warning for non-enabled alarm 2019-05-08 07:20:47 +02:00
rtc-sirfsoc.c
rtc-snvs.c rtc: snvs: fix possible race condition 2019-10-07 18:55:10 +02:00
rtc-spear.c rtc: constify rtc_class_ops structures 2016-09-02 01:24:06 +02:00
rtc-st-lpc.c rtc: st-lpc: make it robust against y2038/2106 bug 2017-07-09 22:32:18 +02:00
rtc-starfire.c rtc: sparc: make starfire explicitly non-modular 2016-11-04 23:31:31 +01:00
rtc-stk17ta8.c rtc: remove useless DRV_VERSION 2016-05-20 12:33:51 +02:00
rtc-stm32.c rtc: stm32: add STM32H7 RTC support 2017-07-06 22:52:54 +02:00
rtc-stmp3xxx.c rtc: constify rtc_class_ops structures 2016-09-02 01:24:06 +02:00
rtc-sun4v.c rtc: sparc: make sun4v explicitly non-modular 2016-11-04 23:31:33 +01:00
rtc-sun6i.c rtc: sun6i: Fix bit_idx value for clk_register_gate 2018-07-03 11:24:59 +02:00
rtc-sunxi.c
rtc-sysfs.c rtc: sysfs: make name uniform 2017-06-03 10:52:04 +02:00
rtc-tegra.c rtc: tegra: Implement clock handling 2017-01-23 00:46:55 +01:00
rtc-test.c
rtc-tile.c
rtc-tps6586x.c rtc: tps6586x: fix possible race condition 2018-08-03 07:50:32 +02:00
rtc-tps65910.c rtc: tps65910: fix possible race condition 2018-08-03 07:50:32 +02:00
rtc-tps80031.c rtc: tps80031: Drop IRQF_EARLY_RESUME flag 2016-03-14 17:08:24 +01:00
rtc-twl.c mfd: twl: Move header file out of I2C realm 2017-09-04 14:41:02 +01:00
rtc-tx4939.c rtc: tx4939: avoid unintended sign extension on a 24 bit shift 2018-05-25 16:18:01 +02:00
rtc-v3020.c rtc: v3020: move rtc-v3020.h to platform_data 2016-07-09 10:24:21 +02:00
rtc-vr41xx.c rtc: vr41xx: fix possible race condition 2018-08-03 07:50:32 +02:00
rtc-vt8500.c
rtc-wm831x.c
rtc-wm8350.c rtc: wm8350: Remove unused to_wm8350_from_rtc_dev 2017-03-16 22:59:54 +01:00
rtc-x1205.c rtc: remove useless DRV_VERSION 2016-05-20 12:33:51 +02:00
rtc-xgene.c rtc: xgene: fix possible race condition 2019-05-31 06:47:30 -07:00
rtc-zynqmp.c rtc: zynqmp: Update seconds time programming logic 2016-05-20 12:33:51 +02:00
systohc.c