|
@@ -41,9 +41,6 @@ static int zte_ev_usb_serial_open(struct tty_struct *tty,
|
|
|
int len;
|
|
|
unsigned char *buf;
|
|
|
|
|
|
- if (port->number != 0)
|
|
|
- return -ENODEV;
|
|
|
-
|
|
|
buf = kmalloc(MAX_SETUP_DATA_SIZE, GFP_KERNEL);
|
|
|
if (!buf)
|
|
|
return -ENOMEM;
|
|
@@ -53,7 +50,7 @@ static int zte_ev_usb_serial_open(struct tty_struct *tty,
|
|
|
result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
|
|
|
0x22, 0x21,
|
|
|
0x0001, 0x0000, NULL, len,
|
|
|
- HZ * USB_CTRL_GET_TIMEOUT);
|
|
|
+ USB_CTRL_GET_TIMEOUT);
|
|
|
dev_dbg(dev, "result = %d\n", result);
|
|
|
|
|
|
/* send 2st cmd and recieve data */
|
|
@@ -65,7 +62,7 @@ static int zte_ev_usb_serial_open(struct tty_struct *tty,
|
|
|
result = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0),
|
|
|
0x21, 0xa1,
|
|
|
0x0000, 0x0000, buf, len,
|
|
|
- HZ * USB_CTRL_GET_TIMEOUT);
|
|
|
+ USB_CTRL_GET_TIMEOUT);
|
|
|
debug_data(dev, __func__, len, buf, result);
|
|
|
|
|
|
/* send 3 cmd */
|
|
@@ -84,7 +81,7 @@ static int zte_ev_usb_serial_open(struct tty_struct *tty,
|
|
|
result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
|
|
|
0x20, 0x21,
|
|
|
0x0000, 0x0000, buf, len,
|
|
|
- HZ * USB_CTRL_GET_TIMEOUT);
|
|
|
+ USB_CTRL_GET_TIMEOUT);
|
|
|
debug_data(dev, __func__, len, buf, result);
|
|
|
|
|
|
/* send 4 cmd */
|
|
@@ -95,7 +92,7 @@ static int zte_ev_usb_serial_open(struct tty_struct *tty,
|
|
|
result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
|
|
|
0x22, 0x21,
|
|
|
0x0003, 0x0000, NULL, len,
|
|
|
- HZ * USB_CTRL_GET_TIMEOUT);
|
|
|
+ USB_CTRL_GET_TIMEOUT);
|
|
|
dev_dbg(dev, "result = %d\n", result);
|
|
|
|
|
|
/* send 5 cmd */
|
|
@@ -107,7 +104,7 @@ static int zte_ev_usb_serial_open(struct tty_struct *tty,
|
|
|
result = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0),
|
|
|
0x21, 0xa1,
|
|
|
0x0000, 0x0000, buf, len,
|
|
|
- HZ * USB_CTRL_GET_TIMEOUT);
|
|
|
+ USB_CTRL_GET_TIMEOUT);
|
|
|
debug_data(dev, __func__, len, buf, result);
|
|
|
|
|
|
/* send 6 cmd */
|
|
@@ -126,7 +123,7 @@ static int zte_ev_usb_serial_open(struct tty_struct *tty,
|
|
|
result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
|
|
|
0x20, 0x21,
|
|
|
0x0000, 0x0000, buf, len,
|
|
|
- HZ * USB_CTRL_GET_TIMEOUT);
|
|
|
+ USB_CTRL_GET_TIMEOUT);
|
|
|
debug_data(dev, __func__, len, buf, result);
|
|
|
kfree(buf);
|
|
|
|
|
@@ -166,9 +163,6 @@ static void zte_ev_usb_serial_close(struct usb_serial_port *port)
|
|
|
int len;
|
|
|
unsigned char *buf;
|
|
|
|
|
|
- if (port->number != 0)
|
|
|
- return;
|
|
|
-
|
|
|
buf = kmalloc(MAX_SETUP_DATA_SIZE, GFP_KERNEL);
|
|
|
if (!buf)
|
|
|
return;
|
|
@@ -178,7 +172,7 @@ static void zte_ev_usb_serial_close(struct usb_serial_port *port)
|
|
|
result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
|
|
|
0x22, 0x21,
|
|
|
0x0002, 0x0000, NULL, len,
|
|
|
- HZ * USB_CTRL_GET_TIMEOUT);
|
|
|
+ USB_CTRL_GET_TIMEOUT);
|
|
|
dev_dbg(dev, "result = %d\n", result);
|
|
|
|
|
|
/* send 2st ctl cmd(CTL 21 22 03 00 00 00 00 00 ) */
|
|
@@ -186,7 +180,7 @@ static void zte_ev_usb_serial_close(struct usb_serial_port *port)
|
|
|
result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
|
|
|
0x22, 0x21,
|
|
|
0x0003, 0x0000, NULL, len,
|
|
|
- HZ * USB_CTRL_GET_TIMEOUT);
|
|
|
+ USB_CTRL_GET_TIMEOUT);
|
|
|
dev_dbg(dev, "result = %d\n", result);
|
|
|
|
|
|
/* send 3st cmd and recieve data */
|
|
@@ -198,7 +192,7 @@ static void zte_ev_usb_serial_close(struct usb_serial_port *port)
|
|
|
result = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0),
|
|
|
0x21, 0xa1,
|
|
|
0x0000, 0x0000, buf, len,
|
|
|
- HZ * USB_CTRL_GET_TIMEOUT);
|
|
|
+ USB_CTRL_GET_TIMEOUT);
|
|
|
debug_data(dev, __func__, len, buf, result);
|
|
|
|
|
|
/* send 4 cmd */
|
|
@@ -217,7 +211,7 @@ static void zte_ev_usb_serial_close(struct usb_serial_port *port)
|
|
|
result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
|
|
|
0x20, 0x21,
|
|
|
0x0000, 0x0000, buf, len,
|
|
|
- HZ * USB_CTRL_GET_TIMEOUT);
|
|
|
+ USB_CTRL_GET_TIMEOUT);
|
|
|
debug_data(dev, __func__, len, buf, result);
|
|
|
|
|
|
/* send 5 cmd */
|
|
@@ -228,7 +222,7 @@ static void zte_ev_usb_serial_close(struct usb_serial_port *port)
|
|
|
result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
|
|
|
0x22, 0x21,
|
|
|
0x0003, 0x0000, NULL, len,
|
|
|
- HZ * USB_CTRL_GET_TIMEOUT);
|
|
|
+ USB_CTRL_GET_TIMEOUT);
|
|
|
dev_dbg(dev, "result = %d\n", result);
|
|
|
|
|
|
/* send 6 cmd */
|
|
@@ -240,7 +234,7 @@ static void zte_ev_usb_serial_close(struct usb_serial_port *port)
|
|
|
result = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0),
|
|
|
0x21, 0xa1,
|
|
|
0x0000, 0x0000, buf, len,
|
|
|
- HZ * USB_CTRL_GET_TIMEOUT);
|
|
|
+ USB_CTRL_GET_TIMEOUT);
|
|
|
debug_data(dev, __func__, len, buf, result);
|
|
|
|
|
|
/* send 7 cmd */
|
|
@@ -259,7 +253,7 @@ static void zte_ev_usb_serial_close(struct usb_serial_port *port)
|
|
|
result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
|
|
|
0x20, 0x21,
|
|
|
0x0000, 0x0000, buf, len,
|
|
|
- HZ * USB_CTRL_GET_TIMEOUT);
|
|
|
+ USB_CTRL_GET_TIMEOUT);
|
|
|
debug_data(dev, __func__, len, buf, result);
|
|
|
|
|
|
/* send 8 cmd */
|
|
@@ -270,7 +264,7 @@ static void zte_ev_usb_serial_close(struct usb_serial_port *port)
|
|
|
result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
|
|
|
0x22, 0x21,
|
|
|
0x0003, 0x0000, NULL, len,
|
|
|
- HZ * USB_CTRL_GET_TIMEOUT);
|
|
|
+ USB_CTRL_GET_TIMEOUT);
|
|
|
dev_dbg(dev, "result = %d\n", result);
|
|
|
|
|
|
kfree(buf);
|
|
@@ -279,11 +273,29 @@ static void zte_ev_usb_serial_close(struct usb_serial_port *port)
|
|
|
}
|
|
|
|
|
|
static const struct usb_device_id id_table[] = {
|
|
|
- { USB_DEVICE(0x19d2, 0xffff) }, /* AC8700 */
|
|
|
- { USB_DEVICE(0x19d2, 0xfffe) },
|
|
|
- { USB_DEVICE(0x19d2, 0xfffd) }, /* MG880 */
|
|
|
+ /* AC8710, AC8710T */
|
|
|
+ { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xffff, 0xff, 0xff, 0xff) },
|
|
|
+ /* AC8700 */
|
|
|
+ { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xfffe, 0xff, 0xff, 0xff) },
|
|
|
+ /* MG880 */
|
|
|
+ { USB_DEVICE(0x19d2, 0xfffd) },
|
|
|
+ { USB_DEVICE(0x19d2, 0xfffc) },
|
|
|
+ { USB_DEVICE(0x19d2, 0xfffb) },
|
|
|
+ /* AC2726, AC8710_V3 */
|
|
|
+ { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xfff1, 0xff, 0xff, 0xff) },
|
|
|
+ { USB_DEVICE(0x19d2, 0xfff6) },
|
|
|
+ { USB_DEVICE(0x19d2, 0xfff7) },
|
|
|
+ { USB_DEVICE(0x19d2, 0xfff8) },
|
|
|
+ { USB_DEVICE(0x19d2, 0xfff9) },
|
|
|
+ { USB_DEVICE(0x19d2, 0xffee) },
|
|
|
+ /* AC2716, MC2716 */
|
|
|
+ { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xffed, 0xff, 0xff, 0xff) },
|
|
|
+ /* AD3812 */
|
|
|
+ { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xffeb, 0xff, 0xff, 0xff) },
|
|
|
+ { USB_DEVICE(0x19d2, 0xffec) },
|
|
|
{ USB_DEVICE(0x05C6, 0x3197) },
|
|
|
{ USB_DEVICE(0x05C6, 0x6000) },
|
|
|
+ { USB_DEVICE(0x05C6, 0x9008) },
|
|
|
{ },
|
|
|
};
|
|
|
MODULE_DEVICE_TABLE(usb, id_table);
|