Lines Matching refs:dpcm

243 static void dummy_systimer_rearm(struct dummy_systimer_pcm *dpcm)
245 mod_timer(&dpcm->timer, jiffies +
246 DIV_ROUND_UP(dpcm->frac_period_rest, dpcm->rate));
249 static void dummy_systimer_update(struct dummy_systimer_pcm *dpcm)
253 delta = jiffies - dpcm->base_time;
256 dpcm->base_time += delta;
257 delta *= dpcm->rate;
258 dpcm->frac_pos += delta;
259 while (dpcm->frac_pos >= dpcm->frac_buffer_size)
260 dpcm->frac_pos -= dpcm->frac_buffer_size;
261 while (dpcm->frac_period_rest <= delta) {
262 dpcm->elapsed++;
263 dpcm->frac_period_rest += dpcm->frac_period_size;
265 dpcm->frac_period_rest -= delta;
270 struct dummy_systimer_pcm *dpcm = substream->runtime->private_data;
271 spin_lock(&dpcm->lock);
272 dpcm->base_time = jiffies;
273 dummy_systimer_rearm(dpcm);
274 spin_unlock(&dpcm->lock);
280 struct dummy_systimer_pcm *dpcm = substream->runtime->private_data;
281 spin_lock(&dpcm->lock);
282 del_timer(&dpcm->timer);
283 spin_unlock(&dpcm->lock);
290 struct dummy_systimer_pcm *dpcm = runtime->private_data;
292 dpcm->frac_pos = 0;
293 dpcm->rate = runtime->rate;
294 dpcm->frac_buffer_size = runtime->buffer_size * HZ;
295 dpcm->frac_period_size = runtime->period_size * HZ;
296 dpcm->frac_period_rest = dpcm->frac_period_size;
297 dpcm->elapsed = 0;
304 struct dummy_systimer_pcm *dpcm = from_timer(dpcm, t, timer);
308 spin_lock_irqsave(&dpcm->lock, flags);
309 dummy_systimer_update(dpcm);
310 dummy_systimer_rearm(dpcm);
311 elapsed = dpcm->elapsed;
312 dpcm->elapsed = 0;
313 spin_unlock_irqrestore(&dpcm->lock, flags);
315 snd_pcm_period_elapsed(dpcm->substream);
321 struct dummy_systimer_pcm *dpcm = substream->runtime->private_data;
324 spin_lock(&dpcm->lock);
325 dummy_systimer_update(dpcm);
326 pos = dpcm->frac_pos / HZ;
327 spin_unlock(&dpcm->lock);
333 struct dummy_systimer_pcm *dpcm;
335 dpcm = kzalloc(sizeof(*dpcm), GFP_KERNEL);
336 if (!dpcm)
338 substream->runtime->private_data = dpcm;
339 timer_setup(&dpcm->timer, dummy_systimer_callback, 0);
340 spin_lock_init(&dpcm->lock);
341 dpcm->substream = substream;
376 struct dummy_hrtimer_pcm *dpcm;
378 dpcm = container_of(timer, struct dummy_hrtimer_pcm, timer);
379 if (!atomic_read(&dpcm->running))
385 snd_pcm_period_elapsed(dpcm->substream);
386 if (!atomic_read(&dpcm->running))
389 hrtimer_forward_now(timer, dpcm->period_time);
395 struct dummy_hrtimer_pcm *dpcm = substream->runtime->private_data;
397 dpcm->base_time = hrtimer_cb_get_time(&dpcm->timer);
398 hrtimer_start(&dpcm->timer, dpcm->period_time, HRTIMER_MODE_REL_SOFT);
399 atomic_set(&dpcm->running, 1);
405 struct dummy_hrtimer_pcm *dpcm = substream->runtime->private_data;
407 atomic_set(&dpcm->running, 0);
408 if (!hrtimer_callback_running(&dpcm->timer))
409 hrtimer_cancel(&dpcm->timer);
413 static inline void dummy_hrtimer_sync(struct dummy_hrtimer_pcm *dpcm)
415 hrtimer_cancel(&dpcm->timer);
422 struct dummy_hrtimer_pcm *dpcm = runtime->private_data;
426 delta = ktime_us_delta(hrtimer_cb_get_time(&dpcm->timer),
427 dpcm->base_time);
436 struct dummy_hrtimer_pcm *dpcm = runtime->private_data;
441 dummy_hrtimer_sync(dpcm);
447 dpcm->period_time = ktime_set(sec, nsecs);
454 struct dummy_hrtimer_pcm *dpcm;
456 dpcm = kzalloc(sizeof(*dpcm), GFP_KERNEL);
457 if (!dpcm)
459 substream->runtime->private_data = dpcm;
460 hrtimer_init(&dpcm->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_SOFT);
461 dpcm->timer.function = dummy_hrtimer_callback;
462 dpcm->substream = substream;
463 atomic_set(&dpcm->running, 0);
469 struct dummy_hrtimer_pcm *dpcm = substream->runtime->private_data;
470 dummy_hrtimer_sync(dpcm);
471 kfree(dpcm);