Lines 76-89
Link Here
|
76 |
#define U3G_CONFIG_INDEX 0 |
76 |
#define U3G_CONFIG_INDEX 0 |
77 |
#define U3G_BSIZE 2048 |
77 |
#define U3G_BSIZE 2048 |
78 |
|
78 |
|
79 |
#define U3GSP_GPRS 0 |
|
|
80 |
#define U3GSP_EDGE 1 |
81 |
#define U3GSP_CDMA 2 |
82 |
#define U3GSP_UMTS 3 |
83 |
#define U3GSP_HSDPA 4 |
84 |
#define U3GSP_HSUPA 5 |
85 |
#define U3GSP_HSPA 6 |
86 |
#define U3GSP_MAX 7 |
87 |
|
79 |
|
88 |
/* Eject methods; See also usb_quirks.h:UQ_MSC_EJECT_* */ |
80 |
/* Eject methods; See also usb_quirks.h:UQ_MSC_EJECT_* */ |
89 |
#define U3GINIT_HUAWEI 1 /* Requires Huawei init command */ |
81 |
#define U3GINIT_HUAWEI 1 /* Requires Huawei init command */ |
Lines 327-332
Link Here
|
327 |
U3G_DEV(HUAWEI, K4505, U3GINIT_HUAWEI), |
319 |
U3G_DEV(HUAWEI, K4505, U3GINIT_HUAWEI), |
328 |
U3G_DEV(HUAWEI, K4505_INIT, U3GINIT_HUAWEISCSI), |
320 |
U3G_DEV(HUAWEI, K4505_INIT, U3GINIT_HUAWEISCSI), |
329 |
U3G_DEV(HUAWEI, ETS2055, U3GINIT_HUAWEI), |
321 |
U3G_DEV(HUAWEI, ETS2055, U3GINIT_HUAWEI), |
|
|
322 |
U3G_DEV(HUAWEI, E3272_INIT, U3GINIT_HUAWEISCSI), |
323 |
U3G_DEV(HUAWEI, E3272, 0), |
330 |
U3G_DEV(KYOCERA2, CDMA_MSM_K, 0), |
324 |
U3G_DEV(KYOCERA2, CDMA_MSM_K, 0), |
331 |
U3G_DEV(KYOCERA2, KPC680, 0), |
325 |
U3G_DEV(KYOCERA2, KPC680, 0), |
332 |
U3G_DEV(LONGCHEER, WM66, U3GINIT_HUAWEI), |
326 |
U3G_DEV(LONGCHEER, WM66, U3GINIT_HUAWEI), |
Lines 345-350
Link Here
|
345 |
U3G_DEV(NOVATEL, MC547, 0), |
339 |
U3G_DEV(NOVATEL, MC547, 0), |
346 |
U3G_DEV(NOVATEL, MC679, 0), |
340 |
U3G_DEV(NOVATEL, MC679, 0), |
347 |
U3G_DEV(NOVATEL, MC950D, 0), |
341 |
U3G_DEV(NOVATEL, MC950D, 0), |
|
|
342 |
U3G_DEV(NOVATEL, MC990D, 0), |
348 |
U3G_DEV(NOVATEL, MIFI2200, U3GINIT_SCSIEJECT), |
343 |
U3G_DEV(NOVATEL, MIFI2200, U3GINIT_SCSIEJECT), |
349 |
U3G_DEV(NOVATEL, MIFI2200V, U3GINIT_SCSIEJECT), |
344 |
U3G_DEV(NOVATEL, MIFI2200V, U3GINIT_SCSIEJECT), |
350 |
U3G_DEV(NOVATEL, U720, 0), |
345 |
U3G_DEV(NOVATEL, U720, 0), |
Lines 607-612
Link Here
|
607 |
return (0); |
602 |
return (0); |
608 |
} |
603 |
} |
609 |
|
604 |
|
|
|
605 |
/* Huawei specific: see if_cdce.c for more ids. */ |
606 |
#define U3G_HUAWEI_IS_CDC(info, iface_descr) \ |
607 |
((info)->idVendor == USB_VENDOR_HUAWEI && \ |
608 |
(iface_descr)->bInterfaceClass == UICLASS_VENDOR && \ |
609 |
(iface_descr)->bInterfaceSubClass == 0x02 && \ |
610 |
((iface_descr)->bInterfaceProtocol == 0x16 || \ |
611 |
(iface_descr)->bInterfaceProtocol == 0x46 || \ |
612 |
(iface_descr)->bInterfaceProtocol == 0x76)) |
613 |
|
614 |
|
610 |
static void |
615 |
static void |
611 |
u3g_sael_m460_init(struct usb_device *udev) |
616 |
u3g_sael_m460_init(struct usb_device *udev) |
612 |
{ |
617 |
{ |
Lines 814-819
Link Here
|
814 |
if (uaa->info.bInterfaceClass != UICLASS_VENDOR) { |
819 |
if (uaa->info.bInterfaceClass != UICLASS_VENDOR) { |
815 |
return (ENXIO); |
820 |
return (ENXIO); |
816 |
} |
821 |
} |
|
|
822 |
/* Huawei specific: skeep cdce devices. */ |
823 |
if (U3G_HUAWEI_IS_CDC(&uaa->info, &uaa->info)) { |
824 |
return (ENXIO); |
825 |
} |
817 |
return (usbd_lookup_id_by_uaa(u3g_devs, sizeof(u3g_devs), uaa)); |
826 |
return (usbd_lookup_id_by_uaa(u3g_devs, sizeof(u3g_devs), uaa)); |
818 |
} |
827 |
} |
819 |
|
828 |
|
Lines 857-862
Link Here
|
857 |
id = usbd_get_interface_descriptor(iface); |
866 |
id = usbd_get_interface_descriptor(iface); |
858 |
if (id == NULL || id->bInterfaceClass != UICLASS_VENDOR) |
867 |
if (id == NULL || id->bInterfaceClass != UICLASS_VENDOR) |
859 |
continue; |
868 |
continue; |
|
|
869 |
/* Huawei specific: skeep cdce devices. */ |
870 |
if (U3G_HUAWEI_IS_CDC(&uaa->info, id)) |
871 |
continue; |
860 |
usbd_set_parent_iface(uaa->device, i, uaa->info.bIfaceIndex); |
872 |
usbd_set_parent_iface(uaa->device, i, uaa->info.bIfaceIndex); |
861 |
iface_valid |= (1<<i); |
873 |
iface_valid |= (1<<i); |
862 |
} |
874 |
} |
Lines 890-896
Link Here
|
890 |
sc->sc_iface[nports] = id->bInterfaceNumber; |
902 |
sc->sc_iface[nports] = id->bInterfaceNumber; |
891 |
|
903 |
|
892 |
if (bootverbose && sc->sc_xfer[nports][U3G_INTR]) { |
904 |
if (bootverbose && sc->sc_xfer[nports][U3G_INTR]) { |
893 |
device_printf(dev, "port %d supports modem control", |
905 |
device_printf(dev, "port %d supports modem control\n", |
894 |
nports); |
906 |
nports); |
895 |
} |
907 |
} |
896 |
|
908 |
|