Author: wmb Date: Fri Jan 21 22:03:57 2011 New Revision: 2141 URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2141
Log: USB EHCI driver - fixed longstanding stack bug in intr-in? which broke USB keyboard support. I'm unsure why we didn't notice this problem a long time ago. In the process of fixing the bug, I rewrote part of intr-in? for better stack clarity.
Modified: dev/usb2/hcd/ehci/intr.fth
Modified: dev/usb2/hcd/ehci/intr.fth ============================================================================== --- dev/usb2/hcd/ehci/intr.fth Fri Jan 21 21:53:07 2011 (r2140) +++ dev/usb2/hcd/ehci/intr.fth Fri Jan 21 22:03:57 2011 (r2141) @@ -64,21 +64,21 @@ ;
: intr-in? ( -- actual usberr ) - intr-in-qh 0= if 0 USB_ERR_INV_OP exit then - clear-usb-error - intr-in-qh qh-done? if - intr-in-qh error? if - 0 - else - intr-in-qh dup sync-qhqtds - intr-in-qtd dup intr-in-qh >qh-#qtds l@ get-actual - over >qtd-buf rot >qtd-pbuf l@ 2 pick dma-sync - then - usb-error - intr-in-qh fixup-intr-in-data - else - 0 usb-error - then + intr-in-qh 0= if 0 USB_ERR_INV_OP exit then ( ) + clear-usb-error ( ) + intr-in-qh qh-done? if ( ) + intr-in-qh error? if ( ) + 0 ( actual ) + else ( ) + intr-in-qh sync-qhqtds ( ) + intr-in-qtd intr-in-qh >qh-#qtds l@ get-actual ( actual ) + intr-in-qtd >qtd-buf intr-in-qtd >qtd-pbuf l@ 2 pick dma-sync ( actual ) + then ( actual ) + usb-error ( actual usberr ) + intr-in-qh fixup-intr-in-data ( actual usberr ) + else ( ) + 0 usb-error ( actual usberr ) + then ( actual usberr ) ;
headers