aboutsummaryrefslogtreecommitdiffstats
path: root/sound/usb/line6/playback.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/usb/line6/playback.c')
-rw-r--r--sound/usb/line6/playback.c52
1 files changed, 0 insertions, 52 deletions
diff --git a/sound/usb/line6/playback.c b/sound/usb/line6/playback.c
index d619c1718306..3820ed08b342 100644
--- a/sound/usb/line6/playback.c
+++ b/sound/usb/line6/playback.c
@@ -290,58 +290,6 @@ int line6_submit_audio_out_all_urbs(struct snd_line6_pcm *line6pcm)
290 return 0; 290 return 0;
291} 291}
292 292
293/*
294 Unlink all currently active playback URBs.
295*/
296void line6_unlink_audio_out_urbs(struct snd_line6_pcm *line6pcm)
297{
298 unsigned int i;
299
300 for (i = 0; i < LINE6_ISO_BUFFERS; i++) {
301 if (test_bit(i, &line6pcm->out.active_urbs)) {
302 if (!test_and_set_bit(i, &line6pcm->out.unlink_urbs)) {
303 struct urb *u = line6pcm->out.urbs[i];
304
305 usb_unlink_urb(u);
306 }
307 }
308 }
309}
310
311/*
312 Wait until unlinking of all currently active playback URBs has been
313 finished.
314*/
315void line6_wait_clear_audio_out_urbs(struct snd_line6_pcm *line6pcm)
316{
317 int timeout = HZ;
318 unsigned int i;
319 int alive;
320
321 do {
322 alive = 0;
323 for (i = 0; i < LINE6_ISO_BUFFERS; i++) {
324 if (test_bit(i, &line6pcm->out.active_urbs))
325 alive++;
326 }
327 if (!alive)
328 break;
329 set_current_state(TASK_UNINTERRUPTIBLE);
330 schedule_timeout(1);
331 } while (--timeout > 0);
332 if (alive)
333 snd_printk(KERN_ERR "timeout: still %d active urbs..\n", alive);
334}
335
336/*
337 Unlink all currently active playback URBs, and wait for finishing.
338*/
339void line6_unlink_wait_clear_audio_out_urbs(struct snd_line6_pcm *line6pcm)
340{
341 line6_unlink_audio_out_urbs(line6pcm);
342 line6_wait_clear_audio_out_urbs(line6pcm);
343}
344
345void line6_free_playback_buffer(struct snd_line6_pcm *line6pcm) 293void line6_free_playback_buffer(struct snd_line6_pcm *line6pcm)
346{ 294{
347 kfree(line6pcm->out.buffer); 295 kfree(line6pcm->out.buffer);