usb: gadget: f_uac1: disable ep in f_audio_disable()

The f_audio_disable() doesn't disable usb ep, and
this cause usb enumeration fail. So add usb ep
disable operation.

This patch also reinitializes the opts->bound flag
to false in f_audio_free(), and then it can setup
ALSA audio device again in f_audio_bind().

Change-Id: I7b10630f5085b1a03792bc4b9e7eabb02d2bd5a2
Signed-off-by: William Wu <william.wu@rock-chips.com>
This commit is contained in:
William Wu 2018-07-27 10:26:53 +08:00 committed by Tao Huang
parent e46fe08c85
commit 1d162b6ce6

View File

@ -671,6 +671,11 @@ static int f_audio_get_alt(struct usb_function *f, unsigned intf)
static void f_audio_disable(struct usb_function *f)
{
struct f_audio *audio = func_to_audio(f);
struct usb_ep *out_ep = audio->out_ep;
usb_ep_disable(out_ep);
return;
}
@ -969,6 +974,7 @@ static void f_audio_free(struct usb_function *f)
gaudio_cleanup(&audio->card);
opts = container_of(f->fi, struct f_uac1_opts, func_inst);
opts->bound = false;
kfree(audio);
mutex_lock(&opts->lock);
--opts->refcnt;