MFC r255356:

Revert parts of r245132 and r245175. We don't need to write to the
IMAN register to clear the pending interrupt status bits. This patch
tries to solve problems seen on the MacBook Air, as reported by
Johannes Lundberg <johannes@brilliantservice.co.jp>

(cherry picked from commit c5629a8a86db64382bf7633021ad8c379f46f3e3)
MFC r255768:
Stability fixes for Intel LynxPoint XHCI controllers. Disable XHCI port
routing if we get certain errors. Poll for command completion upon
command timeouts. The XHCI error events might not generate interrupts.

PR:		usb/181159
(cherry picked from commit 31d5ee4d4e192d9b084805a86c7354eba6bd0ca8)
MFC r241082:
Inherit USB mode from RootHUB port where the USB device is connected.
Only RootHUB ports can be dual mode. Disallow OTG ports on external HUBs.
This simplifies some checks in the USB controller drivers.

(cherry picked from commit de9676d9dfa19c50b0d74f43a1df5bd810ec6113)
MFC r256750:
Improve XHCI stability. When a command timeout happens, the command
should be aborted else the command queue can stop. Refer to section
"4.6.1.2" of the XHCI specification.

(cherry picked from commit 126e50113861dc88809dc6bcb4a10a5e7962ee25)
MFC r259023 and r259095:
Improve the XHCI command timeout recovery handling code.
Fix some typos while at it.

(cherry picked from commit 4e680ccbeab34af066642440b8f5a9dec293a6c5)
MFC r259248 and r259462:
Set chain bit correctly. This will fix some problems sending and
receiving Zero Length Packets, ZLPs. See comment in code for more
information.

(cherry picked from commit 1dbc75955a995491da03734dc7d6c09aa6612152)
MFC r260184:
Minor correction for the XHCI reset logic.

(cherry picked from commit e5d23736dbbd637f674d0c7c1b68120b677e25f9)
MFC r260388, r260535 and r260536:
Fix XHCI interrupt logic for "Intel Lynx Point" found in MBP2013.

(cherry picked from commit 18ff3e47c7ff768074dffdb2865252e16c5e0e29)
MFC r258545:
Comply to the XHCI specification. Certain input context fields should
always be zero.

(cherry picked from commit 1890458c039ad67d00e13aeea561b9efcc10e0e2)
MFC r261981:
Add new PCI ID for hardware which needs port routing for USB 3.0.

PR:		usb/186811
(cherry picked from commit c3b9453413e97f714695223c1e4caa219ba46c61)
MFC r261872:
Fix minor logical error in the XHCI driver. Set correct SETUP packet
direction value.

(cherry picked from commit 64e51d68af540b8a94b2034c6cca41d13a5da10e)