[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1619586716-8687-5-git-send-email-sanm@codeaurora.org>
Date: Wed, 28 Apr 2021 10:41:55 +0530
From: Sandeep Maheswaram <sanm@...eaurora.org>
To: Andy Gross <agross@...nel.org>,
Bjorn Andersson <bjorn.andersson@...aro.org>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Felipe Balbi <balbi@...nel.org>,
Stephen Boyd <swboyd@...omium.org>,
Doug Anderson <dianders@...omium.org>,
Matthias Kaehlcke <mka@...omium.org>
Cc: linux-arm-msm@...r.kernel.org, linux-usb@...r.kernel.org,
linux-kernel@...r.kernel.org, Manu Gautam <mgautam@...eaurora.org>,
Sandeep Maheswaram <sanm@...eaurora.org>
Subject: [PATCH v7 4/5] usb: dwc3: qcom: Configure wakeup interrupts during suspend
Configure interrupts based on hs_phy_mode to avoid triggering of
interrupts during system suspend and suspend the device successfully.
Signed-off-by: Sandeep Maheswaram <sanm@...eaurora.org>
Reviewed-by: Matthias Kaehlcke <mka@...omium.org>
---
drivers/usb/dwc3/dwc3-qcom.c | 26 ++++++++++++++++++++------
1 file changed, 20 insertions(+), 6 deletions(-)
diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c
index 66183c6..82125bc 100644
--- a/drivers/usb/dwc3/dwc3-qcom.c
+++ b/drivers/usb/dwc3/dwc3-qcom.c
@@ -316,22 +316,36 @@ static void dwc3_qcom_disable_wakeup_irq(int irq)
static void dwc3_qcom_disable_interrupts(struct dwc3_qcom *qcom)
{
- dwc3_qcom_disable_wakeup_irq(qcom->hs_phy_irq);
+ struct dwc3 *dwc = platform_get_drvdata(qcom->dwc3);
- dwc3_qcom_disable_wakeup_irq(qcom->dp_hs_phy_irq);
+ dwc3_qcom_disable_wakeup_irq(qcom->hs_phy_irq);
- dwc3_qcom_disable_wakeup_irq(qcom->dm_hs_phy_irq);
+ if (dwc->hs_phy_mode & PHY_MODE_USB_HOST_LS) {
+ dwc3_qcom_disable_wakeup_irq(qcom->dp_hs_phy_irq);
+ } else if (dwc->hs_phy_mode & PHY_MODE_USB_HOST_HS) {
+ dwc3_qcom_disable_wakeup_irq(qcom->dm_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);
+ struct dwc3 *dwc = platform_get_drvdata(qcom->dwc3);
- dwc3_qcom_enable_wakeup_irq(qcom->dp_hs_phy_irq);
+ dwc3_qcom_enable_wakeup_irq(qcom->hs_phy_irq);
- dwc3_qcom_enable_wakeup_irq(qcom->dm_hs_phy_irq);
+ if (dwc->hs_phy_mode & PHY_MODE_USB_HOST_LS) {
+ dwc3_qcom_enable_wakeup_irq(qcom->dp_hs_phy_irq);
+ } else if (dwc->hs_phy_mode & PHY_MODE_USB_HOST_HS) {
+ dwc3_qcom_enable_wakeup_irq(qcom->dm_hs_phy_irq);
+ } else {
+ dwc3_qcom_enable_wakeup_irq(qcom->dp_hs_phy_irq);
+ dwc3_qcom_enable_wakeup_irq(qcom->dm_hs_phy_irq);
+ }
dwc3_qcom_enable_wakeup_irq(qcom->ss_phy_irq);
}
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member
of Code Aurora Forum, hosted by The Linux Foundation
Powered by blists - more mailing lists