From owner-p4-projects@FreeBSD.ORG Sun Dec 2 00:36:14 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 75CDA16A46B; Sun, 2 Dec 2007 00:36:14 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2677216A418 for ; Sun, 2 Dec 2007 00:36:14 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 0F8C413C448 for ; Sun, 2 Dec 2007 00:36:14 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id lB20aDDu007512 for ; Sun, 2 Dec 2007 00:36:13 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id lB20aD6l007509 for perforce@freebsd.org; Sun, 2 Dec 2007 00:36:13 GMT (envelope-from hselasky@FreeBSD.org) Date: Sun, 2 Dec 2007 00:36:13 GMT Message-Id: <200712020036.lB20aD6l007509@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 129933 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 02 Dec 2007 00:36:14 -0000 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;