PERFORCE change 168410 for review
Hans Petter Selasky
hselasky at FreeBSD.org
Thu Sep 10 16:59:01 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=168410
Change 168410 by hselasky at hselasky_laptop001 on 2009/09/10 16:58:57
USB EHCI:
- minor code refactor
- expand some "htohc32(temp.sc, 0)" statements to zero.
Affected files ...
.. //depot/projects/usb/src/sys/dev/usb/controller/ehci.c#33 edit
Differences ...
==== //depot/projects/usb/src/sys/dev/usb/controller/ehci.c#33 (text+ko) ====
@@ -1918,18 +1918,15 @@
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 @@
}
}
+ 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_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 */
+ 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;
+ }
- 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));
- }
- }
td = xfer->td_transfer_first;
qh->qh_qtd.qtd_next = td->qtd_self;
More information about the p4-projects
mailing list