usb: gadget: defer setting maxpacket till ->setup()
[pandora-kernel.git] / drivers / usb / gadget / inode.c
index a9a4556..1b24099 100644 (file)
@@ -1347,7 +1347,7 @@ static void make_qualifier (struct dev_data *dev)
        qual.bDeviceProtocol = desc->bDeviceProtocol;
 
        /* assumes ep0 uses the same value for both speeds ... */
-       qual.bMaxPacketSize0 = desc->bMaxPacketSize0;
+       qual.bMaxPacketSize0 = dev->gadget->ep0->maxpacket;
 
        qual.bNumConfigurations = 1;
        qual.bRESERVED = 0;
@@ -1404,7 +1404,6 @@ gadgetfs_setup (struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
                }
 
                dev->state = STATE_DEV_CONNECTED;
-               dev->dev->bMaxPacketSize0 = gadget->ep0->maxpacket;
 
                INFO (dev, "connected\n");
                event = next_event (dev, GADGETFS_CONNECT);
@@ -1432,6 +1431,7 @@ gadgetfs_setup (struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl)
 
                case USB_DT_DEVICE:
                        value = min (w_length, (u16) sizeof *dev->dev);
+                       dev->dev->bMaxPacketSize0 = dev->gadget->ep0->maxpacket;
                        req->buf = dev->dev;
                        break;
 #ifdef CONFIG_USB_GADGET_DUALSPEED
@@ -1712,7 +1712,6 @@ gadgetfs_bind (struct usb_gadget *gadget)
        set_gadget_data (gadget, dev);
        dev->gadget = gadget;
        gadget->ep0->driver_data = dev;
-       dev->dev->bMaxPacketSize0 = gadget->ep0->maxpacket;
 
        /* preallocate control response and buffer */
        dev->req = usb_ep_alloc_request (gadget->ep0, GFP_KERNEL);