• Home
  • Raw
  • Download

Lines Matching refs:subs

50 static int usx2y_usbpcm_urb_capt_retire(struct snd_usx2y_substream *subs)  in usx2y_usbpcm_urb_capt_retire()  argument
52 struct urb *urb = subs->completed_urb; in usx2y_usbpcm_urb_capt_retire()
53 struct snd_pcm_runtime *runtime = subs->pcm_substream->runtime; in usx2y_usbpcm_urb_capt_retire()
54 int i, lens = 0, hwptr_done = subs->hwptr_done; in usx2y_usbpcm_urb_capt_retire()
55 struct usx2ydev *usx2y = subs->usx2y; in usx2y_usbpcm_urb_capt_retire()
72 subs->hwptr_done = hwptr_done; in usx2y_usbpcm_urb_capt_retire()
73 subs->transfer_done += lens; in usx2y_usbpcm_urb_capt_retire()
75 if (subs->transfer_done >= runtime->period_size) { in usx2y_usbpcm_urb_capt_retire()
76 subs->transfer_done -= runtime->period_size; in usx2y_usbpcm_urb_capt_retire()
77 snd_pcm_period_elapsed(subs->pcm_substream); in usx2y_usbpcm_urb_capt_retire()
98 static int usx2y_hwdep_urb_play_prepare(struct snd_usx2y_substream *subs, in usx2y_hwdep_urb_play_prepare() argument
102 struct usx2ydev *usx2y = subs->usx2y; in usx2y_hwdep_urb_play_prepare()
104 struct snd_pcm_runtime *runtime = subs->pcm_substream->runtime; in usx2y_hwdep_urb_play_prepare()
125 if (atomic_read(&subs->state) != STATE_RUNNING) in usx2y_hwdep_urb_play_prepare()
137 static inline void usx2y_usbpcm_urb_capt_iso_advance(struct snd_usx2y_substream *subs, in usx2y_usbpcm_urb_capt_iso_advance() argument
143 if (NULL != subs) { in usx2y_usbpcm_urb_capt_iso_advance()
144 struct snd_usx2y_hwdep_pcm_shm *shm = subs->usx2y->hwdep_pcm_shm; in usx2y_usbpcm_urb_capt_iso_advance()
220 struct snd_usx2y_substream *subs = urb->context; in i_usx2y_usbpcm_urb_complete() local
221 struct usx2ydev *usx2y = subs->usx2y; in i_usx2y_usbpcm_urb_complete()
224 if (unlikely(atomic_read(&subs->state) < STATE_PREPARED)) { in i_usx2y_usbpcm_urb_complete()
227 subs->endpoint, usb_pipein(urb->pipe) ? "in" : "out", in i_usx2y_usbpcm_urb_complete()
232 usx2y_error_urb_status(usx2y, subs, urb); in i_usx2y_usbpcm_urb_complete()
236 subs->completed_urb = urb; in i_usx2y_usbpcm_urb_complete()
237 capsubs = usx2y->subs[SNDRV_PCM_STREAM_CAPTURE]; in i_usx2y_usbpcm_urb_complete()
238 capsubs2 = usx2y->subs[SNDRV_PCM_STREAM_CAPTURE + 2]; in i_usx2y_usbpcm_urb_complete()
239 playbacksubs = usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK]; in i_usx2y_usbpcm_urb_complete()
263 static void usx2y_usbpcm_urbs_release(struct snd_usx2y_substream *subs) in usx2y_usbpcm_urbs_release() argument
266 snd_printdd("snd_usx2y_urbs_release() %i\n", subs->endpoint); in usx2y_usbpcm_urbs_release()
268 usx2y_hwdep_urb_release(subs->urb + i); in usx2y_usbpcm_urbs_release()
279 struct snd_usx2y_substream *subs = urb->context; in i_usx2y_usbpcm_subs_startup() local
280 struct usx2ydev *usx2y = subs->usx2y; in i_usx2y_usbpcm_subs_startup()
285 if (prepare_subs == usx2y->subs[SNDRV_PCM_STREAM_CAPTURE]) { in i_usx2y_usbpcm_subs_startup()
286 struct snd_usx2y_substream *cap_subs2 = usx2y->subs[SNDRV_PCM_STREAM_CAPTURE + 2]; in i_usx2y_usbpcm_subs_startup()
300 static int usx2y_usbpcm_urbs_allocate(struct snd_usx2y_substream *subs) in usx2y_usbpcm_urbs_allocate() argument
304 int is_playback = subs == subs->usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK]; in usx2y_usbpcm_urbs_allocate()
305 struct usb_device *dev = subs->usx2y->dev; in usx2y_usbpcm_urbs_allocate()
307 pipe = is_playback ? usb_sndisocpipe(dev, subs->endpoint) : in usx2y_usbpcm_urbs_allocate()
308 usb_rcvisocpipe(dev, subs->endpoint); in usx2y_usbpcm_urbs_allocate()
309 subs->maxpacksize = usb_maxpacket(dev, pipe, is_playback); in usx2y_usbpcm_urbs_allocate()
310 if (!subs->maxpacksize) in usx2y_usbpcm_urbs_allocate()
315 struct urb **purb = subs->urb + i; in usx2y_usbpcm_urbs_allocate()
322 usx2y_usbpcm_urbs_release(subs); in usx2y_usbpcm_urbs_allocate()
326 subs->usx2y->hwdep_pcm_shm->playback : ( in usx2y_usbpcm_urbs_allocate()
327 subs->endpoint == 0x8 ? in usx2y_usbpcm_urbs_allocate()
328 subs->usx2y->hwdep_pcm_shm->capture0x8 : in usx2y_usbpcm_urbs_allocate()
329 subs->usx2y->hwdep_pcm_shm->capture0xA); in usx2y_usbpcm_urbs_allocate()
334 (*purb)->context = subs; in usx2y_usbpcm_urbs_allocate()
347 struct snd_usx2y_substream *subs = runtime->private_data, in snd_usx2y_usbpcm_hw_free() local
348 *cap_subs2 = subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE + 2]; in snd_usx2y_usbpcm_hw_free()
349 mutex_lock(&subs->usx2y->pcm_mutex); in snd_usx2y_usbpcm_hw_free()
353 struct snd_usx2y_substream *cap_subs = subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE]; in snd_usx2y_usbpcm_hw_free()
354 atomic_set(&subs->state, STATE_STOPPED); in snd_usx2y_usbpcm_hw_free()
355 usx2y_usbpcm_urbs_release(subs); in snd_usx2y_usbpcm_hw_free()
368 struct snd_usx2y_substream *playback_subs = subs->usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK]; in snd_usx2y_usbpcm_hw_free()
370 atomic_set(&subs->state, STATE_STOPPED); in snd_usx2y_usbpcm_hw_free()
373 usx2y_usbpcm_urbs_release(subs); in snd_usx2y_usbpcm_hw_free()
378 mutex_unlock(&subs->usx2y->pcm_mutex); in snd_usx2y_usbpcm_hw_free()
382 static void usx2y_usbpcm_subs_startup(struct snd_usx2y_substream *subs) in usx2y_usbpcm_subs_startup() argument
384 struct usx2ydev * usx2y = subs->usx2y; in usx2y_usbpcm_subs_startup()
385 usx2y->prepare_subs = subs; in usx2y_usbpcm_subs_startup()
386 subs->urb[0]->start_frame = -1; in usx2y_usbpcm_subs_startup()
391 static int usx2y_usbpcm_urbs_start(struct snd_usx2y_substream *subs) in usx2y_usbpcm_urbs_start() argument
394 stream = subs->pcm_substream->stream; in usx2y_usbpcm_urbs_start()
395 struct usx2ydev *usx2y = subs->usx2y; in usx2y_usbpcm_urbs_start()
403 struct snd_usx2y_substream *subs = usx2y->subs[stream + p]; in usx2y_usbpcm_urbs_start() local
404 if (subs != NULL) { in usx2y_usbpcm_urbs_start()
405 if ((err = usx2y_usbpcm_urbs_allocate(subs)) < 0) in usx2y_usbpcm_urbs_start()
407 subs->completed_urb = NULL; in usx2y_usbpcm_urbs_start()
412 struct snd_usx2y_substream *subs = usx2y->subs[p]; in usx2y_usbpcm_urbs_start() local
413 if (subs != NULL && atomic_read(&subs->state) >= STATE_PREPARED) in usx2y_usbpcm_urbs_start()
418 usx2y_usbpcm_subs_startup(subs); in usx2y_usbpcm_urbs_start()
421 struct snd_usx2y_substream *subs = usx2y->subs[stream + p]; in usx2y_usbpcm_urbs_start() local
422 if (subs != NULL) { in usx2y_usbpcm_urbs_start()
423 struct urb *urb = subs->urb[u]; in usx2y_usbpcm_urbs_start()
427 atomic_set(&subs->state, STATE_STARTING3); in usx2y_usbpcm_urbs_start()
430 urb->iso_frame_desc[pack].offset = subs->maxpacksize * (pack + u * nr_of_packs()); in usx2y_usbpcm_urbs_start()
431 urb->iso_frame_desc[pack].length = subs->maxpacksize; in usx2y_usbpcm_urbs_start()
433 urb->transfer_buffer_length = subs->maxpacksize * nr_of_packs(); in usx2y_usbpcm_urbs_start()
445 atomic_set(&subs->state, STATE_STARTING1); in usx2y_usbpcm_urbs_start()
453 if (atomic_read(&subs->state) != STATE_PREPARED) in usx2y_usbpcm_urbs_start()
472 struct snd_usx2y_substream *subs = runtime->private_data; in snd_usx2y_usbpcm_prepare() local
473 struct usx2ydev *usx2y = subs->usx2y; in snd_usx2y_usbpcm_prepare()
474 struct snd_usx2y_substream *capsubs = subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE]; in snd_usx2y_usbpcm_prepare()
487 usx2y_subs_prepare(subs); in snd_usx2y_usbpcm_prepare()
497 snd_printdd("starting capture pipe for %s\n", subs == capsubs ? in snd_usx2y_usbpcm_prepare()
503 if (subs != capsubs) { in snd_usx2y_usbpcm_prepare()
505 if (atomic_read(&subs->state) < STATE_PREPARED) { in snd_usx2y_usbpcm_prepare()
517 if (0 > (err = usx2y_usbpcm_urbs_start(subs))) in snd_usx2y_usbpcm_prepare()
554 struct snd_usx2y_substream *subs = ((struct snd_usx2y_substream **) in snd_usx2y_usbpcm_open() local
558 if (!(subs->usx2y->chip_status & USX2Y_STAT_CHIP_MMAP_PCM_URBS)) in snd_usx2y_usbpcm_open()
562 (subs->usx2y->subs[3] ? snd_usx2y_4c : snd_usx2y_2c); in snd_usx2y_usbpcm_open()
563 runtime->private_data = subs; in snd_usx2y_usbpcm_open()
564 subs->pcm_substream = substream; in snd_usx2y_usbpcm_open()
573 struct snd_usx2y_substream *subs = runtime->private_data; in snd_usx2y_usbpcm_close() local
575 subs->pcm_substream = NULL; in snd_usx2y_usbpcm_close()
598 struct snd_usx2y_substream *subs = dev->subs[i]; in usx2y_pcms_busy_check() local
599 if (subs && subs->pcm_substream && in usx2y_pcms_busy_check()
600 SUBSTREAM_BUSY(subs->pcm_substream)) in usx2y_pcms_busy_check()
724 pcm->private_data = usx2y(card)->subs; in usx2y_hwdep_pcm_new()