Subject: Re: ehci and Dell keyboards
To: Patrick Welche <prlw1@newn.cam.ac.uk>
From: Lennart Augustsson <lennart@augustsson.net>
List: current-users
Date: 11/15/2005 19:02:21
Frame list rollover is not an interrupt we care about.
What you would expect when something is plugged in is
EHCI_STS_PCD (Port Change Detect).

If that doesn't appear there's something fishy.  Maybe
the controller needs some extra treatment to enable the
ports properly.

	-- Lennart

Patrick Welche wrote:
> What seems to be happening is that when you plug the keyboard into a USB
> port, ehci_intr1() is called:
> 
>     intrs = EHCI_STS_INTRS(EOREAD4(sc, EHCI_USBSTS));
>     if (!intrs)
>         return (0);
> 
>     eintrs = intrs & sc->sc_eintrs;
>     DPRINTFN(7, ("ehci_intr1: sc=%p intrs=0x%x(0x%x) eintrs=0x%x\n",
>              sc, (u_int)intrs, EOREAD4(sc, EHCI_USBSTS),
>              (u_int)eintrs));
>     if (!eintrs)
>         return (0);
> 
> intrs = 8 = EHCI_STS_FLR /* RWC frame list rollover */
> sc->sc_eintrs = 55 = 32+16+4+2+1 (everything apart from 8)
> => eintrs = 0, and we return to ehci_intr() without doing anything.
> 
> It seems to me that "frame list rollover" - whatever that is - isn't
> implemented, given that EHCI_STS_FLR doesn't appear in EHCI_NORMAL_INTRS.
> 
> Looks like a read of ehci-r10.pdf comes next...
> 
> Cheers,
> 
> Patrick
>