Am Donnerstag 23 April 2009 15:57:55 schrieb Vincent: > 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. > You can find a HOWTO under Documentation/usb/usbmon.txt in your kernel tree. > list_del(&buf->list); > > rcv->buffer = buf; > + if (acm->dev->quirks == TI_EZ430U) > + rcv->urb->interval = 0xFF; As I said this is a separate issue. > 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) { I don't understand why you define a quirk here. These devices should be autodetectable by comparing the number of the probed interface and the number of the data interface from the union descriptor. > 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; This should not be done. If we know a device violates the spec by having only a single interface we should search the endpoints and not hardcode the endpoints. Regards Oliver -- 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