PERFORCE change 144569 for review

Hans Petter Selasky hselasky at FreeBSD.org
Thu Jul 3 20:36:26 UTC 2008


http://perforce.freebsd.org/chv.cgi?CH=144569

Change 144569 by hselasky at hselasky_laptop001 on 2008/07/03 20:35:44

	
	The misc. USB module is finished.
	
	- mostly symbol renaming.
	- some minor code changes to ufm2.c

Affected files ...

.. //depot/projects/usb/src/sys/dev/usb2/misc/udbp2.c#2 edit
.. //depot/projects/usb/src/sys/dev/usb2/misc/udbp2.h#2 edit
.. //depot/projects/usb/src/sys/dev/usb2/misc/ufm2.c#2 edit
.. //depot/projects/usb/src/sys/dev/usb2/misc/usb2_misc.c#1 add
.. //depot/projects/usb/src/sys/dev/usb2/misc/usb2_misc.h#1 add
.. //depot/projects/usb/src/sys/modules/usb2/misc/Makefile#2 edit

Differences ...

==== //depot/projects/usb/src/sys/dev/usb2/misc/udbp2.c#2 (text+ko) ====

@@ -57,37 +57,36 @@
  *
  */
 
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/mbuf.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 udbp_debug
 
-#include <dev/usb/usb_port.h>
-#include <dev/usb/usb.h>
-#include <dev/usb/usb_subr.h>
+#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 "usbdevs.h"
+#include <sys/mbuf.h>
 
 #include <netgraph/ng_message.h>
+#include <netgraph/netgraph.h>
 #include <netgraph/ng_parse.h>
-#include <dev/usb/udbp.h>
-#include <netgraph/netgraph.h>
 #include <netgraph/bluetooth/include/ng_bluetooth.h>
 
+#include <dev/usb2/misc/udbp2.h>
+
 #ifdef USB_DEBUG
-#define	DPRINTF(sc,n,fmt,...) do {		\
-    if (udbp_debug > (n))			\
-        printf("%s:%s: " fmt, (sc)->sc_name,	\
-	       __FUNCTION__,## __VA_ARGS__);	\
-} while (0)
-
 static int udbp_debug = 0;
 
