PERFORCE change 144510 for review
Hans Petter Selasky
hselasky at FreeBSD.org
Wed Jul 2 21:48:37 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=144510
Change 144510 by hselasky at 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) <<<
More information about the p4-projects
mailing list