• Home
  • Raw
  • Download

Lines Matching full:dpcm

236 static void dummy_systimer_rearm(struct dummy_systimer_pcm *dpcm)  in dummy_systimer_rearm()  argument
238 mod_timer(&dpcm->timer, jiffies + in dummy_systimer_rearm()
239 (dpcm->frac_period_rest + dpcm->rate - 1) / dpcm->rate); in dummy_systimer_rearm()
242 static void dummy_systimer_update(struct dummy_systimer_pcm *dpcm) in dummy_systimer_update() argument
246 delta = jiffies - dpcm->base_time; in dummy_systimer_update()
249 dpcm->base_time += delta; in dummy_systimer_update()
250 delta *= dpcm->rate; in dummy_systimer_update()
251 dpcm->frac_pos += delta; in dummy_systimer_update()
252 while (dpcm->frac_pos >= dpcm->frac_buffer_size) in dummy_systimer_update()
253 dpcm->frac_pos -= dpcm->frac_buffer_size; in dummy_systimer_update()
254 while (dpcm->frac_period_rest <= delta) { in dummy_systimer_update()
255 dpcm->elapsed++; in dummy_systimer_update()
256 dpcm->frac_period_rest += dpcm->frac_period_size; in dummy_systimer_update()
258 dpcm->frac_period_rest -= delta; in dummy_systimer_update()
263 struct dummy_systimer_pcm *dpcm = substream->runtime->private_data; in dummy_systimer_start() local
264 spin_lock(&dpcm->lock); in dummy_systimer_start()
265 dpcm->base_time = jiffies; in dummy_systimer_start()
266 dummy_systimer_rearm(dpcm); in dummy_systimer_start()
267 spin_unlock(&dpcm->lock); in dummy_systimer_start()
273 struct dummy_systimer_pcm *dpcm = substream->runtime->private_data; in dummy_systimer_stop() local
274 spin_lock(&dpcm->lock); in dummy_systimer_stop()
275 del_timer(&dpcm->timer); in dummy_systimer_stop()
276 spin_unlock(&dpcm->lock); in dummy_systimer_stop()
283 struct dummy_systimer_pcm *dpcm = runtime->private_data; in dummy_systimer_prepare() local
285 dpcm->frac_pos = 0; in dummy_systimer_prepare()
286 dpcm->rate = runtime->rate; in dummy_systimer_prepare()
287 dpcm->frac_buffer_size = runtime->buffer_size * HZ; in dummy_systimer_prepare()
288 dpcm->frac_period_size = runtime->period_size * HZ; in dummy_systimer_prepare()
289 dpcm->frac_period_rest = dpcm->frac_period_size; in dummy_systimer_prepare()
290 dpcm->elapsed = 0; in dummy_systimer_prepare()
297 struct dummy_systimer_pcm *dpcm = from_timer(dpcm, t, timer); in dummy_systimer_callback() local
301 spin_lock_irqsave(&dpcm->lock, flags); in dummy_systimer_callback()
302 dummy_systimer_update(dpcm); in dummy_systimer_callback()
303 dummy_systimer_rearm(dpcm); in dummy_systimer_callback()
304 elapsed = dpcm->elapsed; in dummy_systimer_callback()
305 dpcm->elapsed = 0; in dummy_systimer_callback()
306 spin_unlock_irqrestore(&dpcm->lock, flags); in dummy_systimer_callback()
308 snd_pcm_period_elapsed(dpcm->substream); in dummy_systimer_callback()
314 struct dummy_systimer_pcm *dpcm = substream->runtime->private_data; in dummy_systimer_pointer() local
317 spin_lock(&dpcm->lock); in dummy_systimer_pointer()
318 dummy_systimer_update(dpcm); in dummy_systimer_pointer()
319 pos = dpcm->frac_pos / HZ; in dummy_systimer_pointer()
320 spin_unlock(&dpcm->lock); in dummy_systimer_pointer()
326 struct dummy_systimer_pcm *dpcm; in dummy_systimer_create() local
328 dpcm = kzalloc(sizeof(*dpcm), GFP_KERNEL); in dummy_systimer_create()
329 if (!dpcm) in dummy_systimer_create()
331 substream->runtime->private_data = dpcm; in dummy_systimer_create()
332 timer_setup(&dpcm->timer, dummy_systimer_callback, 0); in dummy_systimer_create()
333 spin_lock_init(&dpcm->lock); in dummy_systimer_create()
334 dpcm->substream = substream; in dummy_systimer_create()
369 struct dummy_hrtimer_pcm *dpcm; in dummy_hrtimer_callback() local
371 dpcm = container_of(timer, struct dummy_hrtimer_pcm, timer); in dummy_hrtimer_callback()
372 if (!atomic_read(&dpcm->running)) in dummy_hrtimer_callback()
378 snd_pcm_period_elapsed(dpcm->substream); in dummy_hrtimer_callback()
379 if (!atomic_read(&dpcm->running)) in dummy_hrtimer_callback()
382 hrtimer_forward_now(timer, dpcm->period_time); in dummy_hrtimer_callback()
388 struct dummy_hrtimer_pcm *dpcm = substream->runtime->private_data; in dummy_hrtimer_start() local
390 dpcm->base_time = hrtimer_cb_get_time(&dpcm->timer); in dummy_hrtimer_start()
391 hrtimer_start(&dpcm->timer, dpcm->period_time, HRTIMER_MODE_REL_SOFT); in dummy_hrtimer_start()
392 atomic_set(&dpcm->running, 1); in dummy_hrtimer_start()
398 struct dummy_hrtimer_pcm *dpcm = substream->runtime->private_data; in dummy_hrtimer_stop() local
400 atomic_set(&dpcm->running, 0); in dummy_hrtimer_stop()
401 if (!hrtimer_callback_running(&dpcm->timer)) in dummy_hrtimer_stop()
402 hrtimer_cancel(&dpcm->timer); in dummy_hrtimer_stop()
406 static inline void dummy_hrtimer_sync(struct dummy_hrtimer_pcm *dpcm) in dummy_hrtimer_sync() argument
408 hrtimer_cancel(&dpcm->timer); in dummy_hrtimer_sync()
415 struct dummy_hrtimer_pcm *dpcm = runtime->private_data; in dummy_hrtimer_pointer() local
419 delta = ktime_us_delta(hrtimer_cb_get_time(&dpcm->timer), in dummy_hrtimer_pointer()
420 dpcm->base_time); in dummy_hrtimer_pointer()
429 struct dummy_hrtimer_pcm *dpcm = runtime->private_data; in dummy_hrtimer_prepare() local
434 dummy_hrtimer_sync(dpcm); in dummy_hrtimer_prepare()
440 dpcm->period_time = ktime_set(sec, nsecs); in dummy_hrtimer_prepare()
447 struct dummy_hrtimer_pcm *dpcm; in dummy_hrtimer_create() local
449 dpcm = kzalloc(sizeof(*dpcm), GFP_KERNEL); in dummy_hrtimer_create()
450 if (!dpcm) in dummy_hrtimer_create()
452 substream->runtime->private_data = dpcm; in dummy_hrtimer_create()
453 hrtimer_init(&dpcm->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_SOFT); in dummy_hrtimer_create()
454 dpcm->timer.function = dummy_hrtimer_callback; in dummy_hrtimer_create()
455 dpcm->substream = substream; in dummy_hrtimer_create()
456 atomic_set(&dpcm->running, 0); in dummy_hrtimer_create()
462 struct dummy_hrtimer_pcm *dpcm = substream->runtime->private_data; in dummy_hrtimer_free() local
463 dummy_hrtimer_sync(dpcm); in dummy_hrtimer_free()
464 kfree(dpcm); in dummy_hrtimer_free()