diff options
Diffstat (limited to 'drivers/usb/host/ehci-ppc-soc.c')
| -rw-r--r-- | drivers/usb/host/ehci-ppc-soc.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/drivers/usb/host/ehci-ppc-soc.c b/drivers/usb/host/ehci-ppc-soc.c index c2cedb09ed8b..4f99b0eb27bc 100644 --- a/drivers/usb/host/ehci-ppc-soc.c +++ b/drivers/usb/host/ehci-ppc-soc.c | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | * Bus Glue for PPC On-Chip EHCI driver | 6 | * Bus Glue for PPC On-Chip EHCI driver |
| 7 | * Tested on AMCC 440EPx | 7 | * Tested on AMCC 440EPx |
| 8 | * | 8 | * |
| 9 | * Based on "ehci-au12xx.c" by David Brownell <dbrownell@users.sourceforge.net> | 9 | * Based on "ehci-au1xxx.c" by K.Boge <karsten.boge@amd.com> |
| 10 | * | 10 | * |
| 11 | * This file is licenced under the GPL. | 11 | * This file is licenced under the GPL. |
| 12 | */ | 12 | */ |
| @@ -15,6 +15,24 @@ | |||
| 15 | 15 | ||
| 16 | extern int usb_disabled(void); | 16 | extern int usb_disabled(void); |
| 17 | 17 | ||
| 18 | /* called during probe() after chip reset completes */ | ||
| 19 | static int ehci_ppc_soc_setup(struct usb_hcd *hcd) | ||
| 20 | { | ||
| 21 | struct ehci_hcd *ehci = hcd_to_ehci(hcd); | ||
| 22 | int retval; | ||
| 23 | |||
| 24 | retval = ehci_halt(ehci); | ||
| 25 | if (retval) | ||
| 26 | return retval; | ||
| 27 | |||
| 28 | retval = ehci_init(hcd); | ||
| 29 | if (retval) | ||
| 30 | return retval; | ||
| 31 | |||
| 32 | ehci->sbrn = 0x20; | ||
| 33 | return ehci_reset(ehci); | ||
| 34 | } | ||
| 35 | |||
| 18 | /** | 36 | /** |
| 19 | * usb_ehci_ppc_soc_probe - initialize PPC-SoC-based HCDs | 37 | * usb_ehci_ppc_soc_probe - initialize PPC-SoC-based HCDs |
| 20 | * Context: !in_interrupt() | 38 | * Context: !in_interrupt() |
| @@ -120,7 +138,7 @@ static const struct hc_driver ehci_ppc_soc_hc_driver = { | |||
| 120 | /* | 138 | /* |
| 121 | * basic lifecycle operations | 139 | * basic lifecycle operations |
| 122 | */ | 140 | */ |
| 123 | .reset = ehci_init, | 141 | .reset = ehci_ppc_soc_setup, |
| 124 | .start = ehci_run, | 142 | .start = ehci_run, |
| 125 | .stop = ehci_stop, | 143 | .stop = ehci_stop, |
| 126 | .shutdown = ehci_shutdown, | 144 | .shutdown = ehci_shutdown, |
