USB: dwc3: Add support for host bus suspend

Add required support for host bus suspend for dwc3 driver. Also add
pm runtime callbacks for xhci platform device which will defer  putting
USB hardware in/out of low power mode to transciever driver. Whenever USB
core autosuspend timer expires, USB2 and USB3 roothubs are suspended, then
xhci platform device is runtime suspended. when xhci's runtime suspend
happens, it will call USB transciever's set_suspend callback which puts
USB hardware in low power mode.

When remote wakeup happens, dwc3 driver will bring USB hardware out of low
power mode. Then xhci stack will resume roothub port on which port change
is detected. Set skip resume flag to resume USB only on remote wakeup.

When micro A cable is disconnected during system suspend, xhci platform
device will be removed before PM resume of xhci device. Due to this,disable
depth counter mismatch happens and xhci device will not not be pm runtime
enabled on next cable connect. Fix this issue by calling pm_runtime_init
for xhci platform device.

CRs-Fixed: 422306
Change-Id: Ia06f792979d7bd3248ae40161978f9632ccd7808
Signed-off-by: Vijayavardhan Vennapusa <vvreddy@codeaurora.org>
6 files changed