Lines Matching refs:usx2y

63 	struct usx2ydev	*usx2y = subs->usx2y;  in usx2y_urb_capt_retire()  local
73 len = urb->iso_frame_desc[i].actual_length / usx2y->stride; in usx2y_urb_capt_retire()
82 int blen = cnt * usx2y->stride; in usx2y_urb_capt_retire()
83 memcpy(runtime->dma_area + hwptr_done * usx2y->stride, cp, blen); in usx2y_urb_capt_retire()
84 memcpy(runtime->dma_area, cp + blen, len * usx2y->stride - blen); in usx2y_urb_capt_retire()
86 memcpy(runtime->dma_area + hwptr_done * usx2y->stride, cp, in usx2y_urb_capt_retire()
87 len * usx2y->stride); in usx2y_urb_capt_retire()
118 struct usx2ydev *usx2y = subs->usx2y; in usx2y_urb_play_prepare() local
124 counts = cap_urb->iso_frame_desc[pack].actual_length / usx2y->stride; in usx2y_urb_play_prepare()
146 subs->hwptr * usx2y->stride, len * usx2y->stride); in usx2y_urb_play_prepare()
147 memcpy(subs->tmpbuf + len * usx2y->stride, in usx2y_urb_play_prepare()
148 runtime->dma_area, (count - len) * usx2y->stride); in usx2y_urb_play_prepare()
153 urb->transfer_buffer = runtime->dma_area + subs->hwptr * usx2y->stride; in usx2y_urb_play_prepare()
159 urb->transfer_buffer_length = count * usx2y->stride; in usx2y_urb_play_prepare()
171 int len = urb->actual_length / subs->usx2y->stride; in usx2y_urb_play_retire()
190 urb->dev = subs->usx2y->dev; /* we need to set this at each time */ in usx2y_urb_submit()
247 static void usx2y_clients_stop(struct usx2ydev *usx2y) in usx2y_clients_stop() argument
252 struct snd_usx2y_substream *subs = usx2y->subs[s]; in usx2y_clients_stop()
259 struct snd_usx2y_substream *subs = usx2y->subs[s]; in usx2y_clients_stop()
271 usx2y->prepare_subs = NULL; in usx2y_clients_stop()
272 wake_up(&usx2y->prepare_wait_queue); in usx2y_clients_stop()
275 static void usx2y_error_urb_status(struct usx2ydev *usx2y, in usx2y_error_urb_status() argument
280 usx2y_clients_stop(usx2y); in usx2y_error_urb_status()
286 struct usx2ydev *usx2y = subs->usx2y; in i_usx2y_urb_complete() local
290 usb_get_current_frame_number(usx2y->dev), in i_usx2y_urb_complete()
296 usx2y_error_urb_status(usx2y, subs, urb); in i_usx2y_urb_complete()
303 struct snd_usx2y_substream *capsubs = usx2y->subs[SNDRV_PCM_STREAM_CAPTURE], in i_usx2y_urb_complete()
304 *playbacksubs = usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK]; in i_usx2y_urb_complete()
310 usx2y->wait_iso_frame += nr_of_packs(); in i_usx2y_urb_complete()
313 usx2y_clients_stop(usx2y); in i_usx2y_urb_complete()
319 static void usx2y_urbs_set_complete(struct usx2ydev * usx2y, in usx2y_urbs_set_complete() argument
324 struct snd_usx2y_substream *subs = usx2y->subs[s]; in usx2y_urbs_set_complete()
334 static void usx2y_subs_startup_finish(struct usx2ydev * usx2y) in usx2y_subs_startup_finish() argument
336 usx2y_urbs_set_complete(usx2y, i_usx2y_urb_complete); in usx2y_subs_startup_finish()
337 usx2y->prepare_subs = NULL; in usx2y_subs_startup_finish()
343 struct usx2ydev *usx2y = subs->usx2y; in i_usx2y_subs_startup() local
344 struct snd_usx2y_substream *prepare_subs = usx2y->prepare_subs; in i_usx2y_subs_startup()
347 usx2y_subs_startup_finish(usx2y); in i_usx2y_subs_startup()
349 wake_up(&usx2y->prepare_wait_queue); in i_usx2y_subs_startup()
385 subs != subs->usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK]); in usx2y_urbs_release()
397 int is_playback = subs == subs->usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK]; in usx2y_urbs_allocate()
398 struct usb_device *dev = subs->usx2y->dev; in usx2y_urbs_allocate()
445 struct usx2ydev *usx2y = subs->usx2y; in usx2y_subs_startup() local
446 usx2y->prepare_subs = subs; in usx2y_subs_startup()
449 usx2y_urbs_set_complete(usx2y, i_usx2y_subs_startup); in usx2y_subs_startup()
455 struct usx2ydev *usx2y = subs->usx2y; in usx2y_urbs_start() local
461 struct snd_usx2y_substream *subs = usx2y->subs[i]; in usx2y_urbs_start()
474 urb->dev = usx2y->dev; in usx2y_urbs_start()
486 usx2y->wait_iso_frame = urb->start_frame; in usx2y_urbs_start()
494 wait_event(usx2y->prepare_wait_queue, NULL == usx2y->prepare_subs); in usx2y_urbs_start()
500 usx2y_subs_startup_finish(usx2y); in usx2y_urbs_start()
501 usx2y_clients_stop(usx2y); // something is completely wroong > stop evrything in usx2y_urbs_start()
525 atomic_read(&subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE]->state) >= STATE_PREPARED) { in snd_usx2y_pcm_trigger()
632 struct usx2ydev *usx2y = urb->context; in i_usx2y_04int() local
636 if (0 == --usx2y->us04->len) in i_usx2y_04int()
637 wake_up(&usx2y->in04_wait_queue); in i_usx2y_04int()
640 static int usx2y_rate_set(struct usx2ydev *usx2y, int rate) in usx2y_rate_set() argument
647 if (usx2y->rate != rate) { in usx2y_rate_set()
666 usb_fill_bulk_urb(us->urb[i], usx2y->dev, usb_sndbulkpipe(usx2y->dev, 4), in usx2y_rate_set()
667 usbdata + i, 2, i_usx2y_04int, usx2y); in usx2y_rate_set()
674 usx2y->us04 = us; in usx2y_rate_set()
675 wait_event_timeout(usx2y->in04_wait_queue, 0 == us->len, HZ); in usx2y_rate_set()
676 usx2y->us04 = NULL; in usx2y_rate_set()
693 usx2y->us04 = NULL; in usx2y_rate_set()
697 usx2y->rate = rate; in usx2y_rate_set()
705 static int usx2y_format_set(struct usx2ydev *usx2y, snd_pcm_format_t format) in usx2y_format_set() argument
711 usx2y->stride = 6; in usx2y_format_set()
714 usx2y->stride = 4; in usx2y_format_set()
716 list_for_each(p, &usx2y->midi_list) { in usx2y_format_set()
719 usb_kill_urb(usx2y->in04_urb); in usx2y_format_set()
720 if ((err = usb_set_interface(usx2y->dev, 0, alternate))) { in usx2y_format_set()
724 usx2y->in04_urb->dev = usx2y->dev; in usx2y_format_set()
725 err = usb_submit_urb(usx2y->in04_urb, GFP_KERNEL); in usx2y_format_set()
726 list_for_each(p, &usx2y->midi_list) { in usx2y_format_set()
729 usx2y->format = format; in usx2y_format_set()
730 usx2y->rate = 0; in usx2y_format_set()
742 struct usx2ydev *dev = usx2y(card); in snd_usx2y_pcm_hw_params()
745 mutex_lock(&usx2y(card)->pcm_mutex); in snd_usx2y_pcm_hw_params()
770 mutex_unlock(&usx2y(card)->pcm_mutex); in snd_usx2y_pcm_hw_params()
781 mutex_lock(&subs->usx2y->pcm_mutex); in snd_usx2y_pcm_hw_free()
785 struct snd_usx2y_substream *cap_subs = subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE]; in snd_usx2y_pcm_hw_free()
796 struct snd_usx2y_substream *playback_subs = subs->usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK]; in snd_usx2y_pcm_hw_free()
802 mutex_unlock(&subs->usx2y->pcm_mutex); in snd_usx2y_pcm_hw_free()
814 struct usx2ydev *usx2y = subs->usx2y; in snd_usx2y_pcm_prepare() local
815 struct snd_usx2y_substream *capsubs = subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE]; in snd_usx2y_pcm_prepare()
819 mutex_lock(&usx2y->pcm_mutex); in snd_usx2y_pcm_prepare()
824 if (usx2y->format != runtime->format) in snd_usx2y_pcm_prepare()
825 if ((err = usx2y_format_set(usx2y, runtime->format)) < 0) in snd_usx2y_pcm_prepare()
827 if (usx2y->rate != runtime->rate) in snd_usx2y_pcm_prepare()
828 if ((err = usx2y_rate_set(usx2y, runtime->rate)) < 0) in snd_usx2y_pcm_prepare()
839 mutex_unlock(&usx2y->pcm_mutex); in snd_usx2y_pcm_prepare()
871 if (subs->usx2y->chip_status & USX2Y_STAT_CHIP_MMAP_PCM_URBS) in snd_usx2y_pcm_open()
931 usx2y(card)->subs + 2 * usx2y(card)->pcm_devs; in usx2y_audio_stream_new()
939 usx2y_substream[i]->usx2y = usx2y(card); in usx2y_audio_stream_new()
946 err = snd_pcm_new(card, NAME_ALLCAPS" Audio", usx2y(card)->pcm_devs, in usx2y_audio_stream_new()
962 sprintf(pcm->name, NAME_ALLCAPS" Audio #%d", usx2y(card)->pcm_devs); in usx2y_audio_stream_new()
975 usx2y(card)->pcm_devs++; in usx2y_audio_stream_new()
987 INIT_LIST_HEAD(&usx2y(card)->pcm_list); in usx2y_audio_create()
991 if (le16_to_cpu(usx2y(card)->dev->descriptor.idProduct) == USB_ID_US428) in usx2y_audio_create()
994 if (le16_to_cpu(usx2y(card)->dev->descriptor.idProduct) != USB_ID_US122) in usx2y_audio_create()
995 …err = usx2y_rate_set(usx2y(card), 44100); // Lets us428 recognize output-volume settings, disturbs… in usx2y_audio_create()