Age | Commit message (Collapse) | Author |
|
transfers. This fixes some cases where the software toggle tracking
was not doing the right thing. For example, a short transfer that
transferred 0 bytes of the requested qTD transfer size does cause
a toggle change, but the existing code was assuming it didn't.
Derived from work in FreeBSD.
Fixes at least one USB2 cdce device, which would otherwise drop
every second packet due to incorrect toggle state.
commit it, dlg@
|
|
is closed and then reopened. This may be necessary now that
we no longer clear endpoint stalls every time a pipe is opened.
Previously we could assume an initial toggle value of zero because
a clear-stall operation resets the device's toggle state.
Derived from work in FreeBSD.
This is most likely to affect devices like printers, which open
pipes for short periods of time and close them again.
ok dlg@
|
|
USBD_FORCE_SHORT_XFER to ensure that we actually build and execute
a transfer.
Based on changes in FreeBSD rev1.47
|
|
From NetBSD r1.104
|
|
a page offset.
From Dan Ellis via NetBSD rev 1.103
|
|
transfer when necessary.
From Dan Ellis via NetBSD rev 1.102
|
|
From augustss NetBSD
ok dlg@
|
|
userland-visible sys/select.h. Consistent with what Net and Free do.
OK deraadt@, tested with full ports build by naddy@.
|
|
|
|
initialization is finished.
From augustss NetBSD
ok dlg@ pascoe@
|
|
incorrectly attach to the companion controller.
Patch from Sebastiaan Indesteege on tech@
ok dlg@
|
|
controllers. remove the insane amount of support code needed just for the
printing of the companion controllers while here.
zap it deraadt@ sure pascoe@
|
|
devices. usb probe/attach now happens before root is mounted so there is no
requirement to do anything special anymore.
|
|
should not detach and reattach when you resume now.
|
|
Supports bulk, control and interrupt pipes, letting USB1 keyboards and most
network interfaces work when connected to a USB2 hub.
ok dlg@
|
|
downstream interupt heads have an even temporal distribution.
ok dlg@
|
|
XActErr is not the only qH warning bit that "sticks" during a transaction.
ok dlg@
|
|
ok pascoe@
|
|
zero. The host controller should, in theory, never follow this pointer, but
it is a minor spec violation.
ok dlg@
|
|
- always initialise the pipe multiplier to a valid value
- do not unchain the the interrupt QHs immediately after initialisation
ok dlg@
|
|
transaction completed successfully on retry.
ok dlg@
|
|
completion before they have performed writeback from the overlay qTD.
This condition would exhibit itself as a umass stall that never recovers.
ok dlg@
|
|
ok dlg@
|
|
ok dlg@
|
|
ok dlg@
|
|
ok dlg@
|
|
log message:
Attempt to follow the correct procedure for synchronising with the
system BIOS to disable legacy device emulation as per the "EHCI
Extended Capability: Pre-OS to OS Handoff Synchronisation" section
of the EHCI spec. BIOSes that implement legacy emulation using SMIs
are supposed to disable the emulation when this procedure is performed.
tested on various archs by jsg@ and me
ok pascoe@, looks sane jsg@
|
|
Only delay interrupt my 2 miucroframes instead of 8. This improves
Ethernet performance.
|
|
|
|
like us, so get rid of the ifdefs.
|
|
hcpriv is not actually used here. Remove references to it.
|
|
Follow the spec more closely when updating the overlay qTD in the QH.
Preserve some bits in the overlay qTD.
|
|
No need to generate an interrupt at the data part of a control transfer,
it's generated by the status transfer.
|
|
Make sure to update the data toggle on short transfers.
This makes my Ethernet adapter much happier.
|
|
|
|
with usb2 hardware.
|
|
while here define EHCI_DEBUG when USB_DEBUG is defined
ok pvalchev@ deraadt@
|
|
|
|
function names in messages didnt always match the actual name of the function.
endian fix when dumping a qtd chain so it terminates correctly on big endian
archs.
dont blame uhci for problems ehci has.
|
|
|
|
|
|
this is netbsds fix for the endian problems they had with the data toggle
change. do the swap when the var is assigned to the qtd, rather than swap
everything that is assigned to the var and just assign the var. instead of 4
or so htole32s we now do 1.
from netbsd, ehci.c 1.67 (i made a mistake, the last patch i gave you was
from 1.68) log message:
Fix a byte order error.
|
|
Adjust some silliness that was causing us to do extra work for "frame list
rollover" interrupts, which we pretty much ignore.
|
|
|
|
|
|
|
|
|
|
Fix an error in a debug printf().
|
|
related to working with the data toggle, but also includes some endian
fixes. The major changes in the netbsd code were in revisions 1.55 and
1.64. their log messages are:
1.55: Set the data toggle correctly, and use EHCI_QTD_DTC. This fixes
problems with my ALi-based drive enclosure (it works now, rather than
failing to attach). Also seems to work with a GL811-based enclosure and
an ASUS enclosure with a CD-RW, on both Intel and NEC controllers.
Note: The ALi enclosure is currently very SLOW, due to some issue with
taking too long to notice that the QTD is complete. This requires more
investigation.
1.64: Further cleanup of toggle handling. Now that we use EHCI_QH_DTC,
we don't need to fiddle with the TOGGLE bit in the overlay descriptor,
so minimize how much we fuss with it.
|
|
printfs that are more related to the data toggle. log message:
Fix a stupid bug in ehci_check_intr() that caused use to try to complete
a transaction that was still running. Now ehci can handle multiple devices
being active at once.
|