hrev53231 adds 1 changeset to branch 'master'
old head: b11f8cb28c422aeba08b4216b31091068de961b9
new head: 8b19fb0f556447aab2c7c9f5a94845ef85d8c4e1
overview:
https://git.haiku-os.org/haiku/log/?qt=range&q=8b19fb0f5564+%5Eb11f8cb28c42
----------------------------------------------------------------------------
8b19fb0f5564: Partially revert "XHCI: Set the TRB_3_ENT_BIT on the final Link
TRB, also."
This reverts commit 63895cb5f2984b433d7f188c52e3f21e6723f610.
This does go against the specification, and on a very small set of
XHCI hardware, seems to break booting (#15137). So, let's revert it;
the buggy hardware it potentially helped will just have to deal with
it.
[ waddlesplash <waddlesplash@xxxxxxxxx> ]
----------------------------------------------------------------------------
Revision: hrev53231
Commit: 8b19fb0f556447aab2c7c9f5a94845ef85d8c4e1
URL: https://git.haiku-os.org/haiku/commit/?id=8b19fb0f5564
Author: waddlesplash <waddlesplash@xxxxxxxxx>
Date: Thu Jul 4 00:46:36 2019 UTC
Ticket: https://dev.haiku-os.org/ticket/15137
----------------------------------------------------------------------------
1 file changed, 4 insertions(+), 7 deletions(-)
src/add-ons/kernel/busses/usb/xhci.cpp | 11 ++++-------
----------------------------------------------------------------------------
diff --git a/src/add-ons/kernel/busses/usb/xhci.cpp
b/src/add-ons/kernel/busses/usb/xhci.cpp
index 25caa49427..1bd7361b95 100644
--- a/src/add-ons/kernel/busses/usb/xhci.cpp
+++ b/src/add-ons/kernel/busses/usb/xhci.cpp
@@ -1760,15 +1760,12 @@ XHCI::_LinkDescriptorForPipe(xhci_td *descriptor,
xhci_endpoint *endpoint)
descriptor->trbs[descriptor->trb_used].address = addr;
descriptor->trbs[descriptor->trb_used].status = TRB_2_IRQ(0);
descriptor->trbs[descriptor->trb_used].flags = TRB_3_TYPE(TRB_TYPE_LINK)
- | TRB_3_CHAIN_BIT | TRB_3_ENT_BIT | TRB_3_CYCLE_BIT;
+ | TRB_3_CHAIN_BIT | TRB_3_CYCLE_BIT;
// It is specified that (XHCI 1.2 § 4.12.3 Note 2 p251) if the
TRB
// following one with the ENT bit set is a Link TRB, the Link
TRB
- // shall be evaluated *and* the subsequent TRB shall be. Thus,
the
- // TRB_3_ENT_BIT here *should* be unnecessary, as the last TRB
in
- // this TD proper should already have the ENT bit set. But at
least
- // some hardware, it seems, does not necessarily obey the note,
so
- // we add the ENT bit on the Link TRB, too.
-
+ // shall be evaluated *and* the subsequent TRB shall be. Thus a
+ // TRB_3_ENT_BIT is unnecessary here; and from testing seems to
+ // break all transfers on a (very) small number of controllers.
#if !B_HOST_IS_LENDIAN
// Convert endianness.