Lines Matching refs:usX2Y
77 struct usX2Ydev *usX2Y = subs->usX2Y; in usX2Y_urb_capt_retire() local
87 len = urb->iso_frame_desc[i].actual_length / usX2Y->stride; in usX2Y_urb_capt_retire()
96 int blen = cnt * usX2Y->stride; in usX2Y_urb_capt_retire()
97 memcpy(runtime->dma_area + hwptr_done * usX2Y->stride, cp, blen); in usX2Y_urb_capt_retire()
98 memcpy(runtime->dma_area, cp + blen, len * usX2Y->stride - blen); in usX2Y_urb_capt_retire()
100 memcpy(runtime->dma_area + hwptr_done * usX2Y->stride, cp, in usX2Y_urb_capt_retire()
101 len * usX2Y->stride); in usX2Y_urb_capt_retire()
132 struct usX2Ydev *usX2Y = subs->usX2Y; in usX2Y_urb_play_prepare() local
138 counts = cap_urb->iso_frame_desc[pack].actual_length / usX2Y->stride; in usX2Y_urb_play_prepare()
160 subs->hwptr * usX2Y->stride, len * usX2Y->stride); in usX2Y_urb_play_prepare()
161 memcpy(subs->tmpbuf + len * usX2Y->stride, in usX2Y_urb_play_prepare()
162 runtime->dma_area, (count - len) * usX2Y->stride); in usX2Y_urb_play_prepare()
167 urb->transfer_buffer = runtime->dma_area + subs->hwptr * usX2Y->stride; in usX2Y_urb_play_prepare()
173 urb->transfer_buffer_length = count * usX2Y->stride; in usX2Y_urb_play_prepare()
185 int len = urb->actual_length / subs->usX2Y->stride; in usX2Y_urb_play_retire()
204 urb->dev = subs->usX2Y->dev; /* we need to set this at each time */ in usX2Y_urb_submit()
261 static void usX2Y_clients_stop(struct usX2Ydev *usX2Y) in usX2Y_clients_stop() argument
266 struct snd_usX2Y_substream *subs = usX2Y->subs[s]; in usX2Y_clients_stop()
273 struct snd_usX2Y_substream *subs = usX2Y->subs[s]; in usX2Y_clients_stop()
285 usX2Y->prepare_subs = NULL; in usX2Y_clients_stop()
286 wake_up(&usX2Y->prepare_wait_queue); in usX2Y_clients_stop()
289 static void usX2Y_error_urb_status(struct usX2Ydev *usX2Y, in usX2Y_error_urb_status() argument
294 usX2Y_clients_stop(usX2Y); in usX2Y_error_urb_status()
300 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()
317 struct snd_usX2Y_substream *capsubs = usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE], in i_usX2Y_urb_complete()
318 *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()
333 static void usX2Y_urbs_set_complete(struct usX2Ydev * usX2Y, in usX2Y_urbs_set_complete() argument
338 struct snd_usX2Y_substream *subs = usX2Y->subs[s]; in usX2Y_urbs_set_complete()
348 static void usX2Y_subs_startup_finish(struct usX2Ydev * usX2Y) in usX2Y_subs_startup_finish() argument
350 usX2Y_urbs_set_complete(usX2Y, i_usX2Y_urb_complete); in usX2Y_subs_startup_finish()
351 usX2Y->prepare_subs = NULL; in usX2Y_subs_startup_finish()
357 struct usX2Ydev *usX2Y = subs->usX2Y; in i_usX2Y_subs_startup() local
358 struct snd_usX2Y_substream *prepare_subs = usX2Y->prepare_subs; in i_usX2Y_subs_startup()
361 usX2Y_subs_startup_finish(usX2Y); in i_usX2Y_subs_startup()
363 wake_up(&usX2Y->prepare_wait_queue); in i_usX2Y_subs_startup()
399 subs != subs->usX2Y->subs[SNDRV_PCM_STREAM_PLAYBACK]); in usX2Y_urbs_release()
411 int is_playback = subs == subs->usX2Y->subs[SNDRV_PCM_STREAM_PLAYBACK]; in usX2Y_urbs_allocate()
412 struct usb_device *dev = subs->usX2Y->dev; in usX2Y_urbs_allocate()
459 struct usX2Ydev *usX2Y = subs->usX2Y; in usX2Y_subs_startup() local
460 usX2Y->prepare_subs = subs; in usX2Y_subs_startup()
463 usX2Y_urbs_set_complete(usX2Y, i_usX2Y_subs_startup); in usX2Y_subs_startup()
469 struct usX2Ydev *usX2Y = subs->usX2Y; in usX2Y_urbs_start() local
475 struct snd_usX2Y_substream *subs = usX2Y->subs[i]; in usX2Y_urbs_start()
488 urb->dev = usX2Y->dev; in usX2Y_urbs_start()
500 usX2Y->wait_iso_frame = urb->start_frame; in usX2Y_urbs_start()
508 wait_event(usX2Y->prepare_wait_queue, NULL == usX2Y->prepare_subs); in usX2Y_urbs_start()
514 usX2Y_subs_startup_finish(usX2Y); in usX2Y_urbs_start()
515 usX2Y_clients_stop(usX2Y); // something is completely wroong > stop evrything in usX2Y_urbs_start()
539 atomic_read(&subs->usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE]->state) >= state_PREPARED) { in snd_usX2Y_pcm_trigger()
646 struct usX2Ydev *usX2Y = urb->context; in i_usX2Y_04Int() local
650 if (0 == --usX2Y->US04->len) in i_usX2Y_04Int()
651 wake_up(&usX2Y->In04WaitQueue); in i_usX2Y_04Int()
654 static int usX2Y_rate_set(struct usX2Ydev *usX2Y, int rate) in usX2Y_rate_set() argument
661 if (usX2Y->rate != rate) { in usX2Y_rate_set()
679 usb_fill_bulk_urb(us->urb[i], usX2Y->dev, usb_sndbulkpipe(usX2Y->dev, 4), in usX2Y_rate_set()
680 usbdata + i, 2, i_usX2Y_04Int, usX2Y); in usX2Y_rate_set()
684 usX2Y->US04 = us; in usX2Y_rate_set()
685 wait_event_timeout(usX2Y->In04WaitQueue, 0 == us->len, HZ); in usX2Y_rate_set()
686 usX2Y->US04 = NULL; in usX2Y_rate_set()
701 usX2Y->US04 = NULL; in usX2Y_rate_set()
705 usX2Y->rate = rate; in usX2Y_rate_set()
713 static int usX2Y_format_set(struct usX2Ydev *usX2Y, snd_pcm_format_t format) in usX2Y_format_set() argument
719 usX2Y->stride = 6; in usX2Y_format_set()
722 usX2Y->stride = 4; in usX2Y_format_set()
724 list_for_each(p, &usX2Y->midi_list) { in usX2Y_format_set()
727 usb_kill_urb(usX2Y->In04urb); in usX2Y_format_set()
728 if ((err = usb_set_interface(usX2Y->dev, 0, alternate))) { in usX2Y_format_set()
732 usX2Y->In04urb->dev = usX2Y->dev; in usX2Y_format_set()
733 err = usb_submit_urb(usX2Y->In04urb, GFP_KERNEL); in usX2Y_format_set()
734 list_for_each(p, &usX2Y->midi_list) { in usX2Y_format_set()
737 usX2Y->format = format; in usX2Y_format_set()
738 usX2Y->rate = 0; in usX2Y_format_set()
750 struct usX2Ydev *dev = usX2Y(card); in snd_usX2Y_pcm_hw_params()
753 mutex_lock(&usX2Y(card)->pcm_mutex); in snd_usX2Y_pcm_hw_params()
786 mutex_unlock(&usX2Y(card)->pcm_mutex); in snd_usX2Y_pcm_hw_params()
797 mutex_lock(&subs->usX2Y->pcm_mutex); in snd_usX2Y_pcm_hw_free()
801 struct snd_usX2Y_substream *cap_subs = subs->usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE]; in snd_usX2Y_pcm_hw_free()
812 struct snd_usX2Y_substream *playback_subs = subs->usX2Y->subs[SNDRV_PCM_STREAM_PLAYBACK]; in snd_usX2Y_pcm_hw_free()
818 mutex_unlock(&subs->usX2Y->pcm_mutex); in snd_usX2Y_pcm_hw_free()
830 struct usX2Ydev *usX2Y = subs->usX2Y; in snd_usX2Y_pcm_prepare() local
831 struct snd_usX2Y_substream *capsubs = subs->usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE]; in snd_usX2Y_pcm_prepare()
835 mutex_lock(&usX2Y->pcm_mutex); in snd_usX2Y_pcm_prepare()
840 if (usX2Y->format != runtime->format) in snd_usX2Y_pcm_prepare()
841 if ((err = usX2Y_format_set(usX2Y, runtime->format)) < 0) in snd_usX2Y_pcm_prepare()
843 if (usX2Y->rate != runtime->rate) in snd_usX2Y_pcm_prepare()
844 if ((err = usX2Y_rate_set(usX2Y, runtime->rate)) < 0) in snd_usX2Y_pcm_prepare()
855 mutex_unlock(&usX2Y->pcm_mutex); in snd_usX2Y_pcm_prepare()
887 if (subs->usX2Y->chip_status & USX2Y_STAT_CHIP_MMAP_PCM_URBS) in snd_usX2Y_pcm_open()
947 usX2Y(card)->subs + 2 * usX2Y(card)->pcm_devs; in usX2Y_audio_stream_new()
956 usX2Y_substream[i]->usX2Y = usX2Y(card); in usX2Y_audio_stream_new()
963 err = snd_pcm_new(card, NAME_ALLCAPS" Audio", usX2Y(card)->pcm_devs, in usX2Y_audio_stream_new()
979 sprintf(pcm->name, NAME_ALLCAPS" Audio #%d", usX2Y(card)->pcm_devs); in usX2Y_audio_stream_new()
993 usX2Y(card)->pcm_devs++; in usX2Y_audio_stream_new()
1005 INIT_LIST_HEAD(&usX2Y(card)->pcm_list); in usX2Y_audio_create()
1009 if (le16_to_cpu(usX2Y(card)->dev->descriptor.idProduct) == USB_ID_US428) in usX2Y_audio_create()
1012 if (le16_to_cpu(usX2Y(card)->dev->descriptor.idProduct) != USB_ID_US122) in usX2Y_audio_create()
1013 …err = usX2Y_rate_set(usX2Y(card), 44100); // Lets us428 recognize output-volume settings, disturbs… in usX2Y_audio_create()