summaryrefslogtreecommitdiffstats
path: root/sys/dev/usb/net/if_cdce.c
diff options
context:
space:
mode:
authorhselasky <hselasky@FreeBSD.org>2011-06-24 02:30:02 +0000
committerhselasky <hselasky@FreeBSD.org>2011-06-24 02:30:02 +0000
commitdc0788739aaaf15b40f6d2fded382c167e26133d (patch)
tree6e82b2865a1b1c3596523a9b28c7c73c29ffd4ec /sys/dev/usb/net/if_cdce.c
parent1d215b1285ab0897c64a473f1b6b30f0311b87d0 (diff)
downloadFreeBSD-src-dc0788739aaaf15b40f6d2fded382c167e26133d.zip
FreeBSD-src-dc0788739aaaf15b40f6d2fded382c167e26133d.tar.gz
- Move all USB device ID arrays into so-called sections,
sorted according to the mode which they support: host, device or dual mode - Add generic tool to extract these data: tools/bus_autoconf Discussed with: imp Suggested by: Robert Millan <rmh@debian.org> PR: misc/157903 MFC after: 14 days
Diffstat (limited to 'sys/dev/usb/net/if_cdce.c')
-rw-r--r--sys/dev/usb/net/if_cdce.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/dev/usb/net/if_cdce.c b/sys/dev/usb/net/if_cdce.c
index b48e79d..12e6f67 100644
--- a/sys/dev/usb/net/if_cdce.c
+++ b/sys/dev/usb/net/if_cdce.c
@@ -263,7 +263,7 @@ static const struct usb_ether_methods cdce_ue_methods = {
.ue_setpromisc = cdce_setpromisc,
};
-static const struct usb_device_id cdce_devs[] = {
+static const STRUCT_USB_HOST_ID cdce_host_devs[] = {
{USB_VPI(USB_VENDOR_ACERLABS, USB_PRODUCT_ACERLABS_M5632, CDCE_FLAG_NO_UNION)},
{USB_VPI(USB_VENDOR_AMBIT, USB_PRODUCT_AMBIT_NTL_250, CDCE_FLAG_NO_UNION)},
{USB_VPI(USB_VENDOR_COMPAQ, USB_PRODUCT_COMPAQ_IPAQLINUX, CDCE_FLAG_NO_UNION)},
@@ -277,7 +277,9 @@ static const struct usb_device_id cdce_devs[] = {
{USB_VPI(USB_VENDOR_SHARP, USB_PRODUCT_SHARP_SLA300, CDCE_FLAG_ZAURUS | CDCE_FLAG_NO_UNION)},
{USB_VPI(USB_VENDOR_SHARP, USB_PRODUCT_SHARP_SLC700, CDCE_FLAG_ZAURUS | CDCE_FLAG_NO_UNION)},
{USB_VPI(USB_VENDOR_SHARP, USB_PRODUCT_SHARP_SLC750, CDCE_FLAG_ZAURUS | CDCE_FLAG_NO_UNION)},
+};
+static const STRUCT_USB_DUAL_ID cdce_dual_devs[] = {
{USB_IF_CSI(UICLASS_CDC, UISUBCLASS_ETHERNET_NETWORKING_CONTROL_MODEL, 0)},
{USB_IF_CSI(UICLASS_CDC, UISUBCLASS_MOBILE_DIRECT_LINE_MODEL, 0)},
{USB_IF_CSI(UICLASS_CDC, UISUBCLASS_NETWORK_CONTROL_MODEL, 0)},
@@ -472,8 +474,12 @@ static int
cdce_probe(device_t dev)
{
struct usb_attach_arg *uaa = device_get_ivars(dev);
+ int error;
- return (usbd_lookup_id_by_uaa(cdce_devs, sizeof(cdce_devs), uaa));
+ error = usbd_lookup_id_by_uaa(cdce_host_devs, sizeof(cdce_host_devs), uaa);
+ if (error)
+ error = usbd_lookup_id_by_uaa(cdce_dual_devs, sizeof(cdce_dual_devs), uaa);
+ return (error);
}
static void
OpenPOWER on IntegriCloud