#define CFG_RXDET_P3_EN                BIT(15)
 #define LPM_2_STB_SWITCH_EN    BIT(25)
 
-static int xhci_cdns3_suspend_quirk(struct usb_hcd *hcd);
+static void xhci_cdns3_plat_start(struct usb_hcd *hcd)
+{
+       struct xhci_hcd *xhci = hcd_to_xhci(hcd);
+       u32 value;
+
+       /* set usbcmd.EU3S */
+       value = readl(&xhci->op_regs->command);
+       value |= CMD_PM_INDEX;
+       writel(value, &xhci->op_regs->command);
+
+       if (hcd->regs) {
+               value = readl(hcd->regs + XECP_AUX_CTRL_REG1);
+               value |= CFG_RXDET_P3_EN;
+               writel(value, hcd->regs + XECP_AUX_CTRL_REG1);
+
+               value = readl(hcd->regs + XECP_PORT_CAP_REG);
+               value |= LPM_2_STB_SWITCH_EN;
+               writel(value, hcd->regs + XECP_PORT_CAP_REG);
+       }
+}
+
+static int xhci_cdns3_resume_quirk(struct usb_hcd *hcd)
+{
+       xhci_cdns3_plat_start(hcd);
+       return 0;
+}
 
 static const struct xhci_plat_priv xhci_plat_cdns3_xhci = {
        .quirks = XHCI_SKIP_PHY_INIT | XHCI_AVOID_BEI,
-       .suspend_quirk = xhci_cdns3_suspend_quirk,
+       .plat_start = xhci_cdns3_plat_start,
+       .resume_quirk = xhci_cdns3_resume_quirk,
 };
 
 static int __cdns_host_init(struct cdns *cdns)
        return ret;
 }
 
-static int xhci_cdns3_suspend_quirk(struct usb_hcd *hcd)
-{
-       struct xhci_hcd *xhci = hcd_to_xhci(hcd);
-       u32 value;
-
-       if (pm_runtime_status_suspended(hcd->self.controller))
-               return 0;
-
-       /* set usbcmd.EU3S */
-       value = readl(&xhci->op_regs->command);
-       value |= CMD_PM_INDEX;
-       writel(value, &xhci->op_regs->command);
-
-       if (hcd->regs) {
-               value = readl(hcd->regs + XECP_AUX_CTRL_REG1);
-               value |= CFG_RXDET_P3_EN;
-               writel(value, hcd->regs + XECP_AUX_CTRL_REG1);
-
-               value = readl(hcd->regs + XECP_PORT_CAP_REG);
-               value |= LPM_2_STB_SWITCH_EN;
-               writel(value, hcd->regs + XECP_PORT_CAP_REG);
-       }
-
-       return 0;
-}
-
 static void cdns_host_exit(struct cdns *cdns)
 {
        kfree(cdns->xhci_plat_data);