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