OSDN Git Service

usb: dwc3: remove generic PHY calibrate() calls
authorMarek Szyprowski <m.szyprowski@samsung.com>
Thu, 29 Aug 2019 05:30:28 +0000 (07:30 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 3 Sep 2019 13:54:56 +0000 (15:54 +0200)
Calls to USB2 generic PHY calibrate() method has been moved to HCD core,
which now successfully handles generic PHYs and their calibration after
every HCD reset. This fixes all the timing issues related to PHY
calibration done directly from DWC3 driver: incorrect operation after
system suspend/resume or USB3.0 detection failure when XHCI-plat driver
compiled as separate module.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Tested-by: Anand Moon <linux.amoon@gmail.com>
Tested-by: Jochen Sprickerhof <jochen@sprickerhof.de>
Acked-by: Felipe Balbi <felipe.balbi@linux.intel.com>
Link: https://lore.kernel.org/r/20190829053028.32438-3-m.szyprowski@samsung.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/dwc3/core.c

index f56d505..999ce5e 100644 (file)
@@ -168,7 +168,6 @@ 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);
                }
                break;
        case DWC3_GCTL_PRTCAP_DEVICE:
@@ -1177,7 +1176,6 @@ 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);
                break;
        case USB_DR_MODE_OTG:
                INIT_WORK(&dwc->drd_work, __dwc3_set_mode);