From owner-p4-projects@FreeBSD.ORG Sat Dec 8 12:45:24 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BA48D16A474; Sat, 8 Dec 2007 12:45:24 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2F14A16A468 for ; Sat, 8 Dec 2007 12:45:24 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 1B5E813C4DD for ; Sat, 8 Dec 2007 12:45:24 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id lB8CjON8049122 for ; Sat, 8 Dec 2007 12:45:24 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id lB8CjNDG049119 for perforce@freebsd.org; Sat, 8 Dec 2007 12:45:23 GMT (envelope-from hselasky@FreeBSD.org) Date: Sat, 8 Dec 2007 12:45:23 GMT Message-Id: <200712081245.lB8CjNDG049119@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 130487 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 08 Dec 2007 12:45:25 -0000 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);