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:
parent
1d32c3222e
commit
7816434a4f
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=304597
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user