forked from Minki/linux
USB: make EHCI initialize properly on PPC SOCs
Correctly initialize the on-chip EHCI controller on the AMCC PPC440EPx. Fix "USB 0.0" initialization message, and properly put the controller into a known state before starting it. Add "FIXME" comment to the au1xxx bus glue which is doing the same wrong thing here. (Who maintains that, now that AMD sold off Alchemy?) Remove some false copyright attributions which were somehow placed in the au1xxx bus glue then copied into ppc-soc. Signed-off-by: Mike Nuss <mike@terascala.com> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Cc: K.Boge <karsten.boge@amd.com> Cc: Jordan Crouse <jordan.crouse@amd.com> Signed-off-by: Stefan Roese <sr@denx.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
4c132e7724
commit
c907d3b09f
@ -1,8 +1,6 @@
|
||||
/*
|
||||
* EHCI HCD (Host Controller Driver) for USB.
|
||||
*
|
||||
* (C) Copyright 2000-2004 David Brownell <dbrownell@users.sourceforge.net>
|
||||
*
|
||||
* Bus Glue for AMD Alchemy Au1xxx
|
||||
*
|
||||
* Based on "ohci-au1xxx.c" by Matt Porter <mporter@kernel.crashing.org>
|
||||
@ -196,6 +194,9 @@ static const struct hc_driver ehci_au1xxx_hc_driver = {
|
||||
|
||||
/*
|
||||
* basic lifecycle operations
|
||||
*
|
||||
* FIXME -- ehci_init() doesn't do enough here.
|
||||
* See ehci-ppc-soc for a complete implementation.
|
||||
*/
|
||||
.reset = ehci_init,
|
||||
.start = ehci_run,
|
||||
|
@ -6,7 +6,7 @@
|
||||
* Bus Glue for PPC On-Chip EHCI driver
|
||||
* Tested on AMCC 440EPx
|
||||
*
|
||||
* Based on "ehci-au12xx.c" by David Brownell <dbrownell@users.sourceforge.net>
|
||||
* Based on "ehci-au1xxx.c" by K.Boge <karsten.boge@amd.com>
|
||||
*
|
||||
* This file is licenced under the GPL.
|
||||
*/
|
||||
@ -15,6 +15,24 @@
|
||||
|
||||
extern int usb_disabled(void);
|
||||
|
||||
/* called during probe() after chip reset completes */
|
||||
static int ehci_ppc_soc_setup(struct usb_hcd *hcd)
|
||||
{
|
||||
struct ehci_hcd *ehci = hcd_to_ehci(hcd);
|
||||
int retval;
|
||||
|
||||
retval = ehci_halt(ehci);
|
||||
if (retval)
|
||||
return retval;
|
||||
|
||||
retval = ehci_init(hcd);
|
||||
if (retval)
|
||||
return retval;
|
||||
|
||||
ehci->sbrn = 0x20;
|
||||
return ehci_reset(ehci);
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_ehci_ppc_soc_probe - initialize PPC-SoC-based HCDs
|
||||
* Context: !in_interrupt()
|
||||
@ -120,7 +138,7 @@ static const struct hc_driver ehci_ppc_soc_hc_driver = {
|
||||
/*
|
||||
* basic lifecycle operations
|
||||
*/
|
||||
.reset = ehci_init,
|
||||
.reset = ehci_ppc_soc_setup,
|
||||
.start = ehci_run,
|
||||
.stop = ehci_stop,
|
||||
.shutdown = ehci_shutdown,
|
||||
|
Loading…
Reference in New Issue
Block a user