--- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c @@ -646,6 +646,7 @@ static void option_instat_callback(struc static const struct usb_device_id option_ids[] = { + { USB_DEVICE(MEDIATEK_VENDOR_ID, 0x7127) }, { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) }, { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) }, { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA_LIGHT) }, @@ -2423,6 +2424,15 @@ static int option_probe(struct usb_seria if (device_flags & NUMEP2 && iface_desc->bNumEndpoints != 2) return -ENODEV; + if(id->idVendor == MEDIATEK_VENDOR_ID && + (id->idProduct == cpu_to_le16(0x7127) && + ((serial->interface->cur_altsetting->desc.bInterfaceNumber <= 5) || + (serial->interface->cur_altsetting->desc.bInterfaceNumber >= 7)))) + { + printk(KERN_INFO "Discovery the interface for Fibocom & MEDIATEK."); + return -ENODEV; + } + /* Store the device flags so we can use them during attach. */ usb_set_serial_data(serial, (void *)device_flags);