USB: don't run ehci_reset in ehci_run for tdi device
authorMatthieu CASTET <matthieu.castet@parrot.com>
Tue, 15 Feb 2011 17:40:28 +0000 (18:40 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 17 Feb 2011 18:57:13 +0000 (10:57 -0800)
TDI driver does the ehci_reset in their reset callback.
Don't reset in ehci_run because configuration settings done in
platform driver will be reset.

This will allow to make msm use ehci_run.

Signed-off-by: Matthieu CASTET <castet.matthieu@parrot.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/host/ehci-hcd.c
drivers/usb/host/ehci-orion.c

index 74dcf49..4c77a81 100644 (file)
@@ -679,7 +679,12 @@ static int ehci_run (struct usb_hcd *hcd)
        hcd->uses_new_polling = 1;
 
        /* EHCI spec section 4.1 */
        hcd->uses_new_polling = 1;
 
        /* EHCI spec section 4.1 */
-       if ((retval = ehci_reset(ehci)) != 0) {
+       /*
+        * TDI driver does the ehci_reset in their reset callback.
+        * Don't reset here, because configuration settings will
+        * vanish.
+        */
+       if (!ehci_is_TDI(ehci) && (retval = ehci_reset(ehci)) != 0) {
                ehci_mem_cleanup(ehci);
                return retval;
        }
                ehci_mem_cleanup(ehci);
                return retval;
        }
index 0f87dc7..281e094 100644 (file)
@@ -105,7 +105,8 @@ static int ehci_orion_setup(struct usb_hcd *hcd)
        struct ehci_hcd *ehci = hcd_to_ehci(hcd);
        int retval;
 
        struct ehci_hcd *ehci = hcd_to_ehci(hcd);
        int retval;
 
-       ehci_reset(ehci);
+       hcd->has_tt = 1;
+
        retval = ehci_halt(ehci);
        if (retval)
                return retval;
        retval = ehci_halt(ehci);
        if (retval)
                return retval;
@@ -117,7 +118,7 @@ static int ehci_orion_setup(struct usb_hcd *hcd)
        if (retval)
                return retval;
 
        if (retval)
                return retval;
 
-       hcd->has_tt = 1;
+       ehci_reset(ehci);
 
        ehci_port_power(ehci, 0);
 
 
        ehci_port_power(ehci, 0);