PERFORCE change 130487 for review
Hans Petter Selasky
hselasky at FreeBSD.org
Sat Dec 8 04:45:25 PST 2007
http://perforce.freebsd.org/chv.cgi?CH=130487
Change 130487 by hselasky at 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);
More information about the p4-projects
mailing list