]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Drop usb-dwc3-qcom-configure-wakeup-interrupts-during-sus.patch
authorSasha Levin <sashal@kernel.org>
Mon, 5 Sep 2022 15:07:42 +0000 (11:07 -0400)
committerSasha Levin <sashal@kernel.org>
Mon, 5 Sep 2022 16:58:56 +0000 (12:58 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-5.10/series
queue-5.10/usb-dwc3-qcom-configure-wakeup-interrupts-during-sus.patch [deleted file]
queue-5.15/series
queue-5.15/usb-dwc3-qcom-configure-wakeup-interrupts-during-sus.patch [deleted file]
queue-5.19/series
queue-5.19/usb-dwc3-qcom-configure-wakeup-interrupts-during-sus.patch [deleted file]

index 82f9d134a506b37fc9840af688c8e00880e8b365..66d3d44321dae86e57831d936968979703dbe84b 100644 (file)
@@ -5,7 +5,6 @@ drm-msm-dsi-fix-number-of-regulators-for-sdm660.patch
 platform-x86-pmc_atom-fix-slp_typx-bitfield-mask.patch
 iio-adc-mcp3911-make-use-of-the-sign-bit.patch
 usb-dwc3-qcom-add-helper-functions-to-enable-disable.patch
-usb-dwc3-qcom-configure-wakeup-interrupts-during-sus.patch
 usb-dwc3-qcom-fix-runtime-pm-wakeup.patch
 usb-dwc3-qcom-fix-use-after-free-on-runtime-pm-wakeu.patch
 usb-dwc3-qcom-fix-peripheral-and-otg-suspend.patch
diff --git a/queue-5.10/usb-dwc3-qcom-configure-wakeup-interrupts-during-sus.patch b/queue-5.10/usb-dwc3-qcom-configure-wakeup-interrupts-during-sus.patch
deleted file mode 100644 (file)
index 6f35f7c..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-From e041255870d231569973af30854589feb52ca733 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 13 Jun 2022 10:00:53 +0530
-Subject: usb: dwc3: qcom: Configure wakeup interrupts during suspend
-
-From: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
-
-[ Upstream commit 6895ea55c385c9afdd2aec1eef27ec24917a112f ]
-
-Configure DP/DM line interrupts based on the USB2 device attached to
-the root hub port. When HS/FS device is connected, configure the DP line
-as falling edge to detect both disconnect and remote wakeup scenarios. When
-LS device is connected, configure DM line as falling edge to detect both
-disconnect and remote wakeup. When no device is connected, configure both
-DP and DM lines as rising edge to detect HS/HS/LS device connect scenario.
-
-Reviewed-by: Pavankumar Kondeti <quic_pkondeti@quicinc.com>
-Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
-Signed-off-by: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
-Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com>
-Link: https://lore.kernel.org/r/1655094654-24052-5-git-send-email-quic_kriskura@quicinc.com
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/usb/dwc3/dwc3-qcom.c | 72 +++++++++++++++++++++++++++++++-----
- 1 file changed, 62 insertions(+), 10 deletions(-)
-
-diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c
-index 1ae854d1d1d83..53722a54207a6 100644
---- a/drivers/usb/dwc3/dwc3-qcom.c
-+++ b/drivers/usb/dwc3/dwc3-qcom.c
-@@ -20,7 +20,8 @@
- #include <linux/usb/of.h>
- #include <linux/reset.h>
- #include <linux/iopoll.h>
--
-+#include <linux/usb/hcd.h>
-+#include <linux/usb.h>
- #include "core.h"
- /* USB QSCRATCH Hardware registers */
-@@ -76,6 +77,7 @@ struct dwc3_qcom {
-       int                     dp_hs_phy_irq;
-       int                     dm_hs_phy_irq;
-       int                     ss_phy_irq;
-+      enum usb_device_speed   usb2_speed;
-       struct extcon_dev       *edev;
-       struct extcon_dev       *host_edev;
-@@ -296,11 +298,34 @@ static void dwc3_qcom_interconnect_exit(struct dwc3_qcom *qcom)
-       icc_put(qcom->icc_path_apps);
- }
--static void dwc3_qcom_enable_wakeup_irq(int irq)
-+static enum usb_device_speed dwc3_qcom_read_usb2_speed(struct dwc3_qcom *qcom)
-+{
-+      struct dwc3 *dwc = platform_get_drvdata(qcom->dwc3);
-+      struct usb_hcd *hcd = platform_get_drvdata(dwc->xhci);
-+      struct usb_device *udev;
-+
-+      /*
-+       * It is possible to query the speed of all children of
-+       * USB2.0 root hub via usb_hub_for_each_child(). DWC3 code
-+       * currently supports only 1 port per controller. So
-+       * this is sufficient.
-+       */
-+      udev = usb_hub_find_child(hcd->self.root_hub, 1);
-+
-+      if (!udev)
-+              return USB_SPEED_UNKNOWN;
-+
-+      return udev->speed;
-+}
-+
-+static void dwc3_qcom_enable_wakeup_irq(int irq, unsigned int polarity)
- {
-       if (!irq)
-               return;
-+      if (polarity)
-+              irq_set_irq_type(irq, polarity);
-+
-       enable_irq(irq);
-       enable_irq_wake(irq);
- }
-@@ -318,22 +343,47 @@ static void dwc3_qcom_disable_interrupts(struct dwc3_qcom *qcom)
- {
-       dwc3_qcom_disable_wakeup_irq(qcom->hs_phy_irq);
--      dwc3_qcom_disable_wakeup_irq(qcom->dp_hs_phy_irq);
--
--      dwc3_qcom_disable_wakeup_irq(qcom->dm_hs_phy_irq);
-+      if (qcom->usb2_speed == USB_SPEED_LOW) {
-+              dwc3_qcom_disable_wakeup_irq(qcom->dm_hs_phy_irq);
-+      } else if ((qcom->usb2_speed == USB_SPEED_HIGH) ||
-+                      (qcom->usb2_speed == USB_SPEED_FULL)) {
-+              dwc3_qcom_disable_wakeup_irq(qcom->dp_hs_phy_irq);
-+      } else {
-+              dwc3_qcom_disable_wakeup_irq(qcom->dp_hs_phy_irq);
-+              dwc3_qcom_disable_wakeup_irq(qcom->dm_hs_phy_irq);
-+      }
-       dwc3_qcom_disable_wakeup_irq(qcom->ss_phy_irq);
- }
- static void dwc3_qcom_enable_interrupts(struct dwc3_qcom *qcom)
- {
--      dwc3_qcom_enable_wakeup_irq(qcom->hs_phy_irq);
-+      dwc3_qcom_enable_wakeup_irq(qcom->hs_phy_irq, 0);
--      dwc3_qcom_enable_wakeup_irq(qcom->dp_hs_phy_irq);
-+      /*
-+       * Configure DP/DM line interrupts based on the USB2 device attached to
-+       * the root hub port. When HS/FS device is connected, configure the DP line
-+       * as falling edge to detect both disconnect and remote wakeup scenarios. When
-+       * LS device is connected, configure DM line as falling edge to detect both
-+       * disconnect and remote wakeup. When no device is connected, configure both
-+       * DP and DM lines as rising edge to detect HS/HS/LS device connect scenario.
-+       */
--      dwc3_qcom_enable_wakeup_irq(qcom->dm_hs_phy_irq);
-+      if (qcom->usb2_speed == USB_SPEED_LOW) {
-+              dwc3_qcom_enable_wakeup_irq(qcom->dm_hs_phy_irq,
-+                                              IRQ_TYPE_EDGE_FALLING);
-+      } else if ((qcom->usb2_speed == USB_SPEED_HIGH) ||
-+                      (qcom->usb2_speed == USB_SPEED_FULL)) {
-+              dwc3_qcom_enable_wakeup_irq(qcom->dp_hs_phy_irq,
-+                                              IRQ_TYPE_EDGE_FALLING);
-+      } else {
-+              dwc3_qcom_enable_wakeup_irq(qcom->dp_hs_phy_irq,
-+                                              IRQ_TYPE_EDGE_RISING);
-+              dwc3_qcom_enable_wakeup_irq(qcom->dm_hs_phy_irq,
-+                                              IRQ_TYPE_EDGE_RISING);
-+      }
--      dwc3_qcom_enable_wakeup_irq(qcom->ss_phy_irq);
-+      dwc3_qcom_enable_wakeup_irq(qcom->ss_phy_irq, 0);
- }
- static int dwc3_qcom_suspend(struct dwc3_qcom *qcom)
-@@ -355,8 +405,10 @@ static int dwc3_qcom_suspend(struct dwc3_qcom *qcom)
-       if (ret)
-               dev_warn(qcom->dev, "failed to disable interconnect: %d\n", ret);
--      if (device_may_wakeup(qcom->dev))
-+      if (device_may_wakeup(qcom->dev)) {
-+              qcom->usb2_speed = dwc3_qcom_read_usb2_speed(qcom);
-               dwc3_qcom_enable_interrupts(qcom);
-+      }
-       qcom->is_suspended = true;
--- 
-2.35.1
-
index 7ba4d9aedbf20e9c37a87dddbe3e19c7a25b5639..25f17582f7020dfdba277939603ae7d526bef09b 100644 (file)
@@ -7,7 +7,6 @@ iio-adc-mcp3911-make-use-of-the-sign-bit.patch
 skmsg-fix-wrong-last-sg-check-in-sk_msg_recvmsg.patch
 bpf-restrict-bpf_sys_bpf-to-cap_perfmon.patch
 usb-dwc3-qcom-add-helper-functions-to-enable-disable.patch
-usb-dwc3-qcom-configure-wakeup-interrupts-during-sus.patch
 usb-dwc3-qcom-fix-runtime-pm-wakeup.patch
 usb-dwc3-qcom-fix-use-after-free-on-runtime-pm-wakeu.patch
 usb-dwc3-qcom-fix-peripheral-and-otg-suspend.patch
diff --git a/queue-5.15/usb-dwc3-qcom-configure-wakeup-interrupts-during-sus.patch b/queue-5.15/usb-dwc3-qcom-configure-wakeup-interrupts-during-sus.patch
deleted file mode 100644 (file)
index bc78abb..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-From 4aff51bbc66b1e5bc2c398f3ab7f6e53d334ca6e Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 13 Jun 2022 10:00:53 +0530
-Subject: usb: dwc3: qcom: Configure wakeup interrupts during suspend
-
-From: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
-
-[ Upstream commit 6895ea55c385c9afdd2aec1eef27ec24917a112f ]
-
-Configure DP/DM line interrupts based on the USB2 device attached to
-the root hub port. When HS/FS device is connected, configure the DP line
-as falling edge to detect both disconnect and remote wakeup scenarios. When
-LS device is connected, configure DM line as falling edge to detect both
-disconnect and remote wakeup. When no device is connected, configure both
-DP and DM lines as rising edge to detect HS/HS/LS device connect scenario.
-
-Reviewed-by: Pavankumar Kondeti <quic_pkondeti@quicinc.com>
-Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
-Signed-off-by: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
-Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com>
-Link: https://lore.kernel.org/r/1655094654-24052-5-git-send-email-quic_kriskura@quicinc.com
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/usb/dwc3/dwc3-qcom.c | 72 +++++++++++++++++++++++++++++++-----
- 1 file changed, 62 insertions(+), 10 deletions(-)
-
-diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c
-index 74895cf57dd54..a48b0a6a3f6a4 100644
---- a/drivers/usb/dwc3/dwc3-qcom.c
-+++ b/drivers/usb/dwc3/dwc3-qcom.c
-@@ -20,7 +20,8 @@
- #include <linux/usb/of.h>
- #include <linux/reset.h>
- #include <linux/iopoll.h>
--
-+#include <linux/usb/hcd.h>
-+#include <linux/usb.h>
- #include "core.h"
- /* USB QSCRATCH Hardware registers */
-@@ -76,6 +77,7 @@ struct dwc3_qcom {
-       int                     dp_hs_phy_irq;
-       int                     dm_hs_phy_irq;
-       int                     ss_phy_irq;
-+      enum usb_device_speed   usb2_speed;
-       struct extcon_dev       *edev;
-       struct extcon_dev       *host_edev;
-@@ -296,11 +298,34 @@ static void dwc3_qcom_interconnect_exit(struct dwc3_qcom *qcom)
-       icc_put(qcom->icc_path_apps);
- }
--static void dwc3_qcom_enable_wakeup_irq(int irq)
-+static enum usb_device_speed dwc3_qcom_read_usb2_speed(struct dwc3_qcom *qcom)
-+{
-+      struct dwc3 *dwc = platform_get_drvdata(qcom->dwc3);
-+      struct usb_hcd *hcd = platform_get_drvdata(dwc->xhci);
-+      struct usb_device *udev;
-+
-+      /*
-+       * It is possible to query the speed of all children of
-+       * USB2.0 root hub via usb_hub_for_each_child(). DWC3 code
-+       * currently supports only 1 port per controller. So
-+       * this is sufficient.
-+       */
-+      udev = usb_hub_find_child(hcd->self.root_hub, 1);
-+
-+      if (!udev)
-+              return USB_SPEED_UNKNOWN;
-+
-+      return udev->speed;
-+}
-+
-+static void dwc3_qcom_enable_wakeup_irq(int irq, unsigned int polarity)
- {
-       if (!irq)
-               return;
-+      if (polarity)
-+              irq_set_irq_type(irq, polarity);
-+
-       enable_irq(irq);
-       enable_irq_wake(irq);
- }
-@@ -318,22 +343,47 @@ static void dwc3_qcom_disable_interrupts(struct dwc3_qcom *qcom)
- {
-       dwc3_qcom_disable_wakeup_irq(qcom->hs_phy_irq);
--      dwc3_qcom_disable_wakeup_irq(qcom->dp_hs_phy_irq);
--
--      dwc3_qcom_disable_wakeup_irq(qcom->dm_hs_phy_irq);
-+      if (qcom->usb2_speed == USB_SPEED_LOW) {
-+              dwc3_qcom_disable_wakeup_irq(qcom->dm_hs_phy_irq);
-+      } else if ((qcom->usb2_speed == USB_SPEED_HIGH) ||
-+                      (qcom->usb2_speed == USB_SPEED_FULL)) {
-+              dwc3_qcom_disable_wakeup_irq(qcom->dp_hs_phy_irq);
-+      } else {
-+              dwc3_qcom_disable_wakeup_irq(qcom->dp_hs_phy_irq);
-+              dwc3_qcom_disable_wakeup_irq(qcom->dm_hs_phy_irq);
-+      }
-       dwc3_qcom_disable_wakeup_irq(qcom->ss_phy_irq);
- }
- static void dwc3_qcom_enable_interrupts(struct dwc3_qcom *qcom)
- {
--      dwc3_qcom_enable_wakeup_irq(qcom->hs_phy_irq);
-+      dwc3_qcom_enable_wakeup_irq(qcom->hs_phy_irq, 0);
--      dwc3_qcom_enable_wakeup_irq(qcom->dp_hs_phy_irq);
-+      /*
-+       * Configure DP/DM line interrupts based on the USB2 device attached to
-+       * the root hub port. When HS/FS device is connected, configure the DP line
-+       * as falling edge to detect both disconnect and remote wakeup scenarios. When
-+       * LS device is connected, configure DM line as falling edge to detect both
-+       * disconnect and remote wakeup. When no device is connected, configure both
-+       * DP and DM lines as rising edge to detect HS/HS/LS device connect scenario.
-+       */
--      dwc3_qcom_enable_wakeup_irq(qcom->dm_hs_phy_irq);
-+      if (qcom->usb2_speed == USB_SPEED_LOW) {
-+              dwc3_qcom_enable_wakeup_irq(qcom->dm_hs_phy_irq,
-+                                              IRQ_TYPE_EDGE_FALLING);
-+      } else if ((qcom->usb2_speed == USB_SPEED_HIGH) ||
-+                      (qcom->usb2_speed == USB_SPEED_FULL)) {
-+              dwc3_qcom_enable_wakeup_irq(qcom->dp_hs_phy_irq,
-+                                              IRQ_TYPE_EDGE_FALLING);
-+      } else {
-+              dwc3_qcom_enable_wakeup_irq(qcom->dp_hs_phy_irq,
-+                                              IRQ_TYPE_EDGE_RISING);
-+              dwc3_qcom_enable_wakeup_irq(qcom->dm_hs_phy_irq,
-+                                              IRQ_TYPE_EDGE_RISING);
-+      }
--      dwc3_qcom_enable_wakeup_irq(qcom->ss_phy_irq);
-+      dwc3_qcom_enable_wakeup_irq(qcom->ss_phy_irq, 0);
- }
- static int dwc3_qcom_suspend(struct dwc3_qcom *qcom)
-@@ -355,8 +405,10 @@ static int dwc3_qcom_suspend(struct dwc3_qcom *qcom)
-       if (ret)
-               dev_warn(qcom->dev, "failed to disable interconnect: %d\n", ret);
--      if (device_may_wakeup(qcom->dev))
-+      if (device_may_wakeup(qcom->dev)) {
-+              qcom->usb2_speed = dwc3_qcom_read_usb2_speed(qcom);
-               dwc3_qcom_enable_interrupts(qcom);
-+      }
-       qcom->is_suspended = true;
--- 
-2.35.1
-
index 7f8e520688b3cdca200342d77a560c41c1bfaed9..47fae4ca66c25537391db49a8a8a935315bd58c2 100644 (file)
@@ -13,7 +13,6 @@ iio-adc-mcp3911-make-use-of-the-sign-bit.patch
 skmsg-fix-wrong-last-sg-check-in-sk_msg_recvmsg.patch
 bpf-restrict-bpf_sys_bpf-to-cap_perfmon.patch
 usb-dwc3-qcom-add-helper-functions-to-enable-disable.patch
-usb-dwc3-qcom-configure-wakeup-interrupts-during-sus.patch
 usb-dwc3-qcom-fix-runtime-pm-wakeup.patch
 usb-dwc3-qcom-fix-use-after-free-on-runtime-pm-wakeu.patch
 usb-dwc3-qcom-fix-peripheral-and-otg-suspend.patch
diff --git a/queue-5.19/usb-dwc3-qcom-configure-wakeup-interrupts-during-sus.patch b/queue-5.19/usb-dwc3-qcom-configure-wakeup-interrupts-during-sus.patch
deleted file mode 100644 (file)
index 5a9e3a6..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-From 49a0d326a917eb97f00db955cc50118bac59be96 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Mon, 13 Jun 2022 10:00:53 +0530
-Subject: usb: dwc3: qcom: Configure wakeup interrupts during suspend
-
-From: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
-
-[ Upstream commit 6895ea55c385c9afdd2aec1eef27ec24917a112f ]
-
-Configure DP/DM line interrupts based on the USB2 device attached to
-the root hub port. When HS/FS device is connected, configure the DP line
-as falling edge to detect both disconnect and remote wakeup scenarios. When
-LS device is connected, configure DM line as falling edge to detect both
-disconnect and remote wakeup. When no device is connected, configure both
-DP and DM lines as rising edge to detect HS/HS/LS device connect scenario.
-
-Reviewed-by: Pavankumar Kondeti <quic_pkondeti@quicinc.com>
-Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
-Signed-off-by: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
-Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com>
-Link: https://lore.kernel.org/r/1655094654-24052-5-git-send-email-quic_kriskura@quicinc.com
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/usb/dwc3/dwc3-qcom.c | 72 +++++++++++++++++++++++++++++++-----
- 1 file changed, 62 insertions(+), 10 deletions(-)
-
-diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c
-index 27ff18aeea266..be2e3dd364408 100644
---- a/drivers/usb/dwc3/dwc3-qcom.c
-+++ b/drivers/usb/dwc3/dwc3-qcom.c
-@@ -20,7 +20,8 @@
- #include <linux/usb/of.h>
- #include <linux/reset.h>
- #include <linux/iopoll.h>
--
-+#include <linux/usb/hcd.h>
-+#include <linux/usb.h>
- #include "core.h"
- /* USB QSCRATCH Hardware registers */
-@@ -76,6 +77,7 @@ struct dwc3_qcom {
-       int                     dp_hs_phy_irq;
-       int                     dm_hs_phy_irq;
-       int                     ss_phy_irq;
-+      enum usb_device_speed   usb2_speed;
-       struct extcon_dev       *edev;
-       struct extcon_dev       *host_edev;
-@@ -296,11 +298,34 @@ static void dwc3_qcom_interconnect_exit(struct dwc3_qcom *qcom)
-       icc_put(qcom->icc_path_apps);
- }
--static void dwc3_qcom_enable_wakeup_irq(int irq)
-+static enum usb_device_speed dwc3_qcom_read_usb2_speed(struct dwc3_qcom *qcom)
-+{
-+      struct dwc3 *dwc = platform_get_drvdata(qcom->dwc3);
-+      struct usb_hcd *hcd = platform_get_drvdata(dwc->xhci);
-+      struct usb_device *udev;
-+
-+      /*
-+       * It is possible to query the speed of all children of
-+       * USB2.0 root hub via usb_hub_for_each_child(). DWC3 code
-+       * currently supports only 1 port per controller. So
-+       * this is sufficient.
-+       */
-+      udev = usb_hub_find_child(hcd->self.root_hub, 1);
-+
-+      if (!udev)
-+              return USB_SPEED_UNKNOWN;
-+
-+      return udev->speed;
-+}
-+
-+static void dwc3_qcom_enable_wakeup_irq(int irq, unsigned int polarity)
- {
-       if (!irq)
-               return;
-+      if (polarity)
-+              irq_set_irq_type(irq, polarity);
-+
-       enable_irq(irq);
-       enable_irq_wake(irq);
- }
-@@ -318,22 +343,47 @@ static void dwc3_qcom_disable_interrupts(struct dwc3_qcom *qcom)
- {
-       dwc3_qcom_disable_wakeup_irq(qcom->hs_phy_irq);
--      dwc3_qcom_disable_wakeup_irq(qcom->dp_hs_phy_irq);
--
--      dwc3_qcom_disable_wakeup_irq(qcom->dm_hs_phy_irq);
-+      if (qcom->usb2_speed == USB_SPEED_LOW) {
-+              dwc3_qcom_disable_wakeup_irq(qcom->dm_hs_phy_irq);
-+      } else if ((qcom->usb2_speed == USB_SPEED_HIGH) ||
-+                      (qcom->usb2_speed == USB_SPEED_FULL)) {
-+              dwc3_qcom_disable_wakeup_irq(qcom->dp_hs_phy_irq);
-+      } else {
-+              dwc3_qcom_disable_wakeup_irq(qcom->dp_hs_phy_irq);
-+              dwc3_qcom_disable_wakeup_irq(qcom->dm_hs_phy_irq);
-+      }
-       dwc3_qcom_disable_wakeup_irq(qcom->ss_phy_irq);
- }
- static void dwc3_qcom_enable_interrupts(struct dwc3_qcom *qcom)
- {
--      dwc3_qcom_enable_wakeup_irq(qcom->hs_phy_irq);
-+      dwc3_qcom_enable_wakeup_irq(qcom->hs_phy_irq, 0);
--      dwc3_qcom_enable_wakeup_irq(qcom->dp_hs_phy_irq);
-+      /*
-+       * Configure DP/DM line interrupts based on the USB2 device attached to
-+       * the root hub port. When HS/FS device is connected, configure the DP line
-+       * as falling edge to detect both disconnect and remote wakeup scenarios. When
-+       * LS device is connected, configure DM line as falling edge to detect both
-+       * disconnect and remote wakeup. When no device is connected, configure both
-+       * DP and DM lines as rising edge to detect HS/HS/LS device connect scenario.
-+       */
--      dwc3_qcom_enable_wakeup_irq(qcom->dm_hs_phy_irq);
-+      if (qcom->usb2_speed == USB_SPEED_LOW) {
-+              dwc3_qcom_enable_wakeup_irq(qcom->dm_hs_phy_irq,
-+                                              IRQ_TYPE_EDGE_FALLING);
-+      } else if ((qcom->usb2_speed == USB_SPEED_HIGH) ||
-+                      (qcom->usb2_speed == USB_SPEED_FULL)) {
-+              dwc3_qcom_enable_wakeup_irq(qcom->dp_hs_phy_irq,
-+                                              IRQ_TYPE_EDGE_FALLING);
-+      } else {
-+              dwc3_qcom_enable_wakeup_irq(qcom->dp_hs_phy_irq,
-+                                              IRQ_TYPE_EDGE_RISING);
-+              dwc3_qcom_enable_wakeup_irq(qcom->dm_hs_phy_irq,
-+                                              IRQ_TYPE_EDGE_RISING);
-+      }
--      dwc3_qcom_enable_wakeup_irq(qcom->ss_phy_irq);
-+      dwc3_qcom_enable_wakeup_irq(qcom->ss_phy_irq, 0);
- }
- static int dwc3_qcom_suspend(struct dwc3_qcom *qcom)
-@@ -355,8 +405,10 @@ static int dwc3_qcom_suspend(struct dwc3_qcom *qcom)
-       if (ret)
-               dev_warn(qcom->dev, "failed to disable interconnect: %d\n", ret);
--      if (device_may_wakeup(qcom->dev))
-+      if (device_may_wakeup(qcom->dev)) {
-+              qcom->usb2_speed = dwc3_qcom_read_usb2_speed(qcom);
-               dwc3_qcom_enable_interrupts(qcom);
-+      }
-       qcom->is_suspended = true;
--- 
-2.35.1
-