usb: gadget: f_midi: set altsettings only for MIDIStreaming interface
This avoids duplication of USB requests for OUT endpoint and re-enabling endpoints. Signed-off-by: Felipe F. Tonello <eu@felipetonello.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
Родитель
03e43528ab
Коммит
919de443c2
|
@ -75,6 +75,7 @@ struct f_midi {
|
||||||
struct usb_ep *in_ep, *out_ep;
|
struct usb_ep *in_ep, *out_ep;
|
||||||
struct snd_card *card;
|
struct snd_card *card;
|
||||||
struct snd_rawmidi *rmidi;
|
struct snd_rawmidi *rmidi;
|
||||||
|
u8 ms_id;
|
||||||
|
|
||||||
struct snd_rawmidi_substream *in_substream[MAX_PORTS];
|
struct snd_rawmidi_substream *in_substream[MAX_PORTS];
|
||||||
struct snd_rawmidi_substream *out_substream[MAX_PORTS];
|
struct snd_rawmidi_substream *out_substream[MAX_PORTS];
|
||||||
|
@ -321,8 +322,8 @@ static int f_midi_set_alt(struct usb_function *f, unsigned intf, unsigned alt)
|
||||||
unsigned i;
|
unsigned i;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
/* For Control Device interface we do nothing */
|
/* we only set alt for MIDIStreaming interface */
|
||||||
if (intf == 0)
|
if (intf != midi->ms_id)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err = f_midi_start_ep(midi, f, midi->in_ep);
|
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;
|
goto fail;
|
||||||
ms_interface_desc.bInterfaceNumber = status;
|
ms_interface_desc.bInterfaceNumber = status;
|
||||||
ac_header_desc.baInterfaceNr[0] = status;
|
ac_header_desc.baInterfaceNr[0] = status;
|
||||||
|
midi->ms_id = status;
|
||||||
|
|
||||||
status = -ENODEV;
|
status = -ENODEV;
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче