This avoids duplication of USB requests for OUT endpoint and
re-enabling endpoints.

Signed-off-by: Felipe F. Tonello <e...@felipetonello.com>
---
 drivers/usb/gadget/function/f_midi.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/gadget/function/f_midi.c 
b/drivers/usb/gadget/function/f_midi.c
index 76ea53c..615d632 100644
--- a/drivers/usb/gadget/function/f_midi.c
+++ b/drivers/usb/gadget/function/f_midi.c
@@ -75,6 +75,7 @@ struct f_midi {
        struct usb_ep           *in_ep, *out_ep;
        struct snd_card         *card;
        struct snd_rawmidi      *rmidi;
+       u8                                      ms_id;
 
        struct snd_rawmidi_substream *in_substream[MAX_PORTS];
        struct snd_rawmidi_substream *out_substream[MAX_PORTS];
@@ -322,7 +323,7 @@ static int f_midi_set_alt(struct usb_function *f, unsigned 
intf, unsigned alt)
        int err;
 
        /* For Control Device interface we do nothing */
-       if (intf == 0)
+       if (intf != midi->ms_id)
                return 0;
 
        err = f_midi_start_ep(midi, f, midi->in_ep);
@@ -730,6 +731,7 @@ static int f_midi_bind(struct usb_configuration *c, struct 
usb_function *f)
                goto fail;
        ms_interface_desc.bInterfaceNumber = status;
        ac_header_desc.baInterfaceNr[0] = status;
+       midi->ms_id = status;
 
        status = -ENODEV;
 
-- 
2.5.0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to