| From 03c1fd622f72c7624c81b64fdba4a567ae5ee9cb Mon Sep 17 00:00:00 2001 |
| From: Li Jun <jun.li@nxp.com> |
| Date: Tue, 28 Jul 2020 20:42:41 +0800 |
| Subject: usb: dwc3: core: add phy cleanup for probe error handling |
| |
| From: Li Jun <jun.li@nxp.com> |
| |
| commit 03c1fd622f72c7624c81b64fdba4a567ae5ee9cb upstream. |
| |
| Add the phy cleanup if dwc3 mode init fail, which is the missing part of |
| de-init for dwc3 core init. |
| |
| Fixes: c499ff71ff2a ("usb: dwc3: core: re-factor init and exit paths") |
| Cc: <stable@vger.kernel.org> |
| Signed-off-by: Li Jun <jun.li@nxp.com> |
| Signed-off-by: Felipe Balbi <balbi@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/usb/dwc3/core.c | 11 +++++++++++ |
| 1 file changed, 11 insertions(+) |
| |
| --- a/drivers/usb/dwc3/core.c |
| +++ b/drivers/usb/dwc3/core.c |
| @@ -1564,6 +1564,17 @@ static int dwc3_probe(struct platform_de |
| |
| err5: |
| dwc3_event_buffers_cleanup(dwc); |
| + |
| + usb_phy_shutdown(dwc->usb2_phy); |
| + usb_phy_shutdown(dwc->usb3_phy); |
| + phy_exit(dwc->usb2_generic_phy); |
| + phy_exit(dwc->usb3_generic_phy); |
| + |
| + usb_phy_set_suspend(dwc->usb2_phy, 1); |
| + usb_phy_set_suspend(dwc->usb3_phy, 1); |
| + phy_power_off(dwc->usb2_generic_phy); |
| + phy_power_off(dwc->usb3_generic_phy); |
| + |
| dwc3_ulpi_exit(dwc); |
| |
| err4: |