Lines Matching refs:usx2y

28 #include "usx2y.h"
65 struct usx2ydev *usx2y = subs->usx2y;
70 dev_err(&usx2y->dev->dev,
76 len = urb->iso_frame_desc[i].actual_length / usx2y->stride;
78 dev_dbg(&usx2y->dev->dev, "%s: 0 == len ERROR!\n", __func__);
85 blen = cnt * usx2y->stride;
86 memcpy(runtime->dma_area + hwptr_done * usx2y->stride, cp, blen);
87 memcpy(runtime->dma_area, cp + blen, len * usx2y->stride - blen);
89 memcpy(runtime->dma_area + hwptr_done * usx2y->stride, cp,
90 len * usx2y->stride);
122 struct usx2ydev *usx2y = subs->usx2y;
129 counts = cap_urb->iso_frame_desc[pack].actual_length / usx2y->stride;
132 dev_err(&usx2y->dev->dev, "%s: should not be here with counts=%i\n",
151 subs->hwptr * usx2y->stride, len * usx2y->stride);
152 memcpy(subs->tmpbuf + len * usx2y->stride,
153 runtime->dma_area, (count - len) * usx2y->stride);
158 urb->transfer_buffer = runtime->dma_area + subs->hwptr * usx2y->stride;
166 urb->transfer_buffer_length = count * usx2y->stride;
178 int len = urb->actual_length / subs->usx2y->stride;
198 urb->dev = subs->usx2y->dev; /* we need to set this at each time */
261 static void usx2y_clients_stop(struct usx2ydev *usx2y)
268 subs = usx2y->subs[s];
270 dev_dbg(&usx2y->dev->dev, "%s: %i %p state=%i\n",
276 subs = usx2y->subs[s];
283 dev_dbg(&usx2y->dev->dev,
289 usx2y->prepare_subs = NULL;
290 wake_up(&usx2y->prepare_wait_queue);
293 static void usx2y_error_urb_status(struct usx2ydev *usx2y,
296 dev_err(&usx2y->dev->dev, "%s: ep=%i stalled with status=%i\n",
299 usx2y_clients_stop(usx2y);
305 struct usx2ydev *usx2y = subs->usx2y;
309 dev_dbg(&usx2y->dev->dev,
312 usb_get_current_frame_number(usx2y->dev),
318 usx2y_error_urb_status(usx2y, subs, urb);
324 capsubs = usx2y->subs[SNDRV_PCM_STREAM_CAPTURE];
325 playbacksubs = usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK];
332 usx2y->wait_iso_frame += nr_of_packs();
334 usx2y_clients_stop(usx2y);
339 static void usx2y_urbs_set_complete(struct usx2ydev *usx2y,
347 subs = usx2y->subs[s];
358 static void usx2y_subs_startup_finish(struct usx2ydev *usx2y)
360 usx2y_urbs_set_complete(usx2y, i_usx2y_urb_complete);
361 usx2y->prepare_subs = NULL;
367 struct usx2ydev *usx2y = subs->usx2y;
368 struct snd_usx2y_substream *prepare_subs = usx2y->prepare_subs;
372 usx2y_subs_startup_finish(usx2y);
374 wake_up(&usx2y->prepare_wait_queue);
383 dev_dbg(&subs->usx2y->dev->dev,
410 dev_dbg(&subs->usx2y->dev->dev, "%s %i\n", __func__, subs->endpoint);
413 subs != subs->usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK]);
426 int is_playback = subs == subs->usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK];
427 struct usb_device *dev = subs->usx2y->dev;
475 struct usx2ydev *usx2y = subs->usx2y;
477 usx2y->prepare_subs = subs;
480 usx2y_urbs_set_complete(usx2y, i_usx2y_subs_startup);
486 struct usx2ydev *usx2y = subs->usx2y;
495 struct snd_usx2y_substream *subs = usx2y->subs[i];
508 urb->dev = usx2y->dev;
522 usx2y->wait_iso_frame = urb->start_frame;
531 wait_event(usx2y->prepare_wait_queue, !usx2y->prepare_subs);
537 usx2y_subs_startup_finish(usx2y);
538 usx2y_clients_stop(usx2y); // something is completely wrong > stop everything
562 dev_dbg(&subs->usx2y->dev->dev, "%s(START)\n", __func__);
564 atomic_read(&subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE]->state) >= STATE_PREPARED) {
571 dev_dbg(&subs->usx2y->dev->dev, "%s(STOP)\n", __func__);
669 struct usx2ydev *usx2y = urb->context;
674 if (!--usx2y->us04->len)
675 wake_up(&usx2y->in04_wait_queue);
678 static int usx2y_rate_set(struct usx2ydev *usx2y, int rate)
686 if (usx2y->rate != rate) {
708 usb_fill_bulk_urb(us->urb[i], usx2y->dev, usb_sndbulkpipe(usx2y->dev, 4),
709 usbdata + i, 2, i_usx2y_04int, usx2y);
715 usx2y->us04 = us;
716 wait_event_timeout(usx2y->in04_wait_queue, !us->len, HZ);
717 usx2y->us04 = NULL;
734 usx2y->us04 = NULL;
738 usx2y->rate = rate;
745 static int usx2y_format_set(struct usx2ydev *usx2y, snd_pcm_format_t format)
752 usx2y->stride = 6;
755 usx2y->stride = 4;
757 list_for_each(p, &usx2y->midi_list) {
760 usb_kill_urb(usx2y->in04_urb);
761 err = usb_set_interface(usx2y->dev, 0, alternate);
763 dev_err(&usx2y->dev->dev, "%s: usb_set_interface error\n",
767 usx2y->in04_urb->dev = usx2y->dev;
768 err = usb_submit_urb(usx2y->in04_urb, GFP_KERNEL);
769 list_for_each(p, &usx2y->midi_list) {
772 usx2y->format = format;
773 usx2y->rate = 0;
785 struct usx2ydev *dev = usx2y(card);
790 mutex_lock(&usx2y(card)->pcm_mutex);
792 /* all pcm substreams off one usx2y have to operate at the same
813 mutex_unlock(&usx2y(card)->pcm_mutex);
826 mutex_lock(&subs->usx2y->pcm_mutex);
827 dev_dbg(&subs->usx2y->dev->dev, "%s(%p)\n", __func__, substream);
830 cap_subs = subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE];
840 playback_subs = subs->usx2y->subs[SNDRV_PCM_STREAM_PLAYBACK];
846 mutex_unlock(&subs->usx2y->pcm_mutex);
859 struct usx2ydev *usx2y = subs->usx2y;
860 struct snd_usx2y_substream *capsubs = subs->usx2y->subs[SNDRV_PCM_STREAM_CAPTURE];
863 dev_dbg(&usx2y->dev->dev, "%s(%p)\n", __func__, substream);
865 mutex_lock(&usx2y->pcm_mutex);
870 if (usx2y->format != runtime->format) {
871 err = usx2y_format_set(usx2y, runtime->format);
875 if (usx2y->rate != runtime->rate) {
876 err = usx2y_rate_set(usx2y, runtime->rate);
880 dev_dbg(&usx2y->dev->dev, "%s: starting capture pipe for %s\n",
891 mutex_unlock(&usx2y->pcm_mutex);
921 if (subs->usx2y->chip_status & USX2Y_STAT_CHIP_MMAP_PCM_URBS)
977 usx2y(card)->subs + 2 * usx2y(card)->pcm_devs;
985 usx2y_substream[i]->usx2y = usx2y(card);
992 err = snd_pcm_new(card, NAME_ALLCAPS" Audio", usx2y(card)->pcm_devs,
1008 sprintf(pcm->name, NAME_ALLCAPS" Audio #%d", usx2y(card)->pcm_devs);
1021 usx2y(card)->pcm_devs++;
1036 if (le16_to_cpu(usx2y(card)->dev->descriptor.idProduct) == USB_ID_US428) {
1041 if (le16_to_cpu(usx2y(card)->dev->descriptor.idProduct) != USB_ID_US122)
1042 err = usx2y_rate_set(usx2y(card), 44100); // Lets us428 recognize output-volume settings, disturbs us122.