Patchwork [V3,2/6] RTC: sa1100: remove redundant code of setting alarm

login
register
mail settings
Submitter Jett.Zhou
Date Nov. 30, 2011, 6:30 a.m.
Message ID <1322634629-4411-1-git-send-email-jtzhou@marvell.com>
Download mbox | patch
Permalink /patch/128420/
State New
Headers show

Comments

Jett.Zhou - Nov. 30, 2011, 6:30 a.m.
In rtc generic interface of setting alarm, it will check the alarm time
value valid or not, so rtc_periodic_alarm is redundant, remove it.

Signed-off-by: Jett.Zhou <jtzhou@marvell.com>
Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com>
---
 drivers/rtc/rtc-sa1100.c |   53 ++++++++++-----------------------------------
 1 files changed, 12 insertions(+), 41 deletions(-)
Jean-Christophe PLAGNIOL-VILLARD - Nov. 30, 2011, 1:50 p.m.
On 14:30 Wed 30 Nov     , Jett.Zhou wrote:
> In rtc generic interface of setting alarm, it will check the alarm time
> value valid or not, so rtc_periodic_alarm is redundant, remove it.
> 
> Signed-off-by: Jett.Zhou <jtzhou@marvell.com>
> Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com>
> ---
>  drivers/rtc/rtc-sa1100.c |   53 ++++++++++-----------------------------------
>  1 files changed, 12 insertions(+), 41 deletions(-)
> 
> diff --git a/drivers/rtc/rtc-sa1100.c b/drivers/rtc/rtc-sa1100.c
> index 6f22c1f..d268cf1 100644
> --- a/drivers/rtc/rtc-sa1100.c
> +++ b/drivers/rtc/rtc-sa1100.c
> @@ -45,16 +45,6 @@ static const unsigned long RTC_FREQ = 1024;
>  static struct rtc_time rtc_alarm;
>  static DEFINE_SPINLOCK(sa1100_rtc_lock);
>  
> -static inline int rtc_periodic_alarm(struct rtc_time *tm)
> -{
> -	return  (tm->tm_year == -1) ||
> -		((unsigned)tm->tm_mon >= 12) ||
> -		((unsigned)(tm->tm_mday - 1) >= 31) ||
> -		((unsigned)tm->tm_hour > 23) ||
> -		((unsigned)tm->tm_min > 59) ||
> -		((unsigned)tm->tm_sec > 59);
> -}
> -
>  /*
>   * Calculate the next alarm time given the requested alarm time mask
>   * and the current time.
> @@ -82,27 +72,6 @@ static void rtc_next_alarm_time(struct rtc_time *next, struct rtc_time *now,
>  	}
>  }
please use read/write relaxed too

Best Regards,
J.
Haojian Zhuang - Nov. 30, 2011, 2:50 p.m.
On Wed, Nov 30, 2011 at 9:50 PM, Jean-Christophe PLAGNIOL-VILLARD
<plagnioj@jcrosoft.com> wrote:
> On 14:30 Wed 30 Nov     , Jett.Zhou wrote:
>> In rtc generic interface of setting alarm, it will check the alarm time
>> value valid or not, so rtc_periodic_alarm is redundant, remove it.
>>
>> Signed-off-by: Jett.Zhou <jtzhou@marvell.com>
>> Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com>
>> ---
>>  drivers/rtc/rtc-sa1100.c |   53 ++++++++++-----------------------------------
>>  1 files changed, 12 insertions(+), 41 deletions(-)
>>
>> diff --git a/drivers/rtc/rtc-sa1100.c b/drivers/rtc/rtc-sa1100.c
>> index 6f22c1f..d268cf1 100644
>> --- a/drivers/rtc/rtc-sa1100.c
>> +++ b/drivers/rtc/rtc-sa1100.c
>> @@ -45,16 +45,6 @@ static const unsigned long RTC_FREQ = 1024;
>>  static struct rtc_time rtc_alarm;
>>  static DEFINE_SPINLOCK(sa1100_rtc_lock);
>>
>> -static inline int rtc_periodic_alarm(struct rtc_time *tm)
>> -{
>> -     return  (tm->tm_year == -1) ||
>> -             ((unsigned)tm->tm_mon >= 12) ||
>> -             ((unsigned)(tm->tm_mday - 1) >= 31) ||
>> -             ((unsigned)tm->tm_hour > 23) ||
>> -             ((unsigned)tm->tm_min > 59) ||
>> -             ((unsigned)tm->tm_sec > 59);
>> -}
>> -
>>  /*
>>   * Calculate the next alarm time given the requested alarm time mask
>>   * and the current time.
>> @@ -82,27 +72,6 @@ static void rtc_next_alarm_time(struct rtc_time *next, struct rtc_time *now,
>>       }
>>  }
> please use read/write relaxed too
>
> Best Regards,
> J.

This will be replaced with read/write in the third patch.

Patch

diff --git a/drivers/rtc/rtc-sa1100.c b/drivers/rtc/rtc-sa1100.c
index 6f22c1f..d268cf1 100644
--- a/drivers/rtc/rtc-sa1100.c
+++ b/drivers/rtc/rtc-sa1100.c
@@ -45,16 +45,6 @@  static const unsigned long RTC_FREQ = 1024;
 static struct rtc_time rtc_alarm;
 static DEFINE_SPINLOCK(sa1100_rtc_lock);
 
-static inline int rtc_periodic_alarm(struct rtc_time *tm)
-{
-	return  (tm->tm_year == -1) ||
-		((unsigned)tm->tm_mon >= 12) ||
-		((unsigned)(tm->tm_mday - 1) >= 31) ||
-		((unsigned)tm->tm_hour > 23) ||
-		((unsigned)tm->tm_min > 59) ||
-		((unsigned)tm->tm_sec > 59);
-}
-
 /*
  * Calculate the next alarm time given the requested alarm time mask
  * and the current time.
@@ -82,27 +72,6 @@  static void rtc_next_alarm_time(struct rtc_time *next, struct rtc_time *now,
 	}
 }
 
-static int rtc_update_alarm(struct rtc_time *alrm)
-{
-	struct rtc_time alarm_tm, now_tm;
-	unsigned long now, time;
-	int ret;
-
-	do {
-		now = RCNR;
-		rtc_time_to_tm(now, &now_tm);
-		rtc_next_alarm_time(&alarm_tm, &now_tm, alrm);
-		ret = rtc_tm_to_time(&alarm_tm, &time);
-		if (ret != 0)
-			break;
-
-		RTSR = RTSR & (RTSR_HZE|RTSR_ALE|RTSR_AL);
-		RTAR = time;
-	} while (now != RCNR);
-
-	return ret;
-}
-
 static irqreturn_t sa1100_rtc_interrupt(int irq, void *dev_id)
 {
 	struct platform_device *pdev = to_platform_device(dev_id);
@@ -146,9 +115,6 @@  static irqreturn_t sa1100_rtc_interrupt(int irq, void *dev_id)
 
 	rtc_update_irq(rtc, 1, events);
 
-	if (rtsr & RTSR_AL && rtc_periodic_alarm(&rtc_alarm))
-		rtc_update_alarm(&rtc_alarm);
-
 	spin_unlock(&sa1100_rtc_lock);
 
 	return IRQ_HANDLED;
@@ -234,16 +200,21 @@  static int sa1100_rtc_read_alarm(struct device *dev, struct rtc_wkalrm *alrm)
 
 static int sa1100_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
 {
+	struct rtc_time now_tm, alarm_tm;
 	int ret;
 
 	spin_lock_irq(&sa1100_rtc_lock);
-	ret = rtc_update_alarm(&alrm->time);
-	if (ret == 0) {
-		if (alrm->enabled)
-			RTSR |= RTSR_ALE;
-		else
-			RTSR &= ~RTSR_ALE;
-	}
+
+	now = RCNR;
+	rtc_time_to_tm(now, &now_tm);
+	rtc_next_alarm_time(&alarm_tm, &now_tm, alrm->time);
+	rtc_tm_to_time(&alarm_tm, &time);
+	RTAR = time;
+	if (alrm->enabled)
+		RTSR |= RTSR_ALE;
+	else
+		RTSR &= ~RTSR_ALE;
+
 	spin_unlock_irq(&sa1100_rtc_lock);
 
 	return ret;