aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/ehci-fsl.c
diff options
context:
space:
mode:
authorKumar Gala <galak@gate.crashing.org>2006-01-20 16:57:52 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2006-03-20 17:49:55 -0500
commit8cd42e97bf451bbbb2f54dc571366ae5a72faaea (patch)
tree9bd591f62813e477da3484bfe159228a7507eeb7 /drivers/usb/host/ehci-fsl.c
parent80cb9aee01245b38325dd84f1359b14a3f01f10d (diff)
[PATCH] USB: EHCI and Freescale 83xx quirk
On the MPC834x processors the multiport host (MPH) EHCI controller has an erratum in which the port number in the queue head expects to be 0..N-1 instead of 1..N. If we are on one of these chips we subtract one from the port number before putting it into the queue head. Signed-off-by: Kumar Gala <galak@kernel.crashing.org> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/host/ehci-fsl.c')
-rw-r--r--drivers/usb/host/ehci-fsl.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c
index c6012d6cd527..59f90f76ee31 100644
--- a/drivers/usb/host/ehci-fsl.c
+++ b/drivers/usb/host/ehci-fsl.c
@@ -198,6 +198,16 @@ static void mpc83xx_usb_setup(struct usb_hcd *hcd)
198 mpc83xx_setup_phy(ehci, pdata->phy_mode, 0); 198 mpc83xx_setup_phy(ehci, pdata->phy_mode, 0);
199 199
200 if (pdata->operating_mode == FSL_USB2_MPH_HOST) { 200 if (pdata->operating_mode == FSL_USB2_MPH_HOST) {
201 unsigned int chip, rev, svr;
202
203 svr = mfspr(SPRN_SVR);
204 chip = svr >> 16;
205 rev = (svr >> 4) & 0xf;
206
207 /* Deal with USB Erratum #14 on MPC834x Rev 1.0 & 1.1 chips */
208 if ((rev == 1) && (chip >= 0x8050) && (chip <= 0x8055))
209 ehci->has_fsl_port_bug = 1;
210
201 if (pdata->port_enables & FSL_USB2_PORT0_ENABLED) 211 if (pdata->port_enables & FSL_USB2_PORT0_ENABLED)
202 mpc83xx_setup_phy(ehci, pdata->phy_mode, 0); 212 mpc83xx_setup_phy(ehci, pdata->phy_mode, 0);
203 if (pdata->port_enables & FSL_USB2_PORT1_ENABLED) 213 if (pdata->port_enables & FSL_USB2_PORT1_ENABLED)