Merge branch 'fortglx/39/tip/timers/rtc' of git://git.linaro.org/people/jstultz/linux into timers/urgent
This commit is contained in:
		
						commit
						92f73a62a1
					
				| @ -171,7 +171,7 @@ struct rtc_device *rtc_device_register(const char *name, struct device *dev, | ||||
| 	err = __rtc_read_alarm(rtc, &alrm); | ||||
| 
 | ||||
| 	if (!err && !rtc_valid_tm(&alrm.time)) | ||||
| 		rtc_set_alarm(rtc, &alrm); | ||||
| 		rtc_initialize_alarm(rtc, &alrm); | ||||
| 
 | ||||
| 	strlcpy(rtc->name, name, RTC_DEVICE_NAME_SIZE); | ||||
| 	dev_set_name(&rtc->dev, "rtc%d", id); | ||||
|  | ||||
| @ -375,6 +375,32 @@ int rtc_set_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) | ||||
| } | ||||
| EXPORT_SYMBOL_GPL(rtc_set_alarm); | ||||
| 
 | ||||
| /* Called once per device from rtc_device_register */ | ||||
| int rtc_initialize_alarm(struct rtc_device *rtc, struct rtc_wkalrm *alarm) | ||||
| { | ||||
| 	int err; | ||||
| 
 | ||||
| 	err = rtc_valid_tm(&alarm->time); | ||||
| 	if (err != 0) | ||||
| 		return err; | ||||
| 
 | ||||
| 	err = mutex_lock_interruptible(&rtc->ops_lock); | ||||
| 	if (err) | ||||
| 		return err; | ||||
| 
 | ||||
| 	rtc->aie_timer.node.expires = rtc_tm_to_ktime(alarm->time); | ||||
| 	rtc->aie_timer.period = ktime_set(0, 0); | ||||
| 	if (alarm->enabled) { | ||||
| 		rtc->aie_timer.enabled = 1; | ||||
| 		timerqueue_add(&rtc->timerqueue, &rtc->aie_timer.node); | ||||
| 	} | ||||
| 	mutex_unlock(&rtc->ops_lock); | ||||
| 	return err; | ||||
| } | ||||
| EXPORT_SYMBOL_GPL(rtc_initialize_alarm); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| int rtc_alarm_irq_enable(struct rtc_device *rtc, unsigned int enabled) | ||||
| { | ||||
| 	int err = mutex_lock_interruptible(&rtc->ops_lock); | ||||
|  | ||||
| @ -250,6 +250,8 @@ static int bfin_rtc_alarm_irq_enable(struct device *dev, unsigned int enabled) | ||||
| 		bfin_rtc_int_set_alarm(rtc); | ||||
| 	else | ||||
| 		bfin_rtc_int_clear(~(RTC_ISTAT_ALARM | RTC_ISTAT_ALARM_DAY)); | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| static int bfin_rtc_read_time(struct device *dev, struct rtc_time *tm) | ||||
|  | ||||
| @ -336,7 +336,6 @@ static void s3c_rtc_release(struct device *dev) | ||||
| 
 | ||||
| 	/* do not clear AIE here, it may be needed for wake */ | ||||
| 
 | ||||
| 	s3c_rtc_setpie(dev, 0); | ||||
| 	free_irq(s3c_rtc_alarmno, rtc_dev); | ||||
| 	free_irq(s3c_rtc_tickno, rtc_dev); | ||||
| } | ||||
| @ -408,7 +407,6 @@ static int __devexit s3c_rtc_remove(struct platform_device *dev) | ||||
| 	platform_set_drvdata(dev, NULL); | ||||
| 	rtc_device_unregister(rtc); | ||||
| 
 | ||||
| 	s3c_rtc_setpie(&dev->dev, 0); | ||||
| 	s3c_rtc_setaie(&dev->dev, 0); | ||||
| 
 | ||||
| 	clk_disable(rtc_clk); | ||||
|  | ||||
| @ -228,6 +228,8 @@ extern int rtc_read_alarm(struct rtc_device *rtc, | ||||
| 			struct rtc_wkalrm *alrm); | ||||
| extern int rtc_set_alarm(struct rtc_device *rtc, | ||||
| 				struct rtc_wkalrm *alrm); | ||||
| extern int rtc_initialize_alarm(struct rtc_device *rtc, | ||||
| 				struct rtc_wkalrm *alrm); | ||||
| extern void rtc_update_irq(struct rtc_device *rtc, | ||||
| 			unsigned long num, unsigned long events); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user