mirror of
https://github.com/opnsense/src.git
synced 2026-04-21 22:27:47 -04:00
Simplify logic around setting EHCI_QH_DTC and expand some htohc32(temp.sc, 0)
statements to zero. Submitted by: Hans Petter Selasky
This commit is contained in:
parent
6450e5babf
commit
2094ecda08
1 changed files with 15 additions and 19 deletions
|
|
@ -1918,18 +1918,15 @@ ehci_setup_standard_chain(struct usb_xfer *xfer, ehci_qh_t **qh_last)
|
|||
EHCI_QH_SET_MPL(xfer->max_packet_size));
|
||||
|
||||
if (usbd_get_speed(xfer->xroot->udev) == USB_SPEED_HIGH) {
|
||||
qh_endp |= (EHCI_QH_SET_EPS(EHCI_QH_SPEED_HIGH) |
|
||||
EHCI_QH_DTC);
|
||||
qh_endp |= EHCI_QH_SET_EPS(EHCI_QH_SPEED_HIGH);
|
||||
if (methods != &ehci_device_intr_methods)
|
||||
qh_endp |= EHCI_QH_SET_NRL(8);
|
||||
} else {
|
||||
|
||||
if (usbd_get_speed(xfer->xroot->udev) == USB_SPEED_FULL) {
|
||||
qh_endp |= (EHCI_QH_SET_EPS(EHCI_QH_SPEED_FULL) |
|
||||
EHCI_QH_DTC);
|
||||
qh_endp |= EHCI_QH_SET_EPS(EHCI_QH_SPEED_FULL);
|
||||
} else {
|
||||
qh_endp |= (EHCI_QH_SET_EPS(EHCI_QH_SPEED_LOW) |
|
||||
EHCI_QH_DTC);
|
||||
qh_endp |= EHCI_QH_SET_EPS(EHCI_QH_SPEED_LOW);
|
||||
}
|
||||
|
||||
if (methods == &ehci_device_ctrl_methods) {
|
||||
|
|
@ -1941,6 +1938,11 @@ ehci_setup_standard_chain(struct usb_xfer *xfer, ehci_qh_t **qh_last)
|
|||
}
|
||||
}
|
||||
|
||||
if (temp.auto_data_toggle == 0) {
|
||||
/* software computes the data toggle */
|
||||
qh_endp |= EHCI_QH_DTC;
|
||||
}
|
||||
|
||||
qh->qh_endp = htohc32(temp.sc, qh_endp);
|
||||
|
||||
qh_endphub =
|
||||
|
|
@ -1951,23 +1953,17 @@ ehci_setup_standard_chain(struct usb_xfer *xfer, ehci_qh_t **qh_last)
|
|||
EHCI_QH_SET_PORT(xfer->xroot->udev->hs_port_no));
|
||||
|
||||
qh->qh_endphub = htohc32(temp.sc, qh_endphub);
|
||||
qh->qh_curqtd = htohc32(temp.sc, 0);
|
||||
qh->qh_curqtd = 0;
|
||||
|
||||
/* fill the overlay qTD */
|
||||
qh->qh_qtd.qtd_status = htohc32(temp.sc, 0);
|
||||
|
||||
if (temp.auto_data_toggle) {
|
||||
|
||||
/* let the hardware compute the data toggle */
|
||||
|
||||
qh->qh_endp &= htohc32(temp.sc, ~EHCI_QH_DTC);
|
||||
|
||||
if (xfer->endpoint->toggle_next) {
|
||||
/* DATA1 is next */
|
||||
qh->qh_qtd.qtd_status |=
|
||||
htohc32(temp.sc, EHCI_QTD_SET_TOGGLE(1));
|
||||
}
|
||||
if (temp.auto_data_toggle && xfer->endpoint->toggle_next) {
|
||||
/* DATA1 is next */
|
||||
qh->qh_qtd.qtd_status = htohc32(temp.sc, EHCI_QTD_SET_TOGGLE(1));
|
||||
} else {
|
||||
qh->qh_qtd.qtd_status = 0;
|
||||
}
|
||||
|
||||
td = xfer->td_transfer_first;
|
||||
|
||||
qh->qh_qtd.qtd_next = td->qtd_self;
|
||||
|
|
|
|||
Loading…
Reference in a new issue