Google
  Web www.spinics.net

Re: OHCI IRQ issues

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


> > We must not do that on edge interrupts because the interrupts we "miss"
> > will not be re-triggered as they don't stay asserted.
> 
> I'm confused.  Are you saying that the USB controller generates a
> normal interrupt request level but the interrupt controller interprets 
> it as edge-triggered?  How could that ever possibly work?
>
> Or are you saying that the USB controller generates a "spike" interrupt 
> request signal whenever one of the appropriate bits gets turned on?  In 
> that case the interrupts we miss _would_ be re-triggered, wouldn't 
> they?

The OHCI in this case generates an edge interrupt (what you call a
"spike", it's not that uncommon in SoC land). If you miss it it won't be
re-emitted. With edge interrupts, it's the responsibility of the driver
to make sure to harvest all conditions every time an interrupt happens.

 .../...

> Yes, it is.  The RHSC case calls usb_hcd_poll_rh_status(), which 
> indirectly calls ohci_root_hub_state_changes(), which does a resume if 
> the controller is suspended or auto-stopped.  Hence in this case the RD 
> isn't needed or wanted.

Ok, so that case is good.

> > Those 2 writes to intrdisable look totally useless to me. First they are
> > posted so they won't actually protect anything, then, we -are- in the
> > interrupt handler for the OHCI, so we cannot take that interrupt again
> > recursively anyway. So they are just a waste of cycles as far as I'm
> > concerned.
> 
> Me too.  I don't know why those lines are there.

Allright, I'll send a patch removing them.

> If it does cause problems on some chipsets then removing it is 
> probably okay.  It looks like a very minor optimization.

Yes, I don't see the point at all. In fact, EHCI doesn't even try to do
something like that.

> > As for the two others, what do you guys think ? I believe the masking in
> > WDH handling can just be removed, and I'm not sure about the else around
> > RD handling.
> 
> The "else" around RD is really needed, or at least it used to be
> needed.  Without it we would end up trying to resume a suspended
> controller twice, and the second resume would get into trouble.

Ok. I'll send a patch changing the 2 other cases then.

Cheers,
Ben.



-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
linux-usb-devel@xxxxxxxxxxxxxxxxxxxxx
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

[Home]     [Video for Linux]     [Photo]     [Yosemite Forum]     [Yosemite Photos]    [Video Projectors]     [PDAs]     [Hacking TiVo]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Devices]     [Big List of Linux Books]     [Free Dating]

  Powered by Linux