linux/drivers/rtc
Konstantin Shlyakhovoy f3ec434c69 drivers/rtc/rtc-twl.c: use static register while reading time
RTC stores time and date in several registers.  Due to the fact that
these registers can't be read instantaneously, there is a chance that
reading from counting registers gives an error of one minute, one hour,
one day, etc.

To address this issue, the RTC has hardware support to copy the RTC
counting registers to static shadowed registers.  The current
implementation does not use this feature, and in a stress test, we can
reproduce this error at a rate of around two times per 300000 readings.

Fix the implementation to ensure that the right snapshot of time is
captured.

Signed-off-by: Konstantin Shlyakhovoy <x0155534@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Cc: Alessandro Zummo <a.zummo@towertech.it>
Cc: Benoit Cousson <b-cousson@ti.com>
Cc: linux-omap <linux-omap@vger.kernel.org>
Acked-by: Mykola Oleksiienko <x0174904@ti.com>
Acked-by: Oleksandr Dmytryshyn <oleksandr.dmytryshyn@ti.com>
Acked-by: Graeme Gregory <gg@slimlogic.co.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-04-12 13:12:12 -07:00
..
class.c Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2011-12-05 16:53:43 -08:00
hctosys.c
interface.c rtc: Provide flag for rtc devices that don't support UIE 2012-03-15 18:23:10 -07:00
Kconfig ARM: driver specific updates 2012-03-27 16:41:24 -07:00
Makefile rtc: driver for DA9052/53 PMIC v1 2012-03-23 16:58:40 -07:00
rtc-88pm860x.c Merge branch 'akpm' (Andrew's patch-bomb) 2012-04-05 15:30:34 -07:00
rtc-ab3100.c
rtc-ab8500.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6 2012-01-13 20:43:32 -08:00
rtc-at32ap700x.c treewide: Convert uses of struct resource to resource_size(ptr) 2011-06-10 14:55:36 +02:00
rtc-at91rm9200.c ARM: at91: make rm9200 rtc drivers soc independent 2011-11-28 22:50:39 +08:00
rtc-at91sam9.c ARM: device tree work 2012-03-27 16:47:35 -07:00
rtc-au1xxx.c
rtc-bfin.c rtc: convert drivers/rtc/* to use module_platform_driver() 2012-01-10 16:30:53 -08:00
rtc-bq32k.c rtc: convert rtc i2c drivers to module_i2c_driver 2012-03-23 16:58:39 -07:00
rtc-bq4802.c rtc: convert drivers/rtc/* to use module_platform_driver() 2012-01-10 16:30:53 -08:00
rtc-cmos.c drivers/rtc: remove IRQF_DISABLED 2012-03-23 16:58:39 -07:00
rtc-coh901331.c drivers/rtc: remove IRQF_DISABLED 2012-03-23 16:58:39 -07:00
rtc-core.h
rtc-da9052.c rtc: driver for DA9052/53 PMIC v1 2012-03-23 16:58:40 -07:00
rtc-davinci.c drivers/rtc: remove IRQF_DISABLED 2012-03-23 16:58:39 -07:00
rtc-dev.c rtc: Fix ioctl error path return 2011-06-01 19:29:39 -07:00
rtc-dm355evm.c rtc: convert drivers/rtc/* to use module_platform_driver() 2012-01-10 16:30:53 -08:00
rtc-ds1216.c
rtc-ds1286.c rtc: convert drivers/rtc/* to use module_platform_driver() 2012-01-10 16:30:53 -08:00
rtc-ds1302.c
rtc-ds1305.c rtc: convert rtc spi drivers to module_spi_driver 2012-03-23 16:58:39 -07:00
rtc-ds1307.c rtc: ds1307: generalise ram size and offset 2012-03-23 16:58:40 -07:00
rtc-ds1374.c rtc: convert rtc i2c drivers to module_i2c_driver 2012-03-23 16:58:39 -07:00
rtc-ds1390.c rtc: convert rtc spi drivers to module_spi_driver 2012-03-23 16:58:39 -07:00
rtc-ds1511.c drivers/rtc: remove IRQF_DISABLED 2012-03-23 16:58:39 -07:00
rtc-ds1553.c drivers/rtc: remove IRQF_DISABLED 2012-03-23 16:58:39 -07:00
rtc-ds1672.c rtc: convert rtc i2c drivers to module_i2c_driver 2012-03-23 16:58:39 -07:00
rtc-ds1742.c rtc: convert drivers/rtc/* to use module_platform_driver() 2012-01-10 16:30:53 -08:00
rtc-ds3232.c rtc: convert rtc i2c drivers to module_i2c_driver 2012-03-23 16:58:39 -07:00
rtc-ds3234.c rtc: convert rtc spi drivers to module_spi_driver 2012-03-23 16:58:39 -07:00
rtc-efi.c drivers/rtc/rtc-efi.c: fix section mismatch warning 2012-04-12 13:12:12 -07:00
rtc-em3027.c rtc: convert rtc i2c drivers to module_i2c_driver 2012-03-23 16:58:39 -07:00
rtc-ep93xx.c rtc: ep93xx: Fix 'rtc' may be used uninitialized warning 2011-08-10 15:54:24 -07:00
rtc-fm3130.c rtc: convert rtc i2c drivers to module_i2c_driver 2012-03-23 16:58:39 -07:00
rtc-generic.c
rtc-imxdi.c drivers/rtc/rtc-imxdi.c needs linux/sched.h 2011-09-14 18:09:37 -07:00
rtc-isl1208.c rtc: convert rtc i2c drivers to module_i2c_driver 2012-03-23 16:58:39 -07:00
rtc-isl12022.c rtc: convert rtc i2c drivers to module_i2c_driver 2012-03-23 16:58:39 -07:00
rtc-jz4740.c drivers/rtc/rtc-jz4740.c: make jz4740_rtc_driver static 2012-01-10 16:30:53 -08:00
rtc-lib.c rtc: Initialized rtc_time->tm_isdst 2011-08-26 17:26:35 -07:00
rtc-lpc32xx.c drivers/rtc: remove IRQF_DISABLED 2012-03-23 16:58:39 -07:00
rtc-ls1x.c MIPS: add RTC support for loongson1B 2012-03-23 16:58:39 -07:00
rtc-m41t80.c rtc: convert rtc i2c drivers to module_i2c_driver 2012-03-23 16:58:39 -07:00
rtc-m41t93.c rtc: convert rtc spi drivers to module_spi_driver 2012-03-23 16:58:39 -07:00
rtc-m41t94.c rtc: convert rtc spi drivers to module_spi_driver 2012-03-23 16:58:39 -07:00
rtc-m48t35.c rtc: convert drivers/rtc/* to use module_platform_driver() 2012-01-10 16:30:53 -08:00
rtc-m48t59.c rtc: convert drivers/rtc/* to use module_platform_driver() 2012-01-10 16:30:53 -08:00
rtc-m48t86.c rtc: convert drivers/rtc/* to use module_platform_driver() 2012-01-10 16:30:53 -08:00
rtc-max6900.c rtc: convert rtc i2c drivers to module_i2c_driver 2012-03-23 16:58:39 -07:00
rtc-max6902.c rtc: convert rtc spi drivers to module_spi_driver 2012-03-23 16:58:39 -07:00
rtc-max8925.c drivers/rtc/rtc-max8925.c: fix alarm->enabled mistake in max8925_rtc_read_alarm/max8925_rtc_set_alarm 2012-03-23 16:58:39 -07:00
rtc-max8998.c rtc: convert drivers/rtc/* to use module_platform_driver() 2012-01-10 16:30:53 -08:00
rtc-mc13xxx.c drivers/rtc/rtc-mc13xxx.c: make mc13xxx_rtc_idtable static 2012-01-10 16:30:53 -08:00
rtc-mpc5121.c Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2012-03-29 14:16:48 -07:00
rtc-mrst.c drivers/rtc: remove IRQF_DISABLED 2012-03-23 16:58:39 -07:00
rtc-msm6242.c rtc: msm6242: Initialize drvdata before registering device 2011-05-06 18:02:03 -07:00
rtc-mv.c ARM: More device tree support updates 2012-03-28 12:34:33 -07:00
rtc-mxc.c drivers/rtc/rtc-mxc.c: make alarm work 2012-01-10 16:30:52 -08:00
rtc-nuc900.c drivers/rtc: remove IRQF_DISABLED 2012-03-23 16:58:39 -07:00
rtc-omap.c drivers/rtc: remove IRQF_DISABLED 2012-03-23 16:58:39 -07:00
rtc-pcap.c rtc: pcap: Initialize drvdata before registering device 2011-05-06 18:02:04 -07:00
rtc-pcf2123.c rtc: convert rtc spi drivers to module_spi_driver 2012-03-23 16:58:39 -07:00
rtc-pcf8563.c rtc: convert rtc i2c drivers to module_i2c_driver 2012-03-23 16:58:39 -07:00
rtc-pcf8583.c rtc: convert rtc i2c drivers to module_i2c_driver 2012-03-23 16:58:39 -07:00
rtc-pcf50633.c rtc: convert drivers/rtc/* to use module_platform_driver() 2012-01-10 16:30:53 -08:00
rtc-pl030.c Merge branch 'amba' of git://git.linaro.org/people/rmk/linux-arm 2012-03-23 17:36:29 -07:00
rtc-pl031.c Merge branch 'amba' of git://git.linaro.org/people/rmk/linux-arm 2012-03-23 17:36:29 -07:00
rtc-pm8xxx.c drivers/rtc/rtc-pm8xxx.c: make pm8xxx_rtc_pm_ops static 2012-03-23 16:58:39 -07:00
rtc-proc.c RTC: Include information about UIE and PIE in RTC driver proc. 2011-03-09 11:25:04 -08:00
rtc-ps3.c
rtc-puv3.c rtc-puv3: solve section mismatch in rtc-puv3.c 2012-01-10 10:29:42 +08:00
rtc-pxa.c drivers/rtc: remove IRQF_DISABLED 2012-03-23 16:58:39 -07:00
rtc-r9701.c drivers/rtc/rtc-r9701.c: reset registers if invalid values are detected 2012-04-12 13:12:12 -07:00
rtc-rp5c01.c rtc: rp5c01: Initialize drvdata before registering device 2011-05-06 18:02:05 -07:00
rtc-rs5c313.c
rtc-rs5c348.c rtc: convert rtc spi drivers to module_spi_driver 2012-03-23 16:58:39 -07:00
rtc-rs5c372.c rtc: convert rtc i2c drivers to module_i2c_driver 2012-03-23 16:58:39 -07:00
rtc-rv3029c2.c rtc: convert rtc i2c drivers to module_i2c_driver 2012-03-23 16:58:39 -07:00
rtc-rx8025.c rtc: convert rtc i2c drivers to module_i2c_driver 2012-03-23 16:58:39 -07:00
rtc-rx8581.c rtc: convert rtc i2c drivers to module_i2c_driver 2012-03-23 16:58:39 -07:00
rtc-s3c.c drivers/rtc/rtc-s3c.c: add placeholder for driver private data 2012-04-12 13:12:12 -07:00
rtc-s35390a.c rtc: convert rtc i2c drivers to module_i2c_driver 2012-03-23 16:58:39 -07:00
rtc-sa1100.c ARM: cleanups of io includes 2012-03-29 18:02:10 -07:00
rtc-sh.c drivers/rtc: remove IRQF_DISABLED 2012-03-23 16:58:39 -07:00
rtc-spear.c rtc/rtc-spear: call platform_set_drvdata() before registering rtc device 2012-03-23 16:58:39 -07:00
rtc-starfire.c
rtc-stk17ta8.c drivers/rtc: remove IRQF_DISABLED 2012-03-23 16:58:39 -07:00
rtc-stmp3xxx.c rtc: convert drivers/rtc/* to use module_platform_driver() 2012-01-10 16:30:53 -08:00
rtc-sun4v.c
rtc-sysfs.c
rtc-tegra.c drivers/rtc/rtc-tegra.c: properly initialize spinlock 2011-07-25 20:57:17 -07:00
rtc-test.c RTC: Fix the cross interrupt issue on rtc-test. 2011-03-09 11:25:07 -08:00
rtc-tile.c tile: add an RTC driver for the Tilera hypervisor 2011-05-17 14:44:36 -04:00
rtc-twl.c drivers/rtc/rtc-twl.c: use static register while reading time 2012-04-12 13:12:12 -07:00
rtc-tx4939.c drivers/rtc: remove IRQF_DISABLED 2012-03-23 16:58:39 -07:00
rtc-v3020.c rtc: convert drivers/rtc/* to use module_platform_driver() 2012-01-10 16:30:53 -08:00
rtc-vr41xx.c drivers/rtc: remove IRQF_DISABLED 2012-03-23 16:58:39 -07:00
rtc-vt8500.c rtc: convert drivers/rtc/* to use module_platform_driver() 2012-01-10 16:30:53 -08:00
rtc-wm831x.c rtc: convert drivers/rtc/* to use module_platform_driver() 2012-01-10 16:30:53 -08:00
rtc-wm8350.c rtc: convert drivers/rtc/* to use module_platform_driver() 2012-01-10 16:30:53 -08:00
rtc-x1205.c rtc: convert rtc i2c drivers to module_i2c_driver 2012-03-23 16:58:39 -07:00