Commit bcfa4e68 authored by Simon Kagstrom's avatar Simon Kagstrom Committed by Greg Kroah-Hartman

USB: ehci-orion: Call ehci_reset before ehci_halt

I noticed that USB initialization didn't setup correctly on my kirkwood
based board (OpenRD base) if I hadn't initialized USB in U-boot first.
The error message looks like this:

  ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
  orion-ehci orion-ehci.0: Marvell Orion EHCI
  orion-ehci orion-ehci.0: new USB bus registered, assigned bus number 1
  orion-ehci orion-ehci.0: can't setup
  orion-ehci orion-ehci.0: USB bus 1 deregistered
  orion-ehci orion-ehci.0: init orion-ehci.0 fail, -110
  orion-ehci: probe of orion-ehci.0 failed with error -110

which is caused by ehci_halt() timing out in the handshake() call. I
noticed that U-boot does a reset before calling handshake(), so this
patch does the same thing for Linux. USB now works for me.
Signed-off-by: default avatarSimon Kagstrom <simon.kagstrom@netinsight.net>
Acked-by: default avatarNicolas Pitre <nico@marvell.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 8bf16ba7
...@@ -105,6 +105,7 @@ static int ehci_orion_setup(struct usb_hcd *hcd) ...@@ -105,6 +105,7 @@ static int ehci_orion_setup(struct usb_hcd *hcd)
struct ehci_hcd *ehci = hcd_to_ehci(hcd); struct ehci_hcd *ehci = hcd_to_ehci(hcd);
int retval; int retval;
ehci_reset(ehci);
retval = ehci_halt(ehci); retval = ehci_halt(ehci);
if (retval) if (retval)
return retval; return retval;
...@@ -118,7 +119,6 @@ static int ehci_orion_setup(struct usb_hcd *hcd) ...@@ -118,7 +119,6 @@ static int ehci_orion_setup(struct usb_hcd *hcd)
hcd->has_tt = 1; hcd->has_tt = 1;
ehci_reset(ehci);
ehci_port_power(ehci, 0); ehci_port_power(ehci, 0);
return retval; return retval;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment