Skip site navigation (1)Skip section navigation (2)
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>