uslcom(4): Clear stall at every open.
To avoid data loss, make sure both the receive and transmit data toggles get reset, before trying to read or write any data. MFC after: 1 week Sponsored by: NVIDIA Networking
This commit is contained in:
parent
84e8678870
commit
9e0edafe92
@ -439,12 +439,6 @@ uslcom_attach(device_t dev)
|
||||
"error=%s\n", usbd_errstr(error));
|
||||
goto detach;
|
||||
}
|
||||
/* clear stall at first run */
|
||||
mtx_lock(&sc->sc_mtx);
|
||||
usbd_xfer_set_stall(sc->sc_xfer[USLCOM_BULK_DT_WR]);
|
||||
usbd_xfer_set_stall(sc->sc_xfer[USLCOM_BULK_DT_RD]);
|
||||
mtx_unlock(&sc->sc_mtx);
|
||||
|
||||
sc->sc_partnum = uslcom_get_partnum(sc);
|
||||
|
||||
error = ucom_attach(&sc->sc_super_ucom, &sc->sc_ucom, 1, sc,
|
||||
@ -514,6 +508,10 @@ uslcom_cfg_open(struct ucom_softc *ucom)
|
||||
DPRINTF("UART enable failed (ignored)\n");
|
||||
}
|
||||
|
||||
/* clear stall */
|
||||
usbd_xfer_set_stall(sc->sc_xfer[USLCOM_BULK_DT_WR]);
|
||||
usbd_xfer_set_stall(sc->sc_xfer[USLCOM_BULK_DT_RD]);
|
||||
|
||||
/* start polling status */
|
||||
uslcom_watchdog(sc);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user