Hi Olav,

I've merged your patch that you had sent around yesterday with my code.  I
had to work through a few more bugs to get it to that point (all to do with
big endianness - shouldn't affect anyone working on little endian
architectures - I will pull all the diffs together once I have things
somewhat stable).  I haven't had a chance to look into it in detail, but
your problem does not seem to appear with my setup.  In my case I am getting
the full 34 bytes of configuration.  I am not sure why, but for this
particular test run, it skipped the set address (may have been set before
starting driver, before resetting the board - ?).  I will send you my output
log, so you can compare any differences, off the list or to anyone else that
wants it.  In this case I had my Logitech Optical Mouse M-BJ58 connected.

I still have to play with this a bit more.  I don't even know if it is
repeatable yet.  I just thought, you might want to know.

--Philipp

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] Behalf Of Olav
Kongas
Sent: Sunday, October 31, 2004 8:51 AM
To: [EMAIL PROTECTED]
Cc: Lothar Wassmann; Dimitris Lampridis
Subject: [linux-usb-devel] HC gets too little data from devices


Hi,

I am working on porting the Lothar's isp1362 driver to
support isp1160. The driver can communicate with devices
under 2.6.9-rc3 (sets device address and gets descriptors).
I have tested it with mice, keyboards, and memory sticks,
but with all of these, the configuration process fails.
Configuration for each device fails always the same way,
though for different devices it happens differently. All
these devices work perfectly with ohci on x86.

A failure scenario is that the usb system requests info
about a device descriptor, learns its length, requests the
descriptor of strictly that length and gets less bytes from
the device than requested. The question is: may this be a HC
hardware/configuration problem? Help would be much
appreciated.

Here is an example failure with the following
keyboard (line from lsusb under x86):
Bus 003 Device 006: ID 04f2:0110 Chicony Electronics Co., Ltd KU-2971
Keyboard

[skipped info about attachment]

set-address (OK)
MPS=8 FA=0 DIR=0 EP=0 SPD=1 LEN=8
--out-> 00 05 02 00 00 00 00 00
MPS=8 FA=0 DIR=2 EP=0 SPD=1 LEN=0   # status

Get 8 bytes of the device descriptor (OK)
MPS=8 FA=2 DIR=0 EP=0 SPD=1 LEN=8
--out-> 80 06 00 01 00 00 08 00
MPS=8 FA=2 DIR=2 EP=0 SPD=1 LEN=8 COUNT=8
<--in-- 12 01 10 01 00 00 00 08
MPS=8 FA=2 DIR=1 EP=0 SPD=1 LEN=0

Get full device descriptor (OK)
MPS=8 FA=2 DIR=0 EP=0 SPD=1 LEN=8
--out-> 80 06 00 01 00 00 12 00
MPS=8 FA=2 DIR=2 EP=0 SPD=1 LEN=18 COUNT=18
<--in-- 12 01 10 01 00 00 00 08 f2 04 10 01 00 01 04 14 00 01
MPS=8 FA=2 DIR=1 EP=0 SPD=1 LEN=0

Get configuration (OK. Note that the device reports the
length of the configuration to be 34 (0x0022; bytes 2,3 in
the arrived data))
MPS=8 FA=2 DIR=0 EP=0 SPD=1 LEN=8
--out-> 80 06 00 02 00 00 09 00
MPS=8 FA=2 DIR=2 EP=0 SPD=1 LEN=9 COUNT=9
<--in-- 09 02 22 00 01 01 00 a0 32
MPS=8 FA=2 DIR=1 EP=0 SPD=1 LEN=0

Get configuration (Fails. For some reason, we get only 32
bytes back instead of 34.)
MPS=8 FA=2 DIR=0 EP=0 SPD=1 LEN=8
--out-> 80 06 00 02 00 00 22 00
MPS=8 FA=2 DIR=2 EP=0 SPD=1 LEN=34 COUNT=32
<--in-- 09 02 22 00 01 01 00 a0 32
09 04 00 00 01 03 01 01 00
09 21 10 01 00 01 22 41 00
07 05 81 03 08 00 00

No status transaction follows, as the buffer rounding bit in
the TD is clear. (Lothar, I added the buffer rounding bit
handling to update_td_status()).

Then timeout follows:
usb 1-1: unable to read config index 0 descriptor/all
usb 1-1: can't read configurations, error -110

and the usb system starts over again with set-address.

With one device, I have seen another type of weirdness. The
device is Trendnet's TMR-61U2 card reader (which, again,
works perfectly if attached to my x86 box). For that device,
the failure seems to be that HC just does not send off the
IN transaction. Like here:

set address (OK)
MPS=8 FA=0 DIR=0 EP=0 SPD=0 LEN=8
--out-> 00 05 02 00 00 00 00 00
MPS=8 FA=0 DIR=2 EP=0 SPD=0 LEN=0

get device descriptor (Fails, IN transaction not performed)
MPS=8 FA=2 DIR=0 EP=0 SPD=0 LEN=8
--out-> 80 06 00 01 00 00 08 00
MPS=8 FA=2 DIR=2 EP=0 SPD=0 LEN=8 COUNT=0

The Philips transfer descriptor for this last IN
transaction, read back from the device AFTER HC has reported
via ATLInt that the buffer is processed and ready, is the
following:

fc00 0808 0808 0002

where the leftmost nibble f shows that the HC has not even
tried to perform the IN transaction. I put here the register
dump obtained after writing the last IN transaction header
and data to HC:

HCREVISION  [00]: 00000010
HCCONTROL   [01]: 00000080
HCCMDSTAT   [02]: 00000000
HCINTSTAT   [03]: 00000084
HCINTENB    [04]: 8000001c
HCFMINTVL   [0d]: 27782edf
HCFMREM     [0e]: 00000ddc
HCFMNUM     [0f]: 0000044b
HCLSTHRESH  [11]: 00000628
HCRHDESCA   [12]: 05000202
HCRHDESCB   [13]: 00000000
HCRHSTATUS  [14]: 00008000
HCRHPORT2   [16]: 00000100
HCHWCFG     [20]:     1029
HCDMACFG    [21]:     0022
HCXFERCTR   [22]:     0010
HCuPINT     [24]:     0017   # ATLInt is asserted
HCuPINTENB  [25]:     0033
HCCHIPID    [27]:     6122
HCSCRATCH   [28]:     1ad5
HCITLBUFLEN [2a]:     0000
HCATLBUFLEN [2b]:     07e0
HCBUFSTAT   [2c]:     0024   # ATL buffer is done
HCRDITL0LEN [2d]:     0000
HCRDITL1LEN [2e]:     0000

Has anyone an idea, what is wrong?
Thank you in advance,
Olav



-------------------------------------------------------
This SF.Net email is sponsored by:
Sybase ASE Linux Express Edition - download now for FREE
LinuxWorld Reader's Choice Award Winner for best database on Linux.
http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel



-------------------------------------------------------
This SF.Net email is sponsored by: InterSystems CACHE
FREE OODBMS DOWNLOAD - A multidimensional database that combines
robust object and relational technologies, making it a perfect match
for Java, C++,COM, XML, ODBC and JDBC. www.intersystems.com/match8
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to