Lines Matching refs:usx2y

9  what led to this part of the usx2y module:
10 It provides the alsa kernel half of the usx2y-alsa-jack driver pair.
14 That memory is mmaped by jack's usx2y driver.
15 Jack's usx2y driver is the first/last to read/write pcm data.
19 snd-usb-usx2y which needs memcpy() and additional buffers.
21 standard alsa's snd-usb-usx2y period shaping scheme falls away.
24 plain usx2y alsa mode is able to achieve 64frames, 4periods, but only at the
34 Currently the usx2y jack driver provides above 2 services.
38 Currently rawusb dma pcm buffer transport (this file) is only available to snd-usb-usx2y.
54 struct usx2ydev *usx2y = subs->usx2y;
57 if (usx2y->hwdep_pcm_shm->capture_iso_start < 0) { //FIXME
58 head = usx2y->hwdep_pcm_shm->captured_iso_head + 1;
59 if (head >= ARRAY_SIZE(usx2y->hwdep_pcm_shm->captured_iso))
61 usx2y->hwdep_pcm_shm->capture_iso_start = head;
62 dev_dbg(&usx2y->dev->dev, "cap start %i\n", head);
66 dev_err(&usx2y->dev->dev,
71 lens += urb->iso_frame_desc[i].actual_length / usx2y->stride;
87 struct usx2ydev *usx2y)
89 return (runtime->buffer_size * 1000) / usx2y->rate + 1; //FIXME: so far only correct period_size == 2^x ?
106 struct usx2ydev *usx2y = subs->usx2y;
107 struct snd_usx2y_hwdep_pcm_shm *shm = usx2y->hwdep_pcm_shm;
112 usx2y_iso_frames_per_buffer(runtime, usx2y);
121 counts = shm->captured_iso[shm->playback_iso_head].length / usx2y->stride;
123 dev_err(&usx2y->dev->dev, "should not be here with counts=%i\n", counts);
136 urb->transfer_buffer_length = count * usx2y->stride;
150 shm = subs->usx2y->hwdep_pcm_shm;
233 struct usx2ydev *usx2y = subs->usx2y;
237 dev_dbg(&usx2y->dev->dev,
239 usb_get_current_frame_number(usx2y->dev),
245 usx2y_error_urb_status(usx2y, subs, urb);
250 capsubs = usx2y->subs[SNDRV_PCM_STREAM_CAPTURE];
251 capsubs2 = usx2y->subs[SNDRV_PCM_STREAM_CAPTURE + 2];
252 playbacksubs = usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK];
257 usx2y->wait_iso_frame += nr_of_packs();
259 usx2y_clients_stop(usx2y);
278 dev_dbg(&subs->usx2y->dev->dev,
284 static void usx2y_usbpcm_subs_startup_finish(struct usx2ydev *usx2y)
286 usx2y_urbs_set_complete(usx2y, i_usx2y_usbpcm_urb_complete);
287 usx2y->prepare_subs = NULL;
293 struct usx2ydev *usx2y = subs->usx2y;
294 struct snd_usx2y_substream *prepare_subs = usx2y->prepare_subs;
300 if (prepare_subs == usx2y->subs[SNDRV_PCM_STREAM_CAPTURE]) {
301 cap_subs2 = usx2y->subs[SNDRV_PCM_STREAM_CAPTURE + 2];
305 usx2y_usbpcm_subs_startup_finish(usx2y);
306 wake_up(&usx2y->prepare_wait_queue);
319 int is_playback = subs == subs->usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK];
320 struct usb_device *dev = subs->usx2y->dev;
342 subs->usx2y->hwdep_pcm_shm->playback : (
344 subs->usx2y->hwdep_pcm_shm->capture0x8 :
345 subs->usx2y->hwdep_pcm_shm->capture0xA);
368 mutex_lock(&subs->usx2y->pcm_mutex);
369 dev_dbg(&subs->usx2y->dev->dev, "%s(%p)\n", __func__, substream);
371 cap_subs2 = subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE + 2];
373 cap_subs = subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE];
387 playback_subs = subs->usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK];
397 mutex_unlock(&subs->usx2y->pcm_mutex);
403 struct usx2ydev *usx2y = subs->usx2y;
405 usx2y->prepare_subs = subs;
408 usx2y_urbs_set_complete(usx2y, i_usx2y_usbpcm_subs_startup);
414 struct usx2ydev *usx2y = subs->usx2y;
419 usx2y->hwdep_pcm_shm->captured_iso_head = -1;
420 usx2y->hwdep_pcm_shm->captured_iso_frames = 0;
424 struct snd_usx2y_substream *subs = usx2y->subs[stream + p];
434 struct snd_usx2y_substream *subs = usx2y->subs[p];
444 struct snd_usx2y_substream *subs = usx2y->subs[stream + p];
452 urb->dev = usx2y->dev;
467 usx2y->wait_iso_frame = urb->start_frame;
477 wait_event(usx2y->prepare_wait_queue, !usx2y->prepare_subs);
483 usx2y_subs_startup_finish(usx2y); // Call it now
484 usx2y_clients_stop(usx2y); // something is completely wrong > stop everything
501 struct usx2ydev *usx2y = subs->usx2y;
502 struct snd_usx2y_substream *capsubs = subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE];
505 dev_dbg(&usx2y->dev->dev, "snd_usx2y_pcm_prepare(%p)\n", substream);
507 mutex_lock(&usx2y->pcm_mutex);
509 if (!usx2y->hwdep_pcm_shm) {
510 usx2y->hwdep_pcm_shm = alloc_pages_exact(USX2Y_HWDEP_PCM_PAGES,
512 if (!usx2y->hwdep_pcm_shm) {
516 memset(usx2y->hwdep_pcm_shm, 0, USX2Y_HWDEP_PCM_PAGES);
523 if (usx2y->format != runtime->format) {
524 err = usx2y_format_set(usx2y, runtime->format);
528 if (usx2y->rate != runtime->rate) {
529 err = usx2y_rate_set(usx2y, runtime->rate);
533 dev_dbg(&usx2y->dev->dev,
542 usx2y->hwdep_pcm_shm->playback_iso_start = -1;
544 while (usx2y_iso_frames_per_buffer(runtime, usx2y) >
545 usx2y->hwdep_pcm_shm->captured_iso_frames) {
546 dev_dbg(&usx2y->dev->dev,
548 usx2y_iso_frames_per_buffer(runtime, usx2y),
549 usx2y->hwdep_pcm_shm->captured_iso_frames);
559 dev_dbg(&usx2y->dev->dev,
561 usx2y_iso_frames_per_buffer(runtime, usx2y),
562 usx2y->hwdep_pcm_shm->captured_iso_frames);
564 usx2y->hwdep_pcm_shm->capture_iso_start = -1;
568 mutex_unlock(&usx2y->pcm_mutex);
597 if (!(subs->usx2y->chip_status & USX2Y_STAT_CHIP_MMAP_PCM_URBS))
603 runtime->hw = (subs->usx2y->subs[3] ? snd_usx2y_4c : snd_usx2y_2c);
631 struct usx2ydev *dev = usx2y(card);
649 mutex_lock(&usx2y(card)->pcm_mutex);
652 usx2y(card)->chip_status |= USX2Y_STAT_CHIP_MMAP_PCM_URBS;
653 mutex_unlock(&usx2y(card)->pcm_mutex);
662 mutex_lock(&usx2y(card)->pcm_mutex);
665 usx2y(hw->card)->chip_status &= ~USX2Y_STAT_CHIP_MMAP_PCM_URBS;
666 mutex_unlock(&usx2y(card)->pcm_mutex);
699 struct usx2ydev *usx2y = hw->private_data;
701 if (!(usx2y->chip_status & USX2Y_STAT_CHIP_INIT))
711 if (!usx2y->hwdep_pcm_shm)
722 struct usx2ydev *usx2y = hwdep->private_data;
724 if (usx2y->hwdep_pcm_shm)
725 free_pages_exact(usx2y->hwdep_pcm_shm, USX2Y_HWDEP_PCM_PAGES);
733 struct usb_device *dev = usx2y(card)->dev;
743 hw->private_data = usx2y(card);
758 pcm->private_data = usx2y(card)->subs;