-SYSCTL_NODE(_hw_usb, OID_AUTO, udbp, CTLFLAG_RW, 0, "USB udbp");
-SYSCTL_INT(_hw_usb_udbp, OID_AUTO, debug, CTLFLAG_RW,
+SYSCTL_NODE(_hw_usb2, OID_AUTO, udbp, CTLFLAG_RW, 0, "USB udbp");
+SYSCTL_INT(_hw_usb2_udbp, OID_AUTO, debug, CTLFLAG_RW,
     &udbp_debug, 0, "udbp debug level");
-#else
-#define	DPRINTF(...) do { } while (0)
 #endif
 
 #define	UDBP_TIMEOUT	2000		/* timeout on outbound transfers, in
@@ -107,7 +106,7 @@
 	struct ng_bt_mbufq sc_xmitq_hipri;	/* hi-priority transmit queue */
 	struct ng_bt_mbufq sc_xmitq;	/* low-priority transmit queue */
 
-	struct usbd_xfer *sc_xfer[UDBP_T_MAX];
+	struct usb2_xfer *sc_xfer[UDBP_T_MAX];
 	node_p	sc_node;		/* back pointer to node */
 	hook_p	sc_hook;		/* pointer to the hook */
 	struct mbuf *sc_bulk_in_buffer;
@@ -124,20 +123,18 @@
 
 /* prototypes */
 
-static int
-	udbp_modload(module_t mod, int event, void *data);
+static int udbp_modload(module_t mod, int event, void *data);
 
 static device_probe_t udbp_probe;
 static device_attach_t udbp_attach;
 static device_detach_t udbp_detach;
 
-static usbd_callback_t udbp_bulk_read_callback;
-static usbd_callback_t udbp_bulk_read_clear_stall_callback;
-static usbd_callback_t udbp_bulk_write_callback;
-static usbd_callback_t udbp_bulk_write_clear_stall_callback;
+static usb2_callback_t udbp_bulk_read_callback;
+static usb2_callback_t udbp_bulk_read_clear_stall_callback;
+static usb2_callback_t udbp_bulk_write_callback;
+static usb2_callback_t udbp_bulk_write_clear_stall_callback;
 
-static void
-	udbp_bulk_read_complete(node_p node, hook_p hook, void *arg1, int arg2);
+static void udbp_bulk_read_complete(node_p node, hook_p hook, void *arg1, int arg2);
 
 static ng_constructor_t ng_udbp_constructor;
 static ng_rcvmsg_t ng_udbp_rcvmsg;
@@ -150,6 +147,7 @@
 /* Parse type for struct ngudbpstat */
 static const struct ng_parse_struct_field
 	ng_udbp_stat_type_fields[] = NG_UDBP_STATS_TYPE_INFO;
+
 static const struct ng_parse_type ng_udbp_stat_type = {
 	&ng_parse_struct_type,
 	&ng_udbp_stat_type_fields
@@ -189,7 +187,7 @@
 };
 
 /* USB config */
-static const struct usbd_config udbp_config[UDBP_T_MAX] = {
+static const struct usb2_config udbp_config[UDBP_T_MAX] = {
 
 	[UDBP_T_WR] = {
 		.type = UE_BULK,
@@ -214,7 +212,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.flags = {},
 		.mh.callback = &udbp_bulk_write_clear_stall_callback,
 		.mh.timeout = 1000,	/* 1 second */
@@ -225,7 +223,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.flags = {},
 		.mh.callback = &udbp_bulk_read_clear_stall_callback,
 		.mh.timeout = 1000,	/* 1 second */
@@ -249,9 +247,9 @@
 	.size = sizeof(struct udbp_softc),
 };
 
-DRIVER_MODULE(udbp, uhub, udbp_driver, udbp_devclass, udbp_modload, 0);
+DRIVER_MODULE(udbp, ushub, udbp_driver, udbp_devclass, udbp_modload, 0);
 MODULE_DEPEND(udbp, netgraph, NG_ABI_VERSION, NG_ABI_VERSION, NG_ABI_VERSION);
-MODULE_DEPEND(udbp, usb, 1, 1, 1);
+MODULE_DEPEND(udbp, usb2_core, 1, 1, 1);
 
 static int
 udbp_modload(module_t mod, int event, void *data)
@@ -265,14 +263,11 @@
 			printf("%s: Could not register "
 			    "Netgraph node type, error=%d\n",
 			    NG_UDBP_NODE_TYPE, error);
-		} else
-			error = usbd_driver_load(mod, event, data);
+		}
 		break;
 
 	case MOD_UNLOAD:
 		error = ng_rmtype(&ng_udbp_typestruct);
-		if (error == 0)
-			error = usbd_driver_load(mod, event, data);
 		break;
 
 	default:
@@ -285,14 +280,11 @@
 static int
 udbp_probe(device_t dev)
 {
-	struct usb_attach_arg *uaa = device_get_ivars(dev);
+	struct usb2_attach_arg *uaa = device_get_ivars(dev);
 
-	if (uaa->usb_mode != USB_MODE_HOST) {
-		return (UMATCH_NONE);
+	if (uaa->usb2_mode != USB_MODE_HOST) {
+		return (ENXIO);
 	}
-	if (!uaa->iface)
-		return (UMATCH_NONE);
-
 	/*
 	 * XXX Julian, add the id of the device if you have one to test
 	 * things with. run 'usbdevs -v' and note the 3 ID's that appear.
@@ -301,47 +293,47 @@
 	 * compare the revision id in the device descriptor with 0x101 Or go
 	 * search the file usbdevs.h. Maybe the device is already in there.
 	 */
-	if (((uaa->vendor == USB_VENDOR_NETCHIP) &&
-	    (uaa->product == USB_PRODUCT_NETCHIP_TURBOCONNECT)))
-		return (UMATCH_VENDOR_PRODUCT);
+	if (((uaa->info.idVendor == USB_VENDOR_NETCHIP) &&
+	    (uaa->info.idProduct == USB_PRODUCT_NETCHIP_TURBOCONNECT)))
+		return (0);
 
-	if (((uaa->vendor == USB_VENDOR_PROLIFIC) &&
-	    ((uaa->product == USB_PRODUCT_PROLIFIC_PL2301) ||
-	    (uaa->product == USB_PRODUCT_PROLIFIC_PL2302))))
-		return (UMATCH_VENDOR_PRODUCT);
+	if (((uaa->info.idVendor == USB_VENDOR_PROLIFIC) &&
+	    ((uaa->info.idProduct == USB_PRODUCT_PROLIFIC_PL2301) ||
+	    (uaa->info.idProduct == USB_PRODUCT_PROLIFIC_PL2302))))
+		return (0);
 
-	if ((uaa->vendor == USB_VENDOR_ANCHOR) &&
-	    (uaa->product == USB_PRODUCT_ANCHOR_EZLINK))
-		return (UMATCH_VENDOR_PRODUCT);
+	if ((uaa->info.idVendor == USB_VENDOR_ANCHOR) &&
+	    (uaa->info.idProduct == USB_PRODUCT_ANCHOR_EZLINK))
+		return (0);
 
-	if ((uaa->vendor == USB_VENDOR_GENESYS) &&
-	    (uaa->product == USB_PRODUCT_GENESYS_GL620USB))
-		return (UMATCH_VENDOR_PRODUCT);
+	if ((uaa->info.idVendor == USB_VENDOR_GENESYS) &&
+	    (uaa->info.idProduct == USB_PRODUCT_GENESYS_GL620USB))
+		return (0);
 
-	return (UMATCH_NONE);
+	return (ENXIO);
 }
 
 static int
 udbp_attach(device_t dev)
 {
-	struct usb_attach_arg *uaa = device_get_ivars(dev);
+	struct usb2_attach_arg *uaa = device_get_ivars(dev);
 	struct udbp_softc *sc = device_get_softc(dev);
-	int32_t error;
+	int error;
 
 	if (sc == NULL) {
 		return (ENOMEM);
 	}
-	usbd_set_device_desc(dev);
+	device_set_usb2_desc(dev);
 
 	snprintf(sc->sc_name, sizeof(sc->sc_name),
 	    "%s", device_get_nameunit(dev));
 
 	mtx_init(&(sc->sc_mtx), "udbp lock", NULL, MTX_DEF | MTX_RECURSE);
 
-	error = usbd_transfer_setup(uaa->device, &(uaa->iface_index),
+	error = usb2_transfer_setup(uaa->device, &(uaa->info.bIfaceIndex),
 	    sc->sc_xfer, udbp_config, UDBP_T_MAX, sc, &(sc->sc_mtx));
 	if (error) {
-		DPRINTF(sc, 0, "error=%s\n", usbd_errstr(error));
+		DPRINTF(0, "error=%s\n", usb2_errstr(error));
 		goto detach;
 	}
 	NG_BT_MBUFQ_INIT(&(sc->sc_xmitq), UDBP_Q_MAXLEN);
@@ -390,7 +382,7 @@
 	}
 	/* free USB transfers, if any */
 
-	usbd_transfer_unsetup(sc->sc_xfer, UDBP_T_MAX);
+	usb2_transfer_unsetup(sc->sc_xfer, UDBP_T_MAX);
 
 	mtx_destroy(&(sc->sc_mtx));
 
@@ -409,13 +401,13 @@
 }
 
 static void
-udbp_bulk_read_callback(struct usbd_xfer *xfer)
+udbp_bulk_read_callback(struct usb2_xfer *xfer)
 {
 	struct udbp_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:
 
 		/* allocate new mbuf */
 
@@ -432,32 +424,32 @@
 		}
 		m->m_pkthdr.len = m->m_len = xfer->actlen;
 
-		usbd_copy_out(xfer->frbuffers, 0, m->m_data, xfer->actlen);
+		usb2_copy_out(xfer->frbuffers, 0, m->m_data, xfer->actlen);
 
 		sc->sc_bulk_in_buffer = m;
 
-		DPRINTF(sc, 0, "received package %d "
+		DPRINTF(0, "received package %d "
 		    "bytes\n", xfer->actlen);
 
-	case USBD_ST_SETUP:
+	case USB_ST_SETUP:
 tr_setup:
 		if (sc->sc_bulk_in_buffer) {
 			ng_send_fn(sc->sc_node, NULL, &udbp_bulk_read_complete, NULL, 0);
 			return;
 		}
 		if (sc->sc_flags & UDBP_FLAG_READ_STALL) {
-			usbd_transfer_start(sc->sc_xfer[UDBP_T_RD_CS]);
+			usb2_transfer_start(sc->sc_xfer[UDBP_T_RD_CS]);
 			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 |= UDBP_FLAG_READ_STALL;
-			usbd_transfer_start(sc->sc_xfer[UDBP_T_RD_CS]);
+			usb2_transfer_start(sc->sc_xfer[UDBP_T_RD_CS]);
 		}
 		return;
 
@@ -465,15 +457,15 @@
 }
 
 static void
-udbp_bulk_read_clear_stall_callback(struct usbd_xfer *xfer)
+udbp_bulk_read_clear_stall_callback(struct usb2_xfer *xfer)
 {
 	struct udbp_softc *sc = xfer->priv_sc;
-	struct usbd_xfer *xfer_other = sc->sc_xfer[UDBP_T_RD];
+	struct usb2_xfer *xfer_other = sc->sc_xfer[UDBP_T_RD];
 
-	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 &= ~UDBP_FLAG_READ_STALL;
-		usbd_transfer_start(xfer_other);
+		usb2_transfer_start(xfer_other);
 	}
 	return;
 }
@@ -498,7 +490,7 @@
 
 		if ((sc->sc_hook == NULL) ||
 		    NG_HOOK_NOT_VALID(sc->sc_hook)) {
-			DPRINTF(sc, 0, "No upstream hook\n");
+			DPRINTF(0, "No upstream hook\n");
 			goto done;
 		}
 		sc->sc_packets_in++;
@@ -513,7 +505,7 @@
 	}
 	/* start USB bulk-in transfer, if not already started */
 
