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;
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;
136 urb->transfer_buffer_length = count * usx2y->stride;
150 shm = subs->usx2y->hwdep_pcm_shm;
233 struct usx2ydev *usx2y = subs->usx2y;
238 usb_get_current_frame_number(usx2y->dev),
244 usx2y_error_urb_status(usx2y, subs, urb);
249 capsubs = usx2y->subs[SNDRV_PCM_STREAM_CAPTURE];
250 capsubs2 = usx2y->subs[SNDRV_PCM_STREAM_CAPTURE + 2];
251 playbacksubs = usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK];
256 usx2y->wait_iso_frame += nr_of_packs();
259 usx2y_clients_stop(usx2y);
283 static void usx2y_usbpcm_subs_startup_finish(struct usx2ydev *usx2y)
285 usx2y_urbs_set_complete(usx2y, i_usx2y_usbpcm_urb_complete);
286 usx2y->prepare_subs = NULL;
292 struct usx2ydev *usx2y = subs->usx2y;
293 struct snd_usx2y_substream *prepare_subs = usx2y->prepare_subs;
299 if (prepare_subs == usx2y->subs[SNDRV_PCM_STREAM_CAPTURE]) {
300 cap_subs2 = usx2y->subs[SNDRV_PCM_STREAM_CAPTURE + 2];
304 usx2y_usbpcm_subs_startup_finish(usx2y);
305 wake_up(&usx2y->prepare_wait_queue);
318 int is_playback = subs == subs->usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK];
319 struct usb_device *dev = subs->usx2y->dev;
341 subs->usx2y->hwdep_pcm_shm->playback : (
343 subs->usx2y->hwdep_pcm_shm->capture0x8 :
344 subs->usx2y->hwdep_pcm_shm->capture0xA);
367 mutex_lock(&subs->usx2y->pcm_mutex);
370 cap_subs2 = subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE + 2];
372 cap_subs = subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE];
386 playback_subs = subs->usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK];
396 mutex_unlock(&subs->usx2y->pcm_mutex);
402 struct usx2ydev *usx2y = subs->usx2y;
404 usx2y->prepare_subs = subs;
407 usx2y_urbs_set_complete(usx2y, i_usx2y_usbpcm_subs_startup);
413 struct usx2ydev *usx2y = subs->usx2y;
418 usx2y->hwdep_pcm_shm->captured_iso_head = -1;
419 usx2y->hwdep_pcm_shm->captured_iso_frames = 0;
423 struct snd_usx2y_substream *subs = usx2y->subs[stream + p];
433 struct snd_usx2y_substream *subs = usx2y->subs[p];
443 struct snd_usx2y_substream *subs = usx2y->subs[stream + p];
451 urb->dev = usx2y->dev;
465 usx2y->wait_iso_frame = urb->start_frame;
475 wait_event(usx2y->prepare_wait_queue, !usx2y->prepare_subs);
481 usx2y_subs_startup_finish(usx2y); // Call it now
482 usx2y_clients_stop(usx2y); // something is completely wrong > stop everything
499 struct usx2ydev *usx2y = subs->usx2y;
500 struct snd_usx2y_substream *capsubs = subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE];
505 mutex_lock(&usx2y->pcm_mutex);
507 if (!usx2y->hwdep_pcm_shm) {
508 usx2y->hwdep_pcm_shm = alloc_pages_exact(USX2Y_HWDEP_PCM_PAGES,
510 if (!usx2y->hwdep_pcm_shm) {
514 memset(usx2y->hwdep_pcm_shm, 0, USX2Y_HWDEP_PCM_PAGES);
521 if (usx2y->format != runtime->format) {
522 err = usx2y_format_set(usx2y, runtime->format);
526 if (usx2y->rate != runtime->rate) {
527 err = usx2y_rate_set(usx2y, runtime->rate);
539 usx2y->hwdep_pcm_shm->playback_iso_start = -1;
541 while (usx2y_iso_frames_per_buffer(runtime, usx2y) >
542 usx2y->hwdep_pcm_shm->captured_iso_frames) {
544 usx2y_iso_frames_per_buffer(runtime, usx2y),
545 usx2y->hwdep_pcm_shm->captured_iso_frames);
556 usx2y_iso_frames_per_buffer(runtime, usx2y),
557 usx2y->hwdep_pcm_shm->captured_iso_frames);
559 usx2y->hwdep_pcm_shm->capture_iso_start = -1;
563 mutex_unlock(&usx2y->pcm_mutex);
592 if (!(subs->usx2y->chip_status & USX2Y_STAT_CHIP_MMAP_PCM_URBS))
598 runtime->hw = (subs->usx2y->subs[3] ? snd_usx2y_4c : snd_usx2y_2c);
626 struct usx2ydev *dev = usx2y(card);
644 mutex_lock(&usx2y(card)->pcm_mutex);
647 usx2y(card)->chip_status |= USX2Y_STAT_CHIP_MMAP_PCM_URBS;
648 mutex_unlock(&usx2y(card)->pcm_mutex);
657 mutex_lock(&usx2y(card)->pcm_mutex);
660 usx2y(hw->card)->chip_status &= ~USX2Y_STAT_CHIP_MMAP_PCM_URBS;
661 mutex_unlock(&usx2y(card)->pcm_mutex);
694 struct usx2ydev *usx2y = hw->private_data;
696 if (!(usx2y->chip_status & USX2Y_STAT_CHIP_INIT))
705 if (!usx2y->hwdep_pcm_shm)
716 struct usx2ydev *usx2y = hwdep->private_data;
718 if (usx2y->hwdep_pcm_shm)
719 free_pages_exact(usx2y->hwdep_pcm_shm, USX2Y_HWDEP_PCM_PAGES);
727 struct usb_device *dev = usx2y(card)->dev;
737 hw->private_data = usx2y(card);
752 pcm->private_data = usx2y(card)->subs;