Lines Matching refs:line6pcm

25 static int submit_audio_in_urb(struct snd_line6_pcm *line6pcm)  in submit_audio_in_urb()  argument
32 index = find_first_zero_bit(&line6pcm->in.active_urbs, in submit_audio_in_urb()
33 line6pcm->line6->iso_buffers); in submit_audio_in_urb()
35 if (index < 0 || index >= line6pcm->line6->iso_buffers) { in submit_audio_in_urb()
36 dev_err(line6pcm->line6->ifcdev, "no free URB found\n"); in submit_audio_in_urb()
40 urb_in = line6pcm->in.urbs[index]; in submit_audio_in_urb()
47 fin->length = line6pcm->max_packet_size_in; in submit_audio_in_urb()
48 urb_size += line6pcm->max_packet_size_in; in submit_audio_in_urb()
52 line6pcm->in.buffer + in submit_audio_in_urb()
53 index * LINE6_ISO_PACKETS * line6pcm->max_packet_size_in; in submit_audio_in_urb()
55 urb_in->context = line6pcm; in submit_audio_in_urb()
60 set_bit(index, &line6pcm->in.active_urbs); in submit_audio_in_urb()
62 dev_err(line6pcm->line6->ifcdev, in submit_audio_in_urb()
72 int line6_submit_audio_in_all_urbs(struct snd_line6_pcm *line6pcm) in line6_submit_audio_in_all_urbs() argument
76 for (i = 0; i < line6pcm->line6->iso_buffers; ++i) { in line6_submit_audio_in_all_urbs()
77 ret = submit_audio_in_urb(line6pcm); in line6_submit_audio_in_all_urbs()
88 void line6_capture_copy(struct snd_line6_pcm *line6pcm, char *fbuf, int fsize) in line6_capture_copy() argument
91 get_substream(line6pcm, SNDRV_PCM_STREAM_CAPTURE); in line6_capture_copy()
94 line6pcm->properties->bytes_per_channel * in line6_capture_copy()
95 line6pcm->properties->capture_hw.channels_max; in line6_capture_copy()
101 if (line6pcm->in.pos_done + frames > runtime->buffer_size) { in line6_capture_copy()
108 len = runtime->buffer_size - line6pcm->in.pos_done; in line6_capture_copy()
112 line6pcm->in.pos_done * bytes_per_frame, fbuf, in line6_capture_copy()
118 dev_err(line6pcm->line6->ifcdev, in line6_capture_copy()
124 line6pcm->in.pos_done * bytes_per_frame, fbuf, fsize); in line6_capture_copy()
127 line6pcm->in.pos_done += frames; in line6_capture_copy()
128 if (line6pcm->in.pos_done >= runtime->buffer_size) in line6_capture_copy()
129 line6pcm->in.pos_done -= runtime->buffer_size; in line6_capture_copy()
132 void line6_capture_check_period(struct snd_line6_pcm *line6pcm, int length) in line6_capture_check_period() argument
135 get_substream(line6pcm, SNDRV_PCM_STREAM_CAPTURE); in line6_capture_check_period()
137 line6pcm->in.bytes += length; in line6_capture_check_period()
138 if (line6pcm->in.bytes >= line6pcm->in.period) { in line6_capture_check_period()
139 line6pcm->in.bytes %= line6pcm->in.period; in line6_capture_check_period()
140 spin_unlock(&line6pcm->in.lock); in line6_capture_check_period()
142 spin_lock(&line6pcm->in.lock); in line6_capture_check_period()
154 struct snd_line6_pcm *line6pcm = (struct snd_line6_pcm *)urb->context; in audio_in_callback() local
156 line6pcm->in.last_frame = urb->start_frame; in audio_in_callback()
159 for (index = 0; index < line6pcm->line6->iso_buffers; ++index) in audio_in_callback()
160 if (urb == line6pcm->in.urbs[index]) in audio_in_callback()
163 spin_lock_irqsave(&line6pcm->in.lock, flags); in audio_in_callback()
178 if (fsize > line6pcm->max_packet_size_in) { in audio_in_callback()
179 dev_err(line6pcm->line6->ifcdev, in audio_in_callback()
181 fsize, line6pcm->max_packet_size_in); in audio_in_callback()
195 line6pcm->prev_fbuf = fbuf; in audio_in_callback()
196 line6pcm->prev_fsize = fsize / in audio_in_callback()
197 (line6pcm->properties->bytes_per_channel * in audio_in_callback()
198 line6pcm->properties->capture_hw.channels_max); in audio_in_callback()
200 if (!test_bit(LINE6_STREAM_IMPULSE, &line6pcm->in.running) && in audio_in_callback()
201 test_bit(LINE6_STREAM_PCM, &line6pcm->in.running) && in audio_in_callback()
203 line6_capture_copy(line6pcm, fbuf, fsize); in audio_in_callback()
206 clear_bit(index, &line6pcm->in.active_urbs); in audio_in_callback()
208 if (test_and_clear_bit(index, &line6pcm->in.unlink_urbs)) in audio_in_callback()
212 submit_audio_in_urb(line6pcm); in audio_in_callback()
214 if (!test_bit(LINE6_STREAM_IMPULSE, &line6pcm->in.running) && in audio_in_callback()
215 test_bit(LINE6_STREAM_PCM, &line6pcm->in.running)) in audio_in_callback()
216 line6_capture_check_period(line6pcm, length); in audio_in_callback()
219 spin_unlock_irqrestore(&line6pcm->in.lock, flags); in audio_in_callback()
227 struct snd_line6_pcm *line6pcm = snd_pcm_substream_chip(substream); in snd_line6_capture_open() local
231 &line6pcm->properties->rates); in snd_line6_capture_open()
235 line6_pcm_acquire(line6pcm, LINE6_STREAM_CAPTURE_HELPER, false); in snd_line6_capture_open()
237 runtime->hw = line6pcm->properties->capture_hw; in snd_line6_capture_open()
244 struct snd_line6_pcm *line6pcm = snd_pcm_substream_chip(substream); in snd_line6_capture_close() local
246 line6_pcm_release(line6pcm, LINE6_STREAM_CAPTURE_HELPER); in snd_line6_capture_close()
262 int line6_create_audio_in_urbs(struct snd_line6_pcm *line6pcm) in line6_create_audio_in_urbs() argument
264 struct usb_line6 *line6 = line6pcm->line6; in line6_create_audio_in_urbs()
267 line6pcm->in.urbs = kcalloc(line6->iso_buffers, sizeof(struct urb *), in line6_create_audio_in_urbs()
269 if (line6pcm->in.urbs == NULL) in line6_create_audio_in_urbs()
277 urb = line6pcm->in.urbs[i] = in line6_create_audio_in_urbs()