Lines Matching refs:timeri
60 struct snd_timer_instance *timeri; member
105 struct snd_timer_instance *timeri; in snd_timer_instance_new() local
106 timeri = kzalloc(sizeof(*timeri), GFP_KERNEL); in snd_timer_instance_new()
107 if (timeri == NULL) in snd_timer_instance_new()
109 timeri->owner = kstrdup(owner, GFP_KERNEL); in snd_timer_instance_new()
110 if (! timeri->owner) { in snd_timer_instance_new()
111 kfree(timeri); in snd_timer_instance_new()
114 INIT_LIST_HEAD(&timeri->open_list); in snd_timer_instance_new()
115 INIT_LIST_HEAD(&timeri->active_list); in snd_timer_instance_new()
116 INIT_LIST_HEAD(&timeri->ack_list); in snd_timer_instance_new()
117 INIT_LIST_HEAD(&timeri->slave_list_head); in snd_timer_instance_new()
118 INIT_LIST_HEAD(&timeri->slave_active_head); in snd_timer_instance_new()
120 timeri->timer = timer; in snd_timer_instance_new()
122 kfree(timeri->owner); in snd_timer_instance_new()
123 kfree(timeri); in snd_timer_instance_new()
127 return timeri; in snd_timer_instance_new()
240 struct snd_timer_instance *timeri = NULL; in snd_timer_open() local
251 timeri = snd_timer_instance_new(owner, NULL); in snd_timer_open()
252 if (!timeri) { in snd_timer_open()
256 timeri->slave_class = tid->dev_sclass; in snd_timer_open()
257 timeri->slave_id = tid->device; in snd_timer_open()
258 timeri->flags |= SNDRV_TIMER_IFLG_SLAVE; in snd_timer_open()
259 list_add_tail(&timeri->open_list, &snd_timer_slave_list); in snd_timer_open()
260 snd_timer_check_slave(timeri); in snd_timer_open()
262 *ti = timeri; in snd_timer_open()
282 timeri = list_entry(timer->open_list_head.next, in snd_timer_open()
284 if (timeri->flags & SNDRV_TIMER_IFLG_EXCLUSIVE) { in snd_timer_open()
289 timeri = snd_timer_instance_new(owner, timer); in snd_timer_open()
290 if (!timeri) { in snd_timer_open()
297 timeri->slave_class = tid->dev_sclass; in snd_timer_open()
298 timeri->slave_id = slave_id; in snd_timer_open()
301 list_add_tail(&timeri->open_list, &timer->open_list_head); in snd_timer_open()
302 snd_timer_check_master(timeri); in snd_timer_open()
304 *ti = timeri; in snd_timer_open()
308 static int _snd_timer_stop(struct snd_timer_instance *timeri, int event);
313 int snd_timer_close(struct snd_timer_instance *timeri) in snd_timer_close() argument
318 if (snd_BUG_ON(!timeri)) in snd_timer_close()
322 snd_timer_stop(timeri); in snd_timer_close()
324 if (timeri->flags & SNDRV_TIMER_IFLG_SLAVE) { in snd_timer_close()
327 while (timeri->flags & SNDRV_TIMER_IFLG_CALLBACK) { in snd_timer_close()
334 list_del(&timeri->open_list); in snd_timer_close()
337 timer = timeri->timer; in snd_timer_close()
342 while (timeri->flags & SNDRV_TIMER_IFLG_CALLBACK) { in snd_timer_close()
349 list_del(&timeri->open_list); in snd_timer_close()
356 list_for_each_entry_safe(slave, tmp, &timeri->slave_list_head, in snd_timer_close()
372 if (timeri->private_free) in snd_timer_close()
373 timeri->private_free(timeri); in snd_timer_close()
374 kfree(timeri->owner); in snd_timer_close()
375 kfree(timeri); in snd_timer_close()
381 unsigned long snd_timer_resolution(struct snd_timer_instance *timeri) in snd_timer_resolution() argument
385 if (timeri == NULL) in snd_timer_resolution()
387 if ((timer = timeri->timer) != NULL) { in snd_timer_resolution()
429 static int snd_timer_start1(struct snd_timer *timer, struct snd_timer_instance *timeri, in snd_timer_start1() argument
432 list_move_tail(&timeri->active_list, &timer->active_list_head); in snd_timer_start1()
437 timeri->flags |= SNDRV_TIMER_IFLG_START; in snd_timer_start1()
444 timeri->flags |= SNDRV_TIMER_IFLG_RUNNING; in snd_timer_start1()
449 static int snd_timer_start_slave(struct snd_timer_instance *timeri) in snd_timer_start_slave() argument
454 if (timeri->flags & SNDRV_TIMER_IFLG_RUNNING) { in snd_timer_start_slave()
458 timeri->flags |= SNDRV_TIMER_IFLG_RUNNING; in snd_timer_start_slave()
459 if (timeri->master && timeri->timer) { in snd_timer_start_slave()
460 spin_lock(&timeri->timer->lock); in snd_timer_start_slave()
461 list_add_tail(&timeri->active_list, in snd_timer_start_slave()
462 &timeri->master->slave_active_head); in snd_timer_start_slave()
463 spin_unlock(&timeri->timer->lock); in snd_timer_start_slave()
472 int snd_timer_start(struct snd_timer_instance *timeri, unsigned int ticks) in snd_timer_start() argument
478 if (timeri == NULL || ticks < 1) in snd_timer_start()
480 if (timeri->flags & SNDRV_TIMER_IFLG_SLAVE) { in snd_timer_start()
481 result = snd_timer_start_slave(timeri); in snd_timer_start()
483 snd_timer_notify1(timeri, SNDRV_TIMER_EVENT_START); in snd_timer_start()
486 timer = timeri->timer; in snd_timer_start()
492 if (timeri->flags & (SNDRV_TIMER_IFLG_RUNNING | in snd_timer_start()
497 timeri->ticks = timeri->cticks = ticks; in snd_timer_start()
498 timeri->pticks = 0; in snd_timer_start()
499 result = snd_timer_start1(timer, timeri, ticks); in snd_timer_start()
503 snd_timer_notify1(timeri, SNDRV_TIMER_EVENT_START); in snd_timer_start()
507 static int _snd_timer_stop(struct snd_timer_instance *timeri, int event) in _snd_timer_stop() argument
512 if (snd_BUG_ON(!timeri)) in _snd_timer_stop()
515 if (timeri->flags & SNDRV_TIMER_IFLG_SLAVE) { in _snd_timer_stop()
517 if (!(timeri->flags & SNDRV_TIMER_IFLG_RUNNING)) { in _snd_timer_stop()
521 if (timeri->timer) in _snd_timer_stop()
522 spin_lock(&timeri->timer->lock); in _snd_timer_stop()
523 timeri->flags &= ~SNDRV_TIMER_IFLG_RUNNING; in _snd_timer_stop()
524 list_del_init(&timeri->ack_list); in _snd_timer_stop()
525 list_del_init(&timeri->active_list); in _snd_timer_stop()
526 if (timeri->timer) in _snd_timer_stop()
527 spin_unlock(&timeri->timer->lock); in _snd_timer_stop()
531 timer = timeri->timer; in _snd_timer_stop()
535 if (!(timeri->flags & (SNDRV_TIMER_IFLG_RUNNING | in _snd_timer_stop()
540 list_del_init(&timeri->ack_list); in _snd_timer_stop()
541 list_del_init(&timeri->active_list); in _snd_timer_stop()
546 if ((timeri->flags & SNDRV_TIMER_IFLG_RUNNING) && in _snd_timer_stop()
558 timeri->flags &= ~(SNDRV_TIMER_IFLG_RUNNING | SNDRV_TIMER_IFLG_START); in _snd_timer_stop()
562 snd_timer_notify1(timeri, event); in _snd_timer_stop()
571 int snd_timer_stop(struct snd_timer_instance *timeri) in snd_timer_stop() argument
577 err = _snd_timer_stop(timeri, SNDRV_TIMER_EVENT_STOP); in snd_timer_stop()
580 timer = timeri->timer; in snd_timer_stop()
584 timeri->cticks = timeri->ticks; in snd_timer_stop()
585 timeri->pticks = 0; in snd_timer_stop()
593 int snd_timer_continue(struct snd_timer_instance *timeri) in snd_timer_continue() argument
599 if (timeri == NULL) in snd_timer_continue()
601 if (timeri->flags & SNDRV_TIMER_IFLG_SLAVE) in snd_timer_continue()
602 return snd_timer_start_slave(timeri); in snd_timer_continue()
603 timer = timeri->timer; in snd_timer_continue()
609 if (timeri->flags & SNDRV_TIMER_IFLG_RUNNING) { in snd_timer_continue()
613 if (!timeri->cticks) in snd_timer_continue()
614 timeri->cticks = 1; in snd_timer_continue()
615 timeri->pticks = 0; in snd_timer_continue()
616 result = snd_timer_start1(timer, timeri, timer->sticks); in snd_timer_continue()
619 snd_timer_notify1(timeri, SNDRV_TIMER_EVENT_CONTINUE); in snd_timer_continue()
626 int snd_timer_pause(struct snd_timer_instance * timeri) in snd_timer_pause() argument
628 return _snd_timer_stop(timeri, SNDRV_TIMER_EVENT_PAUSE); in snd_timer_pause()
933 static void snd_timer_user_ccallback(struct snd_timer_instance *timeri,
1192 static void snd_timer_user_interrupt(struct snd_timer_instance *timeri, in snd_timer_user_interrupt() argument
1196 struct snd_timer_user *tu = timeri->callback_data; in snd_timer_user_interrupt()
1236 static void snd_timer_user_ccallback(struct snd_timer_instance *timeri, in snd_timer_user_ccallback() argument
1241 struct snd_timer_user *tu = timeri->callback_data; in snd_timer_user_ccallback()
1260 static void snd_timer_user_tinterrupt(struct snd_timer_instance *timeri, in snd_timer_user_tinterrupt() argument
1264 struct snd_timer_user *tu = timeri->callback_data; in snd_timer_user_tinterrupt()
1353 if (tu->timeri) in snd_timer_user_release()
1354 snd_timer_close(tu->timeri); in snd_timer_user_release()
1593 if (tu->timeri) { in snd_timer_user_tselect()
1594 snd_timer_close(tu->timeri); in snd_timer_user_tselect()
1595 tu->timeri = NULL; in snd_timer_user_tselect()
1604 err = snd_timer_open(&tu->timeri, str, &tselect.id, current->pid); in snd_timer_user_tselect()
1625 snd_timer_close(tu->timeri); in snd_timer_user_tselect()
1626 tu->timeri = NULL; in snd_timer_user_tselect()
1628 tu->timeri->flags |= SNDRV_TIMER_IFLG_FAST; in snd_timer_user_tselect()
1629 tu->timeri->callback = tu->tread in snd_timer_user_tselect()
1631 tu->timeri->ccallback = snd_timer_user_ccallback; in snd_timer_user_tselect()
1632 tu->timeri->callback_data = (void *)tu; in snd_timer_user_tselect()
1648 if (!tu->timeri) in snd_timer_user_info()
1650 t = tu->timeri->timer; in snd_timer_user_info()
1680 if (!tu->timeri) in snd_timer_user_params()
1682 t = tu->timeri->timer; in snd_timer_user_params()
1713 snd_timer_stop(tu->timeri); in snd_timer_user_params()
1715 tu->timeri->flags &= ~(SNDRV_TIMER_IFLG_AUTO| in snd_timer_user_params()
1719 tu->timeri->flags |= SNDRV_TIMER_IFLG_AUTO; in snd_timer_user_params()
1721 tu->timeri->flags |= SNDRV_TIMER_IFLG_EXCLUSIVE; in snd_timer_user_params()
1723 tu->timeri->flags |= SNDRV_TIMER_IFLG_EARLY_EVENT; in snd_timer_user_params()
1746 if (tu->timeri->flags & SNDRV_TIMER_IFLG_EARLY_EVENT) { in snd_timer_user_params()
1778 if (!tu->timeri) in snd_timer_user_status()
1782 status.resolution = snd_timer_resolution(tu->timeri); in snd_timer_user_status()
1783 status.lost = tu->timeri->lost; in snd_timer_user_status()
1799 if (!tu->timeri) in snd_timer_user_start()
1801 snd_timer_stop(tu->timeri); in snd_timer_user_start()
1802 tu->timeri->lost = 0; in snd_timer_user_start()
1804 return (err = snd_timer_start(tu->timeri, tu->ticks)) < 0 ? err : 0; in snd_timer_user_start()
1813 if (!tu->timeri) in snd_timer_user_stop()
1815 return (err = snd_timer_stop(tu->timeri)) < 0 ? err : 0; in snd_timer_user_stop()
1824 if (!tu->timeri) in snd_timer_user_continue()
1826 tu->timeri->lost = 0; in snd_timer_user_continue()
1827 return (err = snd_timer_continue(tu->timeri)) < 0 ? err : 0; in snd_timer_user_continue()
1836 if (!tu->timeri) in snd_timer_user_pause()
1838 return (err = snd_timer_pause(tu->timeri)) < 0 ? err : 0; in snd_timer_user_pause()
1865 if (tu->timeri) /* too late */ in __snd_timer_user_ioctl()