Thanks for your reply. > > Get a usbmon trace showing a loss of data. I don't have this tool on my environment ... I'll get it, thanks for the tip. > Maybe I am dense, but this supposes that you have two interfaces. > It seems to me we have some kind of misunderstanding. Could you please > 1. post "lsusb -v" for your device? Bus 001 Device 004: ID 0451:f432 Texas Instruments, Inc. Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x0451 Texas Instruments, Inc. idProduct 0xf432 bcdDevice 1.00 iManufacturer 1 Texas Instruments iProduct 2 Texas Instruments MSP-FET430UIF iSerial 3 83FF598CDEC5112C bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 85 bNumInterfaces 2 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 100mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 3 bInterfaceClass 2 Communications bInterfaceSubClass 2 Abstract (modem) bInterfaceProtocol 1 AT-commands (v.25ter) iInterface 5 MSP430 Application UART CDC Header: bcdCDC 1.10 CDC Call Management: bmCapabilities 0x00 bDataInterface 0 CDC ACM: bmCapabilities 0x02 line coding and serial state Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x82 EP 2 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 255 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x03 EP 3 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 255 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x83 EP 3 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 255 Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 1 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 3 Human Interface Device bInterfaceSubClass 0 No Subclass bInterfaceProtocol 0 None iInterface 4 MSP430 Debug-Interface HID Device Descriptor: bLength 9 bDescriptorType 33 bcdHID 1.01 bCountryCode 0 Not supported bNumDescriptors 1 bDescriptorType 34 Report wDescriptorLength 694 Report Descriptors: ** UNAVAILABLE ** Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 1 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x01 EP 1 OUT bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0040 1x 64 bytes bInterval 1 Device Status: 0x0000 (Bus Powered) > 2. Repost the patch made with "diff -up"? diff -up linux-orig/drivers/usb/class/cdc-acm.c linux-new/drivers/usb/class/cdc-acm.c --- linux-orig/drivers/usb/class/cdc-acm.c 2009-01-22 06:00:07.000000000 -0500 +++ linux-new/drivers/usb/class/cdc-acm.c 2009-04-19 10:34:01.000000000 -0400 @@ -445,6 +445,8 @@ urbs: list_del(&buf->list); rcv->buffer = buf; + if (acm->dev->quirks == TI_EZ430U) + rcv->urb->interval = 0xFF; usb_fill_bulk_urb(rcv->urb, acm->dev, acm->rx_endpoint, @@ -916,7 +918,7 @@ static int acm_probe (struct usb_interfa num_rx_buf = (quirks == SINGLE_RX_URB) ? 1 : ACM_NR; /* handle quirks deadly to normal probing*/ - if (quirks == NO_UNION_NORMAL) { + if (quirks == NO_UNION_NORMAL || quirks == TI_EZ430U) { data_interface = usb_ifnum_to_if(usb_dev, 1); control_interface = usb_ifnum_to_if(usb_dev, 0); goto skip_normal_probe; @@ -1012,7 +1014,7 @@ skip_normal_probe: /*workaround for switched interfaces */ if (data_interface->cur_altsetting->desc.bInterfaceClass != CDC_DATA_INTERFACE_TYPE) { - if (control_interface->cur_altsetting->desc.bInterfaceClass == CDC_DATA_INTERFACE_TYPE) { + if ( (control_interface->cur_altsetting->desc.bInterfaceClass == CDC_DATA_INTERFACE_TYPE) || (quirks == TI_EZ430U) ) { struct usb_interface *t; dev_dbg(&intf->dev,"Your device has switched interfaces.\n"); @@ -1038,7 +1040,7 @@ skip_normal_probe: return -EINVAL; epctrl = &control_interface->cur_altsetting->endpoint[0].desc; - epread = &data_interface->cur_altsetting->endpoint[0].desc; + epread = (quirks == TI_EZ430U) ? &data_interface->cur_altsetting->endpoint[1].desc : &data_interface->cur_altsetting->endpoint[0].desc; epwrite = &data_interface->cur_altsetting->endpoint[1].desc; @@ -1370,6 +1372,9 @@ static struct usb_device_id acm_ids[] = { USB_DEVICE(0x0572, 0x1321), /* Conexant USB MODEM CX93010 */ .driver_info = NO_UNION_NORMAL, /* has no union descriptor */ }, + { USB_DEVICE(0x0451, 0xF432), /* TI TUSB3410 */ + .driver_info = TI_EZ430U, + }, /* control interfaces with various AT-command sets */ { USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ACM, diff -up linux-orig/drivers/usb/class/cdc-acm.h linux-new/drivers/usb/class/cdc-acm.h --- linux-orig/drivers/usb/class/cdc-acm.h 2009-01-22 06:00:07.000000000 -0500 +++ linux-new/drivers/usb/class/cdc-acm.h 2009-04-19 10:34:01.000000000 -0400 @@ -134,3 +134,5 @@ struct acm { /* constants describing various quirks and errors */ #define NO_UNION_NORMAL 1 #define SINGLE_RX_URB 2 +#define TI_EZ430U 3 + Thanks for your help, Regards. -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html