Lukas Wunner wrote: > On Tue, Apr 09, 2019 at 09:28:16AM +0000, Minas Harutyunyan wrote: >> Am 09.04.19 um 08:54 schrieb Jisheng Zhang: >>> The second one: 8000 usb interrupts per second when idle. >>> This is abnormal. any idea? Is it due to the lan78xx? >> >> dwc2 in host mode enable SOF interrupts if any periodic EP are in use. >> So, 8000 interrupts per second is expectant behavior. > > The dwc_otg driver patched into the Raspberry Pi Foundation's > kernel seems to make do with much fewer interrupts and much > lower CPU load. How does it do that and how could dwc2 be > made to do the same? It connects an interrupt from the USB Phy to the FIQ (fast interrupt request) pin on the Arm CPU. The dwc2 driver could do the same, except I don't think the Linux kernel supports FIQ interrupts, so that would need to be added. It would also be unique to Arm and to the SOC that is used on the Pi. > Would it be possible for you to provide > me with documentation on the chip? The Synopsis website > requires registration for downloads and registration requires > a Synopsis customer ID. It's highly unlikely that Minas can provide you with the databook if you are not a customer. I used to work for Synopsys and wrote the original dwc2 driver. The company's policy did not allow non-customers to be given the databook. But you can find a copy on the web from a couple of different sites, google for dwc_otg. In any case, it would not cover the FIQ method that is used in the Pi driver, you would probably need the Phy databook for that. > It seems the Foundation's dwc_otg driver was forked from code > that later begat dwc2. Yes, I ported dwc2 from the Synopsys dwc_otg driver. But the FIQ interrupt stuff was not part of the dwc_otg driver, it was added by the Raspberry Pi foundation guys specifically to work around problems on the Pi platform. HTH, Paul