--- zzzz-none-000/linux-2.6.19.2/drivers/rtc/rtc-dev.c 2007-01-10 19:10:37.000000000 +0000 +++ davinci-8020-5505/linux-2.6.19.2/drivers/rtc/rtc-dev.c 2007-01-11 07:38:19.000000000 +0000 @@ -61,9 +61,7 @@ int err; err = rtc_read_time(&rtc->class_dev, &tm); - - local_irq_disable(); - spin_lock(&rtc->irq_lock); + spin_lock_irq(&rtc->irq_lock); if (rtc->stop_uie_polling || err) { rtc->uie_task_active = 0; } else if (rtc->oldsecs != tm.tm_sec) { @@ -76,11 +74,11 @@ } else if (schedule_work(&rtc->uie_task) == 0) { rtc->uie_task_active = 0; } - spin_unlock(&rtc->irq_lock); + spin_unlock_irq(&rtc->irq_lock); if (num) rtc_update_irq(&rtc->class_dev, num, RTC_UF | RTC_IRQF); - local_irq_enable(); } + static void rtc_uie_timer(unsigned long data) { struct rtc_device *rtc = (struct rtc_device *)data; @@ -216,7 +214,7 @@ struct rtc_wkalrm alarm; void __user *uarg = (void __user *) arg; - /* check that the calling task has appropriate permissions + /* check that the calles has appropriate permissions * for certain ioctls. doing this check here is useful * to avoid duplicate code in each driver. */ @@ -240,10 +238,10 @@ /* avoid conflicting IRQ users */ if (cmd == RTC_PIE_ON || cmd == RTC_PIE_OFF || cmd == RTC_IRQP_SET) { - spin_lock_irq(&rtc->irq_task_lock); + spin_lock(&rtc->irq_task_lock); if (rtc->irq_task) err = -EBUSY; - spin_unlock_irq(&rtc->irq_task_lock); + spin_unlock(&rtc->irq_task_lock); if (err < 0) return err; @@ -301,17 +299,6 @@ err = rtc_set_time(class_dev, &tm); break; - - case RTC_IRQP_READ: - if (ops->irq_set_freq) - err = put_user(rtc->irq_freq, (unsigned long *) arg); - break; - - case RTC_IRQP_SET: - if (ops->irq_set_freq) - err = rtc_irq_set_freq(class_dev, rtc->irq_task, arg); - break; - #if 0 case RTC_EPOCH_SET: #ifndef rtc_epoch