USB HCD driver

Simon Arlott simon at fire.lp0.eu
Tue Jun 5 02:47:48 EDT 2012


On 04/06/12 23:53, Greg KH wrote:
> Hm, I merged some Samsung code that I thought was for a dwc "core" a few
> weeks ago, it's in the drivers/usb/gadget/s3c* files.  It said it is for
> a OTG controller, so perhaps it's the same core in use here as well?

Yes, but that driver only supports device mode.

> Well, there seems to be "something" working today, as my board tends to
> work, or is this the driver you have given up on cleaning up properly?

That's a version of the uncleaned Synopsys driver.

>> One issue that's been reported is 8000 interrupts per second, even in idle
>> mode.  According to Jeffrey our driver porter, the Synopsys driver relies on
>> the start of frame interrupt for scheduling transfers if "descriptor DMA" is
>> not implemented (which it isn't, on BCM2835).  8000 is one interrupt per
>> microframe.  We have a couple of ideas for that: one is to somehow disable
>> the interrupt if nothing interesting is happening.  The other is to wire it
>> into a FIQ (which the BCM2835 interrupt controller will let you do).  That
>> gives a much lower interrupt latency for dealing with unwanted interrupts. 
>> I understand Linux doesn't really use FIQs, which is unfortunate, but
>> perhaps could be implemented for purposes such as this.
> 
> What is a "FIQ"?

ARM has a "Fast Interrupt" handler that has priority over the normal
interrupt handler, and can only handle one interrupt source (which is
configurable).

Unfortunately it would be all or nothing for the USB host so you'd get
all the non-Start-Of-Frame interrupts too. It could be possible for the
FIQ to mask itself if the interrupt isn't SOF and then let the normal
IRQ handler deal with it (and re-enable the FIQ).

-- 
Simon Arlott



More information about the linux-rpi-kernel mailing list