Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

USB: EHCI restart speedup

It is not necessary to powerdown the ports on ehci_pci_reinit() when the
chip reset already did that. Removing this saves 20ms during restart
after poweroff paths (which OLPC uses a lot).

To ensure driver startup then behaves consistently, force a reset during
driver startup. (Not doing this was an accident of some previous changes
to the init sequence.)

Make the corresponding change in the PS3 support. It's not clear what
ehci-fsl should do here; it has similar code to the PS3.

Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Cc: <rvinson@mvista.com>
Acked-by: Geoff Levand <geoffrey.levand@am.sony.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

authored by

Marcelo Tosatti and committed by
Greg Kroah-Hartman
af1c51fc 0eb0226c

+2 -5
+1 -4
drivers/usb/host/ehci-pci.c
··· 58 58 if (!retval) 59 59 ehci_dbg(ehci, "MWI active\n"); 60 60 61 - ehci_port_power(ehci, 0); 62 - 63 61 return 0; 64 62 } 65 63 ··· 154 156 break; 155 157 } 156 158 157 - if (ehci_is_TDI(ehci)) 158 - ehci_reset(ehci); 159 + ehci_reset(ehci); 159 160 160 161 /* at least the Genesys GL880S needs fixup here */ 161 162 temp = HCS_N_CC(ehci->hcs_params) * HCS_N_PCC(ehci->hcs_params);
+1 -1
drivers/usb/host/ehci-ps3.c
··· 47 47 if (result) 48 48 return result; 49 49 50 - ehci_port_power(ehci, 0); 50 + ehci_reset(ehci); 51 51 52 52 return result; 53 53 }