mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-25 03:38:25 +02:00
a95f9f92e2
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13619 3c298f89-4303-0410-b956-a3cf2f4a3e73
72 lines
2.4 KiB
Diff
Executable File
72 lines
2.4 KiB
Diff
Executable File
From d35cdd3761e8b030937e463ccc64938104f1d773 Mon Sep 17 00:00:00 2001
|
|
From: Holger Hans Peter Freyther <zecke@openmoko.org>
|
|
Date: Fri, 25 Jul 2008 23:06:02 +0100
|
|
Subject: [PATCH] add-pcf50633-06-RTC_AIE-ioctl
|
|
|
|
Hey,
|
|
|
|
the legacy application 'atd' from Russ Nelson/Nils Faerber, used by Qtopia, to
|
|
schedule alarms currently fails to start as the the above ioctl is failing.
|
|
The other drivers in drivers/rtc implement the above ioctl and we can
|
|
implement it too.
|
|
|
|
The code to mask/unmask the RTC alarm is copied from the set_alarm routine and
|
|
adapted to use the reg_set_bit_mask and reg_set_clear_mask.
|
|
|
|
It is compiling, so it must work. Please welcome me the lkml way ;)
|
|
|
|
|
|
Signed-Off-by: Holger Hans Peter Freyther <zecke@openmoko.org>
|
|
---
|
|
drivers/i2c/chips/pcf50606.c | 10 ++++++++++
|
|
drivers/i2c/chips/pcf50633.c | 10 ++++++++++
|
|
2 files changed, 20 insertions(+), 0 deletions(-)
|
|
|
|
diff --git a/drivers/i2c/chips/pcf50606.c b/drivers/i2c/chips/pcf50606.c
|
|
index aaec6e8..03805be 100644
|
|
--- a/drivers/i2c/chips/pcf50606.c
|
|
+++ b/drivers/i2c/chips/pcf50606.c
|
|
@@ -1191,7 +1191,17 @@ static int pcf50606_rtc_ioctl(struct device *dev, unsigned int cmd,
|
|
{
|
|
struct i2c_client *client = to_i2c_client(dev);
|
|
struct pcf50606_data *pcf = i2c_get_clientdata(client);
|
|
+
|
|
switch (cmd) {
|
|
+ case RTC_AIE_OFF:
|
|
+ /* disable the alarm interrupt */
|
|
+ reg_set_bit_mask(pcf, PCF50606_REG_INT1M,
|
|
+ PCF50606_INT1_ALARM, PCF50606_INT1_ALARM);
|
|
+ return 0;
|
|
+ case RTC_AIE_ON:
|
|
+ /* enable the alarm interrupt */
|
|
+ reg_clear_bits(pcf, PCF50606_REG_INT1M, PCF50606_INT1_ALARM);
|
|
+ return 0;
|
|
case RTC_PIE_OFF:
|
|
/* disable periodic interrupt (hz tick) */
|
|
pcf->flags &= ~PCF50606_F_RTC_SECOND;
|
|
diff --git a/drivers/i2c/chips/pcf50633.c b/drivers/i2c/chips/pcf50633.c
|
|
index c14fad0..b5cd2cb 100644
|
|
--- a/drivers/i2c/chips/pcf50633.c
|
|
+++ b/drivers/i2c/chips/pcf50633.c
|
|
@@ -1297,7 +1297,17 @@ static int pcf50633_rtc_ioctl(struct device *dev, unsigned int cmd,
|
|
{
|
|
struct i2c_client *client = to_i2c_client(dev);
|
|
struct pcf50633_data *pcf = i2c_get_clientdata(client);
|
|
+
|
|
switch (cmd) {
|
|
+ case RTC_AIE_OFF:
|
|
+ /* disable the alarm interrupt */
|
|
+ reg_set_bit_mask(pcf, PCF50633_REG_INT1M,
|
|
+ PCF50633_INT1_ALARM, PCF50633_INT1_ALARM);
|
|
+ return 0;
|
|
+ case RTC_AIE_ON:
|
|
+ /* enable the alarm interrupt */
|
|
+ reg_clear_bits(pcf, PCF50633_REG_INT1M, PCF50633_INT1_ALARM);
|
|
+ return 0;
|
|
case RTC_PIE_OFF:
|
|
/* disable periodic interrupt (hz tick) */
|
|
pcf->flags &= ~PCF50633_F_RTC_SECOND;
|
|
--
|
|
1.5.6.3
|
|
|