Date: Sun, 2 Dec 2007 00:36:13 GMT From: Hans Petter Selasky <hselasky@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 129933 for review Message-ID: <200712020036.lB20aD6l007509@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=129933 Change 129933 by hselasky@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;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200712020036.lB20aD6l007509>
