• Alan Stern's avatar
    [PATCH] USB: Set QH bit in UHCI framelist entries · 2cf52a8b
    Alan Stern authored
    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: default avatarAlan Stern <stern@rowland.harvard.edu>
    Signed-off-by: default avatarGreg Kroah-Hartman <greg@kroah.com>
    2cf52a8b
uhci-hcd.c 63.7 KB