linux/drivers/rtc
Julius Werner f076ef44a4 rtc: rk808: Compensate for Rockchip calendar deviation on November 31st
In A.D. 1582 Pope Gregory XIII found that the existing Julian calendar
insufficiently represented reality, and changed the rules about
calculating leap years to account for this. Similarly, in A.D. 2013
Rockchip hardware engineers found that the new Gregorian calendar still
contained flaws, and that the month of November should be counted up to
31 days instead. Unfortunately it takes a long time for calendar changes
to gain widespread adoption, and just like more than 300 years went by
before the last Protestant nation implemented Greg's proposal, we will
have to wait a while until all religions and operating system kernels
acknowledge the inherent advantages of the Rockchip system. Until then
we need to translate dates read from (and written to) Rockchip hardware
back to the Gregorian format.

This patch works by defining Jan 1st, 2016 as the arbitrary anchor date
on which Rockchip and Gregorian calendars are in sync. From that we can
translate arbitrary later dates back and forth by counting the number
of November/December transitons since the anchor date to determine the
offset between the calendars. We choose this method (rather than trying
to regularly "correct" the date stored in hardware) since it's the only
way to ensure perfect time-keeping even if the system may be shut down
for an unknown number of years. The drawback is that other software
reading the same hardware (e.g. mainboard firmware) must use the same
translation convention (including the same anchor date) to be able to
read and write correct timestamps from/to the RTC.

Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
2015-12-20 13:39:00 +01:00
..
class.c rtc: switch to using is_visible() to control sysfs attributes 2015-09-05 13:19:07 +02:00
hctosys.c rtc: use more standard kernel logging styles 2015-04-17 09:04:02 -04:00
interface.c rtc: Drop (un)likely before IS_ERR(_OR_NULL) 2015-09-05 13:19:09 +02:00
Kconfig rtc: Add a driver for Micro Crystal RV8803 2015-11-08 14:12:32 +01:00
Makefile rtc: Add a driver for Micro Crystal RV8803 2015-11-08 14:12:32 +01:00
rtc-88pm80x.c rtc: 88pm80x: add device tree support 2015-09-05 13:19:05 +02:00
rtc-88pm860x.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-ab3100.c drivers/rtc/ab3100: Update driver to address y2038/y2106 issues 2015-04-03 08:18:25 +02:00
rtc-ab8500.c rtc: ab8500: remove misuse of IRQF_NO_SUSPEND flag 2015-11-08 14:12:25 +01:00
rtc-ab-b5ze-s3.c rtc: Export OF module alias information in missing drivers 2015-09-05 13:19:08 +02:00
rtc-abx80x.c rtc: abx80x: fix RTC write bit 2015-09-05 19:37:31 +02:00
rtc-armada38x.c rtc: Fix module autoload for OF platform drivers 2015-09-05 19:37:22 +02:00
rtc-as3722.c rtc: as3722: correct month value 2015-09-05 19:37:18 +02:00
rtc-at32ap700x.c rtc: at32ap700x: update author email 2015-06-25 01:12:50 +02:00
rtc-at91rm9200.c rtc: at91rm9200: clear RTC alarm status flag prior to suspending 2015-11-08 14:12:28 +01:00
rtc-at91rm9200.h Revert "drivers/rtc/rtc-at91rm9200.c: use a variable for storing IMR" 2013-04-05 09:36:53 -07:00
rtc-at91sam9.c rtc: at91sam9: remove useless include 2015-09-05 13:19:13 +02:00
rtc-au1xxx.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-bfin.c rtc: Drop (un)likely before IS_ERR(_OR_NULL) 2015-09-05 13:19:09 +02:00
rtc-bq32k.c rtc: Drop owner assignment from i2c_driver 2015-09-05 13:19:06 +02:00
rtc-bq4802.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-cmos.c rtc: cmos: clean up cmos_nvram_read()/cmos_nvram_write() 2015-09-05 13:19:09 +02:00
rtc-coh901331.c rtc: Fix module autoload for OF platform drivers 2015-09-05 19:37:22 +02:00
rtc-core.h rtc: switch to using is_visible() to control sysfs attributes 2015-09-05 13:19:07 +02:00
rtc-da9052.c drivers/rtc/rtc-da9052.c: register ability of alarm to wake device from suspend 2015-04-17 09:04:00 -04:00
rtc-da9055.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-da9063.c rtc: da9063: GPL copyright inconsistency fix 2015-11-08 14:12:26 +01:00
rtc-davinci.c rtc: davinci: remove incorrect reference to probe function 2015-11-08 14:12:29 +01:00
rtc-dev.c rtc: dev: properly manage lifetime of dev and cdev in rtc device 2015-09-05 13:19:07 +02:00
rtc-digicolor.c rtc: driver for Conexant Digicolor CX92755 on-chip RTC 2015-04-17 09:04:01 -04:00
rtc-dm355evm.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-ds1216.c rtc: simplify use of devm_ioremap_resource 2015-06-25 01:13:40 +02:00
rtc-ds1286.c rtc: simplify use of devm_ioremap_resource 2015-06-25 01:13:40 +02:00
rtc-ds1302.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-ds1305.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
rtc-ds1307.c rtc: ds1307: fix alarm reading at probe time 2015-11-26 18:11:26 +01:00
rtc-ds1343.c RTC for 4.4 2015-11-10 10:01:21 -08:00
rtc-ds1347.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
rtc-ds1374.c rtc: ds1374: Remove unused variable 2015-09-05 19:37:22 +02:00
rtc-ds1390.c RTC for 4.4 2015-11-10 10:01:21 -08:00
rtc-ds1511.c rtc: ds1511: clean up ds1511_nvram_read()/ds1511_nvram_write() 2015-09-05 13:19:10 +02:00
rtc-ds1553.c rtc: ds1553: clean up ds1553_nvram_read()/ds1553_nvram_write() 2015-09-05 13:19:10 +02:00
rtc-ds1672.c rtc: ds1672, max6900, max8998: Add MODULE_DEVICE_TABLE 2015-06-25 01:13:36 +02:00
rtc-ds1685.c rtc: ds1685: Use module_platform_driver 2015-09-05 13:19:05 +02:00
rtc-ds1742.c rtc: ds1742: clean up ds1742_nvram_read()/ds1742_nvram_write() 2015-09-05 13:19:10 +02:00
rtc-ds2404.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-ds3232.c rtc: ds3232: fix WARNING trace in resume function 2015-09-05 19:36:21 +02:00
rtc-ds3234.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
rtc-efi-platform.c rtc: use more standard kernel logging styles 2015-04-17 09:04:02 -04:00
rtc-efi.c rtc: efi: use correct EFI 'epoch' 2015-06-25 01:13:44 +02:00
rtc-em3027.c drivers/rtc/rtc-em3027.c: add device tree support 2015-04-17 09:03:59 -04:00
rtc-ep93xx.c rtc: ep93xx: Use readl/writel for io 2015-06-25 01:13:38 +02:00
rtc-fm3130.c rtc: Drop owner assignment from i2c_driver 2015-09-05 13:19:06 +02:00
rtc-gemini.c rtc: gemini: fix ptr_ret.cocci warnings 2015-09-05 13:19:09 +02:00
rtc-generic.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-hid-sensor-time.c rtc: hid-sensor-time: Constify platform_device_id 2015-06-19 20:03:20 +02:00
rtc-hym8563.c rtc: Drop owner assignment from i2c_driver 2015-09-05 13:19:06 +02:00
rtc-imxdi.c rtc: imxdi: when locked, do not fail silently 2015-06-19 20:03:21 +02:00
rtc-isl1208.c rtc: isl1208: Pass the IRQF_ONESHOT flag 2015-11-08 14:12:30 +01:00
rtc-isl12022.c rtc: Export OF module alias information in missing drivers 2015-09-05 13:19:08 +02:00
rtc-isl12057.c rtc: isl12057: enable support for the standard "wakeup-source" property 2015-11-08 14:12:30 +01:00
rtc-jz4740.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-lib.c rtc/lib: Provide y2038 safe rtc_tm_to_time()/rtc_time_to_tm() replacement 2014-11-21 12:00:00 -08:00
rtc-lp8788.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-lpc24xx.c rtc: add rtc-lpc24xx driver 2015-09-05 13:19:06 +02:00
rtc-lpc32xx.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-ls1x.c MIPS: Loongson: Naming style cleanup and rework 2015-06-21 21:53:59 +02:00
rtc-m41t80.c rtc: use more standard kernel logging styles 2015-04-17 09:04:02 -04:00
rtc-m41t93.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
rtc-m41t94.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
rtc-m48t35.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-m48t59.c rtc: m48t59: clean up m48t59_nvram_read()/m48t59_nvram_write() 2015-09-05 13:19:10 +02:00
rtc-m48t86.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-max6900.c rtc: ds1672, max6900, max8998: Add MODULE_DEVICE_TABLE 2015-06-25 01:13:36 +02:00
rtc-max6902.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
rtc-max8907.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-max8925.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-max8997.c rtc: Fix module autoload for rtc-{ab8500,max8997,s5m} drivers 2015-09-05 19:37:21 +02:00
rtc-max8998.c rtc: ds1672, max6900, max8998: Add MODULE_DEVICE_TABLE 2015-06-25 01:13:36 +02:00
rtc-max77686.c rtc: max77686: Report platform modalias to fix module autoload 2015-06-25 01:13:37 +02:00
rtc-max77802.c rtc: max77802: Report platform modalias to fix module autoload 2015-06-25 01:13:37 +02:00
rtc-mc13xxx.c rtc: mc13xxx: fix obfuscated and wrong format string 2015-06-25 01:13:35 +02:00
rtc-mcp795.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
rtc-moxart.c rtc: Fix module autoload for OF platform drivers 2015-09-05 19:37:22 +02:00
rtc-mpc5121.c rtc: Fix module autoload for OF platform drivers 2015-09-05 19:37:22 +02:00
rtc-mrst.c rtc: remove use of seq_printf return value 2015-04-15 16:35:24 -07:00
rtc-msm6242.c rtc: use more standard kernel logging styles 2015-04-17 09:04:02 -04:00
rtc-mt6397.c rtc: Fix module autoload for OF platform drivers 2015-09-05 19:37:22 +02:00
rtc-mv.c rtc: Fix module autoload for OF platform drivers 2015-09-05 19:37:22 +02:00
rtc-mxc.c rtc: mxc: add support of device tree 2015-08-05 20:03:56 +08:00
rtc-nuc900.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-omap.c rtc: omap: Add external clock enabling support 2015-09-05 19:37:21 +02:00
rtc-opal.c rtc: opal: enable support for the stardard "wakeup-source" property 2015-11-08 14:12:30 +01:00
rtc-palmas.c rtc: palmas: Initialise bb_charging flag before using it 2015-06-25 01:13:40 +02:00
rtc-pcap.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-pcf2123.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
rtc-pcf2127.c rtc: pcf2127: remove useless driver version 2015-11-08 14:12:28 +01:00
rtc-pcf8523.c rtc: Drop owner assignment from i2c_driver 2015-09-05 13:19:06 +02:00
rtc-pcf8563.c rtc: pcf8563: add CLKOUT to common clock framework 2015-11-08 14:12:29 +01:00
rtc-pcf8583.c rtc: Drop owner assignment from i2c_driver 2015-09-05 13:19:06 +02:00
rtc-pcf50633.c rtc: rtc-pcf50633: use devm_*() functions 2013-04-29 18:28:38 -07:00
rtc-pcf85063.c rtc: pcf85063: return an error when date is invalid 2015-11-08 14:12:26 +01:00
rtc-pl030.c drivers/rtc/rtc-pl030.c: use devm_kzalloc() instead of kmalloc() 2013-11-13 12:09:31 +09:00
rtc-pl031.c rtc: pl031: remove misuse of IRQF_NO_SUSPEND flag 2015-11-08 14:12:24 +01:00
rtc-pm8xxx.c Merge branch 'platform/remove_owner' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux into driver-core-next 2014-11-03 19:53:56 -08:00
rtc-proc.c procfs: new helper - PDE_DATA(inode) 2013-04-09 14:13:32 -04:00
rtc-ps3.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-puv3.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-pxa.c rtc: sa1100/pxa: convert to run-time register mapping 2015-09-05 19:37:16 +02:00
rtc-r9701.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
rtc-rc5t583.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-rk808.c rtc: rk808: Compensate for Rockchip calendar deviation on November 31st 2015-12-20 13:39:00 +01:00
rtc-rp5c01.c rtc: rp5c01: clean up rp5c01_nvram_read()/rp5c01_nvram_write() 2015-09-05 13:19:10 +02:00
rtc-rs5c313.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-rs5c348.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
rtc-rs5c372.c drivers/rtc/rtc-rs5c372.c: use %*ph to dump small buffers 2014-10-14 02:18:19 +02:00
rtc-rv3029c2.c drivers/rtc/rtc-rv3029c2.c: fix potential race condition 2014-04-03 16:21:24 -07:00
rtc-rv8803.c rtc: Add a driver for Micro Crystal RV8803 2015-11-08 14:12:32 +01:00
rtc-rx4581.c spi: Drop owner assignment from spi_drivers 2015-10-28 10:30:17 +09:00
rtc-rx8025.c rtc: rx8025: remove unnecessary braces 2015-11-08 14:12:25 +01:00
rtc-rx8581.c rtc: Drop owner assignment from i2c_driver 2015-09-05 13:19:06 +02:00
rtc-s3c.c rtc: s3c: Set year, month, day value for setting alarm 2015-11-08 14:12:31 +01:00
rtc-s3c.h rtc: s3c: make header file local 2013-04-19 13:51:25 +02:00
rtc-s5m.c rtc: Fix module autoload for rtc-{ab8500,max8997,s5m} drivers 2015-09-05 19:37:21 +02:00
rtc-s35390a.c rtc: rtc-s35390a: use devm_*() functions 2013-04-29 18:28:38 -07:00
rtc-sa1100.c rtc: sa1100/pxa: convert to run-time register mapping 2015-09-05 19:37:16 +02:00
rtc-sa1100.h rtc: sa1100/pxa: convert to run-time register mapping 2015-09-05 19:37:16 +02:00
rtc-sh.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-sirfsoc.c rtc: sirfsoc: move to regmap APIs from platform-specific APIs 2015-09-05 13:19:06 +02:00
rtc-snvs.c rtc: snvs: use syscon to access register 2015-07-15 10:15:10 +08:00
rtc-spear.c rtc: simplify use of devm_ioremap_resource 2015-06-25 01:13:40 +02:00
rtc-st-lpc.c rtc: st: Update IP layout information to include Clocksource 2015-07-23 17:07:35 +01:00
rtc-starfire.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-stk17ta8.c rtc: stk17ta8: clean up stk17ta8_nvram_read()/stk17ta8_nvram_write() 2015-09-05 13:19:10 +02:00
rtc-stmp3xxx.c rtc: stmp3xxx: unify register access macros 2015-11-08 14:12:27 +01:00
rtc-sun4v.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-sun6i.c rtc: sun6i: Add sun6i RTC driver 2014-09-19 12:39:19 +02:00
rtc-sunxi.c rtc: sunxi: Replace deprecated rtc_tm_to_time() 2015-06-25 01:13:42 +02:00
rtc-sysfs.c rtc: switch to using is_visible() to control sysfs attributes 2015-09-05 13:19:07 +02:00
rtc-tegra.c rtc: remove use of seq_printf return value 2015-04-15 16:35:24 -07:00
rtc-test.c drivers/rtc/test: Update driver to address y2038/y2106 issues 2015-04-03 08:18:24 +02:00
rtc-tile.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-tps6586x.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-tps65910.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-tps80031.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-twl.c rtc: use more standard kernel logging styles 2015-04-17 09:04:02 -04:00
rtc-tx4939.c rtc: tx4939: clean up tx4939_rtc_nvram_read()/tx4939_rtc_nvram_write() 2015-09-05 13:19:10 +02:00
rtc-v3020.c rtc: rtc-v3020: use gpio_request_array() 2015-06-25 01:13:38 +02:00
rtc-vr41xx.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-vt8500.c rtc: Fix module autoload for OF platform drivers 2015-09-05 19:37:22 +02:00
rtc-wm831x.c drivers/rtc/rtc-wm831x.c: remove empty function 2013-07-03 16:07:59 -07:00
rtc-wm8350.c rtc: rtc-wm8350: switch to using SIMPLE_DEV_PM_OPS 2013-04-29 18:28:32 -07:00
rtc-x1205.c drivers/rtc/rtc-x1205.c: use sign_extend32() for sign extension 2015-04-17 09:03:59 -04:00
rtc-xgene.c rtc: drop owner assignment from platform_drivers 2014-10-20 16:21:31 +02:00
rtc-zynqmp.c rtc: add xilinx zynqmp rtc driver 2015-09-05 19:37:19 +02:00
systohc.c rtc: NTP: Add CONFIG_RTC_SYSTOHC_DEVICE for NTP synchronization 2015-06-25 01:13:42 +02:00