USB: gadget: f_midi: setup SuperSpeed Plus descriptors
authorWill McVicker <willmcvicker@google.com>
Fri, 27 Nov 2020 14:05:57 +0000 (15:05 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Dec 2020 15:12:23 +0000 (16:12 +0100)
Needed for SuperSpeed Plus support for f_midi.  This allows the
gadget to work properly without crashing at SuperSpeed rates.

Cc: Felipe Balbi <balbi@kernel.org>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Will McVicker <willmcvicker@google.com>
Reviewed-by: Peter Chen <peter.chen@nxp.com>
Link: https://lore.kernel.org/r/20201127140559.381351-4-gregkh@linuxfoundation.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/gadget/function/f_midi.c

index 19d97940eeb933c5e01f9e0cce4e070cae9d39b7..8fff995b8dd5015538d778a5b70260662fe2feb1 100644 (file)
@@ -1048,6 +1048,12 @@ static int f_midi_bind(struct usb_configuration *c, struct usb_function *f)
                f->ss_descriptors = usb_copy_descriptors(midi_function);
                if (!f->ss_descriptors)
                        goto fail_f_midi;
+
+               if (gadget_is_superspeed_plus(c->cdev->gadget)) {
+                       f->ssp_descriptors = usb_copy_descriptors(midi_function);
+                       if (!f->ssp_descriptors)
+                               goto fail_f_midi;
+               }
        }
 
        kfree(midi_function);