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 828-833
Link Here
|
828 |
static int |
830 |
static int |
829 |
u3g_probe(device_t self) |
831 |
u3g_probe(device_t self) |
830 |
{ |
832 |
{ |
|
|
833 |
int error; |
831 |
struct usb_attach_arg *uaa = device_get_ivars(self); |
834 |
struct usb_attach_arg *uaa = device_get_ivars(self); |
832 |
|
835 |
|
833 |
if (uaa->usb_mode != USB_MODE_HOST) { |
836 |
if (uaa->usb_mode != USB_MODE_HOST) { |
Lines 839-845
Link Here
|
839 |
if (uaa->info.bInterfaceClass != UICLASS_VENDOR) { |
842 |
if (uaa->info.bInterfaceClass != UICLASS_VENDOR) { |
840 |
return (ENXIO); |
843 |
return (ENXIO); |
841 |
} |
844 |
} |
842 |
return (usbd_lookup_id_by_uaa(u3g_devs, sizeof(u3g_devs), uaa)); |
845 |
error = usbd_lookup_id_by_uaa(u3g_devs, sizeof(u3g_devs), uaa); |
|
|
846 |
if (error != 0) { |
847 |
return (error); |
848 |
} |
849 |
return (BUS_PROBE_GENERIC); |
843 |
} |
850 |
} |
844 |
|
851 |
|
845 |
static int |
852 |
static int |
Lines 864-871
Link Here
|
864 |
} |
871 |
} |
865 |
|
872 |
|
866 |
/* copy in USB config */ |
873 |
/* copy in USB config */ |
867 |
for (n = 0; n != U3G_N_TRANSFER; n++) |
874 |
memcpy(&u3g_config_tmp, &u3g_config, sizeof(u3g_config)); |
868 |
u3g_config_tmp[n] = u3g_config[n]; |
|
|
869 |
|
875 |
|
870 |
device_set_usb_desc(dev); |
876 |
device_set_usb_desc(dev); |
871 |
mtx_init(&sc->sc_mtx, "u3g", NULL, MTX_DEF); |
877 |
mtx_init(&sc->sc_mtx, "u3g", NULL, MTX_DEF); |
Lines 882-888
Link Here
|
882 |
id = usbd_get_interface_descriptor(iface); |
888 |
id = usbd_get_interface_descriptor(iface); |
883 |
if (id == NULL || id->bInterfaceClass != UICLASS_VENDOR) |
889 |
if (id == NULL || id->bInterfaceClass != UICLASS_VENDOR) |
884 |
continue; |
890 |
continue; |
885 |
usbd_set_parent_iface(uaa->device, i, uaa->info.bIfaceIndex); |
|
|
886 |
iface_valid |= (1<<i); |
891 |
iface_valid |= (1<<i); |
887 |
} |
892 |
} |
888 |
|
893 |
|
Lines 913-918
Link Here
|
913 |
iface = usbd_get_iface(uaa->device, i); |
918 |
iface = usbd_get_iface(uaa->device, i); |
914 |
id = usbd_get_interface_descriptor(iface); |
919 |
id = usbd_get_interface_descriptor(iface); |
915 |
sc->sc_iface[nports] = id->bInterfaceNumber; |
920 |
sc->sc_iface[nports] = id->bInterfaceNumber; |
|
|
921 |
usbd_set_parent_iface(uaa->device, i, uaa->info.bIfaceIndex); |
916 |
|
922 |
|
917 |
if (bootverbose && sc->sc_xfer[nports][U3G_INTR]) { |
923 |
if (bootverbose && sc->sc_xfer[nports][U3G_INTR]) { |
918 |
device_printf(dev, "port %d supports modem control\n", |
924 |
device_printf(dev, "port %d supports modem control\n", |