linux-imx/drivers/rtc
Uwe Kleine-König 64275cb400 rtc: s35390a: improve irq handling
commit 3bd32722c8 upstream.

On some QNAP NAS devices the rtc can wake the machine. Several people
noticed that once the machine was woken this way it fails to shut down.
That's because the driver fails to acknowledge the interrupt and so it
keeps active and restarts the machine immediatly after shutdown. See
https://bugs.debian.org/794266 for a bug report.

Doing this correctly requires to interpret the INT2 flag of the first read
of the STATUS1 register because this bit is cleared by read.

Note this is not maximally robust though because a pending irq isn't
detected when the STATUS1 register was already read (and so INT2 is not
set) but the irq was not disabled. But that is a hardware imposed problem
that cannot easily be fixed by software.

Signed-off-by: Uwe Kleine-König <uwe@kleine-koenig.org>
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
2017-04-10 15:09:46 +02:00
..
class.c drivers/rtc/class: convert from Legacy pm ops to dev_pm_ops 2013-07-03 16:08:00 -07:00
hctosys.c rtc_sysfs_show_hctosys(): display 0 if resume failed 2012-10-06 03:05:04 +09:00
interface.c rtc: interface: ignore expired timers when enqueuing new timers 2017-03-01 20:10:26 +01:00
Kconfig rtc: add MOXA ART RTC driver 2013-09-11 15:58:54 -07:00
Makefile rtc: add MOXA ART RTC driver 2013-09-11 15:58:54 -07:00
rtc-88pm80x.c rtc: rtc-88pm80x: remove unnecessary platform_set_drvdata() 2013-07-03 16:07:46 -07:00
rtc-88pm860x.c rtc: rtc-88pm860x: remove unnecessary platform_set_drvdata() 2013-07-03 16:07:48 -07:00
rtc-ab3100.c drivers/rtc/rtc-ab3100.c: remove empty function 2013-07-03 16:07:54 -07:00
rtc-ab8500.c drivers/rtc/rtc-ab8500.c: add second resolution to rtc driver 2013-07-03 16:07:59 -07:00
rtc-at32ap700x.c rtc: rtc-at32ap700x: remove unnecessary platform_set_drvdata() 2013-07-03 16:07:49 -07:00
rtc-at91rm9200.c rtc: rtc-at91rm9200: fix infinite wait for ACKUPD irq 2014-06-23 10:27:53 +02: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: rtc-at91sam9: remove unnecessary platform_set_drvdata() 2013-07-03 16:07:49 -07:00
rtc-au1xxx.c drivers/rtc/rtc-au1xxx.c: remove empty function 2013-07-03 16:07:54 -07:00
rtc-bfin.c rtc: rtc-bfin: remove unnecessary platform_set_drvdata() 2013-07-03 16:07:49 -07:00
rtc-bq32k.c drivers/rtc/rtc-bq32k.c: remove empty function 2013-07-03 16:07:55 -07:00
rtc-bq4802.c drivers/rtc/rtc-bq4802.c: remove empty function 2013-07-03 16:07:54 -07:00
rtc-cmos.c rtc-cmos: Add an alarm disable quirk 2014-02-13 13:50:26 -08:00
rtc-coh901331.c rtc: rtc-coh901331: use platform_{get,set}_drvdata() 2013-07-03 16:07:55 -07:00
rtc-core.h
rtc-da9052.c drivers/rtc: Replace PTR_RET with PTR_ERR_OR_ZERO 2013-07-16 16:06:00 +09:30
rtc-da9055.c drivers/rtc/rtc-da9055.c: remove empty function 2013-07-03 16:07:54 -07:00
rtc-davinci.c rtc: rtc-davinci: remove unnecessary platform_set_drvdata() 2013-07-03 16:07:50 -07:00
rtc-dev.c rtc: use dev_warn()/dev_dbg()/pr_err() instead of printk() 2013-02-21 17:22:29 -08:00
rtc-dm355evm.c drivers/rtc/rtc-dm355evm.c: remove empty function 2013-07-03 16:07:53 -07:00
rtc-ds1216.c drivers/rtc/rtc-ds1216.c: use module_platform_driver_probe() 2013-07-03 16:08:00 -07:00
rtc-ds1286.c drivers/rtc/rtc-ds1286.c: remove empty function 2013-07-03 16:07:56 -07:00
rtc-ds1302.c drivers/rtc/rtc-ds1302.c: handle write protection 2013-07-03 16:07:59 -07:00
rtc-ds1305.c drivers/rtc/rtc-ds1305.c: add missing braces around sizeof 2013-07-03 16:07:46 -07:00
rtc-ds1307.c rtc: rtc-ds1307: use devm_*() functions 2013-07-03 16:07:54 -07:00
rtc-ds1374.c drivers/rtc/rtc-ds1374.c: fix spacing related issues 2013-07-03 16:07:46 -07:00
rtc-ds1390.c drivers/rtc/rtc-ds1390.c: remove empty function 2013-07-03 16:07:56 -07:00
rtc-ds1511.c rtc: simplify devm_request_mem_region/devm_ioremap 2013-09-11 15:58:59 -07:00
rtc-ds1553.c rtc: simplify devm_request_mem_region/devm_ioremap 2013-09-11 15:58:59 -07:00
rtc-ds1672.c drivers/rtc/rtc-ds1672.c: remove empty function 2013-07-03 16:07:56 -07:00
rtc-ds1742.c drivers/rtc/rtc-ds1742.c: report to RTC core if retrieved time is invalid 2013-09-11 15:58:58 -07:00
rtc-ds2404.c rtc: rtc-ds2404: use devm_*() functions 2013-04-29 18:28:37 -07:00
rtc-ds3232.c drivers/rtc/rtc-ds3232.c: use devm_* APIs 2013-04-29 18:28:36 -07:00
rtc-ds3234.c drivers/rtc/rtc-ds3234.c: remove empty function 2013-07-03 16:07:56 -07:00
rtc-efi.c drivers/rtc/rtc-efi.c: check for invalid data coming back from UEFI 2014-08-26 14:12:25 +02:00
rtc-em3027.c drivers/rtc/rtc-em3027.c: remove empty function 2013-07-03 16:07:56 -07:00
rtc-ep93xx.c rtc: simplify devm_request_mem_region/devm_ioremap 2013-09-11 15:58:59 -07:00
rtc-fm3130.c drivers/rtc/rtc-fm3130.c: remove empty function 2013-07-03 16:07:56 -07:00
rtc-generic.c drivers/rtc/rtc-generic.c: remove empty function 2013-07-03 16:07:57 -07:00
rtc-hid-sensor-time.c drivers/rtc/rtc-hid-sensor-time.c: improve error handling when rtc register fails 2013-09-11 15:58:55 -07:00
rtc-imxdi.c rtc: simplify devm_request_mem_region/devm_ioremap 2013-09-11 15:58:59 -07:00
rtc-isl1208.c drivers/rtc/rtc-isl1208.c: call rtc_update_irq() from the alarm irq handler 2013-02-05 20:38:49 +11:00
rtc-isl12022.c drivers/rtc: Replace PTR_RET with PTR_ERR_OR_ZERO 2013-07-16 16:06:00 +09:30
rtc-jz4740.c rtc: rtc-jz4740: use devm_*() functions 2013-07-03 16:07:55 -07:00
rtc-lib.c
rtc-lp8788.c drivers/rtc/rtc-lp8788.c: remove empty function 2013-07-03 16:07:53 -07:00
rtc-lpc32xx.c rtc: simplify devm_request_mem_region/devm_ioremap 2013-09-11 15:58:59 -07:00
rtc-ls1x.c drivers/rtc/rtc-ls1x.c: remove empty function 2013-07-03 16:07:53 -07:00
rtc-m41t80.c drivers/rtc/rtc-m41t80.c: fix spacing related issue 2013-07-03 16:07:47 -07:00
rtc-m41t93.c drivers/rtc/rtc-m41t93.c: remove empty function 2013-07-03 16:07:56 -07:00
rtc-m41t94.c drivers/rtc/rtc-m41t94.c: remove empty function 2013-07-03 16:07:57 -07:00
rtc-m48t35.c drivers/rtc: Replace PTR_RET with PTR_ERR_OR_ZERO 2013-07-16 16:06:00 +09:30
rtc-m48t59.c rtc: rtc-m48t59: use devm_*() functions 2013-07-03 16:07:55 -07:00
rtc-m48t86.c drivers/rtc/rtc-m48t86.c: remove empty function 2013-07-03 16:07:53 -07:00
rtc-max6900.c drivers/rtc/rtc-max6900.c: remove empty function 2013-07-03 16:07:57 -07:00
rtc-max6902.c drivers/rtc/rtc-max6902.c: remove empty function 2013-07-03 16:07:57 -07:00
rtc-max8907.c rtc: max8907: weekday encoding fixes 2014-02-06 11:22:18 -08:00
rtc-max8925.c drivers/rtc/rtc-max8925.c: remove empty function 2013-07-03 16:07:53 -07:00
rtc-max8997.c drivers/rtc/rtc-max8997.c: remove empty function 2013-07-03 16:07:57 -07:00
rtc-max8998.c For the 3.11 merge we only have one new MFD driver for the Kontron PLD. 2013-07-10 11:10:27 -07:00
rtc-max77686.c drivers/rtc/rtc-max77686.c: Fix wrong register 2013-09-11 15:58:56 -07:00
rtc-mc13xxx.c rtc: rtc-mc13xxx: remove unnecessary platform_set_drvdata() 2013-07-03 16:07:51 -07:00
rtc-moxart.c rtc: add MOXA ART RTC driver 2013-09-11 15:58:54 -07:00
rtc-mpc5121.c drivers/rtc/rtc-mpc5121.c: use platform_{get,set}_drvdata() 2013-07-03 16:07:59 -07:00
rtc-mrst.c Drivers: rtc: remove __dev* attributes. 2013-01-03 15:57:02 -08:00
rtc-msm6242.c drivers/rtc/rtc-msm6242.c: remove empty function 2013-07-03 16:07:53 -07:00
rtc-mv.c rtc: simplify devm_request_mem_region/devm_ioremap 2013-09-11 15:58:59 -07:00
rtc-mxc.c rtc: simplify devm_request_mem_region/devm_ioremap 2013-09-11 15:58:59 -07:00
rtc-nuc900.c drivers/rtc/rtc-nuc900.c: use NULL instead of 0 2013-09-11 15:58:57 -07:00
rtc-omap.c drivers/rtc/rtc-omap.c: add rtc wakeup support to alarm events 2013-09-11 15:58:54 -07:00
rtc-palmas.c drivers/rtc/rtc-palmas.c: support for backup battery charging 2013-09-11 15:58:55 -07:00
rtc-pcap.c rtc: rtc-pcap: remove unnecessary platform_set_drvdata() 2013-07-03 16:07:51 -07:00
rtc-pcf2123.c drivers/rtc/rtc-pcf2123.c: replace strict_strtoul() with kstrtoul() 2013-07-03 16:08:00 -07:00
rtc-pcf2127.c drivers/rtc/rtc-pcf2127.c: remove empty function 2013-09-11 15:58:53 -07:00
rtc-pcf8523.c drivers/rtc/rtc-pcf8523.c: remove empty function 2013-07-03 16:07:57 -07:00
rtc-pcf8563.c drivers/rtc: Replace PTR_RET with PTR_ERR_OR_ZERO 2013-07-16 16:06:00 +09:30
rtc-pcf8583.c drivers/rtc: Replace PTR_RET with PTR_ERR_OR_ZERO 2013-07-16 16:06:00 +09:30
rtc-pcf50633.c rtc: rtc-pcf50633: use devm_*() functions 2013-04-29 18:28:38 -07:00
rtc-pl030.c
rtc-pl031.c drivers/rtc/rtc-pl031.c: pass correct pointer to free_irq() 2013-05-24 16:22:52 -07:00
rtc-pm8xxx.c rtc: rtc-pm8xxx: use devm_*() functions 2013-07-03 16:07:55 -07:00
rtc-proc.c procfs: new helper - PDE_DATA(inode) 2013-04-09 14:13:32 -04:00
rtc-ps3.c drivers/rtc/rtc-ps3.c: remove empty function 2013-07-03 16:07:58 -07:00
rtc-puv3.c rtc: rtc-puv3: remove unnecessary platform_set_drvdata() 2013-07-03 16:07:52 -07:00
rtc-pxa.c rtc: rtc-pxa: use devm_*() functions 2013-07-03 16:07:55 -07:00
rtc-r9701.c rtc: rtc-r9701: use spi_set_drvdata() 2013-04-29 18:28:34 -07:00
rtc-rc5t583.c rtc: rtc-rc5t583: use platform_{get,set}_drvdata() 2013-07-03 16:07:55 -07:00
rtc-rp5c01.c rtc: rtc-rp5c01: remove unnecessary platform_set_drvdata() 2013-07-03 16:07:52 -07:00
rtc-rs5c313.c drivers/rtc/rtc-rs5c313.c: remove empty function 2013-07-03 16:07:58 -07:00
rtc-rs5c348.c drivers/rtc/rtc-rs5c348.c: remove empty function 2013-07-03 16:07:58 -07:00
rtc-rs5c372.c drivers/rtc/rtc-rs5c372.c: add R2221T/L variant to the driver 2013-05-07 18:38:26 -07:00
rtc-rv3029c2.c drivers/rtc/rtc-rv3029c2.c: remove empty function 2013-07-03 16:07:58 -07:00
rtc-rx4581.c drivers/rtc/rtc-rx4581.c: remove empty function 2013-07-03 16:07:58 -07:00
rtc-rx8025.c rtc: rtc-rx8025: use devm_*() functions 2013-07-03 16:07:55 -07:00
rtc-rx8581.c drivers/rtc/rtc-rx8581.c: remove empty function 2013-07-03 16:07:58 -07:00
rtc-s3c.c rtc: rtc-s3c: remove unnecessary platform_set_drvdata() 2013-07-03 16:07:51 -07:00
rtc-s3c.h rtc: s3c: make header file local 2013-04-19 13:51:25 +02:00
rtc-s35390a.c rtc: s35390a: improve irq handling 2017-04-10 15:09:46 +02:00
rtc-sa1100.c rtc: rtc-sa1100: remove unnecessary platform_set_drvdata() 2013-07-03 16:07:51 -07:00
rtc-sh.c rtc: rtc-sh: use devm_*() functions 2013-07-03 16:07:55 -07:00
rtc-sirfsoc.c drivers/rtc/rtc-sirfsoc.c: move hardware initilization earlier in probe 2015-01-14 14:42:50 +01:00
rtc-snvs.c drivers/rtc/rtc-snvs.c: remove empty function 2013-07-03 16:07:58 -07:00
rtc-spear.c rtc: rtc-spear: remove unnecessary platform_set_drvdata() 2013-07-03 16:07:52 -07:00
rtc-starfire.c drivers/rtc/rtc-starfire.c: remove empty function 2013-07-03 16:07:58 -07:00
rtc-stk17ta8.c rtc: simplify devm_request_mem_region/devm_ioremap 2013-09-11 15:58:59 -07:00
rtc-stmp3xxx.c drivers/rtc/rtc-stmp3xxx.c: provide timeout for potentially endless loop polling a HW bit 2013-08-13 17:57:48 -07:00
rtc-sun4v.c drivers/rtc/rtc-sun4v.c: remove empty function 2013-07-03 16:07:58 -07:00
rtc-sysfs.c rtc: convert class code to use dev_groups 2013-07-29 13:10:58 -07:00
rtc-tegra.c drivers/rtc: don't check resource with devm_ioremap_resource 2013-05-18 11:57:07 +02:00
rtc-test.c rtc: rtc-test: use devm_rtc_device_register() 2013-04-29 18:28:31 -07:00
rtc-tile.c drivers/rtc/rtc-tile.c: remove empty function 2013-07-03 16:07:53 -07:00
rtc-tps6586x.c drivers/rtc/rtc-tps6586x.c: device wakeup flags correction 2013-06-12 16:29:45 -07:00
rtc-tps65910.c drivers/rtc/rtc-tps65910.c: fix incorrect return value on error 2013-04-29 18:28:33 -07:00
rtc-tps80031.c drivers/rtc/rtc-tps80031.c: remove empty function 2013-07-03 16:07:58 -07:00
rtc-twl.c drivers/rtc/rtc-twl.c: fix: rtcX/wakealarm attribute isn't created 2013-07-31 14:41:03 -07:00
rtc-tx4939.c rtc: simplify devm_request_mem_region/devm_ioremap 2013-09-11 15:58:59 -07:00
rtc-v3020.c drivers/rtc/rtc-v3020.c: fix spacing issues 2013-07-03 16:07:48 -07:00
rtc-vr41xx.c rtc: vr41xx: Wire up alarm_irq_enable 2016-05-03 07:45:08 +02:00
rtc-vt8500.c rtc: rtc-vt8500: remove unnecessary platform_set_drvdata() 2013-07-03 16:07:52 -07: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: fix checkpatch issues 2013-07-03 16:07:48 -07:00
systohc.c NTP: Add a CONFIG_RTC_SYSTOHC configuration 2013-01-15 18:16:06 -08:00