-	usbd_transfer_start(sc->sc_xfer[UDBP_T_RD]);
+	usb2_transfer_start(sc->sc_xfer[UDBP_T_RD]);
 
 	mtx_unlock(&(sc->sc_mtx));
 
@@ -521,19 +513,19 @@
 }
 
 static void
-udbp_bulk_write_callback(struct usbd_xfer *xfer)
+udbp_bulk_write_callback(struct usb2_xfer *xfer)
 {
 	struct udbp_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:
 
 		sc->sc_packets_out++;
 
-	case USBD_ST_SETUP:
+	case USB_ST_SETUP:
 		if (sc->sc_flags & UDBP_FLAG_WRITE_STALL) {
-			usbd_transfer_start(sc->sc_xfer[UDBP_T_WR_CS]);
+			usb2_transfer_start(sc->sc_xfer[UDBP_T_WR_CS]);
 			return;
 		}
 		/* get next mbuf, if any */
@@ -542,33 +534,33 @@
 		if (m == NULL) {
 			NG_BT_MBUFQ_DEQUEUE(&(sc->sc_xmitq), m);
 			if (m == NULL) {
-				DPRINTF(sc, 0, "Data queue is empty\n");
+				DPRINTF(0, "Data queue is empty\n");
 				return;
 			}
 		}
 		if (m->m_pkthdr.len > MCLBYTES) {
-			DPRINTF(sc, 0, "truncating large packet "
+			DPRINTF(0, "truncating large packet "
 			    "from %d to %d bytes\n", m->m_pkthdr.len,
 			    MCLBYTES);
 			m->m_pkthdr.len = MCLBYTES;
 		}
-		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);
 
 		xfer->frlengths[0] = m->m_pkthdr.len;
 
 		m_freem(m);
 
-		DPRINTF(sc, 0, "packet out: %d bytes\n",
+		DPRINTF(0, "packet out: %d bytes\n",
 		    xfer->frlengths[0]);
 
-		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 |= UDBP_FLAG_WRITE_STALL;
-			usbd_transfer_start(sc->sc_xfer[UDBP_T_WR_CS]);
+			usb2_transfer_start(sc->sc_xfer[UDBP_T_WR_CS]);
 		}
 		return;
 
@@ -576,15 +568,15 @@
 }
 
 static void
