summaryrefslogtreecommitdiffstats
path: root/uClinux-2.4.20-uc1/drivers/usb/serial/usbserial.c
diff options
context:
space:
mode:
Diffstat (limited to 'uClinux-2.4.20-uc1/drivers/usb/serial/usbserial.c')
-rw-r--r--uClinux-2.4.20-uc1/drivers/usb/serial/usbserial.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/uClinux-2.4.20-uc1/drivers/usb/serial/usbserial.c b/uClinux-2.4.20-uc1/drivers/usb/serial/usbserial.c
index 79979c6..06c3a47 100644
--- a/uClinux-2.4.20-uc1/drivers/usb/serial/usbserial.c
+++ b/uClinux-2.4.20-uc1/drivers/usb/serial/usbserial.c
@@ -329,8 +329,14 @@ static void generic_shutdown (struct usb_serial *serial);
#ifdef CONFIG_USB_SERIAL_GENERIC
-static __u16 vendor = 0x05f9;
-static __u16 product = 0xffff;
+#ifdef CONFIG_WINBOND_VCOM
+static __u16 vendor = 0x0416;
+static __u16 product = 0x7021;
+#else
+static __u16 vendor = 0x05f9;
+static __u16 product = 0xffff;
+#endif
+#endif
static struct usb_device_id generic_device_ids[2]; /* Initially all zeroes. */
@@ -940,6 +946,13 @@ static int generic_write (struct usb_serial_port *port, int from_user, const uns
usb_serial_debug_data (__FILE__, __FUNCTION__, count, port->write_urb->transfer_buffer);
+#ifdef CONFIG_WINBOND_VCOM
+ /*
+ Send vendor command to USBD regarding the following bulk out length.
+ */
+ usb_control_msg(serial->dev, usb_sndctrlpipe(serial->dev, 0),
+ 0xA0, 0x40, 0x12, count, NULL, 0, 100);
+#endif
/* set up our urb */
usb_fill_bulk_urb (port->write_urb, serial->dev,
usb_sndbulkpipe (serial->dev,