android_kernel_motorola_sm6225/drivers/rtc
John Stultz 6610e0893b RTC: Rework RTC code to use timerqueue for events
This patch reworks a large portion of the generic RTC code
to in-effect virtualize the rtc interrupt code.

The current RTC interface is very much a raw hardware interface.
Via the proc, /dev/, or sysfs interfaces, applciations can set
the hardware to trigger interrupts in one of three modes:

AIE: Alarm interrupt
UIE: Update interrupt (ie: once per second)
PIE: Periodic interrupt (sub-second irqs)

The problem with this interface is that it limits the RTC hardware
so it can only be used by one application at a time.

The purpose of this patch is to extend the RTC code so that we can
multiplex multiple applications event needs onto a single RTC device.
This is done by utilizing the timerqueue infrastructure to manage
a list of events, which cause the RTC hardware to be programmed
to fire an interrupt for the next event in the list.

In order to preserve the functionality of the exsting proc,/dev/ and
sysfs interfaces, we emulate the different interrupt modes as follows:

AIE: We create a rtc_timer dedicated to AIE mode interrupts. There is
only one per device, so we don't change existing interface semantics.

UIE: Again, a dedicated rtc_timer, set for periodic mode, is used
to emulate UIE interrupts. Again, only one per device.

PIE: Since PIE mode interrupts fire faster then the RTC's clock read
granularity, we emulate PIE mode interrupts using a hrtimer. Again,
one per device.

With this patch, the rtctest.c application in Documentation/rtc.txt
passes fine on x86 hardware. However, there may very well still be
bugs, so greatly I'd appreciate any feedback or testing!

