Date: Wed, 2 Jul 2008 21:48:36 GMT From: Hans Petter Selasky <hselasky@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 144510 for review Message-ID: <200807022148.m62LmavX008916@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=144510 Change 144510 by hselasky@hselasky_laptop001 on 2008/07/02 21:48:14 New USB bluetooth module finished. Affected files ... .. //depot/projects/usb/src/sys/dev/usb2/bluetooth/TODO.TXT#2 edit .. //depot/projects/usb/src/sys/dev/usb2/bluetooth/ng_ubt2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/bluetooth/ng_ubt2_var.h#2 edit .. //depot/projects/usb/src/sys/dev/usb2/bluetooth/ubtbcmfw2.c#2 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_dev.c#9 edit .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_device.c#7 edit .. //depot/projects/usb/src/sys/modules/usb2/bluetooth/Makefile#2 edit Differences ... ==== //depot/projects/usb/src/sys/dev/usb2/bluetooth/TODO.TXT#2 (text+ko) ==== ==== //depot/projects/usb/src/sys/dev/usb2/bluetooth/ng_ubt2.c#2 (text+ko) ==== @@ -31,29 +31,32 @@ * $FreeBSD: src/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c,v 1.33 2007/06/23 04:34:38 imp Exp $ */ -#include <sys/cdefs.h> -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/kernel.h> +#include <dev/usb2/include/usb2_devid.h> +#include <dev/usb2/include/usb2_standard.h> +#include <dev/usb2/include/usb2_mfunc.h> +#include <dev/usb2/include/usb2_error.h> +#include <dev/usb2/include/usb2_revision.h> + +#define USB_DEBUG_VAR usb2_debug + +#include <dev/usb2/core/usb2_core.h> +#include <dev/usb2/core/usb2_debug.h> +#include <dev/usb2/core/usb2_parse.h> +#include <dev/usb2/core/usb2_lookup.h> +#include <dev/usb2/core/usb2_util.h> +#include <dev/usb2/core/usb2_busdma.h> + #include <sys/mbuf.h> -#include <sys/endian.h> -#include <dev/usb/usb_port.h> -#include <dev/usb/usb.h> -#include <dev/usb/usb_subr.h> -#include <dev/usb/usb_quirks.h> - #include <netgraph/ng_message.h> #include <netgraph/netgraph.h> #include <netgraph/ng_parse.h> #include <netgraph/bluetooth/include/ng_bluetooth.h> #include <netgraph/bluetooth/include/ng_hci.h> #include <netgraph/bluetooth/include/ng_ubt.h> -#include <netgraph/bluetooth/drivers/ubt/ng_ubt_var.h> -#include "usbdevs.h" - -#define DPRINTF(...) do { } while (0) +#include <dev/usb2/bluetooth/usb2_bluetooth.h> +#include <dev/usb2/bluetooth/ng_ubt2_var.h> /* * USB methods @@ -181,30 +184,23 @@ /* USB methods */ -static usbd_callback_t ubt_ctrl_write_callback; -static usbd_callback_t ubt_intr_read_callback; -static usbd_callback_t ubt_intr_read_clear_stall_callback; -static usbd_callback_t ubt_bulk_read_callback; -static usbd_callback_t ubt_bulk_read_clear_stall_callback; -static usbd_callback_t ubt_bulk_write_callback; -static usbd_callback_t ubt_bulk_write_clear_stall_callback; -static usbd_callback_t ubt_isoc_read_callback; -static usbd_callback_t ubt_isoc_write_callback; +static usb2_callback_t ubt_ctrl_write_callback; +static usb2_callback_t ubt_intr_read_callback; +static usb2_callback_t ubt_intr_read_clear_stall_callback; +static usb2_callback_t ubt_bulk_read_callback; +static usb2_callback_t ubt_bulk_read_clear_stall_callback; +static usb2_callback_t ubt_bulk_write_callback; +static usb2_callback_t ubt_bulk_write_clear_stall_callback; +static usb2_callback_t ubt_isoc_read_callback; +static usb2_callback_t ubt_isoc_write_callback; -static int - ubt_modevent(module_t mod, int event, void *data); +static int ubt_modevent(module_t mod, int event, void *data); +static void ubt_intr_read_complete(node_p node, hook_p hook, void *arg1, int arg2); +static void ubt_bulk_read_complete(node_p node, hook_p hook, void *arg1, int arg2); +static void ubt_isoc_read_complete(node_p node, hook_p hook, void *arg1, int arg2); -static void - ubt_intr_read_complete(node_p node, hook_p hook, void *arg1, int arg2); - -static void - ubt_bulk_read_complete(node_p node, hook_p hook, void *arg1, int arg2); - -static void - ubt_isoc_read_complete(node_p node, hook_p hook, void *arg1, int arg2); - /* USB config */ -static const struct usbd_config ubt_config_if_0[UBT_IF_0_N_TRANSFER] = { +static const struct usb2_config ubt_config_if_0[UBT_IF_0_N_TRANSFER] = { [0] = { .type = UE_BULK, @@ -237,7 +233,7 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = (sizeof(usb_device_request_t) + UBT_CTRL_BUFFER_SIZE), + .mh.bufsize = (sizeof(struct usb2_device_request) + UBT_CTRL_BUFFER_SIZE), .mh.callback = &ubt_ctrl_write_callback, .mh.timeout = 5000, /* 5 seconds */ }, @@ -246,7 +242,7 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.callback = &ubt_bulk_write_clear_stall_callback, .mh.timeout = 1000, /* 1 second */ .mh.interval = 50, /* 50ms */ @@ -256,7 +252,7 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.callback = &ubt_bulk_read_clear_stall_callback, .mh.timeout = 1000, /* 1 second */ .mh.interval = 50, /* 50ms */ @@ -266,7 +262,7 @@ .type = UE_CONTROL, .endpoint = 0x00, /* Control pipe */ .direction = UE_DIR_ANY, - .mh.bufsize = sizeof(usb_device_request_t), + .mh.bufsize = sizeof(struct usb2_device_request), .mh.callback = &ubt_intr_read_clear_stall_callback, .mh.timeout = 1000, /* 1 second */ .mh.interval = 50, /* 50ms */ @@ -274,7 +270,7 @@ }; /* USB config */ -static const struct usbd_config +static const struct usb2_config ubt_config_if_1_full_speed[UBT_IF_1_N_TRANSFER] = { [0] = { @@ -319,7 +315,7 @@ }; /* USB config */ -static const struct usbd_config +static const struct usb2_config ubt_config_if_1_high_speed[UBT_IF_1_N_TRANSFER] = { [0] = { @@ -367,10 +363,10 @@ * Module */ -DRIVER_MODULE(ng_ubt, uhub, ubt_driver, ubt_devclass, ubt_modevent, 0); +DRIVER_MODULE(ng_ubt, ushub, ubt_driver, ubt_devclass, ubt_modevent, 0); MODULE_VERSION(ng_ubt, NG_BLUETOOTH_VERSION); MODULE_DEPEND(ng_ubt, netgraph, NG_ABI_VERSION, NG_ABI_VERSION, NG_ABI_VERSION); -MODULE_DEPEND(ng_ubt, usb, 1, 1, 1); +MODULE_DEPEND(ng_ubt, usb2_core, 1, 1, 1); /**************************************************************************** **************************************************************************** @@ -394,101 +390,85 @@ printf("%s: Could not register " "Netgraph node type, error=%d\n", NG_UBT_NODE_TYPE, error); - } else - error = usbd_driver_load(mod, event, data); + } break; case MOD_UNLOAD: error = ng_rmtype(&typestruct); - if (error == 0) - error = usbd_driver_load(mod, event, data); break; default: error = EOPNOTSUPP; break; } - return (error); } /* ubt_modevent */ /* + * If for some reason device should not be attached then put + * VendorID/ProductID pair into the list below. The format is + * as follows: + * + * { VENDOR_ID, PRODUCT_ID }, + * + * where VENDOR_ID and PRODUCT_ID are hex numbers. + */ +static const struct usb2_device_id ubt_ignore_devs[] = { + /* AVM USB Bluetooth-Adapter BlueFritz! v1.0 */ + {USB_VPI(USB_VENDOR_AVM, 0x2200, 0)}, +}; + +/* List of supported bluetooth devices */ +static const struct usb2_device_id ubt_devs[] = { + /* Generic Bluetooth class devices. */ + {USB_IFACE_CLASS(UDCLASS_WIRELESS), + USB_IFACE_SUBCLASS(UDSUBCLASS_RF), + USB_IFACE_PROTOCOL(UDPROTO_BLUETOOTH)}, + + /* AVM USB Bluetooth-Adapter BlueFritz! v2.0 */ + {USB_VPI(USB_VENDOR_AVM, 0x3800, 0)}, +}; + +/* * Probe for a USB Bluetooth device */ -static int32_t +static int ubt_probe(device_t dev) { - /* - * If for some reason device should not be attached then put - * VendorID/ProductID pair into the list below. The format is - * as follows: - * - * { VENDOR_ID, PRODUCT_ID }, - * - * where VENDOR_ID and PRODUCT_ID are hex numbers. - */ + struct usb2_attach_arg *uaa = device_get_ivars(dev); - static struct usb_devno const ubt_ignored_devices[] = { - {USB_VENDOR_AVM, 0x2200}, /* AVM USB Bluetooth-Adapter - * BlueFritz! v1.0 */ - {0, 0} /* This should be the last item in the - * list */ - }; - - /* - * If device violates Bluetooth specification and has bDeviceClass, - * bDeviceSubClass and bDeviceProtocol set to wrong values then you - * could try to put VendorID/ProductID pair into the list below. - * Adding VendorID/ProductID pair into this list forces ng_ubt(4) - * to attach to the broken device. - */ - - static struct usb_devno const ubt_broken_devices[] = { - {USB_VENDOR_AVM, 0x3800}, /* AVM USB Bluetooth-Adapter - * BlueFritz! v2.0 */ - {0, 0} /* This should be the last item in the - * list */ - }; - - struct usb_attach_arg *uaa = device_get_ivars(dev); - usb_device_descriptor_t *dd = usbd_get_device_descriptor(uaa->device); - - if (uaa->usb_mode != USB_MODE_HOST) { - return (UMATCH_NONE); + if (uaa->usb2_mode != USB_MODE_HOST) { + return (ENXIO); } - if ((uaa->iface == NULL) || - usb_lookup(ubt_ignored_devices, uaa->vendor, uaa->product)) { - return (UMATCH_NONE); + if (uaa->info.bIfaceIndex != 0) { + return (ENXIO); } - if ((dd->bDeviceClass == UDCLASS_WIRELESS) && - (dd->bDeviceSubClass == UDSUBCLASS_RF) && - (dd->bDeviceProtocol == UDPROTO_BLUETOOTH)) { - return (UMATCH_DEVCLASS_DEVSUBCLASS); + if (usb2_lookup_id_by_uaa(ubt_ignore_devs, + sizeof(ubt_ignore_devs), uaa) == 0) { + return (ENXIO); } - if (usb_lookup(ubt_broken_devices, uaa->vendor, uaa->product)) { - return (UMATCH_VENDOR_PRODUCT); - } - return (UMATCH_NONE); + return (usb2_lookup_id_by_uaa(ubt_devs, sizeof(ubt_devs), uaa)); } /* * Attach the device */ -static int32_t +static int ubt_attach(device_t dev) { - struct usb_attach_arg *uaa = device_get_ivars(dev); + struct usb2_attach_arg *uaa = device_get_ivars(dev); struct ubt_softc *sc = device_get_softc(dev); - const struct usbd_config *isoc_setup; - struct usbd_pipe *pipe; + const struct usb2_config *isoc_setup; + struct usb2_endpoint_descriptor *ed; uint16_t wMaxPacketSize; uint8_t alt_index; uint8_t iface_index; uint8_t i; + uint8_t j; - usbd_set_device_desc(dev); + device_set_usb2_desc(dev); snprintf(sc->sc_name, sizeof(sc->sc_name), "%s", device_get_nameunit(dev)); @@ -510,13 +490,13 @@ /* isoc-out pipe */ NG_BT_MBUFQ_INIT(&sc->sc_scoq, - (usbd_get_speed(uaa->device) == USB_SPEED_HIGH) ? + (usb2_get_speed(uaa->device) == USB_SPEED_HIGH) ? (2 * UBT_ISOC_NFRAMES * 8) : (2 * UBT_ISOC_NFRAMES)); /* isoc-in pipe */ NG_BT_MBUFQ_INIT(&sc->sc_sciq, - (usbd_get_speed(uaa->device) == USB_SPEED_HIGH) ? + (usb2_get_speed(uaa->device) == USB_SPEED_HIGH) ? (2 * UBT_ISOC_NFRAMES * 8) : (2 * UBT_ISOC_NFRAMES)); @@ -549,7 +529,7 @@ mtx_init(&(sc->sc_mtx), "ubt lock", NULL, MTX_DEF | MTX_RECURSE); iface_index = 0; - if (usbd_transfer_setup + if (usb2_transfer_setup (uaa->device, &iface_index, sc->sc_xfer_if_0, ubt_config_if_0, UBT_IF_0_N_TRANSFER, sc, &(sc->sc_mtx))) { device_printf(dev, "Could not allocate transfers " @@ -563,37 +543,47 @@ * wMaxPacketSize) */ isoc_setup = - ((usbd_get_speed(uaa->device) == USB_SPEED_HIGH) ? + ((usb2_get_speed(uaa->device) == USB_SPEED_HIGH) ? ubt_config_if_1_high_speed : ubt_config_if_1_full_speed); wMaxPacketSize = 0; - alt_index = 0; - for (i = 0; i < 32; i++) { + /* search through all the descriptors looking for bidir mode */ - if (usbd_fill_iface_data(uaa->device, 1, i)) { - /* end of alternate settings */ - break; - } - pipe = usbd_get_pipe(uaa->device, 1, isoc_setup); + alt_index = 0 - 1; + i = 0; + j = 0; + while (1) { + uint16_t temp; - if (pipe && pipe->edesc) { - - if (UGETW(pipe->edesc->wMaxPacketSize) > wMaxPacketSize) { - wMaxPacketSize = UGETW(pipe->edesc->wMaxPacketSize); - alt_index = i; + ed = usb2_find_edesc( + usb2_get_config_descriptor(uaa->device), 1, i, j); + if (ed == NULL) { + if (j == 0) { + /* end of interfaces */ + break; + } else { + /* next interface */ + j = 0; + i++; + continue; } } + temp = UGETW(ed->wMaxPacketSize); + if (temp > wMaxPacketSize) { + wMaxPacketSize = temp; + alt_index = i; + } } - if (usbd_set_alt_interface_index(uaa->device, 1, alt_index)) { + if (usb2_set_alt_interface_index(uaa->device, 1, alt_index)) { device_printf(dev, "Could not set alternate " "setting %d for interface 1!\n", alt_index); goto detach; } iface_index = 1; - if (usbd_transfer_setup + if (usb2_transfer_setup (uaa->device, &iface_index, sc->sc_xfer_if_1, isoc_setup, UBT_IF_1_N_TRANSFER, sc, &(sc->sc_mtx))) { device_printf(dev, "Could not allocate transfers " @@ -622,12 +612,12 @@ /* claim all interfaces on the device */ - for (i = 0;; i++) { + for (i = 1;; i++) { - if (usbd_get_iface(uaa->device, i) == NULL) { + if (usb2_get_iface(uaa->device, i) == NULL) { break; } - USBD_SET_IFACE_NO_PROBE(uaa->device, i); + usb2_set_parent_iface(uaa->device, i, uaa->info.bIfaceIndex); } return (0); /* success */ @@ -642,7 +632,7 @@ * Detach the device */ -int32_t +int ubt_detach(device_t dev) { struct ubt_softc *sc = device_get_softc(dev); @@ -656,9 +646,9 @@ } /* free USB transfers, if any */ - usbd_transfer_unsetup(sc->sc_xfer_if_0, UBT_IF_0_N_TRANSFER); + usb2_transfer_unsetup(sc->sc_xfer_if_0, UBT_IF_0_N_TRANSFER); - usbd_transfer_unsetup(sc->sc_xfer_if_1, UBT_IF_1_N_TRANSFER); + usb2_transfer_unsetup(sc->sc_xfer_if_1, UBT_IF_1_N_TRANSFER); mtx_destroy(&(sc->sc_mtx)); @@ -673,14 +663,14 @@ } static void -ubt_ctrl_write_callback(struct usbd_xfer *xfer) +ubt_ctrl_write_callback(struct usb2_xfer *xfer) { struct ubt_softc *sc = xfer->priv_sc; - usb_device_request_t req; + struct usb2_device_request req; struct mbuf *m; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: tr_transferred: if (xfer->error) { @@ -690,7 +680,7 @@ NG_UBT_STAT_PCKTS_SENT(sc->sc_stat); } - case USBD_ST_SETUP: + case USB_ST_SETUP: /* get next mbuf, if any */ @@ -719,8 +709,8 @@ NG_UBT_INFO(sc, "Sending control request, bmRequestType=0x%02x, " "wLength=%d\n", req.bmRequestType, UGETW(req.wLength)); - usbd_copy_in(xfer->frbuffers, 0, &req, sizeof(req)); - usbd_m_copy_in(xfer->frbuffers + 1, 0, m, 0, m->m_pkthdr.len); + usb2_copy_in(xfer->frbuffers, 0, &req, sizeof(req)); + usb2_m_copy_in(xfer->frbuffers + 1, 0, m, 0, m->m_pkthdr.len); xfer->frlengths[0] = sizeof(req); xfer->frlengths[1] = m->m_pkthdr.len; @@ -728,11 +718,11 @@ NG_FREE_M(m); - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: /* Error */ - if (xfer->error == USBD_ERR_CANCELLED) { + if (xfer->error == USB_ERR_CANCELLED) { /* ignore */ return; } @@ -741,15 +731,15 @@ } static void -ubt_intr_read_callback(struct usbd_xfer *xfer) +ubt_intr_read_callback(struct usb2_xfer *xfer) { struct ubt_softc *sc = xfer->priv_sc; struct mbuf *m; uint32_t max_len; uint8_t *ptr; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: /* allocate a new mbuf */ @@ -778,7 +768,7 @@ } ptr = ((uint8_t *)(m->m_data)) + m->m_len; - usbd_copy_out(xfer->frbuffers, 0, ptr, xfer->actlen); + usb2_copy_out(xfer->frbuffers, 0, ptr, xfer->actlen); m->m_pkthdr.len += xfer->actlen; m->m_len += xfer->actlen; @@ -788,7 +778,7 @@ sc->sc_intr_buffer = m; - case USBD_ST_SETUP: + case USB_ST_SETUP: tr_setup: if (sc->sc_intr_buffer) { @@ -796,19 +786,19 @@ return; } if (sc->sc_flags & UBT_FLAG_INTR_STALL) { - usbd_transfer_start(sc->sc_xfer_if_0[6]); + usb2_transfer_start(sc->sc_xfer_if_0[6]); return; } xfer->frlengths[0] = xfer->max_data_length; - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: /* Error */ - if (xfer->error != USBD_ERR_CANCELLED) { + if (xfer->error != USB_ERR_CANCELLED) { /* try to clear stall first */ sc->sc_flags |= UBT_FLAG_INTR_STALL; - usbd_transfer_start(sc->sc_xfer_if_0[6]); + usb2_transfer_start(sc->sc_xfer_if_0[6]); } return; @@ -816,15 +806,15 @@ } static void -ubt_intr_read_clear_stall_callback(struct usbd_xfer *xfer) +ubt_intr_read_clear_stall_callback(struct usb2_xfer *xfer) { struct ubt_softc *sc = xfer->priv_sc; - struct usbd_xfer *xfer_other = sc->sc_xfer_if_0[2]; + struct usb2_xfer *xfer_other = sc->sc_xfer_if_0[2]; - if (usbd_clear_stall_callback(xfer, xfer_other)) { - DPRINTF(sc, 0, "stall cleared\n"); + if (usb2_clear_stall_callback(xfer, xfer_other)) { + DPRINTF(0, "stall cleared\n"); sc->sc_flags &= ~UBT_FLAG_INTR_STALL; - usbd_transfer_start(xfer_other); + usb2_transfer_start(xfer_other); } return; } @@ -888,7 +878,7 @@ } /* start USB transfer if not already started */ - usbd_transfer_start(sc->sc_xfer_if_0[2]); + usb2_transfer_start(sc->sc_xfer_if_0[2]); mtx_unlock(&(sc->sc_mtx)); @@ -896,15 +886,15 @@ } static void -ubt_bulk_read_callback(struct usbd_xfer *xfer) +ubt_bulk_read_callback(struct usb2_xfer *xfer) { struct ubt_softc *sc = xfer->priv_sc; struct mbuf *m; uint32_t max_len; uint8_t *ptr; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: /* allocate new mbuf */ @@ -933,7 +923,7 @@ } ptr = ((uint8_t *)(m->m_data)) + m->m_len; - usbd_copy_out(xfer->frbuffers, 0, ptr, xfer->actlen); + usb2_copy_out(xfer->frbuffers, 0, ptr, xfer->actlen); m->m_pkthdr.len += xfer->actlen; m->m_len += xfer->actlen; @@ -943,26 +933,26 @@ sc->sc_bulk_in_buffer = m; - case USBD_ST_SETUP: + case USB_ST_SETUP: tr_setup: if (sc->sc_bulk_in_buffer) { ng_send_fn(sc->sc_node, NULL, ubt_bulk_read_complete, NULL, 0); return; } if (sc->sc_flags & UBT_FLAG_READ_STALL) { - usbd_transfer_start(sc->sc_xfer_if_0[5]); + usb2_transfer_start(sc->sc_xfer_if_0[5]); return; } xfer->frlengths[0] = xfer->max_data_length; - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: /* Error */ - if (xfer->error != USBD_ERR_CANCELLED) { + if (xfer->error != USB_ERR_CANCELLED) { /* try to clear stall first */ sc->sc_flags |= UBT_FLAG_READ_STALL; - usbd_transfer_start(sc->sc_xfer_if_0[5]); + usb2_transfer_start(sc->sc_xfer_if_0[5]); } return; @@ -970,15 +960,15 @@ } static void -ubt_bulk_read_clear_stall_callback(struct usbd_xfer *xfer) +ubt_bulk_read_clear_stall_callback(struct usb2_xfer *xfer) { struct ubt_softc *sc = xfer->priv_sc; - struct usbd_xfer *xfer_other = sc->sc_xfer_if_0[1]; + struct usb2_xfer *xfer_other = sc->sc_xfer_if_0[1]; - if (usbd_clear_stall_callback(xfer, xfer_other)) { - DPRINTF(sc, 0, "stall cleared\n"); + if (usb2_clear_stall_callback(xfer, xfer_other)) { + DPRINTF(0, "stall cleared\n"); sc->sc_flags &= ~UBT_FLAG_READ_STALL; - usbd_transfer_start(xfer_other); + usb2_transfer_start(xfer_other); } return; } @@ -1045,7 +1035,7 @@ } /* start USB transfer if not already started */ - usbd_transfer_start(sc->sc_xfer_if_0[1]); + usb2_transfer_start(sc->sc_xfer_if_0[1]); mtx_unlock(&(sc->sc_mtx)); @@ -1053,21 +1043,21 @@ } static void -ubt_bulk_write_callback(struct usbd_xfer *xfer) +ubt_bulk_write_callback(struct usb2_xfer *xfer) { struct ubt_softc *sc = xfer->priv_sc; struct mbuf *m; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: NG_UBT_INFO(sc, "sent %d bytes to bulk-out " "pipe\n", xfer->actlen); NG_UBT_STAT_BYTES_SENT(sc->sc_stat, xfer->actlen); NG_UBT_STAT_PCKTS_SENT(sc->sc_stat); - case USBD_ST_SETUP: + case USB_ST_SETUP: if (sc->sc_flags & UBT_FLAG_WRITE_STALL) { - usbd_transfer_start(sc->sc_xfer_if_0[4]); + usb2_transfer_start(sc->sc_xfer_if_0[4]); return; } /* get next mbuf, if any */ @@ -1089,7 +1079,7 @@ UBT_BULK_WRITE_BUFFER_SIZE, m->m_pkthdr.len); } - usbd_m_copy_in(xfer->frbuffers, 0, m, 0, m->m_pkthdr.len); + usb2_m_copy_in(xfer->frbuffers, 0, m, 0, m->m_pkthdr.len); NG_UBT_INFO(sc, "bulk-out transfer has been started, " "len=%d\n", m->m_pkthdr.len); @@ -1098,20 +1088,20 @@ NG_FREE_M(m); - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: /* Error */ - if (xfer->error != USBD_ERR_CANCELLED) { + if (xfer->error != USB_ERR_CANCELLED) { NG_UBT_WARN(sc, "bulk-out transfer failed: %s\n", - usbd_errstr(xfer->error)); + usb2_errstr(xfer->error)); NG_UBT_STAT_OERROR(sc->sc_stat); /* try to clear stall first */ sc->sc_flags |= UBT_FLAG_WRITE_STALL; - usbd_transfer_start(sc->sc_xfer_if_0[4]); + usb2_transfer_start(sc->sc_xfer_if_0[4]); } return; @@ -1119,21 +1109,21 @@ } static void -ubt_bulk_write_clear_stall_callback(struct usbd_xfer *xfer) +ubt_bulk_write_clear_stall_callback(struct usb2_xfer *xfer) { struct ubt_softc *sc = xfer->priv_sc; - struct usbd_xfer *xfer_other = sc->sc_xfer_if_0[0]; + struct usb2_xfer *xfer_other = sc->sc_xfer_if_0[0]; - if (usbd_clear_stall_callback(xfer, xfer_other)) { - DPRINTF(sc, 0, "stall cleared\n"); + if (usb2_clear_stall_callback(xfer, xfer_other)) { + DPRINTF(0, "stall cleared\n"); sc->sc_flags &= ~UBT_FLAG_WRITE_STALL; - usbd_transfer_start(xfer_other); + usb2_transfer_start(xfer_other); } return; } static void -ubt_isoc_read_callback(struct usbd_xfer *xfer) +ubt_isoc_read_callback(struct usb2_xfer *xfer) { struct ubt_softc *sc = xfer->priv_sc; ng_hci_scodata_pkt_t hdr; @@ -1143,8 +1133,8 @@ uint32_t n; uint32_t offset; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: tr_transferred: offset = 0; @@ -1152,7 +1142,7 @@ if (xfer->frlengths[n] >= sizeof(hdr)) { - usbd_copy_out(xfer->frbuffers, offset, + usb2_copy_out(xfer->frbuffers, offset, &hdr, sizeof(hdr)); if (hdr.length == (xfer->frlengths[n] - sizeof(hdr))) { @@ -1194,7 +1184,7 @@ } ptr = ((uint8_t *)(m->m_data)) + m->m_len; - usbd_copy_out + usb2_copy_out (xfer->frbuffers, offset, ptr, xfer->frlengths[n]); @@ -1208,7 +1198,7 @@ offset += xfer->max_frame_size; } - case USBD_ST_SETUP: + case USB_ST_SETUP: tr_setup: if (NG_BT_MBUFQ_LEN(&(sc->sc_sciq)) > 0) { @@ -1218,11 +1208,11 @@ xfer->frlengths[n] = xfer->max_frame_size; } - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: /* Error */ - if (xfer->error == USBD_ERR_CANCELLED) { + if (xfer->error == USB_ERR_CANCELLED) { /* ignore */ return; } @@ -1278,7 +1268,7 @@ } static void -ubt_isoc_write_callback(struct usbd_xfer *xfer) +ubt_isoc_write_callback(struct usb2_xfer *xfer) { struct ubt_softc *sc = xfer->priv_sc; struct mbuf *m; @@ -1286,8 +1276,8 @@ uint32_t len; uint32_t offset; - switch (USBD_GET_STATE(xfer)) { - case USBD_ST_TRANSFERRED: + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: tr_transferred: if (xfer->error) { NG_UBT_STAT_OERROR(sc->sc_stat); @@ -1296,7 +1286,7 @@ NG_UBT_STAT_PCKTS_SENT(sc->sc_stat); } - case USBD_ST_SETUP: + case USB_ST_SETUP: offset = 0; for (n = 0; n < xfer->nframes; n++) { @@ -1306,7 +1296,7 @@ if (m) { len = min(xfer->max_frame_size, m->m_pkthdr.len); - usbd_m_copy_in(xfer->frbuffers, offset, m, 0, len); + usb2_m_copy_in(xfer->frbuffers, offset, m, 0, len); NG_FREE_M(m); @@ -1317,11 +1307,11 @@ } } - usbd_start_hardware(xfer); + usb2_start_hardware(xfer); return; default: /* Error */ - if (xfer->error == USBD_ERR_CANCELLED) { + if (xfer->error == USB_ERR_CANCELLED) { /* ignore */ return; } @@ -1436,27 +1426,27 @@ UBT_FLAG_INTR_STALL); /* start intr transfer */ - usbd_transfer_start(sc->sc_xfer_if_0[2]); + usb2_transfer_start(sc->sc_xfer_if_0[2]); /* start bulk-in transfer */ - usbd_transfer_start(sc->sc_xfer_if_0[1]); + usb2_transfer_start(sc->sc_xfer_if_0[1]); /* start bulk-out transfer */ - usbd_transfer_start(sc->sc_xfer_if_0[0]); + usb2_transfer_start(sc->sc_xfer_if_0[0]); /* start control-out transfer */ - usbd_transfer_start(sc->sc_xfer_if_0[3]); + usb2_transfer_start(sc->sc_xfer_if_0[3]); #if 0 XXX can enable this XXX /* start isoc-in transfer */ - usbd_transfer_start(sc->sc_xfer_if_1[0]); + usb2_transfer_start(sc->sc_xfer_if_1[0]); - usbd_transfer_start(sc->sc_xfer_if_1[1]); + usb2_transfer_start(sc->sc_xfer_if_1[1]); /* start isoc-out transfer */ - usbd_transfer_start(sc->sc_xfer_if_1[2]); - usbd_transfer_start(sc->sc_xfer_if_1[3]); + usb2_transfer_start(sc->sc_xfer_if_1[2]); + usb2_transfer_start(sc->sc_xfer_if_1[3]); #endif mtx_unlock(&(sc->sc_mtx)); @@ -1483,27 +1473,27 @@ } else { /* stop intr transfer */ - usbd_transfer_stop(sc->sc_xfer_if_0[2]); - usbd_transfer_stop(sc->sc_xfer_if_0[6]); + usb2_transfer_stop(sc->sc_xfer_if_0[2]); + usb2_transfer_stop(sc->sc_xfer_if_0[6]); /* stop bulk-in transfer */ - usbd_transfer_stop(sc->sc_xfer_if_0[1]); - usbd_transfer_stop(sc->sc_xfer_if_0[5]); + usb2_transfer_stop(sc->sc_xfer_if_0[1]); + usb2_transfer_stop(sc->sc_xfer_if_0[5]); /* stop bulk-out transfer */ - usbd_transfer_stop(sc->sc_xfer_if_0[0]); - usbd_transfer_stop(sc->sc_xfer_if_0[4]); + usb2_transfer_stop(sc->sc_xfer_if_0[0]); + usb2_transfer_stop(sc->sc_xfer_if_0[4]); /* stop control transfer */ - usbd_transfer_stop(sc->sc_xfer_if_0[3]); + usb2_transfer_stop(sc->sc_xfer_if_0[3]); /* stop isoc-in transfer */ - usbd_transfer_stop(sc->sc_xfer_if_1[0]); - usbd_transfer_stop(sc->sc_xfer_if_1[1]); + usb2_transfer_stop(sc->sc_xfer_if_1[0]); + usb2_transfer_stop(sc->sc_xfer_if_1[1]); /* stop isoc-out transfer */ - usbd_transfer_stop(sc->sc_xfer_if_1[2]); - usbd_transfer_stop(sc->sc_xfer_if_1[3]); + usb2_transfer_stop(sc->sc_xfer_if_1[2]); + usb2_transfer_stop(sc->sc_xfer_if_1[3]); /* cleanup queues */ NG_BT_MBUFQ_DRAIN(&sc->sc_cmdq); @@ -1713,7 +1703,7 @@ struct ubt_softc *sc = NG_NODE_PRIVATE(NG_HOOK_NODE(hook)); struct mbuf *m; struct ng_bt_mbufq *q; - struct usbd_xfer *xfer; + struct usb2_xfer *xfer; int error = 0; if (sc == NULL) { @@ -1771,7 +1761,7 @@ } if (xfer) { - usbd_transfer_start(xfer); + usb2_transfer_start(xfer); } done: NG_FREE_ITEM(item); ==== //depot/projects/usb/src/sys/dev/usb2/bluetooth/ng_ubt2_var.h#2 (text+ko) ==== @@ -92,8 +92,8 @@ struct mtx sc_mtx; /* USB device specific */ - struct usbd_xfer *sc_xfer_if_0[UBT_IF_0_N_TRANSFER]; - struct usbd_xfer *sc_xfer_if_1[UBT_IF_1_N_TRANSFER]; + struct usb2_xfer *sc_xfer_if_0[UBT_IF_0_N_TRANSFER]; + struct usb2_xfer *sc_xfer_if_1[UBT_IF_1_N_TRANSFER]; /* Interrupt pipe (HCI events) */ struct mbuf *sc_intr_buffer; /* interrupt buffer */ ==== //depot/projects/usb/src/sys/dev/usb2/bluetooth/ubtbcmfw2.c#2 (text+ko) ==== @@ -31,21 +31,24 @@ * $FreeBSD: src/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c,v 1.18 2007/06/23 04:34:38 imp Exp $ */ -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/kernel.h> -#include <sys/fcntl.h> -#include <sys/ioccom.h> -#include <sys/syslog.h> +#include <dev/usb2/include/usb2_devid.h> +#include <dev/usb2/include/usb2_standard.h> +#include <dev/usb2/include/usb2_mfunc.h> >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200807022148.m62LmavX008916>