• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/sound/usb/usx2y/

Lines Matching defs:subs

62 static int usX2Y_usbpcm_urb_capt_retire(struct snd_usX2Y_substream *subs)
64 struct urb *urb = subs->completed_urb;
65 struct snd_pcm_runtime *runtime = subs->pcm_substream->runtime;
66 int i, lens = 0, hwptr_done = subs->hwptr_done;
67 struct usX2Ydev *usX2Y = subs->usX2Y;
84 subs->hwptr_done = hwptr_done;
85 subs->transfer_done += lens;
87 if (subs->transfer_done >= runtime->period_size) {
88 subs->transfer_done -= runtime->period_size;
89 snd_pcm_period_elapsed(subs->pcm_substream);
110 static int usX2Y_hwdep_urb_play_prepare(struct snd_usX2Y_substream *subs,
114 struct usX2Ydev *usX2Y = subs->usX2Y;
116 struct snd_pcm_runtime *runtime = subs->pcm_substream->runtime;
137 if (atomic_read(&subs->state) != state_RUNNING)
149 static inline void usX2Y_usbpcm_urb_capt_iso_advance(struct snd_usX2Y_substream *subs,
155 if (NULL != subs) {
156 struct snd_usX2Y_hwdep_pcm_shm *shm = subs->usX2Y->hwdep_pcm_shm;
232 struct snd_usX2Y_substream *subs = urb->context;
233 struct usX2Ydev *usX2Y = subs->usX2Y;
236 if (unlikely(atomic_read(&subs->state) < state_PREPARED)) {
239 subs->endpoint, usb_pipein(urb->pipe) ? "in" : "out",
244 usX2Y_error_urb_status(usX2Y, subs, urb);
248 subs->completed_urb = urb;
250 usX2Y_error_sequence(usX2Y, subs, urb);
254 capsubs = usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE];
255 capsubs2 = usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE + 2];
256 playbacksubs = usX2Y->subs[SNDRV_PCM_STREAM_PLAYBACK];
280 static void usX2Y_usbpcm_urbs_release(struct snd_usX2Y_substream *subs)
283 snd_printdd("snd_usX2Y_urbs_release() %i\n", subs->endpoint);
285 usX2Y_hwdep_urb_release(subs->urb + i);
296 struct snd_usX2Y_substream *subs = urb->context;
297 struct usX2Ydev *usX2Y = subs->usX2Y;
302 if (prepare_subs == usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE]) {
303 struct snd_usX2Y_substream *cap_subs2 = usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE + 2];
317 static int usX2Y_usbpcm_urbs_allocate(struct snd_usX2Y_substream *subs)
321 int is_playback = subs == subs->usX2Y->subs[SNDRV_PCM_STREAM_PLAYBACK];
322 struct usb_device *dev = subs->usX2Y->chip.dev;
324 pipe = is_playback ? usb_sndisocpipe(dev, subs->endpoint) :
325 usb_rcvisocpipe(dev, subs->endpoint);
326 subs->maxpacksize = usb_maxpacket(dev, pipe, is_playback);
327 if (!subs->maxpacksize)
332 struct urb **purb = subs->urb + i;
339 usX2Y_usbpcm_urbs_release(subs);
343 subs->usX2Y->hwdep_pcm_shm->playback : (
344 subs->endpoint == 0x8 ?
345 subs->usX2Y->hwdep_pcm_shm->capture0x8 :
346 subs->usX2Y->hwdep_pcm_shm->capture0xA);
351 (*purb)->context = subs;
364 struct snd_usX2Y_substream *subs = runtime->private_data,
365 *cap_subs2 = subs->usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE + 2];
366 mutex_lock(&subs->usX2Y->prepare_mutex);
370 struct snd_usX2Y_substream *cap_subs = subs->usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE];
371 atomic_set(&subs->state, state_STOPPED);
372 usX2Y_usbpcm_urbs_release(subs);
385 struct snd_usX2Y_substream *playback_subs = subs->usX2Y->subs[SNDRV_PCM_STREAM_PLAYBACK];
387 atomic_set(&subs->state, state_STOPPED);
390 usX2Y_usbpcm_urbs_release(subs);
395 mutex_unlock(&subs->usX2Y->prepare_mutex);
399 static void usX2Y_usbpcm_subs_startup(struct snd_usX2Y_substream *subs)
401 struct usX2Ydev * usX2Y = subs->usX2Y;
402 usX2Y->prepare_subs = subs;
403 subs->urb[0]->start_frame = -1;
408 static int usX2Y_usbpcm_urbs_start(struct snd_usX2Y_substream *subs)
411 stream = subs->pcm_substream->stream;
412 struct usX2Ydev *usX2Y = subs->usX2Y;
420 struct snd_usX2Y_substream *subs = usX2Y->subs[stream + p];
421 if (subs != NULL) {
422 if ((err = usX2Y_usbpcm_urbs_allocate(subs)) < 0)
424 subs->completed_urb = NULL;
429 struct snd_usX2Y_substream *subs = usX2Y->subs[p];
430 if (subs != NULL && atomic_read(&subs->state) >= state_PREPARED)
435 usX2Y_usbpcm_subs_startup(subs);
438 struct snd_usX2Y_substream *subs = usX2Y->subs[stream + p];
439 if (subs != NULL) {
440 struct urb *urb = subs->urb[u];
444 atomic_set(&subs->state, state_STARTING3);
448 urb->iso_frame_desc[pack].offset = subs->maxpacksize * (pack + u * nr_of_packs());
449 urb->iso_frame_desc[pack].length = subs->maxpacksize;
451 urb->transfer_buffer_length = subs->maxpacksize * nr_of_packs();
463 atomic_set(&subs->state, state_STARTING1);
471 if (atomic_read(&subs->state) != state_PREPARED)
490 struct snd_usX2Y_substream *subs = runtime->private_data;
491 struct usX2Ydev *usX2Y = subs->usX2Y;
492 struct snd_usX2Y_substream *capsubs = subs->usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE];
503 usX2Y_subs_prepare(subs);
513 snd_printdd("starting capture pipe for %s\n", subs == capsubs ?
519 if (subs != capsubs) {
521 if (atomic_read(&subs->state) < state_PREPARED) {
533 if (0 > (err = usX2Y_usbpcm_urbs_start(subs)))
570 struct snd_usX2Y_substream *subs = ((struct snd_usX2Y_substream **)
574 if (!(subs->usX2Y->chip_status & USX2Y_STAT_CHIP_MMAP_PCM_URBS))
578 (subs->usX2Y->subs[3] ? snd_usX2Y_4c : snd_usX2Y_2c);
579 runtime->private_data = subs;
580 subs->pcm_substream = substream;
589 struct snd_usX2Y_substream *subs = runtime->private_data;
591 subs->pcm_substream = NULL;
774 pcm->private_data = usX2Y(card)->subs;