linux/drivers/rtc
Anton Vorontsov 26b3c01f7d rtc: set wakeup capability for I2C and SPI RTC drivers
RTC core won't allow wakeup alarms to be set if RTC devices' parent (i.e.
i2c_client or spi_device) isn't wakeup capable.

For I2C devices there is I2C_CLIENT_WAKE flag exists that we can pass via
board info, and if set, I2C core will initialize wakeup capability.  For
SPI devices there is no such flag at all.

I believe that it's not platform code responsibility to allow or disallow
wakeups, instead, drivers themselves should set the capability if a device
can trigger wakeups.

That's what drivers/base/power/sysfs.c says:

 * It is the responsibility of device drivers to enable (or disable)
 * wakeup signaling as part of changing device power states, respecting
 * the policy choices provided through the driver model.

I2C and SPI RTC devices send wakeup events via interrupt lines, so we
should set the wakeup capability if IRQ is routed.

Ideally we should also check irq for wakeup capability before setting
device's capability, i.e.

	if (can_irq_wake(irq))
		device_set_wakeup_capable(&client->dev, 1);

But there is no can_irq_wake() call exist, and it is not that trivial to
implement it for all interrupts controllers and complex/cascaded setups.

drivers/base/power/sysfs.c also covers these cases:

 * Devices may not be able to generate wakeup events from all power
 * states.  Also, the events may be ignored in some configurations;
 * for example, they might need help from other devices that aren't
 * active

