Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 8 Dec 2007 12:45:23 GMT
From:      Hans Petter Selasky <hselasky@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 130487 for review
Message-ID:  <200712081245.lB8CjNDG049119@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=130487

Change 130487 by hselasky@hselasky_laptop001 on 2007/12/08 12:45:16

	
	This commit is related to USB device side support.
	
	USB device side devices will be attached to the
	same class like USB host side devices. Therefore all
	USB drivers should have a check where the "usb_mode"
	is matched with the USB mode(s) that the USB driver
	supports.
	
	One reason we do this is to encourage symmetric
	USB protocol design so that a single USB driver
	can support both host and device mode without major
	modifications.

Affected files ...

.. //depot/projects/usb/src/sys/dev/ata/ata-usb.c#26 edit
.. //depot/projects/usb/src/sys/dev/if_ndis/if_ndis_usb.c#7 edit
.. //depot/projects/usb/src/sys/dev/sound/usb/uaudio.c#25 edit
.. //depot/projects/usb/src/sys/dev/usb/if_aue.c#38 edit
.. //depot/projects/usb/src/sys/dev/usb/if_axe.c#40 edit
.. //depot/projects/usb/src/sys/dev/usb/if_cdce.c#30 edit
.. //depot/projects/usb/src/sys/dev/usb/if_cue.c#34 edit
.. //depot/projects/usb/src/sys/dev/usb/if_kue.c#36 edit
.. //depot/projects/usb/src/sys/dev/usb/if_rue.c#34 edit
.. //depot/projects/usb/src/sys/dev/usb/if_rum.c#21 edit
.. //depot/projects/usb/src/sys/dev/usb/if_udav.c#36 edit
.. //depot/projects/usb/src/sys/dev/usb/if_ural.c#45 edit
.. //depot/projects/usb/src/sys/dev/usb/if_zyd.c#25 edit
.. //depot/projects/usb/src/sys/dev/usb/uark.c#14 edit
.. //depot/projects/usb/src/sys/dev/usb/ubsa.c#31 edit
.. //depot/projects/usb/src/sys/dev/usb/ubser.c#23 edit
.. //depot/projects/usb/src/sys/dev/usb/ucycom.c#25 edit
.. //depot/projects/usb/src/sys/dev/usb/udbp.c#19 edit
.. //depot/projects/usb/src/sys/dev/usb/ufm.c#18 edit
.. //depot/projects/usb/src/sys/dev/usb/ufoma.c#32 edit
.. //depot/projects/usb/src/sys/dev/usb/uftdi.c#28 edit
.. //depot/projects/usb/src/sys/dev/usb/ugen.c#30 edit
.. //depot/projects/usb/src/sys/dev/usb/ugensa.c#15 edit
.. //depot/projects/usb/src/sys/dev/usb/uhid.c#24 edit
.. //depot/projects/usb/src/sys/dev/usb/uhub.c#23 edit
.. //depot/projects/usb/src/sys/dev/usb/uipaq.c#16 edit
.. //depot/projects/usb/src/sys/dev/usb/ukbd.c#33 edit
.. //depot/projects/usb/src/sys/dev/usb/ulpt.c#33 edit
.. //depot/projects/usb/src/sys/dev/usb/umass.c#36 edit
.. //depot/projects/usb/src/sys/dev/usb/umct.c#25 edit
.. //depot/projects/usb/src/sys/dev/usb/umodem.c#35 edit
.. //depot/projects/usb/src/sys/dev/usb/umoscom.c#12 edit
.. //depot/projects/usb/src/sys/dev/usb/ums.c#33 edit
.. //depot/projects/usb/src/sys/dev/usb/uplcom.c#32 edit
.. //depot/projects/usb/src/sys/dev/usb/urio.c#19 edit
.. //depot/projects/usb/src/sys/dev/usb/usb_compat_linux.c#14 edit
.. //depot/projects/usb/src/sys/dev/usb/usb_subr.h#69 edit
.. //depot/projects/usb/src/sys/dev/usb/uscanner.c#18 edit
.. //depot/projects/usb/src/sys/dev/usb/uvisor.c#28 edit
.. //depot/projects/usb/src/sys/dev/usb/uvscom.c#31 edit
.. //depot/projects/usb/src/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c#19 edit
.. //depot/projects/usb/src/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c#15 edit

Differences ...

