Merge "usb: dwc3: dwc3-msm-core: Notify PHY disconnect before doing flush_work"

This commit is contained in:
qctecmdr 2024-06-07 04:56:07 -07:00 committed by Gerrit - the friendly Code Review server
commit 44ad4f38b4

View File

@ -6989,17 +6989,21 @@ static int dwc3_otg_start_host(struct dwc3_msm *mdwc, int on)
dwc3_msm_clear_dp_only_params(mdwc); dwc3_msm_clear_dp_only_params(mdwc);
} }
usb_role_switch_set_role(mdwc->dwc3_drd_sw, USB_ROLE_DEVICE); /*
if (dwc->dr_mode == USB_DR_MODE_OTG) * Performing phy disconnect before flush work to
flush_work(&dwc->drd_work); * address TypeC certification--TD 4.7.4 failure.
*/
usb_phy_notify_disconnect(mdwc->hs_phy, USB_SPEED_HIGH);
if (mdwc->ss_phy->flags & PHY_HOST_MODE) { if (mdwc->ss_phy->flags & PHY_HOST_MODE) {
usb_phy_notify_disconnect(mdwc->ss_phy, usb_phy_notify_disconnect(mdwc->ss_phy,
USB_SPEED_SUPER); USB_SPEED_SUPER);
mdwc->ss_phy->flags &= ~PHY_HOST_MODE; mdwc->ss_phy->flags &= ~PHY_HOST_MODE;
} }
usb_redriver_notify_disconnect(mdwc->redriver); usb_redriver_notify_disconnect(mdwc->redriver);
usb_phy_notify_disconnect(mdwc->hs_phy, USB_SPEED_HIGH);
usb_role_switch_set_role(mdwc->dwc3_drd_sw, USB_ROLE_DEVICE);
if (dwc->dr_mode == USB_DR_MODE_OTG)
flush_work(&dwc->drd_work);
mdwc->hs_phy->flags &= ~PHY_HOST_MODE; mdwc->hs_phy->flags &= ~PHY_HOST_MODE;
usb_unregister_notify(&mdwc->host_nb); usb_unregister_notify(&mdwc->host_nb);