-udbp_bulk_write_clear_stall_callback(struct usbd_xfer *xfer)
+udbp_bulk_write_clear_stall_callback(struct usb2_xfer *xfer)
 {
 	struct udbp_softc *sc = xfer->priv_sc;
-	struct usbd_xfer *xfer_other = sc->sc_xfer[UDBP_T_WR];
+	struct usb2_xfer *xfer_other = sc->sc_xfer[UDBP_T_WR];
 
-	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 &= ~UDBP_FLAG_WRITE_STALL;
-		usbd_transfer_start(xfer_other);
+		usb2_transfer_start(xfer_other);
 	}
 	return;
 }
@@ -683,7 +675,7 @@
 				error = EINVAL;
 				break;
 			}
-			DPRINTF(sc, 0, "flags = 0x%08x\n",
+			DPRINTF(0, "flags = 0x%08x\n",
 			    *((uint32_t *)msg->data));
 			break;
 		default:
@@ -743,7 +735,7 @@
 		/*
 		 * start bulk-out transfer, if not already started:
 		 */
-		usbd_transfer_start(sc->sc_xfer[UDBP_T_WR]);
+		usb2_transfer_start(sc->sc_xfer[UDBP_T_WR]);
 		error = 0;
 	}
 
@@ -811,10 +803,10 @@
 	    UDBP_FLAG_WRITE_STALL);
 
 	/* start bulk-in transfer */