==== //depot/projects/usb/src/sys/dev/ata/ata-usb.c#26 (text) ====

@@ -286,6 +286,9 @@
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 	usb_interface_descriptor_t *id;
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface == NULL) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/if_ndis/if_ndis_usb.c#7 (text+ko) ====

@@ -114,6 +114,9 @@
 	if (windrv_lookup(0, "USB Bus") == NULL) {
 		return (UMATCH_NONE);
 	}
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface != NULL) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/sound/usb/uaudio.c#25 (text+ko) ====

@@ -649,6 +649,9 @@
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 	usb_interface_descriptor_t *id;
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface == NULL) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/if_aue.c#38 (text+ko) ====

@@ -761,6 +761,9 @@
 {
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface != NULL) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/if_axe.c#40 (text+ko) ====

@@ -619,6 +619,9 @@
 {
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface != NULL) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/if_cdce.c#30 (text+ko) ====

@@ -196,6 +196,9 @@
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 	usb_interface_descriptor_t *id;
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface == NULL) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/if_cue.c#34 (text+ko) ====

@@ -452,6 +452,9 @@
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 	struct cue_type *t;
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface != NULL) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/if_kue.c#36 (text+ko) ====

@@ -477,6 +477,9 @@
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 	struct kue_type *t;
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface != NULL) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/if_rue.c#34 (text+ko) ====

@@ -670,6 +670,9 @@
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 	struct rue_type *t;
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface != NULL) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/if_rum.c#21 (text+ko) ====

@@ -437,6 +437,9 @@
 {
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface != NULL) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/if_udav.c#36 (text+ko) ====

@@ -298,6 +298,9 @@
 {
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface != NULL) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/if_ural.c#45 (text+ko) ====

@@ -496,6 +496,9 @@
 {
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface != NULL) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/if_zyd.c#25 (text+ko) ====

@@ -1227,6 +1227,9 @@
 {
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface)
 		return (UMATCH_NONE);
 

==== //depot/projects/usb/src/sys/dev/usb/uark.c#14 (text+ko) ====

@@ -185,6 +185,9 @@
 {
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/ubsa.c#31 (text+ko) ====

@@ -318,6 +318,9 @@
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 	const struct ubsa_product *up = ubsa_products;
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/ubser.c#23 (text+ko) ====

@@ -234,6 +234,9 @@
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 	usb_interface_descriptor_t *id;
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface == NULL)
 		return (UMATCH_NONE);
 

==== //depot/projects/usb/src/sys/dev/usb/ucycom.c#25 (text+ko) ====

@@ -194,6 +194,9 @@
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 	const struct ucycom_device *ud;
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface != NULL) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/udbp.c#19 (text+ko) ====

@@ -287,6 +287,9 @@
 {
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (!uaa->iface)
 		return (UMATCH_NONE);
 

==== //depot/projects/usb/src/sys/dev/usb/ufm.c#18 (text+ko) ====

@@ -135,6 +135,9 @@
 {
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface == NULL) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/ufoma.c#32 (text+ko) ====

@@ -342,6 +342,9 @@
 	usb_config_descriptor_t *cd;
 	usb_mcpc_acm_descriptor *mad;
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface == NULL) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/uftdi.c#28 (text+ko) ====

@@ -232,6 +232,9 @@
 {
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface != NULL) {
 		if ((uaa->vendor == USB_VENDOR_FTDI) &&
 		    (uaa->product == USB_PRODUCT_FTDI_SERIAL_2232C)) {

==== //depot/projects/usb/src/sys/dev/usb/ugen.c#30 (text+ko) ====

@@ -174,6 +174,9 @@
 {
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->usegeneric)
 		return (UMATCH_GENERIC);
 	else

==== //depot/projects/usb/src/sys/dev/usb/ugensa.c#15 (text+ko) ====

@@ -185,6 +185,9 @@
 {
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/uhid.c#24 (text+ko) ====

@@ -557,6 +557,9 @@
 
 	DPRINTF(10, "\n");
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface == NULL) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/uhub.c#23 (text+ko) ====

@@ -429,11 +429,15 @@
 	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);
+	}
 	/*
 	 * the subclass for hubs, is ignored,
 	 * because it is 0 for some
 	 * and 1 for others
 	 */
+
 	if ((uaa->iface == NULL) && (dd->bDeviceClass == UDCLASS_HUB)) {
 		return (UMATCH_DEVCLASS_DEVSUBCLASS);
 	}

