Lines Matching refs:usx2y

65 	struct usx2ydev	*usx2y = subs->usx2y;  in usx2y_urb_capt_retire()  local
75 len = urb->iso_frame_desc[i].actual_length / usx2y->stride; in usx2y_urb_capt_retire()
84 blen = cnt * usx2y->stride; in usx2y_urb_capt_retire()
85 memcpy(runtime->dma_area + hwptr_done * usx2y->stride, cp, blen); in usx2y_urb_capt_retire()
86 memcpy(runtime->dma_area, cp + blen, len * usx2y->stride - blen); in usx2y_urb_capt_retire()
88 memcpy(runtime->dma_area + hwptr_done * usx2y->stride, cp, in usx2y_urb_capt_retire()
89 len * usx2y->stride); in usx2y_urb_capt_retire()
121 struct usx2ydev *usx2y = subs->usx2y; in usx2y_urb_play_prepare() local
128 counts = cap_urb->iso_frame_desc[pack].actual_length / usx2y->stride; in usx2y_urb_play_prepare()
149 subs->hwptr * usx2y->stride, len * usx2y->stride); in usx2y_urb_play_prepare()
150 memcpy(subs->tmpbuf + len * usx2y->stride, in usx2y_urb_play_prepare()
151 runtime->dma_area, (count - len) * usx2y->stride); in usx2y_urb_play_prepare()
156 urb->transfer_buffer = runtime->dma_area + subs->hwptr * usx2y->stride; in usx2y_urb_play_prepare()
164 urb->transfer_buffer_length = count * usx2y->stride; in usx2y_urb_play_prepare()
176 int len = urb->actual_length / subs->usx2y->stride; in usx2y_urb_play_retire()
196 urb->dev = subs->usx2y->dev; /* we need to set this at each time */ in usx2y_urb_submit()
258 static void usx2y_clients_stop(struct usx2ydev *usx2y) in usx2y_clients_stop() argument
265 subs = usx2y->subs[s]; in usx2y_clients_stop()
272 subs = usx2y->subs[s]; in usx2y_clients_stop()
284 usx2y->prepare_subs = NULL; in usx2y_clients_stop()
285 wake_up(&usx2y->prepare_wait_queue); in usx2y_clients_stop()
288 static void usx2y_error_urb_status(struct usx2ydev *usx2y, in usx2y_error_urb_status() argument
293 usx2y_clients_stop(usx2y); in usx2y_error_urb_status()
299 struct usx2ydev *usx2y = subs->usx2y; in i_usx2y_urb_complete() local
304 usb_get_current_frame_number(usx2y->dev), in i_usx2y_urb_complete()
310 usx2y_error_urb_status(usx2y, subs, urb); in i_usx2y_urb_complete()
316 capsubs = usx2y->subs[SNDRV_PCM_STREAM_CAPTURE]; in i_usx2y_urb_complete()
317 playbacksubs = usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK]; in i_usx2y_urb_complete()
324 usx2y->wait_iso_frame += nr_of_packs(); in i_usx2y_urb_complete()
327 usx2y_clients_stop(usx2y); in i_usx2y_urb_complete()
332 static void usx2y_urbs_set_complete(struct usx2ydev *usx2y, in usx2y_urbs_set_complete() argument
340 subs = usx2y->subs[s]; in usx2y_urbs_set_complete()
351 static void usx2y_subs_startup_finish(struct usx2ydev *usx2y) in usx2y_subs_startup_finish() argument
353 usx2y_urbs_set_complete(usx2y, i_usx2y_urb_complete); in usx2y_subs_startup_finish()
354 usx2y->prepare_subs = NULL; in usx2y_subs_startup_finish()
360 struct usx2ydev *usx2y = subs->usx2y; in i_usx2y_subs_startup() local
361 struct snd_usx2y_substream *prepare_subs = usx2y->prepare_subs; in i_usx2y_subs_startup()
365 usx2y_subs_startup_finish(usx2y); in i_usx2y_subs_startup()
367 wake_up(&usx2y->prepare_wait_queue); in i_usx2y_subs_startup()
405 subs != subs->usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK]); in usx2y_urbs_release()
418 int is_playback = subs == subs->usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK]; in usx2y_urbs_allocate()
419 struct usb_device *dev = subs->usx2y->dev; in usx2y_urbs_allocate()
467 struct usx2ydev *usx2y = subs->usx2y; in usx2y_subs_startup() local
469 usx2y->prepare_subs = subs; in usx2y_subs_startup()
472 usx2y_urbs_set_complete(usx2y, i_usx2y_subs_startup); in usx2y_subs_startup()
478 struct usx2ydev *usx2y = subs->usx2y; in usx2y_urbs_start() local
487 struct snd_usx2y_substream *subs = usx2y->subs[i]; in usx2y_urbs_start()
500 urb->dev = usx2y->dev; in usx2y_urbs_start()
513 usx2y->wait_iso_frame = urb->start_frame; in usx2y_urbs_start()
522 wait_event(usx2y->prepare_wait_queue, !usx2y->prepare_subs); in usx2y_urbs_start()
528 usx2y_subs_startup_finish(usx2y); in usx2y_urbs_start()
529 usx2y_clients_stop(usx2y); // something is completely wrong > stop everything in usx2y_urbs_start()
555 atomic_read(&subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE]->state) >= STATE_PREPARED) { in snd_usx2y_pcm_trigger()
661 struct usx2ydev *usx2y = urb->context; in i_usx2y_04int() local
665 if (!--usx2y->us04->len) in i_usx2y_04int()
666 wake_up(&usx2y->in04_wait_queue); in i_usx2y_04int()
669 static int usx2y_rate_set(struct usx2ydev *usx2y, int rate) in usx2y_rate_set() argument
677 if (usx2y->rate != rate) { in usx2y_rate_set()
698 usb_fill_bulk_urb(us->urb[i], usx2y->dev, usb_sndbulkpipe(usx2y->dev, 4), in usx2y_rate_set()
699 usbdata + i, 2, i_usx2y_04int, usx2y); in usx2y_rate_set()
706 usx2y->us04 = us; in usx2y_rate_set()
707 wait_event_timeout(usx2y->in04_wait_queue, !us->len, HZ); in usx2y_rate_set()
708 usx2y->us04 = NULL; in usx2y_rate_set()
725 usx2y->us04 = NULL; in usx2y_rate_set()
729 usx2y->rate = rate; in usx2y_rate_set()
736 static int usx2y_format_set(struct usx2ydev *usx2y, snd_pcm_format_t format) in usx2y_format_set() argument
743 usx2y->stride = 6; in usx2y_format_set()
746 usx2y->stride = 4; in usx2y_format_set()
748 list_for_each(p, &usx2y->midi_list) { in usx2y_format_set()
751 usb_kill_urb(usx2y->in04_urb); in usx2y_format_set()
752 err = usb_set_interface(usx2y->dev, 0, alternate); in usx2y_format_set()
757 usx2y->in04_urb->dev = usx2y->dev; in usx2y_format_set()
758 err = usb_submit_urb(usx2y->in04_urb, GFP_KERNEL); in usx2y_format_set()
759 list_for_each(p, &usx2y->midi_list) { in usx2y_format_set()
762 usx2y->format = format; in usx2y_format_set()
763 usx2y->rate = 0; in usx2y_format_set()
775 struct usx2ydev *dev = usx2y(card); in snd_usx2y_pcm_hw_params()
780 mutex_lock(&usx2y(card)->pcm_mutex); in snd_usx2y_pcm_hw_params()
803 mutex_unlock(&usx2y(card)->pcm_mutex); in snd_usx2y_pcm_hw_params()
816 mutex_lock(&subs->usx2y->pcm_mutex); in snd_usx2y_pcm_hw_free()
820 cap_subs = subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE]; in snd_usx2y_pcm_hw_free()
831 playback_subs = subs->usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK]; in snd_usx2y_pcm_hw_free()
837 mutex_unlock(&subs->usx2y->pcm_mutex); in snd_usx2y_pcm_hw_free()
850 struct usx2ydev *usx2y = subs->usx2y; in snd_usx2y_pcm_prepare() local
851 struct snd_usx2y_substream *capsubs = subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE]; in snd_usx2y_pcm_prepare()
856 mutex_lock(&usx2y->pcm_mutex); in snd_usx2y_pcm_prepare()
861 if (usx2y->format != runtime->format) { in snd_usx2y_pcm_prepare()
862 err = usx2y_format_set(usx2y, runtime->format); in snd_usx2y_pcm_prepare()
866 if (usx2y->rate != runtime->rate) { in snd_usx2y_pcm_prepare()
867 err = usx2y_rate_set(usx2y, runtime->rate); in snd_usx2y_pcm_prepare()
881 mutex_unlock(&usx2y->pcm_mutex); in snd_usx2y_pcm_prepare()
911 if (subs->usx2y->chip_status & USX2Y_STAT_CHIP_MMAP_PCM_URBS) in snd_usx2y_pcm_open()
967 usx2y(card)->subs + 2 * usx2y(card)->pcm_devs; in usx2y_audio_stream_new()
975 usx2y_substream[i]->usx2y = usx2y(card); in usx2y_audio_stream_new()
982 err = snd_pcm_new(card, NAME_ALLCAPS" Audio", usx2y(card)->pcm_devs, in usx2y_audio_stream_new()
998 sprintf(pcm->name, NAME_ALLCAPS" Audio #%d", usx2y(card)->pcm_devs); in usx2y_audio_stream_new()
1011 usx2y(card)->pcm_devs++; in usx2y_audio_stream_new()
1026 if (le16_to_cpu(usx2y(card)->dev->descriptor.idProduct) == USB_ID_US428) { in usx2y_audio_create()
1031 if (le16_to_cpu(usx2y(card)->dev->descriptor.idProduct) != USB_ID_US122) in usx2y_audio_create()
1032 …err = usx2y_rate_set(usx2y(card), 44100); // Lets us428 recognize output-volume settings, disturbs… in usx2y_audio_create()