From owner-p4-projects@FreeBSD.ORG Tue Dec 25 10:43:08 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id AE41016A420; Tue, 25 Dec 2007 10:43:08 +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 2C1D016A418 for ; Tue, 25 Dec 2007 10:43:08 +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 2E64413C469 for ; Tue, 25 Dec 2007 10:43:08 +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 lBPAh8EC004480 for ; Tue, 25 Dec 2007 10:43:08 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id lBPAh8Du004477 for perforce@freebsd.org; Tue, 25 Dec 2007 10:43:08 GMT (envelope-from hselasky@FreeBSD.org) Date: Tue, 25 Dec 2007 10:43:08 GMT Message-Id: <200712251043.lBPAh8Du004477@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 131577 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: Tue, 25 Dec 2007 10:43:09 -0000 http://perforce.freebsd.org/chv.cgi?CH=131577 Change 131577 by hselasky@hselasky_laptop001 on 2007/12/25 10:42:44 Some manual edits that were not covered by change 131575 . Affected files ... .. //depot/projects/usb/src/sys/dev/usb/usb_subr.h#86 edit .. //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#86 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb/usb_subr.h#86 (text+ko) ==== @@ -271,6 +271,7 @@ struct usbd_device *udev; struct usbd_xfer *curr_xfer; const struct usbd_config *curr_setup; + const struct usbd_config_sub *curr_setup_sub; const struct usbd_pipe_methods *methods; void *buf; uint32_t *xfer_length_ptr; ==== //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#86 (text+ko) ==== @@ -372,6 +372,7 @@ }; struct usbd_xfer *xfer = parm->curr_xfer; const struct usbd_config *setup = parm->curr_setup; + const struct usbd_config_sub *setup_sub = parm->curr_setup_sub; usb_endpoint_descriptor_t *edesc; struct usbd_std_packet_size std_size; uint32_t n_frlengths; @@ -392,10 +393,10 @@ type = (edesc->bmAttributes & UE_XFERTYPE); - xfer->flags = setup->flags; + xfer->flags = setup_sub->flags; xfer->nframes = setup->frames; - xfer->timeout = setup->timeout; - xfer->callback = setup->cb[parm->udev->flags.usb_mode]; + xfer->timeout = setup_sub->timeout; + xfer->callback = setup_sub->callback; xfer->interval = setup->interval; xfer->endpoint = edesc->bEndpointAddress; xfer->max_packet_size = UGETW(edesc->wMaxPacketSize); @@ -789,14 +790,15 @@ PRINTFN(5, ("using global lock\n")); priv_mtx = &usb_global_lock; } + /* sanity checks */ for (setup = setup_start, n = 0; setup != setup_end; setup++, n++) { if (setup->bufsize == 0xffffffff) { parm.err = USBD_BAD_BUFSIZE; PRINTF(("invalid bufsize\n")); } - if ((setup->cb[USB_MODE_HOST] == NULL) && - (setup->cb[USB_MODE_DEVICE] == NULL)) { + if ((setup->mh.callback == NULL) && + (setup->md.callback == NULL)) { parm.err = USBD_NO_CALLBACK; PRINTF(("no callback\n")); } @@ -860,7 +862,14 @@ for (setup = setup_start, n = 0; setup != setup_end; setup++, n++) { - if (setup->cb[udev->flags.usb_mode] == NULL) { + /* select mode specific structure */ + if (udev->flags.usb_mode == USB_MODE_HOST) { + parm.curr_setup_sub = &(setup->mh); + } else { + parm.curr_setup_sub = &(setup->md); + } + + if (parm.curr_setup_sub->callback == NULL) { /* * Skip USB transfers without * callbacks ! @@ -872,7 +881,7 @@ ifaces[setup->if_index], setup); if (!pipe) { - if (setup->flags.no_pipe_ok) { + if (parm.curr_setup_sub->flags.no_pipe_ok) { continue; } parm.err = USBD_NO_PIPE; @@ -3358,6 +3367,7 @@ .bufsize = 1024, /* bytes */ .mh.flags = {.proxy_buffer = 1,.short_xfer_ok = 1,}, .mh.callback = &usbd_do_request_callback, + .md.flags = {.proxy_buffer = 1,.short_xfer_ok = 1,}, .md.callback = &usbd_handle_request_callback, }, }; @@ -3764,11 +3774,11 @@ * .type = UE_CONTROL, * .endpoint = 0, * .direction = UE_DIR_ANY, - * .timeout = 1000, //1.000 seconds * .interval = 50, //50 milliseconds - * .flags = { }, * .bufsize = sizeof(usb_device_request_t), - * .cb[USB_MODE_HOST] = &my_clear_stall_callback, + * .mh.timeout = 1000, //1.000 seconds + * .mh.flags = { }, + * .mh.callback = &my_clear_stall_callback, * }; */