So there is no guarantee that wakeup will actually work, and so I think
there is no point in being pedantic wrt checking IRQ wakeup capability.

Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
Cc: David Brownell <dbrownell@users.sourceforge.net>
Cc: Ben Dooks <ben-linux@fluff.org>
Cc: Jean Delvare <khali@linux-fr.org>
Cc: Alessandro Zummo <a.zummo@towertech.it>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2009-12-17 15:45:32 -08:00
..
class.c rtc: struct device: replace bus_id with dev_name(), dev_set_name() 2009-01-06 15:59:23 -08:00
hctosys.c rtc_hctosys expects RTCs in UTC (doc) 2007-11-14 18:45:36 -08:00
interface.c headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
Kconfig ARM: NUC900: add RTC driver support for nuc910 and nuc920 2009-12-16 07:20:00 -08:00
Makefile ARM: NUC900: add RTC driver support for nuc910 and nuc920 2009-12-16 07:20:00 -08:00
rtc-ab3100.c rtc: AB3100 RTC support 2009-09-17 09:47:24 +02:00
rtc-at32ap700x.c rtc: fix driver data issues in several rtc drivers 2009-12-16 07:19:58 -08:00
rtc-at91rm9200.c rtc: at91rm9200 fixes 2009-09-23 07:39:46 -07:00
rtc-at91sam9.c rtc: struct device - replace bus_id with dev_name(), dev_set_name() 2009-03-24 16:38:22 -07:00
rtc-au1xxx.c rtc: t reaches -1, tested 0 2009-02-11 14:25:36 -08:00
rtc-bfin.c rtc-bfin: do not share RTC IRQ 2009-09-23 07:39:45 -07:00
rtc-bq32k.c rtc: add driver for BQ32000 I2C RTC 2009-12-16 07:20:00 -08:00
rtc-bq4802.c rtc: fix driver data issues in several rtc drivers 2009-12-16 07:19:58 -08:00
rtc-cmos.c rtc-cmos: convert RTC_AIE/RTC_UIE to rtc irq API 2009-12-16 07:19:58 -08:00
rtc-coh901331.c ARM: 5787/1: U300 COH 901 331 fixes 2009-11-16 16:15:49 +00:00
rtc-core.h rtc: update to class device removal patches 2007-05-08 11:15:18 -07:00
rtc-dev.c headers: remove sched.h from interrupt.h 2009-10-11 11:20:58 -07:00
rtc-dm355evm.c rtc: rtc-dm355evm driver 2009-02-05 12:56:46 -08:00
rtc-ds1216.c rtc: rtc-ds1216 fixes 2009-01-06 15:59:25 -08:00
rtc-ds1286.c rtc: rtc-ds1286 and rtc-m48t35 need <linux/io.h> 2008-10-16 11:32:38 -07:00
rtc-ds1302.c rtc: fix driver data issues in several rtc drivers 2009-12-16 07:19:58 -08:00
rtc-ds1305.c rtc: set wakeup capability for I2C and SPI RTC drivers 2009-12-17 15:45:32 -08:00
rtc-ds1307.c rtc: set wakeup capability for I2C and SPI RTC drivers 2009-12-17 15:45:32 -08:00
rtc-ds1374.c rtc: set wakeup capability for I2C and SPI RTC drivers 2009-12-17 15:45:32 -08:00
rtc-ds1390.c spi: prefix modalias with "spi:" 2009-09-23 07:39:43 -07:00
rtc-ds1511.c rtc-ds1511: fix races around device registration 2009-12-16 07:19:59 -08:00
rtc-ds1553.c rtc: do not use container_of macro as an argument for to_platform_device 2009-12-16 07:19:59 -08:00
rtc-ds1672.c rtc: use set_mmss when set_time is not available 2009-01-06 15:59:25 -08:00
rtc-ds1742.c rtc: do not use container_of macro as an argument for to_platform_device 2009-12-16 07:19:59 -08:00
rtc-ds3234.c spi: prefix modalias with "spi:" 2009-09-23 07:39:43 -07:00
rtc-efi.c rtc: add platform driver for EFI 2009-04-01 08:59:24 -07:00
rtc-ep93xx.c drivers/rtc: introduce missing kfree 2009-09-23 07:39:45 -07:00
rtc-fm3130.c drivers/rtc/: use bcd2bin/bin2bcd 2008-10-20 08:52:41 -07:00
rtc-generic.c parisc: rtc: Rename rtc-parisc to rtc-generic 2009-04-02 01:05:31 +00:00
rtc-isl1208.c rtc: rtc-isl1208: reject invalid dates 2008-12-23 15:58:21 -08:00
rtc-lib.c rtc: convert LEAP_YEAR into an inline 2009-04-01 08:59:24 -07:00
rtc-m41t80.c rtc: add m41t62 support to rtc-m41t80 driver 2009-04-02 19:04:51 -07:00
rtc-m41t94.c spi: prefix modalias with "spi:" 2009-09-23 07:39:43 -07:00
rtc-m48t35.c rtc: fix driver data issues in several rtc drivers 2009-12-16 07:19:58 -08:00
rtc-m48t59.c rtc: fix driver data issues in several rtc drivers 2009-12-16 07:19:58 -08:00
rtc-m48t86.c drivers/rtc/: use bcd2bin/bin2bcd 2008-10-20 08:52:41 -07:00
rtc-max6900.c rtc: fix missing id_table in rtc-ds1672 and rtc-max6900 drivers 2008-12-10 08:01:52 -08:00
rtc-max6902.c spi: prefix modalias with "spi:" 2009-09-23 07:39:43 -07:00
rtc-mc13783.c rtc: add Freescale MC13783 RTC driver 2009-12-16 07:20:00 -08:00
rtc-msm6242.c rtc: Add an RTC driver for the Oki MSM6242 2009-12-04 21:22:34 +01:00
rtc-mv.c rtc-mv: add support for Alarm 2009-12-16 07:19:59 -08:00
rtc-mxc.c rtc: add driver for MXC's internal RTC module 2009-09-23 07:39:45 -07:00
rtc-nuc900.c ARM: NUC900: add RTC driver support for nuc910 and nuc920 2009-12-16 07:20:00 -08:00
rtc-omap.c rtc: make rtc-omap driver ioremap its register space 2009-12-16 07:20:00 -08:00
rtc-pcap.c rtc: driver for PCAP2 PMIC 2009-09-23 07:39:45 -07:00
rtc-pcf2123.c rtc-philips-pcf2123-rtc-spi-driver-updates 2009-09-23 07:39:45 -07:00
rtc-pcf8563.c rtc: fix driver data issues in several rtc drivers 2009-12-16 07:19:58 -08:00
rtc-pcf8583.c rtc: fix driver data issues in several rtc drivers 2009-12-16 07:19:58 -08:00
rtc-pcf50633.c rtc: pcf50633: manage RTC alarm "pending" flag 2009-12-16 07:19:59 -08:00
rtc-pl030.c [ARM] 5544/1: Trust PrimeCell resource sizes 2009-06-11 15:36:56 +01:00
rtc-pl031.c rtc: remove __raw_* accessors from PL031 RTC 2009-12-16 07:20:00 -08:00
rtc-proc.c proc 2/2: remove struct proc_dir_entry::owner 2009-03-31 01:14:44 +04:00
rtc-ps3.c powerpc/ps3: Add rtc-ps3 2009-04-02 01:05:32 +00:00
rtc-pxa.c const: constify remaining dev_pm_ops 2009-12-15 08:53:25 -08:00
rtc-r9701.c spi: prefix modalias with "spi:" 2009-09-23 07:39:43 -07:00
rtc-rp5c01.c rtc: Add an RTC driver for the Ricoh RP5C01 2009-12-04 21:22:35 +01:00
rtc-rs5c313.c drivers/rtc/: use bcd2bin/bin2bcd 2008-10-20 08:52:41 -07:00
rtc-rs5c348.c spi: prefix modalias with "spi:" 2009-09-23 07:39:43 -07:00
rtc-rs5c372.c drivers/rtc/: use bcd2bin/bin2bcd 2008-10-20 08:52:41 -07:00
rtc-rx8025.c rtc: add stand-alone driver for RX8025 chip 2009-06-18 13:03:43 -07:00
rtc-rx8581.c rtc: basic implementation of Epson RX-8581 I2C Real Time Clock 2008-11-12 17:17:18 -08:00
rtc-s3c.c rtc: move power of 2 periodic frequency check down into drivers 2009-01-06 15:59:24 -08:00
rtc-s35390a.c drivers/rtc/: use bcd2bin/bin2bcd 2008-10-20 08:52:41 -07:00
rtc-sa1100.c const: constify remaining dev_pm_ops 2009-12-15 08:53:25 -08:00
rtc-sh.c const: constify remaining dev_pm_ops 2009-12-15 08:53:25 -08:00
rtc-starfire.c rtc: rtc-starfire fixes 2008-11-21 01:24:38 -08:00
rtc-stk17ta8.c rtc: do not use container_of macro as an argument for to_platform_device 2009-12-16 07:19:59 -08:00
rtc-stmp3xxx.c rtc: add Freescale stmp37xx/378x driver 2009-09-23 07:39:45 -07:00
rtc-sun4v.c rtc: rtc-sun4v fixes, revised 2008-11-14 16:37:54 -08:00
rtc-sysfs.c rtc: add boot_timesource sysfs attribute 2009-09-23 07:39:46 -07:00
rtc-test.c rtc: make rtc_update_irq callable with irqs enabled 2009-06-19 16:46:05 -07:00
rtc-twl.c rtc: Add twl6030 RTC support 2009-12-14 00:26:08 +01:00
rtc-tx4939.c rtc-tx4939: fix races around device registration 2009-12-16 07:19:59 -08:00
rtc-v3020.c rtc: fix driver data issues in several rtc drivers 2009-12-16 07:19:58 -08:00
rtc-vr41xx.c rtc-vr41xx: use resource_size() 2009-12-16 07:20:00 -08:00
rtc-wm831x.c const: constify remaining dev_pm_ops 2009-12-15 08:53:25 -08:00
rtc-wm8350.c rtc: convert WM8350 RTC driver to dev_pm_ops 2009-12-16 07:19:59 -08:00
rtc-x1205.c rtc-x1205: unconditionally set date when setting clock 2009-12-16 07:20:00 -08:00