static int u3ginit_match(device_t parent, cfdata_t match, void *aux) { struct usb_attach_arg *uaa = aux; /* * Huawei changes product when it is configured as a modem. */ switch (uaa->vendor) { case USB_VENDOR_HUAWEI: if (uaa->product == USB_PRODUCT_HUAWEI_K3765) return UMATCH_NONE; switch (uaa->product) { case USB_PRODUCT_HUAWEI_E1750INIT: case USB_PRODUCT_HUAWEI_K3765INIT: return u3g_huawei_k3765_reinit(uaa->device); break; default: return u3g_huawei_reinit(uaa->device); break; } break; case USB_VENDOR_NOVATEL2: switch (uaa->product){ case USB_PRODUCT_NOVATEL2_MC950D_DRIVER: case USB_PRODUCT_NOVATEL2_U760_DRIVER: return u3g_novatel_reinit(uaa->device); break; default: break; } break; case USB_VENDOR_SIERRA: if (uaa->product == USB_PRODUCT_SIERRA_INSTALLER) return u3g_sierra_reinit(uaa->device); break; case USB_VENDOR_QUALCOMMINC: if (uaa->product == USB_PRODUCT_QUALCOMMINC_ZTE_STOR) return u3g_novatel_reinit(uaa->device); break; default: break; } return UMATCH_NONE; }
static int u3g_match(device_t parent, cfdata_t match, void *aux) { struct usb_attach_arg *uaa = aux; if (uaa->vendor == USB_VENDOR_HUAWEI) return u3g_huawei_reinit(uaa->device); if (uaa->vendor == USB_VENDOR_NOVATEL2 && uaa->product == USB_PRODUCT_NOVATEL2_MC950D_DRIVER) return u3g_novatel_reinit(uaa); if (uaa->vendor == USB_VENDOR_SIERRA && uaa->product == USB_PRODUCT_SIERRA_INSTALLER) return u3g_sierra_reinit(uaa->device); if (usb_lookup(u3g_devs, uaa->vendor, uaa->product)) return UMATCH_VENDOR_PRODUCT; return UMATCH_NONE; }