rtc: sa1100: remove verification code of alarm
Since next alarm time is already calculated in rtc common interface, we needn't keep this logic in rtc-sa1100.c any more. Signed-off-by: Haojian Zhuang <haojian.zhuang@marvell.com>
This commit is contained in:
		
							parent
							
								
									61ee93cd18
								
							
						
					
					
						commit
						1d8c38c3d1
					
				| @ -44,54 +44,6 @@ | ||||
| static const unsigned long RTC_FREQ = 1024; | ||||
| static DEFINE_SPINLOCK(sa1100_rtc_lock); | ||||
| 
 | ||||
| /*
 | ||||
|  * Calculate the next alarm time given the requested alarm time mask | ||||
|  * and the current time. | ||||
|  */ | ||||
| static void rtc_next_alarm_time(struct rtc_time *next, struct rtc_time *now, | ||||
| 	struct rtc_time *alrm) | ||||
| { | ||||
| 	unsigned long next_time; | ||||
| 	unsigned long now_time; | ||||
| 
 | ||||
| 	next->tm_year = now->tm_year; | ||||
| 	next->tm_mon = now->tm_mon; | ||||
| 	next->tm_mday = now->tm_mday; | ||||
| 	next->tm_hour = alrm->tm_hour; | ||||
| 	next->tm_min = alrm->tm_min; | ||||
| 	next->tm_sec = alrm->tm_sec; | ||||
| 
 | ||||
| 	rtc_tm_to_time(now, &now_time); | ||||
| 	rtc_tm_to_time(next, &next_time); | ||||
| 
 | ||||
| 	if (next_time < now_time) { | ||||
| 		/* Advance one day */ | ||||
| 		next_time += 60 * 60 * 24; | ||||
| 		rtc_time_to_tm(next_time, next); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| 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); | ||||
| @ -219,16 +171,20 @@ 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) | ||||
| { | ||||
| 	unsigned long time; | ||||
| 	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; | ||||
| 	} | ||||
| 	ret = rtc_tm_to_time(&alrm->time, &time); | ||||
| 	if (ret != 0) | ||||
| 		goto out; | ||||
| 	RTSR = RTSR & (RTSR_HZE|RTSR_ALE|RTSR_AL); | ||||
| 	RTAR = time; | ||||
| 	if (alrm->enabled) | ||||
| 		RTSR |= RTSR_ALE; | ||||
| 	else | ||||
| 		RTSR &= ~RTSR_ALE; | ||||
| out: | ||||
| 	spin_unlock_irq(&sa1100_rtc_lock); | ||||
| 
 | ||||
| 	return ret; | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user