Hi all,

this weekend, I managed to have my first serious go at getting Linux-USB
working with 2.3.99pre3. . I have tinkered around with it earlier, but never
really tried to get it going. Mostly very successful - thanks to everyone
involved to get it to this stage!

I did have one problem with OHCI controllers, though. It involves the very
early stage, when the device descriptor gets retrieved (8 bytes), and from
there on, the whole descriptor gets read. This works like a charm on
usb-uhci and uhci, but ohci failed with the message "get descriptor returned
0 bytes, expected 46" (or whatever the real length was).

I investigated this to a certain extent. All of the devices involved were
low-speed, input-type devices like mice, keyboards, joysticks, ... It seems
that, the longer the descriptor was, the more likely it was to fail. In a
plain mouse (Logitech N-48), it happened maybe once every 15 or 20 plugs, on
a simple joystick with a 30-something byte descriptor, it happened once
every ten plugs, on a joystick with a more complicated descriptor (like the
one mentioned with 46 bytes) it happend on almost every third plug.

Since I am new to the usb sources, I dug around a little bit and played a
little with parameters. I haven't come to any conclusion yet, but seem to
have stumbled across a line of code which fixes the problem in a very ugly
way. Between getting the basic descriptor and the full one in usb.c, I
inserted a "wait_ms(16);" (the amount was completely arbitrary). I'm going
through the specs, but does anyone (Roman? Aki?) in the mean time have any
idea?

Once the stack gets over that part, subsequent interrupt transfers work
fine. Got the keyboard and mouse working (hid, kbddev, mousedev). Apart from
the odd Oops during un-plug, things ran smooth.

Success stories:
- Also, after I made the 16-ms wait fix for OHCI, I was feeling daring and
hooked up my digital camera (Toshiba PDR-M4, apparently having some
Iomega-based SCSI interface, judging from the windows drivers). Modprobed
usb-storage, mounted the flash card with a vfat filesystem (would only do it
read-only), and there they were - my pictures in all of their beauty!

- Interrupt out: I believe this transfer type has been exercised least,
mainly because there are hardly any int-out devices. Well, we (@logitech)
have a few, and I went ahead and wrote a little driver which talks over
int-out. Success! Works on uhci, usb-uhci, usb-ohci, no glitches or
weirdnesses.

Just thought I'd mention it,
..tom



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to