diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c index 535fb9a9b9bb..d6a009415168 100644 --- a/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c @@ -171,7 +171,9 @@ static void __dwc3_set_mode(struct work_struct *work) otg_set_vbus(dwc->usb2_phy->otg, true); phy_set_mode(dwc->usb2_generic_phy, PHY_MODE_USB_HOST); phy_set_mode(dwc->usb3_generic_phy, PHY_MODE_USB_HOST); - phy_calibrate(dwc->usb2_generic_phy); + if (!of_device_is_compatible(dwc->dev->parent->of_node, + "rockchip,rk3399-dwc3")) + phy_calibrate(dwc->usb2_generic_phy); } break; case DWC3_GCTL_PRTCAP_DEVICE: @@ -242,7 +244,10 @@ runtime: PHY_MODE_USB_HOST); phy_set_mode(dwc->usb3_generic_phy, PHY_MODE_USB_HOST); - phy_calibrate(dwc->usb2_generic_phy); + if (!of_device_is_compatible( + dwc->dev->parent->of_node, + "rockchip,rk3399-dwc3")) + phy_calibrate(dwc->usb2_generic_phy); } break; case DWC3_GCTL_PRTCAP_DEVICE: @@ -1276,7 +1281,9 @@ static int dwc3_core_init_mode(struct dwc3 *dwc) dev_err(dev, "failed to initialize host\n"); return ret; } - phy_calibrate(dwc->usb2_generic_phy); + if (!of_device_is_compatible(dwc->dev->parent->of_node, + "rockchip,rk3399-dwc3")) + phy_calibrate(dwc->usb2_generic_phy); break; case USB_DR_MODE_OTG: INIT_WORK(&dwc->drd_work, __dwc3_set_mode); diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 6cf2ebb88d8e..d535425bb6bf 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -2894,6 +2894,10 @@ static void dwc3_gadget_reset_interrupt(struct dwc3 *dwc) { u32 reg; + if (of_device_is_compatible(dwc->dev->parent->of_node, + "rockchip,rk3399-dwc3")) + phy_calibrate(dwc->usb2_generic_phy); + /* * WORKAROUND: DWC3 revisions <1.88a have an issue which * would cause a missing Disconnect Event if there's a