Lines Matching refs:audio

303 	struct f_audio *audio = container_of(data, struct f_audio,
307 spin_lock_irq(&audio->lock);
308 if (list_empty(&audio->play_queue)) {
309 spin_unlock_irq(&audio->lock);
312 play_buf = list_first_entry(&audio->play_queue,
315 spin_unlock_irq(&audio->lock);
317 u_audio_playback(&audio->card, play_buf->buf, play_buf->actual);
323 struct f_audio *audio = req->context;
324 struct usb_composite_dev *cdev = audio->card.func.config->cdev;
325 struct f_audio_buf *copy_buf = audio->copy_buf;
330 opts = container_of(audio->card.func.fi, struct f_uac1_legacy_opts,
339 spin_lock_irq(&audio->lock);
340 list_add_tail(&copy_buf->list, &audio->play_queue);
341 spin_unlock_irq(&audio->lock);
342 schedule_work(&audio->playback_work);
350 audio->copy_buf = copy_buf;
362 struct f_audio *audio = req->context;
365 struct usb_ep *out_ep = audio->out_ep;
372 else if (audio->set_con) {
374 audio->set_con->set(audio->set_con, audio->set_cmd,
376 audio->set_con = NULL;
387 struct f_audio *audio = func_to_audio(f);
401 list_for_each_entry(cs, &audio->cs, list) {
405 audio->set_con = con;
413 audio->set_cmd = cmd;
414 req->context = audio;
423 struct f_audio *audio = func_to_audio(f);
438 list_for_each_entry(cs, &audio->cs, list) {
450 req->context = audio;
560 DBG(cdev, "audio req%02x.%02x v%04x i%04x l%d\n",
567 ERROR(cdev, "audio response on err %d\n", value);
576 struct f_audio *audio = func_to_audio(f);
578 struct usb_ep *out_ep = audio->out_ep;
597 if (intf == audio->ac_intf) {
604 } else if (intf == audio->as_intf) {
611 audio->copy_buf = f_audio_buffer_alloc(audio_buf_size);
612 if (IS_ERR(audio->copy_buf))
626 req->context = audio;
642 struct f_audio_buf *copy_buf = audio->copy_buf;
645 &audio->play_queue);
646 schedule_work(&audio->playback_work);
649 audio->as_alt = alt;
657 struct f_audio *audio = func_to_audio(f);
660 if (intf == audio->ac_intf)
661 return audio->ac_alt;
662 else if (intf == audio->as_intf)
663 return audio->as_alt;
678 static void f_audio_build_desc(struct f_audio *audio)
680 struct gaudio *card = &audio->card;
698 /* audio function driver setup/binding */
703 struct f_audio *audio = func_to_audio(f);
710 audio->card.gadget = c->cdev->gadget;
711 /* set up ASLA audio devices */
713 status = gaudio_setup(&audio->card);
730 f_audio_build_desc(audio);
737 audio->ac_intf = status;
738 audio->ac_alt = 0;
745 audio->as_intf = status;
746 audio->as_alt = 0;
754 audio->out_ep = ep;
755 audio->out_ep->desc = &as_out_ep_desc;
765 gaudio_cleanup(&audio->card);
784 static int control_selector_init(struct f_audio *audio)
786 INIT_LIST_HEAD(&audio->cs);
787 list_add(&feature_unit.list, &audio->cs);
966 struct f_audio *audio = func_to_audio(f);
969 gaudio_cleanup(&audio->card);
971 kfree(audio);
984 struct f_audio *audio;
988 audio = kzalloc(sizeof(*audio), GFP_KERNEL);
989 if (!audio)
992 audio->card.func.name = "g_audio";
998 INIT_LIST_HEAD(&audio->play_queue);
999 spin_lock_init(&audio->lock);
1001 audio->card.func.bind = f_audio_bind;
1002 audio->card.func.unbind = f_audio_unbind;
1003 audio->card.func.set_alt = f_audio_set_alt;
1004 audio->card.func.get_alt = f_audio_get_alt;
1005 audio->card.func.setup = f_audio_setup;
1006 audio->card.func.disable = f_audio_disable;
1007 audio->card.func.free_func = f_audio_free;
1009 control_selector_init(audio);
1011 INIT_WORK(&audio->playback_work, f_audio_playback_work);
1013 return &audio->card.func;