-	usbd_transfer_start(sc->sc_xfer[UDBP_T_RD]);
+	usb2_transfer_start(sc->sc_xfer[UDBP_T_RD]);
 
 	/* start bulk-out transfer */
-	usbd_transfer_start(sc->sc_xfer[UDBP_T_WR]);
+	usb2_transfer_start(sc->sc_xfer[UDBP_T_WR]);
 
 	mtx_unlock(&(sc->sc_mtx));
 
@@ -841,12 +833,12 @@
 		} else {
 
 			/* stop bulk-in transfer */
-			usbd_transfer_stop(sc->sc_xfer[UDBP_T_RD_CS]);
-			usbd_transfer_stop(sc->sc_xfer[UDBP_T_RD]);
+			usb2_transfer_stop(sc->sc_xfer[UDBP_T_RD_CS]);
+			usb2_transfer_stop(sc->sc_xfer[UDBP_T_RD]);
 
 			/* stop bulk-out transfer */
-			usbd_transfer_stop(sc->sc_xfer[UDBP_T_WR_CS]);
-			usbd_transfer_stop(sc->sc_xfer[UDBP_T_WR]);
+			usb2_transfer_stop(sc->sc_xfer[UDBP_T_WR_CS]);
+			usb2_transfer_stop(sc->sc_xfer[UDBP_T_WR]);
 
 			/* cleanup queues */
 			NG_BT_MBUFQ_DRAIN(&sc->sc_xmitq);

==== //depot/projects/usb/src/sys/dev/usb2/misc/udbp2.h#2 (text+ko) ====


==== //depot/projects/usb/src/sys/dev/usb2/misc/ufm2.c#2 (text+ko) ====

@@ -32,47 +32,34 @@
 __FBSDID("$FreeBSD: src/sys/dev/usb/ufm.c,v 1.36 2007/06/21 14:42:33 imp Exp $");
 
 
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/kernel.h>
-#include <sys/malloc.h>
-#include <sys/fcntl.h>
-#include <sys/filio.h>
-#include <sys/conf.h>
-#include <sys/sysctl.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/ufm2_ioctl.h>
 
-#include <dev/usb/usb_port.h>
-#include <dev/usb/usb.h>
-#include <dev/usb/usb_subr.h>
+#define	USB_DEBUG_VAR usb2_debug
 
-#include "usbdevs.h"
-
-#include <dev/usb/dsbr100io.h>
-
-#ifdef USB_DEBUG
-#define	DPRINTF(sc,n,fmt,...)   \
-  do { if (ufm_debug > (n)) {        \
-      printf("%s:%s: " fmt, (sc)->sc_name, \
-             __FUNCTION__,## __VA_ARGS__); } } while (0)
+#include <dev/usb2/core/usb2_core.h>
+#include <dev/usb2/core/usb2_debug.h>
+#include <dev/usb2/core/usb2_process.h>
+#include <dev/usb2/core/usb2_config_td.h>
+#include <dev/usb2/core/usb2_request.h>
+#include <dev/usb2/core/usb2_lookup.h>
+#include <dev/usb2/core/usb2_util.h>
+#include <dev/usb2/core/usb2_busdma.h>
+#include <dev/usb2/core/usb2_mbuf.h>
+#include <dev/usb2/core/usb2_dev.h>
 
-static int ufm_debug = 0;
-
-SYSCTL_NODE(_hw_usb, OID_AUTO, ufm, CTLFLAG_RW, 0, "USB ufm");
-SYSCTL_INT(_hw_usb_ufm, OID_AUTO, debug, CTLFLAG_RW,
-    &ufm_debug, 0, "ufm debug level");
-#else
-#define	DPRINTF(...) do { } while (0)
-#endif
-
 #define	UFM_CMD0		0x00
 #define	UFM_CMD_SET_FREQ	0x01
 #define	UFM_CMD2		0x02
 
 struct ufm_softc {
-	struct usb_cdev sc_cdev;
+	struct usb2_fifo_sc sc_fifo;
 	struct mtx sc_mtx;
 
-	struct usbd_device *sc_udev;
+	struct usb2_device *sc_udev;
 
 	uint32_t sc_unit;
 	uint32_t sc_freq;
@@ -86,32 +73,22 @@
 static device_attach_t ufm_attach;
 static device_detach_t ufm_detach;
 
-static int32_t
-ufm_open(struct usb_cdev *dev, int32_t fflags,
-    int32_t devtype, struct thread *td);
+static usb2_fifo_ioctl_t ufm_ioctl;
+static usb2_fifo_open_t ufm_open;
 
-static int
-ufm_do_req(struct ufm_softc *sc, int32_t fflags, uint8_t request,
-    uint16_t value, uint16_t index, uint8_t *retbuf);
-static int
-	ufm_set_freq(struct ufm_softc *sc, caddr_t addr, int32_t fflags);
+static struct usb2_fifo_methods ufm_fifo_methods = {
+	.f_ioctl = &ufm_ioctl,
+	.f_open = &ufm_open,
+	.basename[0] = "ufm",
+};
 
-static int
-	ufm_get_freq(struct ufm_softc *sc, caddr_t addr, int32_t fflags);
+static int ufm_do_req(struct ufm_softc *sc, uint8_t request, uint16_t value, uint16_t index, uint8_t *retbuf);
+static int ufm_set_freq(struct ufm_softc *sc, void *addr);
+static int ufm_get_freq(struct ufm_softc *sc, void *addr);
+static int ufm_start(struct ufm_softc *sc, void *addr);
+static int ufm_stop(struct ufm_softc *sc, void *addr);
+static int ufm_get_stat(struct ufm_softc *sc, void *addr);
 
-static int
-	ufm_start(struct ufm_softc *sc, caddr_t addr, int32_t fflags);
-
-static int
-	ufm_stop(struct ufm_softc *sc, caddr_t addr, int32_t fflags);
-
-static int
-	ufm_get_stat(struct ufm_softc *sc, caddr_t addr, int32_t fflags);
-
-static int
-ufm_ioctl(struct usb_cdev *dev, u_long cmd, caddr_t addr,
-    int32_t fflags, struct thread *td);
-
 static devclass_t ufm_devclass;
 
 static device_method_t ufm_methods[] = {
@@ -127,35 +104,30 @@
 	.size = sizeof(struct ufm_softc),
 };
 
-MODULE_DEPEND(ufm, usb, 1, 1, 1);
-DRIVER_MODULE(ufm, uhub, ufm_driver, ufm_devclass, usbd_driver_load, 0);
+MODULE_DEPEND(ufm, usb2_core, 1, 1, 1);
+DRIVER_MODULE(ufm, ushub, ufm_driver, ufm_devclass, NULL, 0);
 
 static int
 ufm_probe(device_t dev)
 {
-	struct usb_attach_arg *uaa = device_get_ivars(dev);
+	struct usb2_attach_arg *uaa = device_get_ivars(dev);
 
-	if (uaa->usb_mode != USB_MODE_HOST) {
-		return (UMATCH_NONE);
+	if (uaa->usb2_mode != USB_MODE_HOST) {
+		return (ENXIO);
 	}
-	if (uaa->iface == NULL) {
-		return (UMATCH_NONE);
+	if ((uaa->info.idVendor == USB_VENDOR_CYPRESS) &&
+	    (uaa->info.idProduct == USB_PRODUCT_CYPRESS_FMRADIO)) {
+		return (0);
 	}
-	if ((uaa->vendor == USB_VENDOR_CYPRESS) &&
-	    (uaa->product == USB_PRODUCT_CYPRESS_FMRADIO)) {
-		return (UMATCH_VENDOR_PRODUCT);
-	}
-	return (UMATCH_NONE);
+	return (ENXIO);
 }
 
 static int
 ufm_attach(device_t dev)
 {
-	struct usb_attach_arg *uaa = device_get_ivars(dev);
+	struct usb2_attach_arg *uaa = device_get_ivars(dev);
 	struct ufm_softc *sc = device_get_softc(dev);
-	const char *p_buf[2];
-	char buf[16];
-	int32_t error;
+	int error;
 
 	if (sc == NULL) {
 		return (ENOMEM);
@@ -168,18 +140,15 @@
 
 	mtx_init(&(sc->sc_mtx), "ufm lock", NULL, MTX_DEF | MTX_RECURSE);
 
-	usbd_set_device_desc(dev);
+	device_set_usb2_desc(dev);
 
-	snprintf(buf, sizeof(buf), "ufm%d", sc->sc_unit);
+	/* set interface permissions */
+	usb2_set_iface_perm(uaa->device, uaa->info.bIfaceIndex,
+	    UID_ROOT, GID_OPERATOR, 0644);
 
-	p_buf[0] = buf;
-	p_buf[1] = NULL;
-
-	sc->sc_cdev.sc_open = &ufm_open;
-	sc->sc_cdev.sc_ioctl = &ufm_ioctl;
-
-	error = usb_cdev_attach(&(sc->sc_cdev), sc, &(sc->sc_mtx), p_buf,
-	    UID_ROOT, GID_OPERATOR, 0644, 0, 0, 0, 0);
+	error = usb2_fifo_attach(uaa->device, sc, &(sc->sc_mtx),
+	    &ufm_fifo_methods, &(sc->sc_fifo),
+	    device_get_unit(dev), 0 - 1, uaa->info.bIfaceIndex);
 	if (error) {
 		goto detach;
 	}
@@ -195,16 +164,15 @@
 {
 	struct ufm_softc *sc = device_get_softc(dev);
 
-	usb_cdev_detach(&(sc->sc_cdev));
+	usb2_fifo_detach(&(sc->sc_fifo));
 
 	mtx_destroy(&(sc->sc_mtx));
 
 	return (0);
 }
 
-static int32_t
-ufm_open(struct usb_cdev *dev, int32_t fflags,
-    int32_t devtype, struct thread *td)
+static int
+ufm_open(struct usb2_fifo *dev, int fflags, struct thread *td)
 {
 	if ((fflags & (FWRITE | FREAD)) != (FWRITE | FREAD)) {
 		return (EACCES);
@@ -213,12 +181,12 @@
 }
 
 static int
-ufm_do_req(struct ufm_softc *sc, int32_t fflags, uint8_t request,
+ufm_do_req(struct ufm_softc *sc, uint8_t request,
     uint16_t value, uint16_t index, uint8_t *retbuf)
 {
-	int32_t error;
+	int error;
 
-	usb_device_request_t req;
+	struct usb2_device_request req;
 	uint8_t buf[1];
 
 	req.bmRequestType = UT_READ_VENDOR_DEVICE;
@@ -227,7 +195,7 @@
 	USETW(req.wIndex, index);
 	USETW(req.wLength, 1);
 
-	error = usbd_do_request(sc->sc_udev, NULL, &req, buf);
+	error = usb2_do_request(sc->sc_udev, NULL, &req, buf);
 
 	if (retbuf) {
 		*retbuf = buf[0];
@@ -239,7 +207,7 @@
 }
 
 static int
-ufm_set_freq(struct ufm_softc *sc, caddr_t addr, int32_t fflags)
+ufm_set_freq(struct ufm_softc *sc, void *addr)
 {
 	int freq = *(int *)addr;
 
@@ -257,12 +225,12 @@
 	freq = (freq + 10700001) / 12500;
 
 	/* This appears to set the frequency */
-	if (ufm_do_req(sc, fflags, UFM_CMD_SET_FREQ,
+	if (ufm_do_req(sc, UFM_CMD_SET_FREQ,
 	    freq >> 8, freq, NULL) != 0) {
 		return (EIO);
 	}
 	/* Not sure what this does */
-	if (ufm_do_req(sc, fflags, UFM_CMD0,
+	if (ufm_do_req(sc, UFM_CMD0,
 	    0x96, 0xb7, NULL) != 0) {
 		return (EIO);
 	}
@@ -270,7 +238,7 @@
 }
 
 static int
-ufm_get_freq(struct ufm_softc *sc, caddr_t addr, int32_t fflags)
+ufm_get_freq(struct ufm_softc *sc, void *addr)
 {
 	int *valp = (int *)addr;
 
@@ -281,15 +249,15 @@
 }
 
 static int
-ufm_start(struct ufm_softc *sc, caddr_t addr, int32_t fflags)
+ufm_start(struct ufm_softc *sc, void *addr)
 {
 	uint8_t ret;
 
-	if (ufm_do_req(sc, fflags, UFM_CMD0,
+	if (ufm_do_req(sc, UFM_CMD0,
 	    0x00, 0xc7, &ret)) {
 		return (EIO);
 	}
-	if (ufm_do_req(sc, fflags, UFM_CMD2,
+	if (ufm_do_req(sc, UFM_CMD2,
 	    0x01, 0x00, &ret)) {
 		return (EIO);
 	}
@@ -300,13 +268,13 @@
 }
 
 static int
-ufm_stop(struct ufm_softc *sc, caddr_t addr, int32_t fflags)
+ufm_stop(struct ufm_softc *sc, void *addr)
 {
-	if (ufm_do_req(sc, fflags, UFM_CMD0,
+	if (ufm_do_req(sc, UFM_CMD0,
 	    0x16, 0x1C, NULL)) {
 		return (EIO);
 	}
-	if (ufm_do_req(sc, fflags, UFM_CMD2,
+	if (ufm_do_req(sc, UFM_CMD2,
 	    0x00, 0x00, NULL)) {
 		return (EIO);
 	}
@@ -314,7 +282,7 @@
 }
 
 static int
-ufm_get_stat(struct ufm_softc *sc, caddr_t addr, int32_t fflags)
+ufm_get_stat(struct ufm_softc *sc, void *addr)
 {
 	uint8_t ret;
 
@@ -323,9 +291,11 @@
 	 * will be valid, so sleep that amount.
 	 */
 
-	usbd_pause_mtx(NULL, 250);
+	mtx_lock(&(sc->sc_mtx));
+	usb2_pause_mtx(&(sc->sc_mtx), USB_MS_HZ / 4);
+	mtx_unlock(&(sc->sc_mtx));
 
-	if (ufm_do_req(sc, fflags, UFM_CMD0,
+	if (ufm_do_req(sc, UFM_CMD0,
 	    0x00, 0x24, &ret)) {
 		return (EIO);
 	}
@@ -335,33 +305,31 @@
 }
 
 static int
-ufm_ioctl(struct usb_cdev *dev, u_long cmd, caddr_t addr,
-    int32_t fflags, struct thread *td)
+ufm_ioctl(struct usb2_fifo *fifo, u_long cmd, void *addr,
+    int fflags, struct thread *td)
 {
-	struct ufm_softc *sc = dev->sc_priv_ptr;
+	struct ufm_softc *sc = fifo->priv_sc0;
 	int error = 0;
 
-	usb_cdev_unlock(dev, fflags);
-
 	switch (cmd) {
 	case FM_SET_FREQ:
-		error = ufm_set_freq(sc, addr, fflags);
+		error = ufm_set_freq(sc, addr);
 		break;
 	case FM_GET_FREQ:
-		error = ufm_get_freq(sc, addr, fflags);
+		error = ufm_get_freq(sc, addr);
 		break;
 	case FM_START:
-		error = ufm_start(sc, addr, fflags);
+		error = ufm_start(sc, addr);
 		break;
 	case FM_STOP:
-		error = ufm_stop(sc, addr, fflags);
+		error = ufm_stop(sc, addr);
 		break;
 	case FM_GET_STAT:
-		error = ufm_get_stat(sc, addr, fflags);
+		error = ufm_get_stat(sc, addr);
 		break;
 	default:
 		error = ENOTTY;
 		break;
 	}
-	return (usb_cdev_lock(dev, fflags, error));
+	return (error);
 }

==== //depot/projects/usb/src/sys/modules/usb2/misc/Makefile#2 (text+ko) ====

@@ -1,0 +1,14 @@
+S=     ${.CURDIR}/../../..
+
+.PATH: $S/dev/usb2/misc
+
+KMOD=  usb2_misc
+SRCS= 
+SRCS+= bus_if.h usb2_if.h device_if.h vnode_if.h
+SRCS+= opt_usb.h opt_bus.h opt_netgraph.h
+
+SRCS+= usb2_misc.c
+SRCS+= ufm2.c
+SRCS+= udbp2.c
+
+.include <bsd.kmod.mk>


More information about the p4-projects mailing list