From: Sasha Levin Date: Mon, 5 Sep 2022 15:07:42 +0000 (-0400) Subject: Drop usb-dwc3-qcom-configure-wakeup-interrupts-during-sus.patch X-Git-Tag: v5.10.142~54 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=51122465779aed6e9931c12fedd4823718492ebc;p=thirdparty%2Fkernel%2Fstable-queue.git Drop usb-dwc3-qcom-configure-wakeup-interrupts-during-sus.patch Signed-off-by: Sasha Levin --- diff --git a/queue-5.10/series b/queue-5.10/series index 82f9d134a50..66d3d44321d 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -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 index 6f35f7c150a..00000000000 --- a/queue-5.10/usb-dwc3-qcom-configure-wakeup-interrupts-during-sus.patch +++ /dev/null @@ -1,155 +0,0 @@ -From e041255870d231569973af30854589feb52ca733 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 13 Jun 2022 10:00:53 +0530 -Subject: usb: dwc3: qcom: Configure wakeup interrupts during suspend - -From: Sandeep Maheswaram - -[ 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 -Reviewed-by: Matthias Kaehlcke -Signed-off-by: Sandeep Maheswaram -Signed-off-by: Krishna Kurapati -Link: https://lore.kernel.org/r/1655094654-24052-5-git-send-email-quic_kriskura@quicinc.com -Signed-off-by: Greg Kroah-Hartman -Signed-off-by: Sasha Levin ---- - 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 - #include - #include -- -+#include -+#include - #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 - diff --git a/queue-5.15/series b/queue-5.15/series index 7ba4d9aedbf..25f17582f70 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -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 index bc78abbc2a3..00000000000 --- a/queue-5.15/usb-dwc3-qcom-configure-wakeup-interrupts-during-sus.patch +++ /dev/null @@ -1,155 +0,0 @@ -From 4aff51bbc66b1e5bc2c398f3ab7f6e53d334ca6e Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 13 Jun 2022 10:00:53 +0530 -Subject: usb: dwc3: qcom: Configure wakeup interrupts during suspend - -From: Sandeep Maheswaram - -[ 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 -Reviewed-by: Matthias Kaehlcke -Signed-off-by: Sandeep Maheswaram -Signed-off-by: Krishna Kurapati -Link: https://lore.kernel.org/r/1655094654-24052-5-git-send-email-quic_kriskura@quicinc.com -Signed-off-by: Greg Kroah-Hartman -Signed-off-by: Sasha Levin ---- - 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 - #include - #include -- -+#include -+#include - #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 - diff --git a/queue-5.19/series b/queue-5.19/series index 7f8e520688b..47fae4ca66c 100644 --- a/queue-5.19/series +++ b/queue-5.19/series @@ -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 index 5a9e3a6d617..00000000000 --- a/queue-5.19/usb-dwc3-qcom-configure-wakeup-interrupts-during-sus.patch +++ /dev/null @@ -1,155 +0,0 @@ -From 49a0d326a917eb97f00db955cc50118bac59be96 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 13 Jun 2022 10:00:53 +0530 -Subject: usb: dwc3: qcom: Configure wakeup interrupts during suspend - -From: Sandeep Maheswaram - -[ 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 -Reviewed-by: Matthias Kaehlcke -Signed-off-by: Sandeep Maheswaram -Signed-off-by: Krishna Kurapati -Link: https://lore.kernel.org/r/1655094654-24052-5-git-send-email-quic_kriskura@quicinc.com -Signed-off-by: Greg Kroah-Hartman -Signed-off-by: Sasha Levin ---- - 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 - #include - #include -- -+#include -+#include - #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 -