Lines Matching defs:ti
65 struct ct_timer_instance *ti = timer_container_of(ti, t, timer);
66 struct snd_pcm_substream *substream = ti->substream;
68 struct ct_atc_pcm *apcm = ti->apcm;
74 dist = (position + buffer_size - ti->position) % buffer_size;
76 position / period_size != ti->position / period_size) {
78 ti->position = position;
84 guard(spinlock_irqsave)(&ti->lock);
85 if (ti->running)
86 mod_timer(&ti->timer, jiffies + interval);
89 static void ct_systimer_init(struct ct_timer_instance *ti)
91 timer_setup(&ti->timer, ct_systimer_callback, 0);
94 static void ct_systimer_start(struct ct_timer_instance *ti)
96 struct snd_pcm_runtime *runtime = ti->substream->runtime;
98 guard(spinlock_irqsave)(&ti->lock);
99 ti->running = 1;
100 mod_timer(&ti->timer,
105 static void ct_systimer_stop(struct ct_timer_instance *ti)
107 guard(spinlock_irqsave)(&ti->lock);
108 ti->running = 0;
109 timer_delete(&ti->timer);
112 static void ct_systimer_prepare(struct ct_timer_instance *ti)
114 ct_systimer_stop(ti);
115 timer_delete_sync_try(&ti->timer);
174 struct ct_timer_instance *ti;
188 list_for_each_entry(ti, &atimer->running_head, running_list) {
189 if (ti->frag_count > diff)
190 ti->frag_count -= diff;
195 period_size = ti->substream->runtime->period_size;
196 rate = ti->substream->runtime->rate;
197 pos = ti->substream->ops->pointer(ti->substream);
198 if (pos / period_size != ti->position / period_size) {
199 ti->need_update = 1;
200 ti->position = pos;
205 ti->frag_count = div_u64((u64)pos * CT_TIMER_FREQ +
208 if (ti->need_update && !can_update)
210 if (ti->frag_count < min_intr)
211 min_intr = ti->frag_count;
224 struct ct_timer_instance *ti;
227 list_for_each_entry(ti, &atimer->instance_head, instance_list) {
228 if (ti->running && ti->need_update) {
229 ti->need_update = 0;
230 ti->apcm->interrupt(ti->apcm);
252 static void ct_xfitimer_prepare(struct ct_timer_instance *ti)
254 ti->frag_count = ti->substream->runtime->period_size;
255 ti->running = 0;
256 ti->need_update = 0;
274 static void ct_xfitimer_start(struct ct_timer_instance *ti)
276 struct ct_timer *atimer = ti->timer_base;
279 if (list_empty(&ti->running_list))
281 ti->running = 1;
282 ti->need_update = 0;
283 list_add(&ti->running_list, &atimer->running_head);
288 static void ct_xfitimer_stop(struct ct_timer_instance *ti)
290 struct ct_timer *atimer = ti->timer_base;
293 list_del_init(&ti->running_list);
294 ti->running = 0;
319 struct ct_timer_instance *ti;
321 ti = kzalloc(sizeof(*ti), GFP_KERNEL);
322 if (!ti)
324 spin_lock_init(&ti->lock);
325 INIT_LIST_HEAD(&ti->instance_list);
326 INIT_LIST_HEAD(&ti->running_list);
327 ti->timer_base = atimer;
328 ti->apcm = apcm;
329 ti->substream = apcm->substream;
331 atimer->ops->init(ti);
334 list_add(&ti->instance_list, &atimer->instance_head);
337 return ti;
340 void ct_timer_prepare(struct ct_timer_instance *ti)
342 if (ti->timer_base->ops->prepare)
343 ti->timer_base->ops->prepare(ti);
344 ti->position = 0;
345 ti->running = 0;
348 void ct_timer_start(struct ct_timer_instance *ti)
350 struct ct_timer *atimer = ti->timer_base;
351 atimer->ops->start(ti);
354 void ct_timer_stop(struct ct_timer_instance *ti)
356 struct ct_timer *atimer = ti->timer_base;
357 atimer->ops->stop(ti);
360 void ct_timer_instance_free(struct ct_timer_instance *ti)
362 struct ct_timer *atimer = ti->timer_base;
364 atimer->ops->stop(ti); /* to be sure */
366 atimer->ops->free_instance(ti);
369 list_del(&ti->instance_list);
372 kfree(ti);