Add missed flushing of data which can happen when "xhci_configure_mask()"

is called from "xhci_configure_reset_endpoint()". Ensure the 3-strikes
error feature is always enabled except for ISOCHRONOUS transfers.

MFC after:	1 week
Suggested by:	marius@
This commit is contained in:
Hans Petter Selasky 2014-12-30 08:33:51 +00:00
parent 7a063c27e6
commit 91cccb29c1

View File

@ -2283,6 +2283,7 @@ xhci_configure_mask(struct usb_device *udev, uint32_t mask, uint8_t drop)
temp |= XHCI_SCTX_0_CTX_NUM_SET(x + 1);
xhci_ctx_set_le32(sc, &pinp->ctx_slot.dwSctx0, temp);
}
usb_pc_cpu_flush(&sc->sc_hw.devs[index].input_pc);
return (0);
}
@ -2387,10 +2388,14 @@ xhci_configure_endpoint(struct usb_device *udev,
XHCI_EPCTX_1_MAXB_SET(max_packet_count) |
XHCI_EPCTX_1_MAXP_SIZE_SET(max_packet_size);
if ((udev->parent_hs_hub != NULL) || (udev->address != 0)) {
if (type != UE_ISOCHRONOUS)
temp |= XHCI_EPCTX_1_CERR_SET(3);
}
/*
* Always enable the "three strikes and you are gone" feature
* except for ISOCHRONOUS endpoints. This is suggested by
* section 4.3.3 in the XHCI specification about device slot
* initialisation.
*/
if (type != UE_ISOCHRONOUS)
temp |= XHCI_EPCTX_1_CERR_SET(3);
switch (type) {
case UE_CONTROL: