When dwc2 core is in partial power down mode
loading driver again causes driver fail. Because in
that mode registers are not accessible.
Added a flow of exiting the partial power down mode
to avoid the driver reload failure.
Acked-by: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>
Signed-off-by: Artur Petrosyan <Arthur.Petrosyan@synopsys.com>
Link: https://lore.kernel.org/r/20210408094615.8AE35A0094@mailhost.synopsys.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
static int dwc2_driver_remove(struct platform_device *dev)
{
struct dwc2_hsotg *hsotg = platform_get_drvdata(dev);
+ int ret = 0;
+
+ /* Exit Partial Power Down when driver is removed. */
+ if (hsotg->in_ppd) {
+ ret = dwc2_exit_partial_power_down(hsotg, 0, true);
+ if (ret)
+ dev_err(hsotg->dev,
+ "exit partial_power_down failed\n");
+ }
dwc2_debugfs_exit(hsotg);
if (hsotg->hcd_enabled)
reset_control_assert(hsotg->reset);
reset_control_assert(hsotg->reset_ecc);
- return 0;
+ return ret;
}
/**