Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6
[sfrench/cifs-2.6.git] / drivers / usb / gadget / fsl_usb2_udc.c
index 091bb55c9aa7abaee80930e9e79bb955a9f47bf3..9d7b95d4e3d2e523b7792f6b412b39bf6958b914 100644 (file)
@@ -404,7 +404,10 @@ static void struct_ep_qh_setup(struct fsl_udc *udc, unsigned char ep_num,
        }
        if (zlt)
                tmp |= EP_QUEUE_HEAD_ZLT_SEL;
+
        p_QH->max_pkt_length = cpu_to_le32(tmp);
+       p_QH->next_dtd_ptr = 1;
+       p_QH->size_ioc_int_sts = 0;
 
        return;
 }
@@ -1799,7 +1802,8 @@ int usb_gadget_register_driver(struct usb_gadget_driver *driver)
 
 out:
        if (retval)
-               printk("gadget driver register failed %d\n", retval);
+               printk(KERN_WARNING "gadget driver register failed %d\n",
+                      retval);
        return retval;
 }
 EXPORT_SYMBOL(usb_gadget_register_driver);
@@ -1836,12 +1840,16 @@ int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)
                nuke(loop_ep, -ESHUTDOWN);
        spin_unlock_irqrestore(&udc_controller->lock, flags);
 
+       /* report disconnect; the controller is already quiesced */
+       driver->disconnect(&udc_controller->gadget);
+
        /* unbind gadget and unhook driver. */
        driver->unbind(&udc_controller->gadget);
        udc_controller->gadget.dev.driver = NULL;
        udc_controller->driver = NULL;
 
-       printk("unregistered gadget driver '%s'\n", driver->driver.name);
+       printk(KERN_WARNING "unregistered gadget driver '%s'\n",
+              driver->driver.name);
        return 0;
 }
 EXPORT_SYMBOL(usb_gadget_unregister_driver);
@@ -2449,7 +2457,7 @@ module_init(udc_init);
 static void __exit udc_exit(void)
 {
        platform_driver_unregister(&udc_driver);
-       printk("%s unregistered\n", driver_desc);
+       printk(KERN_WARNING "%s unregistered\n", driver_desc);
 }
 
 module_exit(udc_exit);