|
@@ -60,7 +60,6 @@ static struct _snd_timer_hardware rtc_hw = {
|
|
|
|
|
|
static int rtctimer_freq = RTC_FREQ; /* frequency */
|
|
static int rtctimer_freq = RTC_FREQ; /* frequency */
|
|
static snd_timer_t *rtctimer;
|
|
static snd_timer_t *rtctimer;
|
|
-static atomic_t rtc_inc = ATOMIC_INIT(0);
|
|
|
|
static rtc_task_t rtc_task;
|
|
static rtc_task_t rtc_task;
|
|
|
|
|
|
|
|
|
|
@@ -94,7 +93,6 @@ rtctimer_start(snd_timer_t *timer)
|
|
snd_assert(rtc != NULL, return -EINVAL);
|
|
snd_assert(rtc != NULL, return -EINVAL);
|
|
rtc_control(rtc, RTC_IRQP_SET, rtctimer_freq);
|
|
rtc_control(rtc, RTC_IRQP_SET, rtctimer_freq);
|
|
rtc_control(rtc, RTC_PIE_ON, 0);
|
|
rtc_control(rtc, RTC_PIE_ON, 0);
|
|
- atomic_set(&rtc_inc, 0);
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -112,12 +110,7 @@ rtctimer_stop(snd_timer_t *timer)
|
|
*/
|
|
*/
|
|
static void rtctimer_interrupt(void *private_data)
|
|
static void rtctimer_interrupt(void *private_data)
|
|
{
|
|
{
|
|
- int ticks;
|
|
|
|
-
|
|
|
|
- atomic_inc(&rtc_inc);
|
|
|
|
- ticks = atomic_read(&rtc_inc);
|
|
|
|
- snd_timer_interrupt((snd_timer_t*)private_data, ticks);
|
|
|
|
- atomic_sub(ticks, &rtc_inc);
|
|
|
|
|
|
+ snd_timer_interrupt(private_data, 1);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|