PERFORCE change 129933 for review
Hans Petter Selasky
hselasky at FreeBSD.org
Sat Dec 1 16:36:14 PST 2007
http://perforce.freebsd.org/chv.cgi?CH=129933
Change 129933 by hselasky at hselasky_laptop001 on 2007/12/02 00:35:43
"xfer->flags_int.bdma_enable" must be set
before calling "usbd_transfer_setup_sub" .
Affected files ...
.. //depot/projects/usb/src/sys/dev/usb/ehci.c#54 edit
.. //depot/projects/usb/src/sys/dev/usb/ohci.c#44 edit
.. //depot/projects/usb/src/sys/dev/usb/uhci.c#47 edit
Differences ...
==== //depot/projects/usb/src/sys/dev/usb/ehci.c#54 (text+ko) ====
@@ -3697,6 +3697,7 @@
parm->hc_max_packet_size = 0x400;
parm->hc_max_packet_count = 1;
parm->hc_max_frame_size = EHCI_QTD_PAYLOAD_MAX;
+ xfer->flags_int.bdma_enable = 1;
usbd_transfer_setup_sub(parm);
@@ -3704,13 +3705,12 @@
nqtd = ((2 * xfer->nframes) + 1 /* STATUS */
+ (xfer->max_data_length / xfer->max_usb_frame_size));
- xfer->flags_int.bdma_enable = 1;
-
} else if (parm->methods == &ehci_device_bulk_methods) {
parm->hc_max_packet_size = 0x400;
parm->hc_max_packet_count = 1;
parm->hc_max_frame_size = EHCI_QTD_PAYLOAD_MAX;
+ xfer->flags_int.bdma_enable = 1;
usbd_transfer_setup_sub(parm);
@@ -3718,8 +3718,6 @@
nqtd = ((2 * xfer->nframes)
+ (xfer->max_data_length / xfer->max_usb_frame_size));
- xfer->flags_int.bdma_enable = 1;
-
} else if (parm->methods == &ehci_device_intr_methods) {
if (parm->speed == USB_SPEED_HIGH) {
@@ -3734,6 +3732,7 @@
}
parm->hc_max_frame_size = EHCI_QTD_PAYLOAD_MAX;
+ xfer->flags_int.bdma_enable = 1;
usbd_transfer_setup_sub(parm);
@@ -3741,32 +3740,28 @@
nqtd = ((2 * xfer->nframes)
+ (xfer->max_data_length / xfer->max_usb_frame_size));
- xfer->flags_int.bdma_enable = 1;
-
} else if (parm->methods == &ehci_device_isoc_fs_methods) {
parm->hc_max_packet_size = 0x3FF;
parm->hc_max_packet_count = 1;
parm->hc_max_frame_size = 0x3FF;
+ xfer->flags_int.bdma_enable = 1;
usbd_transfer_setup_sub(parm);
nsitd = xfer->nframes;
- xfer->flags_int.bdma_enable = 1;
-
} else if (parm->methods == &ehci_device_isoc_hs_methods) {
parm->hc_max_packet_size = 0x400;
parm->hc_max_packet_count = 3;
parm->hc_max_frame_size = 0xC00;
+ xfer->flags_int.bdma_enable = 1;
usbd_transfer_setup_sub(parm);
nitd = (xfer->nframes + 7) / 8;
- xfer->flags_int.bdma_enable = 1;
-
} else {
parm->hc_max_packet_size = 0x400;
==== //depot/projects/usb/src/sys/dev/usb/ohci.c#44 (text+ko) ====
@@ -2696,45 +2696,54 @@
parm->hc_max_packet_count = 1;
parm->hc_max_frame_size = OHCI_PAGE_SIZE;
- usbd_transfer_setup_sub(parm);
-
/*
* calculate ntd and nqh
*/
if (parm->methods == &ohci_device_ctrl_methods) {
+ xfer->flags_int.bdma_enable = 1;
+
+ usbd_transfer_setup_sub(parm);
+
nitd = 0;
ntd = ((2 * xfer->nframes) + 1 /* STATUS */
+ (xfer->max_data_length / xfer->max_usb_frame_size));
nqh = 1;
+ } else if (parm->methods == &ohci_device_bulk_methods) {
xfer->flags_int.bdma_enable = 1;
- } else if (parm->methods == &ohci_device_bulk_methods) {
+ usbd_transfer_setup_sub(parm);
+
nitd = 0;
ntd = ((2 * xfer->nframes)
+ (xfer->max_data_length / xfer->max_usb_frame_size));
nqh = 1;
+ } else if (parm->methods == &ohci_device_intr_methods) {
xfer->flags_int.bdma_enable = 1;
- } else if (parm->methods == &ohci_device_intr_methods) {
+ usbd_transfer_setup_sub(parm);
+
nitd = 0;
ntd = ((2 * xfer->nframes)
+ (xfer->max_data_length / xfer->max_usb_frame_size));
nqh = 1;
+ } else if (parm->methods == &ohci_device_isoc_methods) {
xfer->flags_int.bdma_enable = 1;
- } else if (parm->methods == &ohci_device_isoc_methods) {
+ usbd_transfer_setup_sub(parm);
+
nitd = ((xfer->max_data_length / OHCI_PAGE_SIZE) +
((xfer->nframes + OHCI_ITD_NOFFSET - 1) / OHCI_ITD_NOFFSET) +
1 /* EXTRA */ );
ntd = 0;
nqh = 1;
- xfer->flags_int.bdma_enable = 1;
+ } else {
+
+ usbd_transfer_setup_sub(parm);
- } else {
nitd = 0;
ntd = 0;
nqh = 0;
==== //depot/projects/usb/src/sys/dev/usb/uhci.c#47 (text+ko) ====
@@ -3155,12 +3155,14 @@
parm->hc_max_packet_count = 1;
parm->hc_max_frame_size = 0x500;
- usbd_transfer_setup_sub(parm);
-
/*
* compute ntd and nqh
*/
if (parm->methods == &uhci_device_ctrl_methods) {
+ xfer->flags_int.bdma_enable = 1;
+ xfer->flags_int.bdma_no_post_sync = 1;
+
+ usbd_transfer_setup_sub(parm);
/* see EHCI HC driver for proof of "ntd" formula */
@@ -3168,36 +3170,38 @@
ntd = ((2 * xfer->nframes) + 1 /* STATUS */
+ (xfer->max_data_length / xfer->max_frame_size));
+ } else if (parm->methods == &uhci_device_bulk_methods) {
xfer->flags_int.bdma_enable = 1;
xfer->flags_int.bdma_no_post_sync = 1;
- } else if (parm->methods == &uhci_device_bulk_methods) {
+ usbd_transfer_setup_sub(parm);
nqh = 1;
ntd = ((2 * xfer->nframes)
+ (xfer->max_data_length / xfer->max_frame_size));
+ } else if (parm->methods == &uhci_device_intr_methods) {
xfer->flags_int.bdma_enable = 1;
xfer->flags_int.bdma_no_post_sync = 1;
- } else if (parm->methods == &uhci_device_intr_methods) {
+ usbd_transfer_setup_sub(parm);
nqh = 1;
ntd = ((2 * xfer->nframes)
+ (xfer->max_data_length / xfer->max_frame_size));
+ } else if (parm->methods == &uhci_device_isoc_methods) {
xfer->flags_int.bdma_enable = 1;
xfer->flags_int.bdma_no_post_sync = 1;
- } else if (parm->methods == &uhci_device_isoc_methods) {
+ usbd_transfer_setup_sub(parm);
nqh = 0;
ntd = xfer->nframes;
- xfer->flags_int.bdma_enable = 1;
- xfer->flags_int.bdma_no_post_sync = 1;
+ } else {
- } else {
+ usbd_transfer_setup_sub(parm);
nqh = 0;
ntd = 0;
More information about the p4-projects
mailing list