Lines Matching refs:usx2y
54 struct usx2ydev *usx2y = subs->usx2y; in usx2y_usbpcm_urb_capt_retire() local
57 if (usx2y->hwdep_pcm_shm->capture_iso_start < 0) { //FIXME in usx2y_usbpcm_urb_capt_retire()
58 head = usx2y->hwdep_pcm_shm->captured_iso_head + 1; in usx2y_usbpcm_urb_capt_retire()
59 if (head >= ARRAY_SIZE(usx2y->hwdep_pcm_shm->captured_iso)) in usx2y_usbpcm_urb_capt_retire()
61 usx2y->hwdep_pcm_shm->capture_iso_start = head; in usx2y_usbpcm_urb_capt_retire()
71 lens += urb->iso_frame_desc[i].actual_length / usx2y->stride; in usx2y_usbpcm_urb_capt_retire()
87 struct usx2ydev *usx2y) in usx2y_iso_frames_per_buffer() argument
89 …return (runtime->buffer_size * 1000) / usx2y->rate + 1; //FIXME: so far only correct period_size =… in usx2y_iso_frames_per_buffer()
106 struct usx2ydev *usx2y = subs->usx2y; in usx2y_hwdep_urb_play_prepare() local
107 struct snd_usx2y_hwdep_pcm_shm *shm = usx2y->hwdep_pcm_shm; in usx2y_hwdep_urb_play_prepare()
112 usx2y_iso_frames_per_buffer(runtime, usx2y); in usx2y_hwdep_urb_play_prepare()
121 counts = shm->captured_iso[shm->playback_iso_head].length / usx2y->stride; in usx2y_hwdep_urb_play_prepare()
136 urb->transfer_buffer_length = count * usx2y->stride; in usx2y_hwdep_urb_play_prepare()
150 shm = subs->usx2y->hwdep_pcm_shm; in usx2y_usbpcm_urb_capt_iso_advance()
233 struct usx2ydev *usx2y = subs->usx2y; in i_usx2y_usbpcm_urb_complete() local
238 usb_get_current_frame_number(usx2y->dev), in i_usx2y_usbpcm_urb_complete()
244 usx2y_error_urb_status(usx2y, subs, urb); in i_usx2y_usbpcm_urb_complete()
249 capsubs = usx2y->subs[SNDRV_PCM_STREAM_CAPTURE]; in i_usx2y_usbpcm_urb_complete()
250 capsubs2 = usx2y->subs[SNDRV_PCM_STREAM_CAPTURE + 2]; in i_usx2y_usbpcm_urb_complete()
251 playbacksubs = usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK]; in i_usx2y_usbpcm_urb_complete()
256 usx2y->wait_iso_frame += nr_of_packs(); in i_usx2y_usbpcm_urb_complete()
259 usx2y_clients_stop(usx2y); in i_usx2y_usbpcm_urb_complete()
283 static void usx2y_usbpcm_subs_startup_finish(struct usx2ydev *usx2y) in usx2y_usbpcm_subs_startup_finish() argument
285 usx2y_urbs_set_complete(usx2y, i_usx2y_usbpcm_urb_complete); in usx2y_usbpcm_subs_startup_finish()
286 usx2y->prepare_subs = NULL; in usx2y_usbpcm_subs_startup_finish()
292 struct usx2ydev *usx2y = subs->usx2y; in i_usx2y_usbpcm_subs_startup() local
293 struct snd_usx2y_substream *prepare_subs = usx2y->prepare_subs; in i_usx2y_usbpcm_subs_startup()
299 if (prepare_subs == usx2y->subs[SNDRV_PCM_STREAM_CAPTURE]) { in i_usx2y_usbpcm_subs_startup()
300 cap_subs2 = usx2y->subs[SNDRV_PCM_STREAM_CAPTURE + 2]; in i_usx2y_usbpcm_subs_startup()
304 usx2y_usbpcm_subs_startup_finish(usx2y); in i_usx2y_usbpcm_subs_startup()
305 wake_up(&usx2y->prepare_wait_queue); in i_usx2y_usbpcm_subs_startup()
318 int is_playback = subs == subs->usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK]; in usx2y_usbpcm_urbs_allocate()
319 struct usb_device *dev = subs->usx2y->dev; in usx2y_usbpcm_urbs_allocate()
341 subs->usx2y->hwdep_pcm_shm->playback : ( in usx2y_usbpcm_urbs_allocate()
343 subs->usx2y->hwdep_pcm_shm->capture0x8 : in usx2y_usbpcm_urbs_allocate()
344 subs->usx2y->hwdep_pcm_shm->capture0xA); in usx2y_usbpcm_urbs_allocate()
367 mutex_lock(&subs->usx2y->pcm_mutex); in snd_usx2y_usbpcm_hw_free()
370 cap_subs2 = subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE + 2]; in snd_usx2y_usbpcm_hw_free()
372 cap_subs = subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE]; in snd_usx2y_usbpcm_hw_free()
386 playback_subs = subs->usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK]; in snd_usx2y_usbpcm_hw_free()
396 mutex_unlock(&subs->usx2y->pcm_mutex); in snd_usx2y_usbpcm_hw_free()
402 struct usx2ydev *usx2y = subs->usx2y; in usx2y_usbpcm_subs_startup() local
404 usx2y->prepare_subs = subs; in usx2y_usbpcm_subs_startup()
407 usx2y_urbs_set_complete(usx2y, i_usx2y_usbpcm_subs_startup); in usx2y_usbpcm_subs_startup()
413 struct usx2ydev *usx2y = subs->usx2y; in usx2y_usbpcm_urbs_start() local
418 usx2y->hwdep_pcm_shm->captured_iso_head = -1; in usx2y_usbpcm_urbs_start()
419 usx2y->hwdep_pcm_shm->captured_iso_frames = 0; in usx2y_usbpcm_urbs_start()
423 struct snd_usx2y_substream *subs = usx2y->subs[stream + p]; in usx2y_usbpcm_urbs_start()
433 struct snd_usx2y_substream *subs = usx2y->subs[p]; in usx2y_usbpcm_urbs_start()
443 struct snd_usx2y_substream *subs = usx2y->subs[stream + p]; in usx2y_usbpcm_urbs_start()
451 urb->dev = usx2y->dev; in usx2y_usbpcm_urbs_start()
465 usx2y->wait_iso_frame = urb->start_frame; in usx2y_usbpcm_urbs_start()
475 wait_event(usx2y->prepare_wait_queue, !usx2y->prepare_subs); in usx2y_usbpcm_urbs_start()
481 usx2y_subs_startup_finish(usx2y); // Call it now in usx2y_usbpcm_urbs_start()
482 usx2y_clients_stop(usx2y); // something is completely wrong > stop everything in usx2y_usbpcm_urbs_start()
499 struct usx2ydev *usx2y = subs->usx2y; in snd_usx2y_usbpcm_prepare() local
500 struct snd_usx2y_substream *capsubs = subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE]; in snd_usx2y_usbpcm_prepare()
505 mutex_lock(&usx2y->pcm_mutex); in snd_usx2y_usbpcm_prepare()
507 if (!usx2y->hwdep_pcm_shm) { in snd_usx2y_usbpcm_prepare()
508 usx2y->hwdep_pcm_shm = alloc_pages_exact(USX2Y_HWDEP_PCM_PAGES, in snd_usx2y_usbpcm_prepare()
510 if (!usx2y->hwdep_pcm_shm) { in snd_usx2y_usbpcm_prepare()
514 memset(usx2y->hwdep_pcm_shm, 0, USX2Y_HWDEP_PCM_PAGES); in snd_usx2y_usbpcm_prepare()
521 if (usx2y->format != runtime->format) { in snd_usx2y_usbpcm_prepare()
522 err = usx2y_format_set(usx2y, runtime->format); in snd_usx2y_usbpcm_prepare()
526 if (usx2y->rate != runtime->rate) { in snd_usx2y_usbpcm_prepare()
527 err = usx2y_rate_set(usx2y, runtime->rate); in snd_usx2y_usbpcm_prepare()
539 usx2y->hwdep_pcm_shm->playback_iso_start = -1; in snd_usx2y_usbpcm_prepare()
541 while (usx2y_iso_frames_per_buffer(runtime, usx2y) > in snd_usx2y_usbpcm_prepare()
542 usx2y->hwdep_pcm_shm->captured_iso_frames) { in snd_usx2y_usbpcm_prepare()
544 usx2y_iso_frames_per_buffer(runtime, usx2y), in snd_usx2y_usbpcm_prepare()
545 usx2y->hwdep_pcm_shm->captured_iso_frames); in snd_usx2y_usbpcm_prepare()
556 usx2y_iso_frames_per_buffer(runtime, usx2y), in snd_usx2y_usbpcm_prepare()
557 usx2y->hwdep_pcm_shm->captured_iso_frames); in snd_usx2y_usbpcm_prepare()
559 usx2y->hwdep_pcm_shm->capture_iso_start = -1; in snd_usx2y_usbpcm_prepare()
563 mutex_unlock(&usx2y->pcm_mutex); in snd_usx2y_usbpcm_prepare()
592 if (!(subs->usx2y->chip_status & USX2Y_STAT_CHIP_MMAP_PCM_URBS)) in snd_usx2y_usbpcm_open()
598 runtime->hw = (subs->usx2y->subs[3] ? snd_usx2y_4c : snd_usx2y_2c); in snd_usx2y_usbpcm_open()
626 struct usx2ydev *dev = usx2y(card); in usx2y_pcms_busy_check()
644 mutex_lock(&usx2y(card)->pcm_mutex); in snd_usx2y_hwdep_pcm_open()
647 usx2y(card)->chip_status |= USX2Y_STAT_CHIP_MMAP_PCM_URBS; in snd_usx2y_hwdep_pcm_open()
648 mutex_unlock(&usx2y(card)->pcm_mutex); in snd_usx2y_hwdep_pcm_open()
657 mutex_lock(&usx2y(card)->pcm_mutex); in snd_usx2y_hwdep_pcm_release()
660 usx2y(hw->card)->chip_status &= ~USX2Y_STAT_CHIP_MMAP_PCM_URBS; in snd_usx2y_hwdep_pcm_release()
661 mutex_unlock(&usx2y(card)->pcm_mutex); in snd_usx2y_hwdep_pcm_release()
694 struct usx2ydev *usx2y = hw->private_data; in snd_usx2y_hwdep_pcm_mmap() local
696 if (!(usx2y->chip_status & USX2Y_STAT_CHIP_INIT)) in snd_usx2y_hwdep_pcm_mmap()
705 if (!usx2y->hwdep_pcm_shm) in snd_usx2y_hwdep_pcm_mmap()
716 struct usx2ydev *usx2y = hwdep->private_data; in snd_usx2y_hwdep_pcm_private_free() local
718 if (usx2y->hwdep_pcm_shm) in snd_usx2y_hwdep_pcm_private_free()
719 free_pages_exact(usx2y->hwdep_pcm_shm, USX2Y_HWDEP_PCM_PAGES); in snd_usx2y_hwdep_pcm_private_free()
727 struct usb_device *dev = usx2y(card)->dev; in usx2y_hwdep_pcm_new()
737 hw->private_data = usx2y(card); in usx2y_hwdep_pcm_new()
752 pcm->private_data = usx2y(card)->subs; in usx2y_hwdep_pcm_new()