ARM64/DWC_OTG: Port dwc_otg driver to ARM64
authorMichael Zoran <mzoran@crowfest.net>
Sun, 15 Jan 2017 05:33:51 +0000 (21:33 -0800)
committerRaspbian kernel package updater <root@raspbian.org>
Thu, 9 Mar 2017 17:52:12 +0000 (17:52 +0000)
commita009e29dab78bf52a1bf86fcfacc432a9c848bb1
tree407dc269d9943b4b7d62345efb13bdad9db43de1
parent5c6e3888adb40ec7d8502dc9b3a9d5ae6cc75533
ARM64/DWC_OTG: Port dwc_otg driver to ARM64

In ARM64, the FIQ mechanism used by this driver is not current
implemented.   As a workaround, reqular IRQ is used instead
of FIQ.

In a separate change, the IRQ-CPU mapping is round robined
on ARM64 to increase concurrency and allow multiple interrupts
to be serviced at a time.  This reduces the need for FIQ.

Tests Run:

This mechanism is most likely to break when multiple USB devices
are attached at the same time.  So the system was tested under
stress.

Devices:

1. USB Speakers playing back a FLAC audio through VLC
   at 96KHz.(Higher then typically, but supported on my speakers).

2. sftp transferring large files through the buildin ethernet
   connection which is connected through USB.

3. Keyboard and mouse attached and being used.

Although I do occasionally hear some glitches, the music seems to
play quite well.

Signed-off-by: Michael Zoran <mzoran@crowfest.net>
drivers/usb/host/dwc_otg/Makefile
drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.c
drivers/usb/host/dwc_otg/dwc_otg_fiq_fsm.h
drivers/usb/host/dwc_otg/dwc_otg_hcd.c
drivers/usb/host/dwc_otg/dwc_otg_hcd_if.h
drivers/usb/host/dwc_otg/dwc_otg_hcd_intr.c
drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
drivers/usb/host/dwc_otg/dwc_otg_os_dep.h