USB: option: blacklist QMI interface on ZTE MF683
[cascardo/linux.git] / drivers / usb / serial / option.c
index cc40f47..30cff03 100644 (file)
@@ -870,7 +870,8 @@ static const struct usb_device_id option_ids[] = {
        { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0153, 0xff, 0xff, 0xff) },
        { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0155, 0xff, 0xff, 0xff) },
        { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0156, 0xff, 0xff, 0xff) },
-       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0157, 0xff, 0xff, 0xff) },
+       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0157, 0xff, 0xff, 0xff),
+         .driver_info = (kernel_ulong_t)&net_intf5_blacklist },
        { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0158, 0xff, 0xff, 0xff) },
        { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0159, 0xff, 0xff, 0xff) },
        { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0161, 0xff, 0xff, 0xff) },
@@ -886,8 +887,6 @@ static const struct usb_device_id option_ids[] = {
        { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1010, 0xff, 0xff, 0xff),
          .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
        { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1012, 0xff, 0xff, 0xff) },
-       { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1018, 0xff, 0xff, 0xff),
-         .driver_info = (kernel_ulong_t)&net_intf3_blacklist },
        { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1057, 0xff, 0xff, 0xff) },
        { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1058, 0xff, 0xff, 0xff) },
        { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x1059, 0xff, 0xff, 0xff) },
@@ -1092,6 +1091,10 @@ static const struct usb_device_id option_ids[] = {
         .driver_info = (kernel_ulong_t)&zte_ad3812_z_blacklist },
        { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MC2716, 0xff, 0xff, 0xff),
         .driver_info = (kernel_ulong_t)&zte_mc2716_z_blacklist },
+       { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x02, 0x01) },
+       { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x02, 0x05) },
+       { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x86, 0x10) },
+
        { USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) },
        { USB_DEVICE(DLINK_VENDOR_ID, DLINK_PRODUCT_DWM_652) },
        { USB_DEVICE(ALINK_VENDOR_ID, DLINK_PRODUCT_DWM_652_U5) }, /* Yes, ALINK_VENDOR_ID */
@@ -1255,8 +1258,6 @@ static struct usb_serial_driver * const serial_drivers[] = {
        &option_1port_device, NULL
 };
 
-static bool debug;
-
 struct option_private {
        u8 bInterfaceNumber;
 };
@@ -1367,18 +1368,19 @@ static void option_instat_callback(struct urb *urb)
 {
        int err;
        int status = urb->status;
-       struct usb_serial_port *port =  urb->context;
+       struct usb_serial_port *port = urb->context;
+       struct device *dev = &port->dev;
        struct usb_wwan_port_private *portdata =
                                        usb_get_serial_port_data(port);
 
-       dbg("%s: urb %p port %p has data %p", __func__, urb, port, portdata);
+       dev_dbg(dev, "%s: urb %p port %p has data %p\n", __func__, urb, port, portdata);
 
        if (status == 0) {
                struct usb_ctrlrequest *req_pkt =
                                (struct usb_ctrlrequest *)urb->transfer_buffer;
 
                if (!req_pkt) {
-                       dbg("%s: NULL req_pkt", __func__);
+                       dev_dbg(dev, "%s: NULL req_pkt\n", __func__);
                        return;
                }
                if ((req_pkt->bRequestType == 0xA1) &&
@@ -1388,7 +1390,7 @@ static void option_instat_callback(struct urb *urb)
                                        urb->transfer_buffer +
                                        sizeof(struct usb_ctrlrequest));
 
-                       dbg("%s: signal x%x", __func__, signals);
+                       dev_dbg(dev, "%s: signal x%x\n", __func__, signals);
 
                        old_dcd_state = portdata->dcd_state;
                        portdata->cts_state = 1;
@@ -1404,17 +1406,17 @@ static void option_instat_callback(struct urb *urb)
                                tty_kref_put(tty);
                        }
                } else {
-                       dbg("%s: type %x req %x", __func__,
+                       dev_dbg(dev, "%s: type %x req %x\n", __func__,
                                req_pkt->bRequestType, req_pkt->bRequest);
                }
        } else
-               dev_err(&port->dev, "%s: error %d\n", __func__, status);
+               dev_err(dev, "%s: error %d\n", __func__, status);
 
        /* Resubmit urb so we continue receiving IRQ data */
        if (status != -ESHUTDOWN && status != -ENOENT) {
                err = usb_submit_urb(urb, GFP_ATOMIC);
                if (err)
-                       dbg("%s: resubmit intr urb failed. (%d)",
+                       dev_dbg(dev, "%s: resubmit intr urb failed. (%d)\n",
                                __func__, err);
        }
 }
@@ -1448,6 +1450,3 @@ MODULE_AUTHOR(DRIVER_AUTHOR);
 MODULE_DESCRIPTION(DRIVER_DESC);
 MODULE_VERSION(DRIVER_VERSION);
 MODULE_LICENSE("GPL");
-
-module_param(debug, bool, S_IRUGO | S_IWUSR);
-MODULE_PARM_DESC(debug, "Debug messages");