[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-usb-devel
Subject:    Re: [linux-usb-devel] EHCI & OHCI interrupt weirdness
From:       David Brownell <david-b () pacbell ! net>
Date:       2005-01-19 19:20:38
Message-ID: 200501191120.38966.david-b () pacbell ! net
[Download RAW message or body]

On Wednesday 19 January 2005 9:51 am, Jesse Barnes wrote:
> On Tuesday, January 18, 2005 5:39 pm, David Brownell wrote:
> > > Does it matter which driver I load first, ehci or ohci?
> >
> > I recommend EHCI first, to minimize resetting of USB devices during
> > initialization and simplify the PM resume scenarios.  Other than
> > that issue, it's not supposed to matter.
> 
>  66:          0       4407          0          0          SN hub  ohci_hcd
>  67:          0        517          0          0          SN hub  ohci_hcd, 
> ehci
> 
> [Above is after loading ohci first--a working setup.  If I load ehci first, 
> irq 66 spins out of control and is eventually shut off by the kernel because 
> of too many IRQ_NONE returns.]

What happens when you load EHCI _only_ ?  Normally loading that driver
won't cause any interrupts at all, until some device is connected.

Then there are basically two paths:  (a) it's a full/low speed device,
handled by OHCI (or on some cards, UHCI); or (b) it's a high speed device,
handled by EHCI.  To test the latter, I suggest you grab a USB 2.0 hub;
the slim 4 port ones using Mini-B connectors, just a bit bigger than a
credit card, are the most featureful.  (They have Cypress chips that have
a transaction translator on each port; which means you can hook up a lot
more full and low speed devices downstream.  All controlled by EHCI.)


> How is this supposed to work?

Perfectly!  Or at least as far as a small flotilla of penguins can
achieve such a thing before taking a break for some pickled herring!  :)


> I've just tested again and things work ok as  
> long as I load ohci first.  The interrupts seem to be getting assigned 
> correctly by the BIOS (there are supposed to be two of them, right?), but it 
> looks like if ehci registers its interrupt handler first, it just returns 
> IRQ_NONE, causing hcd_irq to not handle irq 66, which is apparently the usb 
> 1.1 ohci controller.

Maybe you have issues with IRQ sharing?  You said this was a NEC card;
and those work fine for most folk.  I've got one in a K7 box here, and
it doesn't have those init problems.  Two OHCI controllers, one EHCI;
IRQ sharing as arranged by your BIOS, typically the card puts each 
controller on a separate IRQ line but the PCI IRQ routing ends up
sharing things.  (On that box I've got two EHCIs and six OHCIs, lots
of sharing, no problems.)

- Dave




> 
> Thanks,
> Jesse
> 


-------------------------------------------------------
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
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic