Lines 306-312
Link Here
|
306 |
U3G_DEV(HUAWEI, E173, 0), |
306 |
U3G_DEV(HUAWEI, E173, 0), |
307 |
U3G_DEV(HUAWEI, E173_INIT, U3GINIT_HUAWEISCSI), |
307 |
U3G_DEV(HUAWEI, E173_INIT, U3GINIT_HUAWEISCSI), |
308 |
U3G_DEV(HUAWEI, E3131, 0), |
308 |
U3G_DEV(HUAWEI, E3131, 0), |
309 |
U3G_DEV(HUAWEI, E3131_INIT, U3GINIT_HUAWEISCSI), |
309 |
U3G_DEV(HUAWEI, E3131_INIT, U3GINIT_HUAWEISCSI2), |
310 |
U3G_DEV(HUAWEI, E180V, U3GINIT_HUAWEI), |
310 |
U3G_DEV(HUAWEI, E180V, U3GINIT_HUAWEI), |
311 |
U3G_DEV(HUAWEI, E220, U3GINIT_HUAWEI), |
311 |
U3G_DEV(HUAWEI, E220, U3GINIT_HUAWEI), |
312 |
U3G_DEV(HUAWEI, E220BIS, U3GINIT_HUAWEI), |
312 |
U3G_DEV(HUAWEI, E220BIS, U3GINIT_HUAWEI), |
Lines 324-329
Link Here
|
324 |
U3G_DEV(HUAWEI, K3770_INIT, U3GINIT_HUAWEISCSI), |
324 |
U3G_DEV(HUAWEI, K3770_INIT, U3GINIT_HUAWEISCSI), |
325 |
U3G_DEV(HUAWEI, K4505, U3GINIT_HUAWEI), |
325 |
U3G_DEV(HUAWEI, K4505, U3GINIT_HUAWEI), |
326 |
U3G_DEV(HUAWEI, K4505_INIT, U3GINIT_HUAWEISCSI), |
326 |
U3G_DEV(HUAWEI, K4505_INIT, U3GINIT_HUAWEISCSI), |
|
|
327 |
U3G_DEV(HUAWEI, E3272_INIT, U3GINIT_HUAWEISCSI), |
328 |
U3G_DEV(HUAWEI, E3272, 0), |
327 |
U3G_DEV(HUAWEI, ETS2055, U3GINIT_HUAWEI), |
329 |
U3G_DEV(HUAWEI, ETS2055, U3GINIT_HUAWEI), |
328 |
U3G_DEV(KYOCERA2, CDMA_MSM_K, 0), |
330 |
U3G_DEV(KYOCERA2, CDMA_MSM_K, 0), |
329 |
U3G_DEV(KYOCERA2, KPC680, 0), |
331 |
U3G_DEV(KYOCERA2, KPC680, 0), |
Lines 590-595
Link Here
|
590 |
MODULE_VERSION(u3g, 1); |
592 |
MODULE_VERSION(u3g, 1); |
591 |
USB_PNP_HOST_INFO(u3g_devs); |
593 |
USB_PNP_HOST_INFO(u3g_devs); |
592 |
|
594 |
|
|
|
595 |
/* Huawei specific: see if_cdce.c for more ids. */ |
596 |
#define U3G_HUAWEI_IS_CDC(info, iface_descr) \ |
597 |
((info)->idVendor == USB_VENDOR_HUAWEI && \ |
598 |
(iface_descr)->bInterfaceClass == UICLASS_VENDOR && \ |
599 |
(((iface_descr)->bInterfaceSubClass == 0x02 && \ |
600 |
((iface_descr)->bInterfaceProtocol == 0x16 || \ |
601 |
(iface_descr)->bInterfaceProtocol == 0x46 || \ |
602 |
(iface_descr)->bInterfaceProtocol == 0x76)) || \ |
603 |
((iface_descr)->bInterfaceSubClass == 0x03 && \ |
604 |
(iface_descr)->bInterfaceProtocol == 0x16))) |
605 |
|
593 |
static int |
606 |
static int |
594 |
u3g_sierra_init(struct usb_device *udev) |
607 |
u3g_sierra_init(struct usb_device *udev) |
595 |
{ |
608 |
{ |
Lines 839-844
Link Here
|
839 |
if (uaa->info.bInterfaceClass != UICLASS_VENDOR) { |
852 |
if (uaa->info.bInterfaceClass != UICLASS_VENDOR) { |
840 |
return (ENXIO); |
853 |
return (ENXIO); |
841 |
} |
854 |
} |
|
|
855 |
/* Huawei specific: skip cdce devices. */ |
856 |
if (U3G_HUAWEI_IS_CDC(&uaa->info, &uaa->info)) { |
857 |
return (ENXIO); |
858 |
} |
842 |
return (usbd_lookup_id_by_uaa(u3g_devs, sizeof(u3g_devs), uaa)); |
859 |
return (usbd_lookup_id_by_uaa(u3g_devs, sizeof(u3g_devs), uaa)); |
843 |
} |
860 |
} |
844 |
|
861 |
|
Lines 882-887
Link Here
|
882 |
id = usbd_get_interface_descriptor(iface); |
899 |
id = usbd_get_interface_descriptor(iface); |
883 |
if (id == NULL || id->bInterfaceClass != UICLASS_VENDOR) |
900 |
if (id == NULL || id->bInterfaceClass != UICLASS_VENDOR) |
884 |
continue; |
901 |
continue; |
|
|
902 |
/* Huawei specific: skip cdce devices. */ |
903 |
if (U3G_HUAWEI_IS_CDC(&uaa->info, id)) |
904 |
continue; |
885 |
usbd_set_parent_iface(uaa->device, i, uaa->info.bIfaceIndex); |
905 |
usbd_set_parent_iface(uaa->device, i, uaa->info.bIfaceIndex); |
886 |
iface_valid |= (1<<i); |
906 |
iface_valid |= (1<<i); |
887 |
} |
907 |
} |