Lines Matching refs:ti
68 struct ct_timer_instance *ti = (struct ct_timer_instance *)data; in ct_systimer_callback() local
69 struct snd_pcm_substream *substream = ti->substream; in ct_systimer_callback()
71 struct ct_atc_pcm *apcm = ti->apcm; in ct_systimer_callback()
78 dist = (position + buffer_size - ti->position) % buffer_size; in ct_systimer_callback()
80 position / period_size != ti->position / period_size) { in ct_systimer_callback()
82 ti->position = position; in ct_systimer_callback()
88 spin_lock_irqsave(&ti->lock, flags); in ct_systimer_callback()
89 if (ti->running) in ct_systimer_callback()
90 mod_timer(&ti->timer, jiffies + interval); in ct_systimer_callback()
91 spin_unlock_irqrestore(&ti->lock, flags); in ct_systimer_callback()
94 static void ct_systimer_init(struct ct_timer_instance *ti) in ct_systimer_init() argument
96 setup_timer(&ti->timer, ct_systimer_callback, in ct_systimer_init()
97 (unsigned long)ti); in ct_systimer_init()
100 static void ct_systimer_start(struct ct_timer_instance *ti) in ct_systimer_start() argument
102 struct snd_pcm_runtime *runtime = ti->substream->runtime; in ct_systimer_start()
105 spin_lock_irqsave(&ti->lock, flags); in ct_systimer_start()
106 ti->running = 1; in ct_systimer_start()
107 mod_timer(&ti->timer, in ct_systimer_start()
110 spin_unlock_irqrestore(&ti->lock, flags); in ct_systimer_start()
113 static void ct_systimer_stop(struct ct_timer_instance *ti) in ct_systimer_stop() argument
117 spin_lock_irqsave(&ti->lock, flags); in ct_systimer_stop()
118 ti->running = 0; in ct_systimer_stop()
119 del_timer(&ti->timer); in ct_systimer_stop()
120 spin_unlock_irqrestore(&ti->lock, flags); in ct_systimer_stop()
123 static void ct_systimer_prepare(struct ct_timer_instance *ti) in ct_systimer_prepare() argument
125 ct_systimer_stop(ti); in ct_systimer_prepare()
126 try_to_del_timer_sync(&ti->timer); in ct_systimer_prepare()
185 struct ct_timer_instance *ti; in ct_xfitimer_reprogram() local
199 list_for_each_entry(ti, &atimer->running_head, running_list) { in ct_xfitimer_reprogram()
200 if (ti->frag_count > diff) in ct_xfitimer_reprogram()
201 ti->frag_count -= diff; in ct_xfitimer_reprogram()
206 period_size = ti->substream->runtime->period_size; in ct_xfitimer_reprogram()
207 rate = ti->substream->runtime->rate; in ct_xfitimer_reprogram()
208 pos = ti->substream->ops->pointer(ti->substream); in ct_xfitimer_reprogram()
209 if (pos / period_size != ti->position / period_size) { in ct_xfitimer_reprogram()
210 ti->need_update = 1; in ct_xfitimer_reprogram()
211 ti->position = pos; in ct_xfitimer_reprogram()
216 ti->frag_count = div_u64((u64)pos * CT_TIMER_FREQ + in ct_xfitimer_reprogram()
219 if (ti->need_update && !can_update) in ct_xfitimer_reprogram()
221 if (ti->frag_count < min_intr) in ct_xfitimer_reprogram()
222 min_intr = ti->frag_count; in ct_xfitimer_reprogram()
235 struct ct_timer_instance *ti; in ct_xfitimer_check_period() local
239 list_for_each_entry(ti, &atimer->instance_head, instance_list) { in ct_xfitimer_check_period()
240 if (ti->running && ti->need_update) { in ct_xfitimer_check_period()
241 ti->need_update = 0; in ct_xfitimer_check_period()
242 ti->apcm->interrupt(ti->apcm); in ct_xfitimer_check_period()
267 static void ct_xfitimer_prepare(struct ct_timer_instance *ti) in ct_xfitimer_prepare() argument
269 ti->frag_count = ti->substream->runtime->period_size; in ct_xfitimer_prepare()
270 ti->running = 0; in ct_xfitimer_prepare()
271 ti->need_update = 0; in ct_xfitimer_prepare()
293 static void ct_xfitimer_start(struct ct_timer_instance *ti) in ct_xfitimer_start() argument
295 struct ct_timer *atimer = ti->timer_base; in ct_xfitimer_start()
299 if (list_empty(&ti->running_list)) in ct_xfitimer_start()
301 ti->running = 1; in ct_xfitimer_start()
302 ti->need_update = 0; in ct_xfitimer_start()
303 list_add(&ti->running_list, &atimer->running_head); in ct_xfitimer_start()
308 static void ct_xfitimer_stop(struct ct_timer_instance *ti) in ct_xfitimer_stop() argument
310 struct ct_timer *atimer = ti->timer_base; in ct_xfitimer_stop()
314 list_del_init(&ti->running_list); in ct_xfitimer_stop()
315 ti->running = 0; in ct_xfitimer_stop()
340 struct ct_timer_instance *ti; in ct_timer_instance_new() local
342 ti = kzalloc(sizeof(*ti), GFP_KERNEL); in ct_timer_instance_new()
343 if (!ti) in ct_timer_instance_new()
345 spin_lock_init(&ti->lock); in ct_timer_instance_new()
346 INIT_LIST_HEAD(&ti->instance_list); in ct_timer_instance_new()
347 INIT_LIST_HEAD(&ti->running_list); in ct_timer_instance_new()
348 ti->timer_base = atimer; in ct_timer_instance_new()
349 ti->apcm = apcm; in ct_timer_instance_new()
350 ti->substream = apcm->substream; in ct_timer_instance_new()
352 atimer->ops->init(ti); in ct_timer_instance_new()
355 list_add(&ti->instance_list, &atimer->instance_head); in ct_timer_instance_new()
358 return ti; in ct_timer_instance_new()
361 void ct_timer_prepare(struct ct_timer_instance *ti) in ct_timer_prepare() argument
363 if (ti->timer_base->ops->prepare) in ct_timer_prepare()
364 ti->timer_base->ops->prepare(ti); in ct_timer_prepare()
365 ti->position = 0; in ct_timer_prepare()
366 ti->running = 0; in ct_timer_prepare()
369 void ct_timer_start(struct ct_timer_instance *ti) in ct_timer_start() argument
371 struct ct_timer *atimer = ti->timer_base; in ct_timer_start()
372 atimer->ops->start(ti); in ct_timer_start()
375 void ct_timer_stop(struct ct_timer_instance *ti) in ct_timer_stop() argument
377 struct ct_timer *atimer = ti->timer_base; in ct_timer_stop()
378 atimer->ops->stop(ti); in ct_timer_stop()
381 void ct_timer_instance_free(struct ct_timer_instance *ti) in ct_timer_instance_free() argument
383 struct ct_timer *atimer = ti->timer_base; in ct_timer_instance_free()
385 atimer->ops->stop(ti); /* to be sure */ in ct_timer_instance_free()
387 atimer->ops->free_instance(ti); in ct_timer_instance_free()
390 list_del(&ti->instance_list); in ct_timer_instance_free()
393 kfree(ti); in ct_timer_instance_free()