diff mbox

[RFC] rtc: tw4030 add alarm/update interfaces

Message ID 20081117005817.22724.98638.stgit@i1501.lan.towertech.it
State Deferred, archived
Headers show

Commit Message

Alessandro Zummo Nov. 17, 2008, 12:58 a.m. UTC
Changes:

 - implement alarm_irq_enable
 - return correct error code when registering fails

Notes:

 - The patch requires the alarm/update interfaces patch in -mm

Signed-off-by: Alessandro Zummo <a.zummo@towertech.it>
Cc: David Brownell <david-b@pacbell.net>
Cc: Tony Lindgren <tony@atomide.com>
Cc: Samuel Ortiz <sameo@openedhand.com>
---

 drivers/rtc/rtc-twl4030.c |   39 +++++++--------------------------------
 1 files changed, 7 insertions(+), 32 deletions(-)



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to "rtc-linux".
Membership options at http://groups.google.com/group/rtc-linux .
Please read http://groups.google.com/group/rtc-linux/web/checklist
before submitting a driver.
-~----------~----~----~----~------~----~------~--~---

Comments

David Brownell Nov. 20, 2008, 12:20 a.m. UTC | #1
On Sunday 16 November 2008, Alessandro Zummo wrote:
> --- a/drivers/rtc/rtc-twl4030.c
> +++ b/drivers/rtc/rtc-twl4030.c
> @@ -150,7 +150,7 @@ static int mask_rtc_irq_bit(unsigned char bit)
>  	return ret;
>  }
>  
> -static inline int twl4030_rtc_alarm_irq_set_state(int enabled)
> +static int twl4030_rtc_alarm_irq_enable(int enabled)
>  {
>  	int ret;
>  
> @@ -162,7 +162,7 @@ static inline int twl4030_rtc_alarm_irq_set_state(int enabled)
>  	return ret;
>  }
>  
> -static inline int twl4030_rtc_irq_set_state(int enabled)
> +static int twl4030_rtc_update_irq_enable(int enabled)
>  {
>  	int ret;
>  

Those two signatures don't match ...

> @@ -399,11 +375,12 @@ out:
>  }
>  
>  static struct rtc_class_ops twl4030_rtc_ops = {
> -	.ioctl		= twl4030_rtc_ioctl,
>  	.read_time	= twl4030_rtc_read_time,
>  	.set_time	= twl4030_rtc_set_time,
>  	.read_alarm	= twl4030_rtc_read_alarm,
>  	.set_alarm	= twl4030_rtc_set_alarm,
> +	.alarm_irq_enable = twl4030_rtc_alarm_irq_enable,
> +	.update_irq_enable = twl4030_rtc_update_irq_enable,
>  };
>  
>  /*----------------------------------------------------------------------*/

drivers/rtc/rtc-twl4030.c:382: warning: initialization from incompatible pointer type
drivers/rtc/rtc-twl4030.c:383: warning: initialization from incompatible pointer type


... so NAK on this for the moment.  I can send an updated version later.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to "rtc-linux".
Membership options at http://groups.google.com/group/rtc-linux .
Please read http://groups.google.com/group/rtc-linux/web/checklist
before submitting a driver.
-~----------~----~----~----~------~----~------~--~---
Alessandro Zummo Nov. 20, 2008, 1:07 a.m. UTC | #2
On Wed, 19 Nov 2008 16:20:33 -0800
David Brownell <david-b@pacbell.net> wrote:

> Those two signatures don't match ...

 I forgot the device pointer :(
diff mbox

Patch

diff --git a/drivers/rtc/rtc-twl4030.c b/drivers/rtc/rtc-twl4030.c
index abe87a4..e6d4de6 100644
--- a/drivers/rtc/rtc-twl4030.c
+++ b/drivers/rtc/rtc-twl4030.c
@@ -150,7 +150,7 @@  static int mask_rtc_irq_bit(unsigned char bit)
 	return ret;
 }
 
-static inline int twl4030_rtc_alarm_irq_set_state(int enabled)
+static int twl4030_rtc_alarm_irq_enable(int enabled)
 {
 	int ret;
 
@@ -162,7 +162,7 @@  static inline int twl4030_rtc_alarm_irq_set_state(int enabled)
 	return ret;
 }
 
-static inline int twl4030_rtc_irq_set_state(int enabled)
+static int twl4030_rtc_update_irq_enable(int enabled)
 {
 	int ret;
 
@@ -291,7 +291,7 @@  static int twl4030_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alm)
 	unsigned char alarm_data[ALL_TIME_REGS + 1];
 	int ret;
 
-	ret = twl4030_rtc_alarm_irq_set_state(0);
+	ret = twl4030_rtc_alarm_irq_enable(0);
 	if (ret)
 		goto out;
 
@@ -311,35 +311,11 @@  static int twl4030_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alm)
 	}
 
 	if (alm->enabled)
-		ret = twl4030_rtc_alarm_irq_set_state(1);
+		ret = twl4030_rtc_alarm_irq_enable(1);
 out:
 	return ret;
 }
 
-#ifdef	CONFIG_RTC_INTF_DEV
-
-static int twl4030_rtc_ioctl(struct device *dev, unsigned int cmd,
-			     unsigned long arg)
-{
-	switch (cmd) {
-	case RTC_AIE_OFF:
-		return twl4030_rtc_alarm_irq_set_state(0);
-	case RTC_AIE_ON:
-		return twl4030_rtc_alarm_irq_set_state(1);
-	case RTC_UIE_OFF:
-		return twl4030_rtc_irq_set_state(0);
-	case RTC_UIE_ON:
-		return twl4030_rtc_irq_set_state(1);
-
-	default:
-		return -ENOIOCTLCMD;
-	}
-}
-
-#else
-#define	omap_rtc_ioctl	NULL
-#endif
-
 static irqreturn_t twl4030_rtc_interrupt(int irq, void *rtc)
 {
 	unsigned long events = 0;
@@ -399,11 +375,12 @@  out:
 }
 
 static struct rtc_class_ops twl4030_rtc_ops = {
-	.ioctl		= twl4030_rtc_ioctl,
 	.read_time	= twl4030_rtc_read_time,
 	.set_time	= twl4030_rtc_set_time,
 	.read_alarm	= twl4030_rtc_read_alarm,
 	.set_alarm	= twl4030_rtc_set_alarm,
+	.alarm_irq_enable = twl4030_rtc_alarm_irq_enable,
+	.update_irq_enable = twl4030_rtc_update_irq_enable,
 };
 
 /*----------------------------------------------------------------------*/
@@ -421,7 +398,7 @@  static int __devinit twl4030_rtc_probe(struct platform_device *pdev)
 	rtc = rtc_device_register(pdev->name,
 				  &pdev->dev, &twl4030_rtc_ops, THIS_MODULE);
 	if (IS_ERR(rtc)) {
-		ret = -EINVAL;
+		ret = PTR_ERR(rtc);
 		dev_err(&pdev->dev, "can't register RTC device, err %ld\n",
 			PTR_ERR(rtc));
 		goto out0;
@@ -431,7 +408,6 @@  static int __devinit twl4030_rtc_probe(struct platform_device *pdev)
 	platform_set_drvdata(pdev, rtc);
 
 	ret = twl4030_rtc_read_u8(&rd_reg, REG_RTC_STATUS_REG);
-
 	if (ret < 0)
 		goto out1;
 
@@ -474,7 +450,6 @@  static int __devinit twl4030_rtc_probe(struct platform_device *pdev)
 
 	return ret;
 
-
 out2:
 	free_irq(irq, rtc);
 out1: