Georg Acher wrote:
>
> On Mon, Mar 27, 2000 at 06:53:40PM +0000, Johan Verrept wrote:
> > > This means that there ocurred a timeout for the requested action that is
> > > detected by the HC. The HC had 3 tries, and none were answered with
> > > ACK/NACK/STALL responses. This is an USB protocoll violation.
> > >
> > > Either you are addressing the wrong device, the wrong EP (7?), or the
> > > device is simply dead.
> >
> > device 3, endpoint 7, device still responds to control messages.
> > btw, what is that timeout ?
>
> Huh? ONE endpoint for control AND bulk? I' searching through the USB spec
> and it seems to me that there is no mention of multi-transfer-EPs.
> I assume that this is not allowed and thus the behavior of the device
> absolutely OK.
>
> If you mean control messages to EP0 work but not bulk to EP7, then only
> some problems with the configuration/alternate setting seem plausible to
> me.
The latter off course. (control messages to EP0 work but not bulk to
EP7)
There is only one possible configuration, so that should be ok.
There are three possible alternate settings for the second interface, I
checked the setting with a USB_REQ_GET_INTERFACE control message and it
is also ok.
I am running out of idea's of things to try...
usb_set_interface(dev, 1, 2) should be enough to set the alternate
setting on the interface right ?
But it might be a side effect, because i am also getting other weird
things.
For example, sometimes after I unplug the device and unload the module
and replug it, all bulk transfers to the device block. (this is without
the module loaded, trying bulk tranfer from userspace...)
If this happens, i can plug and unplug the device as often as i like,
this condition only goes away on reboot. Even rmmod'ing and insmod'ing
the usbcore and usb-uhci driver modules doesn't work (only tried this
under 2.3.39 though...they are no longer modules now).
That is why I am suspecting there is a problem in the uhci module too...
triggered by something i do or something the device does ( the timeout
?).
It seems unlikely it is something i do... I do the following (in the
probe):
/* claim all interfaces */
usb_driver_claim_interface(&driver, &dev->actconfig->interface[1],
instance);
usb_driver_claim_interface(&driver, &dev->actconfig->interface[2],
instance);
/* set configuration */
usb_set_configuration(dev, 0);
/* set alternate setting 2 on interface 1 */
usb_set_interface(dev, 1, 2);
and starting a thread which polls the device status with a vendor
specific command. (EP0)
sometimes, the command times out (without the TD dump), but everything
stay working... (the device sometimes has lots to process...)
when i rmmod, i kill the tread, wait for it to exit and then (in
disconnect):
/* releasing interfaces */
usb_driver_release_interface(&driver, &dev->actconfig->interface[1]);
usb_driver_release_interface(&driver, &dev->actconfig->interface[2]);
that's it.
I showed the bulk transfer code earlier...
J.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]