• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6/sound/usb/usx2y/

Lines Matching refs:subs

63 static int usX2Y_usbpcm_urb_capt_retire(struct snd_usX2Y_substream *subs)
65 struct urb *urb = subs->completed_urb;
66 struct snd_pcm_runtime *runtime = subs->pcm_substream->runtime;
67 int i, lens = 0, hwptr_done = subs->hwptr_done;
68 struct usX2Ydev *usX2Y = subs->usX2Y;
85 subs->hwptr_done = hwptr_done;
86 subs->transfer_done += lens;
88 if (subs->transfer_done >= runtime->period_size) {
89 subs->transfer_done -= runtime->period_size;
90 snd_pcm_period_elapsed(subs->pcm_substream);
111 static int usX2Y_hwdep_urb_play_prepare(struct snd_usX2Y_substream *subs,
115 struct usX2Ydev *usX2Y = subs->usX2Y;
117 struct snd_pcm_runtime *runtime = subs->pcm_substream->runtime;
138 if (atomic_read(&subs->state) != state_RUNNING)
150 static inline void usX2Y_usbpcm_urb_capt_iso_advance(struct snd_usX2Y_substream *subs,
156 if (NULL != subs) {
157 struct snd_usX2Y_hwdep_pcm_shm *shm = subs->usX2Y->hwdep_pcm_shm;
233 struct snd_usX2Y_substream *subs = urb->context;
234 struct usX2Ydev *usX2Y = subs->usX2Y;
237 if (unlikely(atomic_read(&subs->state) < state_PREPARED)) {
240 subs->endpoint, usb_pipein(urb->pipe) ? "in" : "out",
245 usX2Y_error_urb_status(usX2Y, subs, urb);
249 subs->completed_urb = urb;
251 usX2Y_error_sequence(usX2Y, subs, urb);
255 capsubs = usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE];
256 capsubs2 = usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE + 2];
257 playbacksubs = usX2Y->subs[SNDRV_PCM_STREAM_PLAYBACK];
281 static void usX2Y_usbpcm_urbs_release(struct snd_usX2Y_substream *subs)
284 snd_printdd("snd_usX2Y_urbs_release() %i\n", subs->endpoint);
286 usX2Y_hwdep_urb_release(subs->urb + i);
297 struct snd_usX2Y_substream *subs = urb->context;
298 struct usX2Ydev *usX2Y = subs->usX2Y;
303 if (prepare_subs == usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE]) {
304 struct snd_usX2Y_substream *cap_subs2 = usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE + 2];
318 static int usX2Y_usbpcm_urbs_allocate(struct snd_usX2Y_substream *subs)
322 int is_playback = subs == subs->usX2Y->subs[SNDRV_PCM_STREAM_PLAYBACK];
323 struct usb_device *dev = subs->usX2Y->dev;
325 pipe = is_playback ? usb_sndisocpipe(dev, subs->endpoint) :
326 usb_rcvisocpipe(dev, subs->endpoint);
327 subs->maxpacksize = usb_maxpacket(dev, pipe, is_playback);
328 if (!subs->maxpacksize)
333 struct urb **purb = subs->urb + i;
340 usX2Y_usbpcm_urbs_release(subs);
344 subs->usX2Y->hwdep_pcm_shm->playback : (
345 subs->endpoint == 0x8 ?
346 subs->usX2Y->hwdep_pcm_shm->capture0x8 :
347 subs->usX2Y->hwdep_pcm_shm->capture0xA);
352 (*purb)->context = subs;
365 struct snd_usX2Y_substream *subs = runtime->private_data,
366 *cap_subs2 = subs->usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE + 2];
367 mutex_lock(&subs->usX2Y->prepare_mutex);
371 struct snd_usX2Y_substream *cap_subs = subs->usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE];
372 atomic_set(&subs->state, state_STOPPED);
373 usX2Y_usbpcm_urbs_release(subs);
386 struct snd_usX2Y_substream *playback_subs = subs->usX2Y->subs[SNDRV_PCM_STREAM_PLAYBACK];
388 atomic_set(&subs->state, state_STOPPED);
391 usX2Y_usbpcm_urbs_release(subs);
396 mutex_unlock(&subs->usX2Y->prepare_mutex);
400 static void usX2Y_usbpcm_subs_startup(struct snd_usX2Y_substream *subs)
402 struct usX2Ydev * usX2Y = subs->usX2Y;
403 usX2Y->prepare_subs = subs;
404 subs->urb[0]->start_frame = -1;
409 static int usX2Y_usbpcm_urbs_start(struct snd_usX2Y_substream *subs)
412 stream = subs->pcm_substream->stream;
413 struct usX2Ydev *usX2Y = subs->usX2Y;
421 struct snd_usX2Y_substream *subs = usX2Y->subs[stream + p];
422 if (subs != NULL) {
423 if ((err = usX2Y_usbpcm_urbs_allocate(subs)) < 0)
425 subs->completed_urb = NULL;
430 struct snd_usX2Y_substream *subs = usX2Y->subs[p];
431 if (subs != NULL && atomic_read(&subs->state) >= state_PREPARED)
436 usX2Y_usbpcm_subs_startup(subs);
439 struct snd_usX2Y_substream *subs = usX2Y->subs[stream + p];
440 if (subs != NULL) {
441 struct urb *urb = subs->urb[u];
445 atomic_set(&subs->state, state_STARTING3);
449 urb->iso_frame_desc[pack].offset = subs->maxpacksize * (pack + u * nr_of_packs());
450 urb->iso_frame_desc[pack].length = subs->maxpacksize;
452 urb->transfer_buffer_length = subs->maxpacksize * nr_of_packs();
464 atomic_set(&subs->state, state_STARTING1);
472 if (atomic_read(&subs->state) != state_PREPARED)
491 struct snd_usX2Y_substream *subs = runtime->private_data;
492 struct usX2Ydev *usX2Y = subs->usX2Y;
493 struct snd_usX2Y_substream *capsubs = subs->usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE];
504 usX2Y_subs_prepare(subs);
514 snd_printdd("starting capture pipe for %s\n", subs == capsubs ?
520 if (subs != capsubs) {
522 if (atomic_read(&subs->state) < state_PREPARED) {
534 if (0 > (err = usX2Y_usbpcm_urbs_start(subs)))
571 struct snd_usX2Y_substream *subs = ((struct snd_usX2Y_substream **)
575 if (!(subs->usX2Y->chip_status & USX2Y_STAT_CHIP_MMAP_PCM_URBS))
579 (subs->usX2Y->subs[3] ? snd_usX2Y_4c : snd_usX2Y_2c);
580 runtime->private_data = subs;
581 subs->pcm_substream = substream;
590 struct snd_usX2Y_substream *subs = runtime->private_data;
592 subs->pcm_substream = NULL;
769 pcm->private_data = usX2Y(card)->subs;