Fix for invalid use of bits in input context. Basically split

configuring of EP0 and non-EP0 into xhci_cmd_evaluate_ctx() and
xhci_cmd_configure_ep() respectivly. This resolves some errors when
using XHCI under QEMU and gets is more in line with the XHCI
specification.

PR:		212021
MFC after:	1 week
This commit is contained in:
Hans Petter Selasky 2016-08-22 10:21:25 +00:00
parent 1d32c3222e
commit 7816434a4f
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=304597

View File

@ -3867,12 +3867,10 @@ xhci_configure_reset_endpoint(struct usb_xfer *xfer)
xhci_configure_mask(udev, (1U << epno) | 1U, 0);
err = xhci_cmd_evaluate_ctx(sc, buf_inp.physaddr, index);
if (err != 0)
DPRINTF("Could not configure endpoint %u\n", epno);
err = xhci_cmd_configure_ep(sc, buf_inp.physaddr, 0, index);
if (epno > 1)
err = xhci_cmd_configure_ep(sc, buf_inp.physaddr, 0, index);
else
err = xhci_cmd_evaluate_ctx(sc, buf_inp.physaddr, index);
if (err != 0)
DPRINTF("Could not configure endpoint %u\n", epno);
@ -4255,6 +4253,10 @@ xhci_device_state_change(struct usb_device *udev)
sc->sc_hw.devs[index].state = XHCI_ST_ADDRESSED;
/* set configure mask to slot only */
xhci_configure_mask(udev, 1, 0);
/* deconfigure all endpoints, except EP0 */
err = xhci_cmd_configure_ep(sc, 0, 1, index);
if (err) {