• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/sound/pci/ctxfi/

Lines Matching defs:atimer

148 static void ct_xfitimer_irq_rearm(struct ct_timer *atimer, int ticks)
150 struct hw *hw = atimer->atc->hw;
154 if (!atimer->running)
156 atimer->running = 1;
159 static void ct_xfitimer_irq_stop(struct ct_timer *atimer)
161 if (atimer->running) {
162 struct hw *hw = atimer->atc->hw;
165 atimer->running = 0;
169 static inline unsigned int ct_xfitimer_get_wc(struct ct_timer *atimer)
171 struct hw *hw = atimer->atc->hw;
183 static int ct_xfitimer_reprogram(struct ct_timer *atimer, int can_update)
190 if (list_empty(&atimer->running_head)) {
191 ct_xfitimer_irq_stop(atimer);
192 atimer->reprogram = 0; /* clear flag */
196 wc = ct_xfitimer_get_wc(atimer);
197 diff = wc - atimer->wc;
198 atimer->wc = wc;
199 list_for_each_entry(ti, &atimer->running_head, running_list) {
227 ct_xfitimer_irq_rearm(atimer, min_intr);
228 atimer->reprogram = 0; /* clear flag */
233 static void ct_xfitimer_check_period(struct ct_timer *atimer)
238 spin_lock_irqsave(&atimer->list_lock, flags);
239 list_for_each_entry(ti, &atimer->instance_head, instance_list) {
245 spin_unlock_irqrestore(&atimer->list_lock, flags);
249 static void ct_xfitimer_callback(struct ct_timer *atimer)
254 spin_lock_irqsave(&atimer->lock, flags);
255 atimer->irq_handling = 1;
257 update = ct_xfitimer_reprogram(atimer, 1);
258 spin_unlock(&atimer->lock);
260 ct_xfitimer_check_period(atimer);
261 spin_lock(&atimer->lock);
262 } while (atimer->reprogram);
263 atimer->irq_handling = 0;
264 spin_unlock_irqrestore(&atimer->lock, flags);
276 static void ct_xfitimer_update(struct ct_timer *atimer)
280 spin_lock_irqsave(&atimer->lock, flags);
281 if (atimer->irq_handling) {
283 atimer->reprogram = 1;
284 spin_unlock_irqrestore(&atimer->lock, flags);
288 ct_xfitimer_irq_stop(atimer);
289 ct_xfitimer_reprogram(atimer, 0);
290 spin_unlock_irqrestore(&atimer->lock, flags);
295 struct ct_timer *atimer = ti->timer_base;
298 spin_lock_irqsave(&atimer->lock, flags);
300 atimer->wc = ct_xfitimer_get_wc(atimer);
303 list_add(&ti->running_list, &atimer->running_head);
304 spin_unlock_irqrestore(&atimer->lock, flags);
305 ct_xfitimer_update(atimer);
310 struct ct_timer *atimer = ti->timer_base;
313 spin_lock_irqsave(&atimer->lock, flags);
316 spin_unlock_irqrestore(&atimer->lock, flags);
317 ct_xfitimer_update(atimer);
320 static void ct_xfitimer_free_global(struct ct_timer *atimer)
322 ct_xfitimer_irq_stop(atimer);
338 ct_timer_instance_new(struct ct_timer *atimer, struct ct_atc_pcm *apcm)
348 ti->timer_base = atimer;
351 if (atimer->ops->init)
352 atimer->ops->init(ti);
354 spin_lock_irq(&atimer->list_lock);
355 list_add(&ti->instance_list, &atimer->instance_head);
356 spin_unlock_irq(&atimer->list_lock);
371 struct ct_timer *atimer = ti->timer_base;
372 atimer->ops->start(ti);
377 struct ct_timer *atimer = ti->timer_base;
378 atimer->ops->stop(ti);
383 struct ct_timer *atimer = ti->timer_base;
385 atimer->ops->stop(ti); /* to be sure */
386 if (atimer->ops->free_instance)
387 atimer->ops->free_instance(ti);
389 spin_lock_irq(&atimer->list_lock);
391 spin_unlock_irq(&atimer->list_lock);
411 struct ct_timer *atimer;
414 atimer = kzalloc(sizeof(*atimer), GFP_KERNEL);
415 if (!atimer)
417 spin_lock_init(&atimer->lock);
418 spin_lock_init(&atimer->list_lock);
419 INIT_LIST_HEAD(&atimer->instance_head);
420 INIT_LIST_HEAD(&atimer->running_head);
421 atimer->atc = atc;
425 atimer->ops = &ct_xfitimer_ops;
426 hw->irq_callback_data = atimer;
430 atimer->ops = &ct_systimer_ops;
432 return atimer;
435 void ct_timer_free(struct ct_timer *atimer)
437 struct hw *hw = atimer->atc->hw;
439 if (atimer->ops->free_global)
440 atimer->ops->free_global(atimer);
441 kfree(atimer);