Thierry Reding
ef793e6e11
rtc: tegra: Implement clock handling
...
commit 5fa4086987506b2ab8c92f8f99f2295db9918856 upstream.
Accessing the registers of the RTC block on Tegra requires the module
clock to be enabled. This only works because the RTC module clock will
be enabled by default during early boot. However, because the clock is
unused, the CCF will disable it at late_init time. This causes the RTC
to become unusable afterwards. This can easily be reproduced by trying
to use the RTC:
$ hwclock --rtc /dev/rtc1
This will hang the system. I ran into this by following up on a report
by Martin Michlmayr that reboot wasn't working on Tegra210 systems. It
turns out that the rtc-tegra driver's ->shutdown() implementation will
hang the CPU, because of the disabled clock, before the system can be
rebooted.
What confused me for a while is that the same driver is used on prior
Tegra generations where the hang can not be observed. However, as Peter
De Schrijver pointed out, this is because on 32-bit Tegra chips the RTC
clock is enabled by the tegra20_timer.c clocksource driver, which uses
the RTC to provide a persistent clock. This code is never enabled on
64-bit Tegra because the persistent clock infrastructure does not exist
on 64-bit ARM.
The proper fix for this is to add proper clock handling to the RTC
driver in order to ensure that the clock is enabled when the driver
requires it. All device trees contain the clock already, therefore
no additional changes are required.
Reported-by: Martin Michlmayr <tbm@cyrius.com>
Acked-By Peter De Schrijver <pdeschrijver@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
[bwh: Backported to 4.9: adjust context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2017-04-21 09:31:24 +02:00
..
class.c
rtc: make class.c explicitly non-modular
2016-03-14 17:08:18 +01:00
hctosys.c
rtc: use more standard kernel logging styles
2015-04-17 09:04:02 -04:00
interface.c
rtc: fix a typo and reduce three empty lines to one
2016-07-11 23:22:35 +02:00
Kconfig
rtc: sun6i: Disable the build as a module
2017-03-12 06:41:52 +01:00
Makefile
rtc: isl12057: remove driver
2016-08-31 18:21:34 +02: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-ab-b5ze-s3.c
rtc: Export OF module alias information in missing drivers
2015-09-05 13:19:08 +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-abx80x.c
rtc: abx80x: use devm_add_action_or_reset()
2016-07-19 17:27:42 +02:00
rtc-ac100.c
rtc: ac100: Add NULL checking for devm_kzalloc call
2016-09-22 00:14:41 +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: 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: 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: Fix missing spin_lock_init()
2016-07-26 00:09:18 +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: bq32k: Fix handling of oscillator failure flag
2016-08-31 18:21:35 +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: Don't enable interrupts in the middle of the interrupt handler
2016-10-20 17:40:06 +02:00
rtc-coh901331.c
rtc: constify rtc_class_ops structures
2016-09-02 01:24:06 +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
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: avoid writing undefined data to rtc
2016-01-11 20:19:57 +01:00
rtc-davinci.c
rtc: constify rtc_class_ops structures
2016-09-02 01:24:06 +02: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: constify rtc_class_ops structures
2016-09-02 01:24:06 +02:00
rtc-dm355evm.c
rtc: drop owner assignment from platform_drivers
2014-10-20 16:21:31 +02: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: ds1307: add Intersil ISL12057 support
2016-08-31 18:21:34 +02: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: 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: 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: remove useless DRV_VERSION
2016-05-20 12:33:51 +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: simplify implementations of read_alarm
2016-07-09 10:24:45 +02: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: Fail probing if RTC reads don't work
2016-06-06 17:07:33 +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: remove useless DRV_VERSION
2016-05-20 12:33:51 +02:00
rtc-fm3130.c
rtc: Drop owner assignment from i2c_driver
2015-09-05 13:19:06 +02:00
rtc-gemini.c
rtc: constify rtc_class_ops structures
2016-09-02 01:24:06 +02:00
rtc-generic.c
rtc: generic: remove get_rtc_time/set_rtc_time wrappers
2016-06-04 00:23:35 +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: hym8563: in .read_alarm set .tm_sec to 0 to signal minute accuracy
2016-07-19 18:18:06 +02:00
rtc-imxdi.c
rtc: imxdi: fix spelling mistake in warning message
2016-01-11 20:19:58 +01:00
rtc-isl1208.c
rtc: remove useless DRV_VERSION
2016-05-20 12:33:51 +02:00
rtc-isl12022.c
rtc: remove useless DRV_VERSION
2016-05-20 12:33:51 +02:00
rtc-jz4740.c
rtc: constify rtc_class_ops structures
2016-09-02 01:24:06 +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: lpc32xx: remove irq > NR_IRQS check from probe()
2016-01-11 20:19:59 +01:00
rtc-ls1x.c
MIPS: Loongson: Naming style cleanup and rework
2015-06-21 21:53:59 +02:00
rtc-m41t80.c
rtc: m41t80: add suspend handlers for alarm IRQ
2016-07-21 20:06:57 +02: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: remove useless DRV_VERSION
2016-05-20 12:33:51 +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: m48t86: move m48t86.h to platform_data
2016-06-27 18:15:25 +02:00
rtc-max6900.c
rtc: remove useless DRV_VERSION
2016-05-20 12:33:51 +02:00
rtc-max6902.c
spi: Drop owner assignment from spi_drivers
2015-10-28 10:30:17 +09:00
rtc-max6916.c
rtc: add support for Maxim max6916
2016-06-04 16:05:59 +02: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: 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: constify rtc_class_ops structures
2016-09-02 01:24:06 +02: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: simplify implementations of read_alarm
2016-07-09 10:24:45 +02:00
rtc-msm6242.c
rtc: use more standard kernel logging styles
2015-04-17 09:04:02 -04:00
rtc-mt6397.c
rtc: constify rtc_class_ops structures
2016-09-02 01:24:06 +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: remove UIE signaling
2016-05-20 12:33:51 +02:00
rtc-nuc900.c
rtc: constify rtc_class_ops structures
2016-09-02 01:24:06 +02:00
rtc-omap.c
rtc: omap: prevent disabling of clock/module during suspend
2016-11-04 23:11:39 +01:00
rtc-opal.c
powerpc/opal: Add inline function to get rc from an ASYNC_COMP opal_msg
2016-06-29 17:33:18 +10:00
rtc-palmas.c
rtc: constify rtc_class_ops structures
2016-09-02 01:24:06 +02:00
rtc-pcap.c
rtc: drop owner assignment from platform_drivers
2014-10-20 16:21:31 +02:00
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: add pcf2129 device id
2016-03-14 17:08:41 +01:00
rtc-pcf8523.c
rtc: pcf8523: properly handle oscillator stop bit
2016-03-14 17:08:30 +01:00
rtc-pcf8563.c
rtc: explicitly set tm_sec = 0 for drivers with minute accurancy
2016-07-19 18:15:21 +02:00
rtc-pcf8583.c
rtc: Drop owner assignment from i2c_driver
2015-09-05 13:19:06 +02:00
rtc-pcf50633.c
rtc: constify rtc_class_ops structures
2016-09-02 01:24:06 +02:00
rtc-pcf85063.c
rtc: pcf85063: Add support for the PCF85063A device
2016-07-19 19:11:54 +02:00
rtc-pic32.c
rtc: pic32: Delete owner assignment
2016-08-31 18:21:35 +02: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
rtc: rtc-pm8xxx: Add support for pm8018 rtc
2016-08-31 09:33:33 +01:00
rtc-proc.c
rtc: fix module reference count in rtc-proc
2016-01-11 20:19:55 +01: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: explicitly set tm_sec = 0 for drivers with minute accurancy
2016-07-19 18:15:21 +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: 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: simplify implementations of read_alarm
2016-07-09 10:24:45 +02:00
rtc-rv3029c2.c
rtc: rv3029: hide unused i2c device table
2016-05-21 17:07:16 +02:00
rtc-rv8803.c
rtc: rv8803: set VDETOFF and SWOFF via device tree
2016-10-12 13:24:39 +02:00
rtc-rx4581.c
spi: Drop owner assignment from spi_drivers
2015-10-28 10:30:17 +09:00
rtc-rx6110.c
rtc: constify rtc_class_ops structures
2016-09-02 01:24:06 +02:00
rtc-rx8010.c
rtc: simplify implementations of read_alarm
2016-07-09 10:24:45 +02:00
rtc-rx8025.c
rtc: constify rtc_class_ops structures
2016-09-02 01:24:06 +02:00
rtc-rx8581.c
rtc: remove useless DRV_VERSION
2016-05-20 12:33:51 +02:00
rtc-s3c.c
rtc: s3c: Add s3c_rtc_{enable/disable}_clk in s3c_rtc_setfreq()
2016-07-19 17:48:06 +02:00
rtc-s3c.h
rtc: s3c: make header file local
2013-04-19 13:51:25 +02:00
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: improve two comments in .set_alarm
2016-07-11 23:22:35 +02: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: sh: don't validate alarm time provided to .set_alarm
2016-07-11 23:22:33 +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: return error in case enable_irq_wake fails
2016-05-20 12:33:51 +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: 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: remove useless DRV_VERSION
2016-05-20 12:33:51 +02:00
rtc-stmp3xxx.c
rtc: constify rtc_class_ops structures
2016-09-02 01:24:06 +02:00
rtc-sun4v.c
rtc: drop owner assignment from platform_drivers
2014-10-20 16:21:31 +02:00
rtc-sun6i.c
rtc: sun6i: Switch to the external oscillator
2017-03-12 06:41:52 +01:00
rtc-sunxi.c
rtc: sunxi: use of_device_get_match_data
2016-01-11 20:19:57 +01:00
rtc-sysfs.c
rtc: sysfs: fix a cast removing the const attribute
2016-08-31 18:21:35 +02:00
rtc-tegra.c
rtc: tegra: Implement clock handling
2017-04-21 09:31:24 +02: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: tps6586x: rename so module can be autoloaded
2016-05-21 17:07:17 +02:00
rtc-tps65910.c
rtc: tps65910: Drop IRQF_EARLY_RESUME flag
2016-03-14 17:08:23 +01:00
rtc-tps80031.c
rtc: tps80031: Drop IRQF_EARLY_RESUME flag
2016-03-14 17:08:24 +01:00
rtc-twl.c
rtc: constify rtc_class_ops structures
2016-09-02 01:24:06 +02: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: v3020: move rtc-v3020.h to platform_data
2016-07-09 10:24:21 +02:00
rtc-vr41xx.c
rtc: vr41xx: Wire up alarm_irq_enable
2016-03-14 17:08:25 +01: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
rtc: remove useless DRV_VERSION
2016-05-20 12:33:51 +02:00
rtc-xgene.c
rtc: drop owner assignment from platform_drivers
2014-10-20 16:21:31 +02:00
rtc-zynqmp.c
rtc: zynqmp: Update seconds time programming logic
2016-05-20 12:33:51 +02:00
systohc.c
rtc: NTP: Add CONFIG_RTC_SYSTOHC_DEVICE for NTP synchronization
2015-06-25 01:13:42 +02:00