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.
55 struct usx2ydev *usx2y = subs->usx2y;
56 if (0 > usx2y->hwdep_pcm_shm->capture_iso_start) { //FIXME
57 int head = usx2y->hwdep_pcm_shm->captured_iso_head + 1;
58 if (head >= ARRAY_SIZE(usx2y->hwdep_pcm_shm->captured_iso))
60 usx2y->hwdep_pcm_shm->capture_iso_start = head;
68 lens += urb->iso_frame_desc[i].actual_length / usx2y->stride;
83 struct usx2ydev * usx2y)
85 return (runtime->buffer_size * 1000) / usx2y->rate + 1; //FIXME: so far only correct period_size == 2^x ?
102 struct usx2ydev *usx2y = subs->usx2y;
103 struct snd_usx2y_hwdep_pcm_shm *shm = usx2y->hwdep_pcm_shm;
108 usx2y_iso_frames_per_buffer(runtime, usx2y);
117 counts = shm->captured_iso[shm->playback_iso_head].length / usx2y->stride;
132 urb->transfer_buffer_length = count * usx2y->stride;
144 struct snd_usx2y_hwdep_pcm_shm *shm = subs->usx2y->hwdep_pcm_shm;
221 struct usx2ydev *usx2y = subs->usx2y;
226 usb_get_current_frame_number(usx2y->dev),
232 usx2y_error_urb_status(usx2y, subs, urb);
237 capsubs = usx2y->subs[SNDRV_PCM_STREAM_CAPTURE];
238 capsubs2 = usx2y->subs[SNDRV_PCM_STREAM_CAPTURE + 2];
239 playbacksubs = usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK];
244 usx2y->wait_iso_frame += nr_of_packs();
247 usx2y_clients_stop(usx2y);
271 static void usx2y_usbpcm_subs_startup_finish(struct usx2ydev * usx2y)
273 usx2y_urbs_set_complete(usx2y, i_usx2y_usbpcm_urb_complete);
274 usx2y->prepare_subs = NULL;
280 struct usx2ydev *usx2y = subs->usx2y;
281 struct snd_usx2y_substream *prepare_subs = usx2y->prepare_subs;
285 if (prepare_subs == usx2y->subs[SNDRV_PCM_STREAM_CAPTURE]) {
286 struct snd_usx2y_substream *cap_subs2 = usx2y->subs[SNDRV_PCM_STREAM_CAPTURE + 2];
290 usx2y_usbpcm_subs_startup_finish(usx2y);
291 wake_up(&usx2y->prepare_wait_queue);
304 int is_playback = subs == subs->usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK];
305 struct usb_device *dev = subs->usx2y->dev;
326 subs->usx2y->hwdep_pcm_shm->playback : (
328 subs->usx2y->hwdep_pcm_shm->capture0x8 :
329 subs->usx2y->hwdep_pcm_shm->capture0xA);
348 *cap_subs2 = subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE + 2];
349 mutex_lock(&subs->usx2y->pcm_mutex);
353 struct snd_usx2y_substream *cap_subs = subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE];
368 struct snd_usx2y_substream *playback_subs = subs->usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK];
378 mutex_unlock(&subs->usx2y->pcm_mutex);
384 struct usx2ydev * usx2y = subs->usx2y;
385 usx2y->prepare_subs = subs;
388 usx2y_urbs_set_complete(usx2y, i_usx2y_usbpcm_subs_startup);
395 struct usx2ydev *usx2y = subs->usx2y;
398 usx2y->hwdep_pcm_shm->captured_iso_head = -1;
399 usx2y->hwdep_pcm_shm->captured_iso_frames = 0;
403 struct snd_usx2y_substream *subs = usx2y->subs[stream + p];
412 struct snd_usx2y_substream *subs = usx2y->subs[p];
421 struct snd_usx2y_substream *subs = usx2y->subs[stream + p];
428 urb->dev = usx2y->dev;
441 usx2y->wait_iso_frame = urb->start_frame;
452 wait_event(usx2y->prepare_wait_queue, NULL == usx2y->prepare_subs);
458 usx2y_subs_startup_finish(usx2y); // Call it now
459 usx2y_clients_stop(usx2y); // something is completely wroong > stop evrything
473 struct usx2ydev *usx2y = subs->usx2y;
474 struct snd_usx2y_substream *capsubs = subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE];
478 if (NULL == usx2y->hwdep_pcm_shm) {
479 usx2y->hwdep_pcm_shm = alloc_pages_exact(sizeof(struct snd_usx2y_hwdep_pcm_shm),
481 if (!usx2y->hwdep_pcm_shm)
483 memset(usx2y->hwdep_pcm_shm, 0, sizeof(struct snd_usx2y_hwdep_pcm_shm));
486 mutex_lock(&usx2y->pcm_mutex);
491 if (usx2y->format != runtime->format)
492 if ((err = usx2y_format_set(usx2y, runtime->format)) < 0)
494 if (usx2y->rate != runtime->rate)
495 if ((err = usx2y_rate_set(usx2y, runtime->rate)) < 0)
504 usx2y->hwdep_pcm_shm->playback_iso_start = -1;
506 while (usx2y_iso_frames_per_buffer(runtime, usx2y) >
507 usx2y->hwdep_pcm_shm->captured_iso_frames) {
510 usx2y_iso_frames_per_buffer(runtime, usx2y),
511 usx2y->hwdep_pcm_shm->captured_iso_frames);
521 usx2y_iso_frames_per_buffer(runtime, usx2y),
522 usx2y->hwdep_pcm_shm->captured_iso_frames);
524 usx2y->hwdep_pcm_shm->capture_iso_start = -1;
527 mutex_unlock(&usx2y->pcm_mutex);
558 if (!(subs->usx2y->chip_status & USX2Y_STAT_CHIP_MMAP_PCM_URBS))
562 (subs->usx2y->subs[3] ? snd_usx2y_4c : snd_usx2y_2c);
594 struct usx2ydev *dev = usx2y(card);
611 mutex_lock(&usx2y(card)->pcm_mutex);
614 usx2y(card)->chip_status |= USX2Y_STAT_CHIP_MMAP_PCM_URBS;
615 mutex_unlock(&usx2y(card)->pcm_mutex);
625 mutex_lock(&usx2y(card)->pcm_mutex);
628 usx2y(hw->card)->chip_status &= ~USX2Y_STAT_CHIP_MMAP_PCM_URBS;
629 mutex_unlock(&usx2y(card)->pcm_mutex);
667 struct usx2ydev *usx2y = hw->private_data;
669 if (!(usx2y->chip_status & USX2Y_STAT_CHIP_INIT))
678 if (!usx2y->hwdep_pcm_shm) {
690 struct usx2ydev *usx2y = hwdep->private_data;
691 if (NULL != usx2y->hwdep_pcm_shm)
692 free_pages_exact(usx2y->hwdep_pcm_shm, sizeof(struct snd_usx2y_hwdep_pcm_shm));
701 struct usb_device *dev = usx2y(card)->dev;
709 hw->private_data = usx2y(card);
724 pcm->private_data = usx2y(card)->subs;