On Sat, 28 Aug 2004, Laurent Pinchart wrote:

> Hi everybody,
> 
> I've been trying to find out why my ACR30U Smart Card reader refuses to work 
> with the 2.6.7 kernel. I spent a week reading the USB specifications and 
> digging through the USB stack code (my host controller is a UHCI, using the 
> alternate (JE) driver with both 2.4 and 2.6 kernels).
> 
> The device is accessed by sending a CONTROL transaction, and reading the 
> results back using an INTERRUPT endpoint.
> 
> On the 2.4.27 kernel, I can send a request to the device and get a response. 
> The response doesn't seem to be valid, the device stops responding after the 
> first request, but at least I get a response.

Here is a dump of the CONTROL transaction, before it gets sent.

> [c65950c0] link (00000001) element (065841e4)
>  Depth traverse

Maybe that line is relevant.  It's not present under 2.6; do you know why 
it's there under 2.4?

And why is the link field equal to 1?  That shouldn't happen...

<...>
> The only difference I noticed between 2.4.27 and 2.6.7 is that 2.4.27 sets the 
> SPD (Short Packet Detection) flag in OUT packets, while 2.6.7 doesn't. I 
> tried forcing 2.6.7 to add the SPD flag. Unfortunately, results are 
> identical.

That's not surprising.  According the UHCI spec, SPD is never supposed to 
be set for OUT packets and the effects of setting it are undefined.  But 
having no effect at all is what I would expect.

> I've added debug code to get as much information as possible from the kernel, 
> and I'm now completely stuck. Both kernels send the same requests to the 
> device (I've dumped all CONTROL transactions), with the 2.4.27 kernel sending 
> a few more GET_DESCRIPTOR requests, but that shouldn't be relevant.

It shouldn't be, but just maybe it is.  Kind of hard to tell...  Can you 
edit those requests out of the 2.4 kernel?

> Could anyone point me to something I should investigate ? Why is the behaviour 
> so different ?
> 
> Thanks in advance for all the help you can provide.
> 
> Laurent Pinchart

I can't answer your question.  Is it possible that under 2.4 the devices 
also sends a STALL but for some reason the driver doesn't recognize it?  
You could modify the driver to have it dump the descriptors each time a 
Control transfer completes to see what really happened.

If you come up with an explanation, I'd really like to hear it.

Alan Stern






-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=5047&alloc_id=10808&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to