==== //depot/projects/usb/src/sys/dev/usb/uipaq.c#16 (text+ko) ====

@@ -196,6 +196,9 @@
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 	const struct usb_devno *up;
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface == NULL) {
 		up = uipaq_lookup(uaa->vendor, uaa->product);
 		if (up) {

==== //depot/projects/usb/src/sys/dev/usb/ukbd.c#33 (text+ko) ====

@@ -597,6 +597,9 @@
 	if (sw == NULL) {
 		return (UMATCH_NONE);
 	}
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface == NULL) {
 		/* attach to ifaces only */
 		return (UMATCH_NONE);

==== //depot/projects/usb/src/sys/dev/usb/ulpt.c#33 (text+ko) ====

@@ -483,6 +483,9 @@
 
 	DPRINTF(10, "\n");
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface == NULL) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/umass.c#36 (text+ko) ====

@@ -1420,6 +1420,9 @@
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 	struct umass_probe_proto temp;
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface == NULL) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/umct.c#25 (text+ko) ====

@@ -244,6 +244,9 @@
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 	uint32_t i;
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface != NULL) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/umodem.c#35 (text+ko) ====

@@ -293,6 +293,9 @@
 
 	DPRINTF(10, "\n");
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface == NULL) {
 		goto done;
 	}

==== //depot/projects/usb/src/sys/dev/usb/umoscom.c#12 (text+ko) ====

@@ -305,6 +305,9 @@
 {
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface != NULL)
 		return (UMATCH_NONE);
 

==== //depot/projects/usb/src/sys/dev/usb/ums.c#33 (text+ko) ====

@@ -352,6 +352,9 @@
 
 	DPRINTF(10, "\n");
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface == NULL) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/uplcom.c#32 (text+ko) ====

@@ -347,6 +347,9 @@
 {
 	const struct uplcom_product *up = uplcom_products;
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (NULL);
+	}
 	if (uaa->iface == NULL) {
 		while (up->vendor) {
 			if ((up->vendor == uaa->vendor) &&

==== //depot/projects/usb/src/sys/dev/usb/urio.c#19 (text+ko) ====

@@ -197,6 +197,9 @@
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 	usb_device_descriptor_t *dd;
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (!uaa->iface)
 		return (UMATCH_NONE);
 

==== //depot/projects/usb/src/sys/dev/usb/usb_compat_linux.c#14 (text+ko) ====

@@ -196,6 +196,9 @@
 	struct usb_driver *udrv;
 	int err = UMATCH_NONE;
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface == NULL) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/usb_subr.h#69 (text+ko) ====

@@ -659,6 +659,8 @@
 	uint8_t	configno;
 	uint8_t	iface_index;
 	uint8_t	usegeneric;
+	uint8_t	usb_mode:1;		/* see USB_MODE_XXX */
+	uint8_t	unused:7;
 };
 
 /* return values for device_probe() method: */

==== //depot/projects/usb/src/sys/dev/usb/uscanner.c#18 (text+ko) ====

@@ -356,6 +356,9 @@
 	DPRINTF(10, "\n");
 
 	uaa = device_get_ivars(dev);
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface == NULL) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/dev/usb/uvisor.c#28 (text+ko) ====

@@ -320,6 +320,9 @@
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 	const struct uvisor_product *up = uvisor_find_up(uaa);
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	return (up ? UMATCH_VENDOR_PRODUCT : UMATCH_NONE);
 }
 

==== //depot/projects/usb/src/sys/dev/usb/uvscom.c#31 (text+ko) ====

@@ -295,6 +295,9 @@
 {
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface) {
 		return (UMATCH_NONE);
 	}

==== //depot/projects/usb/src/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c#19 (text+ko) ====

@@ -454,6 +454,9 @@
 	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->iface == NULL) ||
 	    usb_lookup(ubt_ignored_devices, uaa->vendor, uaa->product)) {
 		return (UMATCH_NONE);

==== //depot/projects/usb/src/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c#15 (text+ko) ====

@@ -175,6 +175,9 @@
 {
 	struct usb_attach_arg *uaa = device_get_ivars(dev);
 
+	if (uaa->usb_mode != USB_MODE_HOST) {
+		return (UMATCH_NONE);
+	}
 	if (uaa->iface != NULL)
 		return (UMATCH_NONE);
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200712081245.lB8CjNDG049119>