]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/usb/gadget/function/f_midi.c
Merge remote-tracking branch 'target-updates/for-next'
[karo-tx-linux.git] / drivers / usb / gadget / function / f_midi.c
index 0e2b8eda254e591328d2f299063ac171714e2093..42acb45e1ab42dd9436244bec16d4903603d6089 100644 (file)
@@ -302,8 +302,7 @@ static int f_midi_start_ep(struct f_midi *midi,
        int err;
        struct usb_composite_dev *cdev = f->config->cdev;
 
-       if (ep->driver_data)
-               usb_ep_disable(ep);
+       usb_ep_disable(ep);
 
        err = config_ep_by_speed(midi->gadget, f, ep);
        if (err) {
@@ -341,8 +340,7 @@ static int f_midi_set_alt(struct usb_function *f, unsigned intf, unsigned alt)
        if (err)
                return err;
 
-       if (midi->out_ep->driver_data)
-               usb_ep_disable(midi->out_ep);
+       usb_ep_disable(midi->out_ep);
 
        err = config_ep_by_speed(midi->gadget, f, midi->out_ep);
        if (err) {
@@ -547,10 +545,16 @@ static void f_midi_transmit(struct f_midi *midi, struct usb_request *req)
                }
        }
 
-       if (req->length > 0)
-               usb_ep_queue(ep, req, GFP_ATOMIC);
-       else
+       if (req->length > 0) {
+               int err;
+
+               err = usb_ep_queue(ep, req, GFP_ATOMIC);
+               if (err < 0)
+                       ERROR(midi, "%s queue req: %d\n",
+                             midi->in_ep->name, err);
+       } else {
                free_ep_req(ep, req);
+       }
 }
 
 static void f_midi_in_tasklet(unsigned long data)
@@ -757,12 +761,10 @@ static int f_midi_bind(struct usb_configuration *c, struct usb_function *f)
        midi->in_ep = usb_ep_autoconfig(cdev->gadget, &bulk_in_desc);
        if (!midi->in_ep)
                goto fail;
-       midi->in_ep->driver_data = cdev;        /* claim */
 
        midi->out_ep = usb_ep_autoconfig(cdev->gadget, &bulk_out_desc);
        if (!midi->out_ep)
                goto fail;
-       midi->out_ep->driver_data = cdev;       /* claim */
 
        /* allocate temporary function list */
        midi_function = kcalloc((MAX_PORTS * 4) + 9, sizeof(*midi_function),
@@ -889,12 +891,6 @@ fail_f_midi:
 fail:
        f_midi_unregister_card(midi);
 fail_register:
-       /* we might as well release our claims on endpoints */
-       if (midi->out_ep)
-               midi->out_ep->driver_data = NULL;
-       if (midi->in_ep)
-               midi->in_ep->driver_data = NULL;
-
        ERROR(cdev, "%s: can't bind, err %d\n", f->name, status);
 
        return status;