Thanks for the reply David.
On Saturday 29 Jan 2005 22:01, David Brownell wrote:
> On Wednesday 26 January 2005 7:55 am, Chris Clayton wrote:
> > I'm having trouble getting on on-board USB port working on my Compaq
> > Aramada 7400. Well. I should qualify that and say that I can't get it to
> > wotk with a 2.6 kernel - devices that I plug in when running a
> > 2.4.{26,28} kernel or, for that matter, Windows ME, work fine. In fact
> > they work fine with 2.6.10 (haven't tried others) if I attach them
> > through a cardbus USB2 adapater. The devices I am referring to are a
> > Belkin F5D6050 wireless adapter, a STIR4200 IrDA adapter, a plain
> > (unpowered) hub and a CF Card adapter. The 2.6 kernels I have tried are
> > 2.6.5 and 2.6.10.
>
> So it looks like there's some chip-specific quirk that isn't handled
> by the current OHCI code ... or potentially usbcore's hub driver. I'll
> assume 2.6.11-rc2 has the same results, and that you tried all the
> devices you have ready access to ... :)
>
> This is relatively old hardware -- a Pentium II -- and I think the OHCI
> silicon was relatively new at that time. It was before I started working
> with OHCI at all, fwiw, and I've never seen Compaq silicon myself. So
> it's easy to believe that silicon has constraints that aren't found on
> newer hardware (== what most folk test with).
>
> It looked like there were no particular issues during chip initialization,
> but I saw a few interesting points there and during enumeration:
>
> - New to me: it doesn't disable the Ownership Change (OC) IRQ (harmless?)
> - Hmm, PCI power management "version 1" -- shouldn't matter here
> - Seems to read the device descriptors OK, and config descriptor length
> - Problems crop up later, when reading the entire config descriptor
> - ... or sometimes when reading a string descriptor
> - ... or fetching the external hub (class) status
> - ... or setting configuration
> - Takes a long time to reset ports _after_ any of those errors
> - ... often fails completely!
> - ... issue seems tied to the root hub port, even with external hubs
>
> The failure mode seems to suggest that the root port goes AWOL
> and has a hard time recovering.
>
> On the theory that this silicon wants more time between control requests,
> you might try adding an msleep(10) in drivers/usb/core/message.c right
> before issuing a control request, at the top of usb_internal_control_msg().
> (The OHCI hardware should have gotten rid of all relevant hardware state
> after two or three milliseconds; so even 5 msec ought to be plenty...)
That has made some difference. With a delay 10 milliseconds, I can can now
attach the hub and it gets set up OK. I can also attach the STIR4200 IrDA
adapter, either directly through the built-in port or through the hub and it
too installs OK (lsusb shows the device and the output from dmesg shows the
device but no error messages). However, if I attach the CF adapter, I still
get timeout errors.
All subsequent tests are against a kernel that includes this 10 millisecind
delay and using the CF adapter.
>
> Did you try not using ACPI at all? I suspect that won't matter, but
> this is APM-era hardware so it's worth verifying this ... lots of
> ACPI from that era didn't work according to spec.
>
> A complementary BIOS-interaction theory might be that applying
> patch [1] and modprobing with distrust_firmware=N could help.
This wouldn't apply against 2.6.10, so figuring it is against 2.6.11-rcX, I
grabbed and built 2.6.11-rc2, and found that the patch is already applied.
However, it doesn't appear to make a difference, either on it's own or in
conjunction with patch [2] - I still see the same error messages as I get
with 2.6.10 plus the 10 millisec delay.
>
> On the theory that it's a hub driver bug, try [2]. Maybe an even
This applied to 2.6.11-rc2 with some fuzz and offsets, but the resultant code
looked OK to me (as if I would know :) ). It made no difference though - same
errors as before.
> longer timeout is needed after reset; or maybe one's needed after
> set_address().
I tried adding delays (ranging from 10 to 100 millisecs) in the places you
suggest, plus a few others were calls that appeared to be generating comms
with the adapter were returning errors that weer being reported in the
diagnostic messages I see through dmesg.
>
> If none of that helps, can you send /sys/class/usb_host/usb1/registers
> files, both after init and after enumeration failure? (And if possible,
> during...) They may cast some light on what's going on, especially if
> there are interesting changes.
I'll get these diags to you later (when I get the laptop back off my son -
that may be tomorrow), Hopefully I will also have built and tried 2.6.3 by
tomorrow evening.
>
> If all else fails, another useful data point would be whether there's
> some 2.6 kernel before 2.6.5 that works. There've been two classes
> of changes that interact here: in usbcore (notably the hub driver),
> and in ohci. Either one could be at fault here. Try 2.6.3, maybe.
>
> - Dave
>
> [1] http://marc.theaimsgroup.com/?l=linux-usb-devel&m=110628457424684&w=2
> [2] http://marc.theaimsgroup.com/?l=linux-usb-devel&m=110672516013383&w=2
Thanks for your help and advice so far.
Chris
-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel