OSDN Git Service

usb: dwc2: Fix hibernation between host and device modes.
authorArtur Petrosyan <Arthur.Petrosyan@synopsys.com>
Fri, 16 Apr 2021 12:47:14 +0000 (16:47 +0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 22 Apr 2021 09:55:33 +0000 (11:55 +0200)
commit24d209dba5a3959b2ebde7cf3ad40c8015e814cf
tree0b0fc730c7a909a2ea290e439ca197ae959a28a3
parentc2db8d7b9568b10e014af83b3c15e39929e3579e
usb: dwc2: Fix hibernation between host and device modes.

When core is in hibernation in host mode and a device cable
was connected then driver exited from device hibernation.
However, registers saved for host mode and when exited from
device hibernation register restore would be done for device
register which was wrong because there was no device registers
stored to restore.

- Added dwc_handle_gpwrdn_disc_det() function which handles
  gpwrdn disconnect detect flow and exits hibernation
  without restoring the registers.
- Updated exiting from hibernation in GPWRDN_STS_CHGINT with
  calling dwc_handle_gpwrdn_disc_det() function. Here no register
  is restored which is the solution described above.

Fixes: 65c9c4c6b01f ("usb: dwc2: Add dwc2_handle_gpwrdn_intr() handler")
Acked-by: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>
Signed-off-by: Artur Petrosyan <Arthur.Petrosyan@synopsys.com>
Signed-off-by: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>
Link: https://lore.kernel.org/r/20210416124715.75355A005D@mailhost.synopsys.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/dwc2/core_intr.c