|
@@ -43,6 +43,8 @@
|
|
|
#include <linux/usb/serial.h>
|
|
|
|
|
|
/* Function prototypes */
|
|
|
+static int option_probe(struct usb_serial *serial,
|
|
|
+ const struct usb_device_id *id);
|
|
|
static int option_open(struct tty_struct *tty, struct usb_serial_port *port,
|
|
|
struct file *filp);
|
|
|
static void option_close(struct usb_serial_port *port);
|
|
@@ -555,6 +557,7 @@ static struct usb_serial_driver option_1port_device = {
|
|
|
.usb_driver = &option_driver,
|
|
|
.id_table = option_ids,
|
|
|
.num_ports = 1,
|
|
|
+ .probe = option_probe,
|
|
|
.open = option_open,
|
|
|
.close = option_close,
|
|
|
.dtr_rts = option_dtr_rts,
|
|
@@ -631,6 +634,18 @@ static void __exit option_exit(void)
|
|
|
module_init(option_init);
|
|
|
module_exit(option_exit);
|
|
|
|
|
|
+static int option_probe(struct usb_serial *serial,
|
|
|
+ const struct usb_device_id *id)
|
|
|
+{
|
|
|
+ /* D-Link DWM 652 still exposes CD-Rom emulation interface in modem mode */
|
|
|
+ if (serial->dev->descriptor.idVendor == DLINK_VENDOR_ID &&
|
|
|
+ serial->dev->descriptor.idProduct == DLINK_PRODUCT_DWM_652 &&
|
|
|
+ serial->interface->cur_altsetting->desc.bInterfaceClass == 0x8)
|
|
|
+ return -ENODEV;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static void option_set_termios(struct tty_struct *tty,
|
|
|
struct usb_serial_port *port, struct ktermios *old_termios)
|
|
|
{
|