From c4a1e93fa64d3fce3ff3e3bf9ece2e4051d71f04 Mon Sep 17 00:00:00 2001 From: Hans Petter Selasky Date: Fri, 14 Feb 2014 07:17:36 +0000 Subject: [PATCH] Fix minor logical error in the XHCI driver. Set correct SETUP packet direction value. MFC after: 2 days Reported by: Horse Ma --- sys/dev/usb/controller/xhci.c | 3 ++- sys/dev/usb/controller/xhci.h | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/sys/dev/usb/controller/xhci.c b/sys/dev/usb/controller/xhci.c index 0e0cff33596..238bd552884 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 10045a72016..c63632b0b44 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)