summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhselasky <hselasky@FreeBSD.org>2014-02-23 13:36:21 +0000
committerhselasky <hselasky@FreeBSD.org>2014-02-23 13:36:21 +0000
commit00a4670de40dfa6bb91146225ead8ce4ee0d1379 (patch)
treec9af54363b3db173b0952484c8d63b8ce62fa99d
parent8f7a7495252407409ca9ad0ca40a6ef3e9ee374c (diff)
downloadFreeBSD-src-00a4670de40dfa6bb91146225ead8ce4ee0d1379.zip
FreeBSD-src-00a4670de40dfa6bb91146225ead8ce4ee0d1379.tar.gz
MFC r261872:
Fix minor logical error in the XHCI driver. Set correct SETUP packet direction value.
-rw-r--r--sys/dev/usb/controller/xhci.c3
-rw-r--r--sys/dev/usb/controller/xhci.h1
2 files changed, 3 insertions, 1 deletions
diff --git a/sys/dev/usb/controller/xhci.c b/sys/dev/usb/controller/xhci.c
index c7e4ab9..f8eb6cf 100644
--- a/sys/dev/usb/controller/xhci.c
+++ b/sys/dev/usb/controller/xhci.c
@@ -1759,7 +1759,8 @@ restart:
/* check wLength */
if (td->td_trb[0].qwTrb0 &
htole64(XHCI_TRB_0_WLENGTH_MASK)) {
- if (td->td_trb[0].qwTrb0 & htole64(1))
+ if (td->td_trb[0].qwTrb0 &
+ htole64(XHCI_TRB_0_DIR_IN_MASK))
dword |= XHCI_TRB_3_TRT_IN;
else
dword |= XHCI_TRB_3_TRT_OUT;
diff --git a/sys/dev/usb/controller/xhci.h b/sys/dev/usb/controller/xhci.h
index 10045a7..c63632b 100644
--- a/sys/dev/usb/controller/xhci.h
+++ b/sys/dev/usb/controller/xhci.h
@@ -192,6 +192,7 @@ struct xhci_stream_ctx {
struct xhci_trb {
volatile uint64_t qwTrb0;
+#define XHCI_TRB_0_DIR_IN_MASK (0x80ULL << 0)
#define XHCI_TRB_0_WLENGTH_MASK (0xFFFFULL << 48)
volatile uint32_t dwTrb2;
#define XHCI_TRB_2_ERROR_GET(x) (((x) >> 24) & 0xFF)
OpenPOWER on IntegriCloud