dwc3_qcom_enable_wakeup_irq(qcom->ss_phy_irq, 0);
 }
 
-static int dwc3_qcom_suspend(struct dwc3_qcom *qcom)
+static int dwc3_qcom_suspend(struct dwc3_qcom *qcom, bool wakeup)
 {
        u32 val;
        int i, ret;
        if (ret)
                dev_warn(qcom->dev, "failed to disable interconnect: %d\n", ret);
 
-       if (device_may_wakeup(qcom->dev)) {
+       if (wakeup) {
                qcom->usb2_speed = dwc3_qcom_read_usb2_speed(qcom);
                dwc3_qcom_enable_interrupts(qcom);
        }
        return 0;
 }
 
-static int dwc3_qcom_resume(struct dwc3_qcom *qcom)
+static int dwc3_qcom_resume(struct dwc3_qcom *qcom, bool wakeup)
 {
        int ret;
        int i;
        if (!qcom->is_suspended)
                return 0;
 
-       if (device_may_wakeup(qcom->dev))
+       if (wakeup)
                dwc3_qcom_disable_interrupts(qcom);
 
        for (i = 0; i < qcom->num_clocks; i++) {
 static int __maybe_unused dwc3_qcom_pm_suspend(struct device *dev)
 {
        struct dwc3_qcom *qcom = dev_get_drvdata(dev);
+       bool wakeup = device_may_wakeup(dev);
        int ret = 0;
 
-       ret = dwc3_qcom_suspend(qcom);
+
+       ret = dwc3_qcom_suspend(qcom, wakeup);
        if (!ret)
                qcom->pm_suspended = true;
 
 static int __maybe_unused dwc3_qcom_pm_resume(struct device *dev)
 {
        struct dwc3_qcom *qcom = dev_get_drvdata(dev);
+       bool wakeup = device_may_wakeup(dev);
        int ret;
 
-       ret = dwc3_qcom_resume(qcom);
+       ret = dwc3_qcom_resume(qcom, wakeup);
        if (!ret)
                qcom->pm_suspended = false;
 
 {
        struct dwc3_qcom *qcom = dev_get_drvdata(dev);
 
-       return dwc3_qcom_suspend(qcom);
+       return dwc3_qcom_suspend(qcom, true);
 }
 
 static int __maybe_unused dwc3_qcom_runtime_resume(struct device *dev)
 {
        struct dwc3_qcom *qcom = dev_get_drvdata(dev);
 
-       return dwc3_qcom_resume(qcom);
+       return dwc3_qcom_resume(qcom, true);
 }
 
 static const struct dev_pm_ops dwc3_qcom_dev_pm_ops = {