Signed-off-by: John Stultz <john.stultz@linaro.org>
LKML Reference: <1290136329-18291-4-git-send-email-john.stultz@linaro.org>
Acked-by: Alessandro Zummo <a.zummo@towertech.it>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
CC: Alessandro Zummo <a.zummo@towertech.it>
CC: Thomas Gleixner <tglx@linutronix.de>
CC: Richard Cochran <richardcochran@gmail.com>
2010-12-10 22:24:24 -08:00
..
class.c RTC: Rework RTC code to use timerqueue for events 2010-12-10 22:24:24 -08:00
hctosys.c rtc/hctosys: only claim the RTC provided the system time if it did 2010-03-12 15:52:28 -08:00
interface.c RTC: Rework RTC code to use timerqueue for events 2010-12-10 22:24:24 -08:00
Kconfig Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm 2010-08-11 09:13:19 -07:00
Makefile rtc: add support for DS3232 RTC 2010-08-11 08:59:08 -07:00
rtc-ab3100.c mfd: AB3100 register access change to abx500 API 2010-05-28 01:37:45 +02:00
rtc-ab8500.c rtc: AB8500 RTC driver 2010-05-27 09:12:41 -07:00
rtc-at32ap700x.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-at91rm9200.c rtc: at91rm9200 fixes 2009-09-23 07:39:46 -07:00
rtc-at91sam9.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-au1xxx.c rtc: t reaches -1, tested 0 2009-02-11 14:25:36 -08:00
rtc-bfin.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-bq32k.c rtc: add driver for BQ32000 I2C RTC 2009-12-16 07:20:00 -08:00
rtc-bq4802.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-cmos.c drivers/rtc: remove unneeded ifdef CONFIG_PM 2010-08-11 08:59:08 -07:00
rtc-coh901331.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-core.h
rtc-davinci.c davinci: update gfp/slab.h includes 2010-06-28 10:19:19 +10: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 include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-ds1286.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-ds1302.c rtc-ds1302: add some abstraction for new platform support 2010-05-25 08:07:08 -07:00
rtc-ds1305.c sysfs: add struct file* to bin_attr callbacks 2010-05-21 09:37:31 -07:00
rtc-ds1307.c rtc: fix ds1388 time corruption 2010-06-29 15:29:31 -07:00
rtc-ds1374.c i2c: Remove all i2c_set_clientdata(client, NULL) in drivers 2010-06-03 11:33:58 +02:00
rtc-ds1390.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-ds1511.c sysfs: add struct file* to bin_attr callbacks 2010-05-21 09:37:31 -07:00
rtc-ds1553.c sysfs: add struct file* to bin_attr callbacks 2010-05-21 09:37:31 -07: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 sysfs: add struct file* to bin_attr callbacks 2010-05-21 09:37:31 -07:00
rtc-ds3232.c rtc: add support for DS3232 RTC 2010-08-11 08:59:08 -07: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 include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-fm3130.c rtc: fixes and new functionality for fm3130 2010-08-11 08:59:07 -07:00
rtc-generic.c parisc: rtc: Rename rtc-parisc to rtc-generic 2009-04-02 01:05:31 +00:00
rtc-imxdi.c rtc: driver for the DryIce block found in i.MX25 chips 2010-08-11 08:59:07 -07:00
rtc-isl1208.c rtc-isl1208: use sysfs_{create/remove}_group 2010-05-25 08:07:08 -07:00
rtc-isl12022.c rtc-isl12022: properly handle military hour format 2010-08-11 08:59:08 -07:00
rtc-jz4740.c RTC: Add JZ4740 RTC driver 2010-08-05 13:26:17 +01:00
rtc-lib.c RTC: Rework RTC code to use timerqueue for events 2010-12-10 22:24:24 -08:00
rtc-m41t80.c rtc/m41t80: use rtc_valid_tm() to check returned tm 2010-08-11 08:59:07 -07:00
rtc-m41t94.c spi: prefix modalias with "spi:" 2009-09-23 07:39:43 -07:00
rtc-m48t35.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-m48t59.c rtc/m48t59: use rtc_valid_tm() to check returned tm 2010-08-11 08:59:07 -07:00
rtc-m48t86.c rtc/m48t86: use rtc_valid_tm() to check returned tm 2010-08-11 08:59:07 -07:00
rtc-max6900.c rtc/max6900: use rtc_valid_tm() to check returning tm 2010-08-11 08:59:07 -07:00
rtc-max6902.c spi: prefix modalias with "spi:" 2009-09-23 07:39:43 -07:00
rtc-max8925.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-mc13783.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-mpc5121.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
rtc-msm6242.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-mv.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-mxc.c rtc/rtc-mxc: remove six unused fields 2010-08-11 08:59:06 -07:00
rtc-nuc900.c rtc/nuc900: fix build warning 2010-08-11 08:59:08 -07:00
rtc-omap.c Revert "rtc: omap: let device wakeup capability be configured from chip init logic" 2010-05-19 11:37:20 -07:00
rtc-pcap.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-pcf2123.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-pcf8563.c drivers/rtc/rtc-pcf8563.c: remove unused struct 2010-08-11 08:59:06 -07:00
rtc-pcf8583.c rtc: fix driver data issues in several rtc drivers 2009-12-16 07:19:58 -08:00
rtc-pcf50633.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-pl030.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-pl031.c drivers/rtc/rtc-pl031.c: remove unused #include <linux/version.h> 2010-08-11 08:59:07 -07: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 rtc/pxa: remove unnecessary private ops->ioctl() 2010-08-11 08:59:07 -07:00
rtc-r9701.c spi: prefix modalias with "spi:" 2009-09-23 07:39:43 -07:00
rtc-rp5c01.c rtc: rp5c01: add NVRAM support 2010-08-11 08:59:08 -07:00
rtc-rs5c313.c
rtc-rs5c348.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-rs5c372.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-rx8025.c comment typo fixes: charater => character 2010-07-19 11:21:26 +02:00
rtc-rx8581.c drivers/rtc/rtc-rx8581.c: fix setdatetime 2010-07-27 14:32:06 -07:00
rtc-s3c.c rtc: rtc-s3c: Add BCD register initialization codes 2010-08-05 18:32:51 +09:00
rtc-s35390a.c i2c: Remove all i2c_set_clientdata(client, NULL) in drivers 2010-06-03 11:33:58 +02:00
rtc-sa1100.c const: constify remaining dev_pm_ops 2009-12-15 08:53:25 -08:00
rtc-sh.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-starfire.c rtc: rtc-starfire fixes 2008-11-21 01:24:38 -08:00
rtc-stk17ta8.c sysfs: add struct file* to bin_attr callbacks 2010-05-21 09:37:31 -07:00
rtc-stmp3xxx.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-sun4v.c
rtc-sysfs.c rtc/hctosys: only claim the RTC provided the system time if it did 2010-03-12 15:52:28 -08: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-twl: Storage class should be before const qualifier 2010-03-06 11:26:47 -08:00
rtc-tx4939.c sysfs: add struct file* to bin_attr callbacks 2010-05-21 09:37:31 -07:00
rtc-v3020.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rtc-vr41xx.c rtc-vr41xx: use resource_size() 2009-12-16 07:20:00 -08:00
rtc-wm831x.c rtc: use genirq directly in rtc-wm831x 2010-05-25 08:07:08 -07:00
rtc-wm8350.c rtc: Suppress duplicate enable/disable of WM8350 update interrupt 2010-03-07 22:16:56 +01:00
rtc-x1205.c rtc-x1205: unconditionally set date when setting clock 2009-12-16 07:20:00 -08:00