Lines Matching refs:line6pcm

33 	struct snd_line6_pcm *line6pcm = snd_kcontrol_chip(kcontrol);  in snd_line6_impulse_volume_get()  local
35 ucontrol->value.integer.value[0] = line6pcm->impulse_volume; in snd_line6_impulse_volume_get()
42 struct snd_line6_pcm *line6pcm = snd_kcontrol_chip(kcontrol); in snd_line6_impulse_volume_put() local
46 if (line6pcm->impulse_volume == value) in snd_line6_impulse_volume_put()
49 line6pcm->impulse_volume = value; in snd_line6_impulse_volume_put()
51 err = line6_pcm_acquire(line6pcm, LINE6_STREAM_IMPULSE, true); in snd_line6_impulse_volume_put()
53 line6pcm->impulse_volume = 0; in snd_line6_impulse_volume_put()
57 line6_pcm_release(line6pcm, LINE6_STREAM_IMPULSE); in snd_line6_impulse_volume_put()
76 struct snd_line6_pcm *line6pcm = snd_kcontrol_chip(kcontrol); in snd_line6_impulse_period_get() local
78 ucontrol->value.integer.value[0] = line6pcm->impulse_period; in snd_line6_impulse_period_get()
85 struct snd_line6_pcm *line6pcm = snd_kcontrol_chip(kcontrol); in snd_line6_impulse_period_put() local
88 if (line6pcm->impulse_period == value) in snd_line6_impulse_period_put()
91 line6pcm->impulse_period = value; in snd_line6_impulse_period_put()
98 static void line6_unlink_audio_urbs(struct snd_line6_pcm *line6pcm, in line6_unlink_audio_urbs() argument
103 for (i = 0; i < line6pcm->line6->iso_buffers; i++) { in line6_unlink_audio_urbs()
114 static void line6_wait_clear_audio_urbs(struct snd_line6_pcm *line6pcm, in line6_wait_clear_audio_urbs() argument
123 for (i = 0; i < line6pcm->line6->iso_buffers; i++) { in line6_wait_clear_audio_urbs()
133 dev_err(line6pcm->line6->ifcdev, in line6_wait_clear_audio_urbs()
138 get_stream(struct snd_line6_pcm *line6pcm, int direction) in get_stream() argument
141 &line6pcm->out : &line6pcm->in; in get_stream()
147 static int line6_buffer_acquire(struct snd_line6_pcm *line6pcm, in line6_buffer_acquire() argument
152 line6pcm->max_packet_size_out : in line6_buffer_acquire()
153 line6pcm->max_packet_size_in; in line6_buffer_acquire()
158 kmalloc(array3_size(line6pcm->line6->iso_buffers, in line6_buffer_acquire()
170 static void line6_buffer_release(struct snd_line6_pcm *line6pcm, in line6_buffer_release() argument
175 line6_wait_clear_audio_urbs(line6pcm, pstr); in line6_buffer_release()
182 static int line6_stream_start(struct snd_line6_pcm *line6pcm, int direction, in line6_stream_start() argument
186 struct line6_pcm_stream *pstr = get_stream(line6pcm, direction); in line6_stream_start()
195 ret = line6_submit_audio_out_all_urbs(line6pcm); in line6_stream_start()
197 ret = line6_submit_audio_in_all_urbs(line6pcm); in line6_stream_start()
207 static void line6_stream_stop(struct snd_line6_pcm *line6pcm, int direction, in line6_stream_stop() argument
211 struct line6_pcm_stream *pstr = get_stream(line6pcm, direction); in line6_stream_stop()
217 line6_unlink_audio_urbs(line6pcm, pstr); in line6_stream_stop()
220 line6pcm->prev_fbuf = NULL; in line6_stream_stop()
221 line6pcm->prev_fsize = 0; in line6_stream_stop()
230 struct snd_line6_pcm *line6pcm = snd_pcm_substream_chip(substream); in snd_line6_trigger() local
234 clear_bit(LINE6_FLAG_PREPARED, &line6pcm->flags); in snd_line6_trigger()
244 (line6pcm->line6->properties->capabilities & in snd_line6_trigger()
246 err = line6_stream_start(line6pcm, SNDRV_PCM_STREAM_PLAYBACK, in snd_line6_trigger()
251 err = line6_stream_start(line6pcm, s->stream, in snd_line6_trigger()
260 (line6pcm->line6->properties->capabilities & in snd_line6_trigger()
262 line6_stream_stop(line6pcm, SNDRV_PCM_STREAM_PLAYBACK, in snd_line6_trigger()
265 line6_stream_stop(line6pcm, s->stream, in snd_line6_trigger()
272 set_bit(LINE6_FLAG_PAUSE_PLAYBACK, &line6pcm->flags); in snd_line6_trigger()
278 clear_bit(LINE6_FLAG_PAUSE_PLAYBACK, &line6pcm->flags); in snd_line6_trigger()
292 struct snd_line6_pcm *line6pcm = snd_pcm_substream_chip(substream); in snd_line6_pointer() local
293 struct line6_pcm_stream *pstr = get_stream(line6pcm, substream->stream); in snd_line6_pointer()
301 int line6_pcm_acquire(struct snd_line6_pcm *line6pcm, int type, bool start) in line6_pcm_acquire() argument
307 mutex_lock(&line6pcm->state_mutex); in line6_pcm_acquire()
309 pstr = get_stream(line6pcm, dir); in line6_pcm_acquire()
310 ret = line6_buffer_acquire(line6pcm, pstr, dir, type); in line6_pcm_acquire()
314 line6_wait_clear_audio_urbs(line6pcm, pstr); in line6_pcm_acquire()
318 ret = line6_stream_start(line6pcm, dir, type); in line6_pcm_acquire()
324 mutex_unlock(&line6pcm->state_mutex); in line6_pcm_acquire()
326 line6_pcm_release(line6pcm, type); in line6_pcm_acquire()
332 void line6_pcm_release(struct snd_line6_pcm *line6pcm, int type) in line6_pcm_release() argument
337 mutex_lock(&line6pcm->state_mutex); in line6_pcm_release()
339 line6_stream_stop(line6pcm, dir, type); in line6_pcm_release()
341 pstr = get_stream(line6pcm, dir); in line6_pcm_release()
342 line6_buffer_release(line6pcm, pstr, type); in line6_pcm_release()
344 mutex_unlock(&line6pcm->state_mutex); in line6_pcm_release()
353 struct snd_line6_pcm *line6pcm = snd_pcm_substream_chip(substream); in snd_line6_hw_params() local
354 struct line6_pcm_stream *pstr = get_stream(line6pcm, substream->stream); in snd_line6_hw_params()
356 mutex_lock(&line6pcm->state_mutex); in snd_line6_hw_params()
357 ret = line6_buffer_acquire(line6pcm, pstr, substream->stream, in snd_line6_hw_params()
364 mutex_unlock(&line6pcm->state_mutex); in snd_line6_hw_params()
371 struct snd_line6_pcm *line6pcm = snd_pcm_substream_chip(substream); in snd_line6_hw_free() local
372 struct line6_pcm_stream *pstr = get_stream(line6pcm, substream->stream); in snd_line6_hw_free()
374 mutex_lock(&line6pcm->state_mutex); in snd_line6_hw_free()
375 line6_buffer_release(line6pcm, pstr, LINE6_STREAM_PCM); in snd_line6_hw_free()
376 mutex_unlock(&line6pcm->state_mutex); in snd_line6_hw_free()
397 struct snd_line6_pcm *line6pcm = snd_kcontrol_chip(kcontrol); in snd_line6_control_playback_get() local
400 ucontrol->value.integer.value[i] = line6pcm->volume_playback[i]; in snd_line6_control_playback_get()
410 struct snd_line6_pcm *line6pcm = snd_kcontrol_chip(kcontrol); in snd_line6_control_playback_put() local
413 if (line6pcm->volume_playback[i] != in snd_line6_control_playback_put()
415 line6pcm->volume_playback[i] = in snd_line6_control_playback_put()
471 struct snd_line6_pcm *line6pcm = snd_pcm_chip(pcm); in line6_cleanup_pcm() local
473 cleanup_urbs(&line6pcm->out, line6pcm->line6->iso_buffers); in line6_cleanup_pcm()
474 cleanup_urbs(&line6pcm->in, line6pcm->line6->iso_buffers); in line6_cleanup_pcm()
475 kfree(line6pcm); in line6_cleanup_pcm()
505 void line6_pcm_disconnect(struct snd_line6_pcm *line6pcm) in line6_pcm_disconnect() argument
507 line6_unlink_audio_urbs(line6pcm, &line6pcm->out); in line6_pcm_disconnect()
508 line6_unlink_audio_urbs(line6pcm, &line6pcm->in); in line6_pcm_disconnect()
509 line6_wait_clear_audio_urbs(line6pcm, &line6pcm->out); in line6_pcm_disconnect()
510 line6_wait_clear_audio_urbs(line6pcm, &line6pcm->in); in line6_pcm_disconnect()
524 struct snd_line6_pcm *line6pcm; in line6_init_pcm() local
533 line6pcm = kzalloc(sizeof(*line6pcm), GFP_KERNEL); in line6_init_pcm()
534 if (!line6pcm) in line6_init_pcm()
537 mutex_init(&line6pcm->state_mutex); in line6_init_pcm()
538 line6pcm->pcm = pcm; in line6_init_pcm()
539 line6pcm->properties = properties; in line6_init_pcm()
540 line6pcm->volume_playback[0] = line6pcm->volume_playback[1] = 255; in line6_init_pcm()
541 line6pcm->volume_monitor = 255; in line6_init_pcm()
542 line6pcm->line6 = line6; in line6_init_pcm()
544 spin_lock_init(&line6pcm->out.lock); in line6_init_pcm()
545 spin_lock_init(&line6pcm->in.lock); in line6_init_pcm()
546 line6pcm->impulse_period = LINE6_IMPULSE_DEFAULT_PERIOD; in line6_init_pcm()
548 line6->line6pcm = line6pcm; in line6_init_pcm()
550 pcm->private_data = line6pcm; in line6_init_pcm()
553 line6pcm->max_packet_size_in = in line6_init_pcm()
556 line6pcm->max_packet_size_out = in line6_init_pcm()
559 if (!line6pcm->max_packet_size_in || !line6pcm->max_packet_size_out) { in line6_init_pcm()
560 dev_err(line6pcm->line6->ifcdev, in line6_init_pcm()
565 err = line6_create_audio_out_urbs(line6pcm); in line6_init_pcm()
569 err = line6_create_audio_in_urbs(line6pcm); in line6_init_pcm()
576 snd_ctl_new1(&line6_controls[i], line6pcm)); in line6_init_pcm()
588 struct snd_line6_pcm *line6pcm = snd_pcm_substream_chip(substream); in snd_line6_prepare() local
589 struct line6_pcm_stream *pstr = get_stream(line6pcm, substream->stream); in snd_line6_prepare()
591 mutex_lock(&line6pcm->state_mutex); in snd_line6_prepare()
593 line6_wait_clear_audio_urbs(line6pcm, pstr); in snd_line6_prepare()
595 if (!test_and_set_bit(LINE6_FLAG_PREPARED, &line6pcm->flags)) { in snd_line6_prepare()
596 line6pcm->out.count = 0; in snd_line6_prepare()
597 line6pcm->out.pos = 0; in snd_line6_prepare()
598 line6pcm->out.pos_done = 0; in snd_line6_prepare()
599 line6pcm->out.bytes = 0; in snd_line6_prepare()
600 line6pcm->in.count = 0; in snd_line6_prepare()
601 line6pcm->in.pos_done = 0; in snd_line6_prepare()
602 line6pcm->in.bytes = 0; in snd_line6_prepare()
605 mutex_unlock(&line6pcm->state_mutex); in snd_line6_prepare()