Module Name: src Committed By: mrg Date: Sat Sep 7 22:56:47 UTC 2019
Modified Files: src/sys/dev/usb: xhci.c Log Message: fix ryzen usb issue: we set TD size to '1', where has xhci spec 4.11.2.4 says final TRB for a TD should have this set to '0'. since we currently only generate sinel TRB TDs, set this to 0. XXX: pullup-all from sc.dying To generate a diff of this commit: cvs rdiff -u -r1.112 -r1.113 src/sys/dev/usb/xhci.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/usb/xhci.c diff -u src/sys/dev/usb/xhci.c:1.112 src/sys/dev/usb/xhci.c:1.113 --- src/sys/dev/usb/xhci.c:1.112 Sat Sep 7 22:20:42 2019 +++ src/sys/dev/usb/xhci.c Sat Sep 7 22:56:47 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: xhci.c,v 1.112 2019/09/07 22:20:42 mrg Exp $ */ +/* $NetBSD: xhci.c,v 1.113 2019/09/07 22:56:47 mrg Exp $ */ /* * Copyright (c) 2013 Jonathan A. Kollasch @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: xhci.c,v 1.112 2019/09/07 22:20:42 mrg Exp $"); +__KERNEL_RCSID(0, "$NetBSD: xhci.c,v 1.113 2019/09/07 22:56:47 mrg Exp $"); #ifdef _KERNEL_OPT #include "opt_usb.h" @@ -3880,7 +3880,7 @@ xhci_device_ctrl_start(struct usbd_xfer parameter = DMAADDR(dma, 0); KASSERTMSG(len <= 0x10000, "len %d", len); status = XHCI_TRB_2_IRQ_SET(0) | - XHCI_TRB_2_TDSZ_SET(1) | + XHCI_TRB_2_TDSZ_SET(0) | XHCI_TRB_2_BYTES_SET(len); control = (isread ? XHCI_TRB_3_DIR_IN : 0) | XHCI_TRB_3_TYPE_SET(XHCI_TRB_TYPE_DATA_STAGE) | @@ -4010,7 +4010,7 @@ xhci_device_bulk_start(struct usbd_xfer */ KASSERTMSG(len <= 0x10000, "len %d", len); status = XHCI_TRB_2_IRQ_SET(0) | - XHCI_TRB_2_TDSZ_SET(1) | + XHCI_TRB_2_TDSZ_SET(0) | XHCI_TRB_2_BYTES_SET(len); control = XHCI_TRB_3_TYPE_SET(XHCI_TRB_TYPE_NORMAL) | (usbd_xfer_isread(xfer) ? XHCI_TRB_3_ISP_BIT : 0) | @@ -4120,7 +4120,7 @@ xhci_device_intr_start(struct usbd_xfer parameter = DMAADDR(dma, 0); KASSERTMSG(len <= 0x10000, "len %d", len); status = XHCI_TRB_2_IRQ_SET(0) | - XHCI_TRB_2_TDSZ_SET(1) | + XHCI_TRB_2_TDSZ_SET(0) | XHCI_TRB_2_BYTES_SET(len); control = XHCI_TRB_3_TYPE_SET(XHCI_TRB_TYPE_NORMAL) | (usbd_xfer_isread(xfer) ? XHCI_TRB_3_ISP_BIT : 0) |