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>