093daa268f
EHCI spec for linking in new qTDs into an asynchronous QH. This requires that there is a qTD marked as not active and not halted at the start of the QH's list, and the hardware will know to re-fetch the qTD on each pass rather than just looking at the overlay qTD: "The host controller must be able to advance the queue from the Fetch QH state in order to avoid all hardware/software race conditions. This simple mechanism allows software to simply link qTDs to the queue head and activate them, then the host controller will always find them if/when they are reachable." This is achieved by keeping an "inactivesqtd" entry on the QH list, and re-using it each time as the start of the next transfer, and allocating a new qTD to become the next inactivesqtd. Then a new transfer can be activated by just setting its "active" flag, which avoids all the previous messing with overlay qTD state in ehci_set_qh_qtd(). |
||
---|---|---|
.. | ||
dsbr100io.h | ||
ehci_pci.c | ||
ehci.c | ||
ehcireg.h | ||
ehcivar.h | ||
FILES | ||
hid.c | ||
hid.h | ||
if_aue.c | ||
if_auereg.h | ||
if_axe.c | ||
if_axereg.h | ||
if_cdce.c | ||
if_cdcereg.h | ||
if_cue.c | ||
if_cuereg.h | ||
if_kue.c | ||
if_kuereg.h | ||
if_rue.c | ||
if_ruereg.h | ||
if_udav.c | ||
if_udavreg.h | ||
if_ural.c | ||
if_uralreg.h | ||
if_uralvar.h | ||
kue_fw.h | ||
ohci_pci.c | ||
ohci.c | ||
ohcireg.h | ||
ohcivar.h | ||
rio500_usb.h | ||
sl811hs.c | ||
sl811hsreg.h | ||
sl811hsvar.h | ||
slhci_pccard.c | ||
ubsa.c | ||
ubser.c | ||
ubser.h | ||
ucom.c | ||
ucomvar.h | ||
ucycom.c | ||
udbp.c | ||
udbp.h | ||
ufm.c | ||
ufoma.c | ||
uftdi.c | ||
uftdireg.h | ||
ugen.c | ||
ugraphire_rdesc.h | ||
uhci_pci.c | ||
uhci.c | ||
uhcireg.h | ||
uhcivar.h | ||
uhid.c | ||
uhub.c | ||
ukbd.c | ||
ulpt.c | ||
umass.c | ||
umct.c | ||
umodem.c | ||
ums.c | ||
uplcom.c | ||
urio.c | ||
usb_ethersubr.c | ||
usb_ethersubr.h | ||
usb_if.m | ||
usb_mem.c | ||
usb_mem.h | ||
usb_port.h | ||
usb_quirks.c | ||
usb_quirks.h | ||
usb_subr.c | ||
usb.c | ||
usb.h | ||
usbcdc.h | ||
usbdevs | ||
usbdi_util.c | ||
usbdi_util.h | ||
usbdi.c | ||
usbdi.h | ||
usbdivar.h | ||
usbhid.h | ||
uscanner.c | ||
uvisor.c | ||
uvscom.c | ||
uxb360gp_rdesc.h |