summaryrefslogtreecommitdiff
blob: ddf8206053466688be7fee82fe74bee73d3f3922 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
diff -Naru a/drivers/usb/host/uhci-hcd.c b/drivers/usb/host/uhci-hcd.c
--- a/drivers/usb/host/uhci-hcd.c	2006-02-16 02:10:18 -08:00
+++ b/drivers/usb/host/uhci-hcd.c	2006-02-16 02:10:18 -08:00
@@ -2254,7 +2254,8 @@
 			irq = 7;
 
 		/* Only place we don't use the frame list routines */
-		uhci->fl->frame[i] = cpu_to_le32(uhci->skelqh[irq]->dma_handle);
+		uhci->fl->frame[i] = UHCI_PTR_QH |
+				cpu_to_le32(uhci->skelqh[irq]->dma_handle);
 	}
 
 	/*
# This is a BitKeeper generated diff -Nru style patch.
#
# ChangeSet
#   2004/08/24 11:38:47-07:00 stern@rowland.harvard.edu 
#   [PATCH] USB: Set QH bit in UHCI framelist entries
#   
#   This patch fixes the error in the UHCI driver found by Stuart Hayes.  It
#   adds the UHCI_PTR_QH bit into the initial entries stored in the hardware
#   framelist.  It's not entirely clear how the driver ever managed to work
#   with these bits not set; apparently by coincidence the QH entries
#   resembled TD entries sufficiently closely to fool the hardware.
#   
#   
#   On Tue, 10 Aug 2004 Stuart_Hayes@Dell.com wrote:
#   
#   > Never mind, I figured it out.  It looks like the uhci-hcd driver
#   > doesn't add a "| UHCI_PTR_QH" to the pointers that it puts
#   > in the frame list.  This causes the ICH to think that the frame list
#   > is pointing to a bunch of TDs instead of QHs for purposes of
#   > checking for TD errors.  I can only assume that the ICH
#   > is actually treating the frame list entries as QH pointers in spite
#   > of that bit not being set when it is actually executing the
#   > schedule, or else I don't think it would work generally.
#   >
#   > I guess the high addresses were just making the QH look like an
#   > invalid TD instead of a valid TD... not sure exactly what the ICH
#   > is checking for!
#   
#   
#   
#   Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
#   Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
# 
# drivers/usb/host/uhci-hcd.c
#   2004/08/11 02:54:29-07:00 stern@rowland.harvard.edu +2 -1
#   USB: Set QH bit in UHCI framelist entries
# 

http://linux.bkbits.net:8080/linux-2.6/gnupatch@412b8b37YsXQ5El2dAe2S2SMXZ-m0A