Skip to content

Commit

Permalink
USB: make EHCI initialize properly on PPC SOCs
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Mike Nuss authored and Greg Kroah-Hartman committed Aug 22, 2007
1 parent 4c132e7 commit c907d3b
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 4 deletions.
5 changes: 3 additions & 2 deletions drivers/usb/host/ehci-au1xxx.c
Original file line number Diff line number Diff line change
@@ -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>
Expand Down Expand Up @@ -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,
Expand Down
22 changes: 20 additions & 2 deletions drivers/usb/host/ehci-ppc-soc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*/
Expand All @@ -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()
Expand Down Expand Up @@ -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,
Expand Down

0 comments on commit c907d3b

Please sign in to comment.