diff mbox series

[v6,4/5] usb: dwc3: qcom: Configure wakeup interrupts during suspend

Message ID 1618567313-25373-5-git-send-email-sanm@codeaurora.org
State Superseded
Headers show
Series USB DWC3 host wake up support from system suspend | expand

Commit Message

Sandeep Maheswaram April 16, 2021, 10:01 a.m. UTC
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@codeaurora.org>
---
 drivers/usb/dwc3/dwc3-qcom.c | 26 ++++++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

Comments

Matthias Kaehlcke April 19, 2021, 11:22 p.m. UTC | #1
On Fri, Apr 16, 2021 at 03:31:52PM +0530, Sandeep Maheswaram wrote:
> 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@codeaurora.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..b1e9061 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);

> +	}


nit: 'if' and 'else if' branches should also have curly braces since
'else' has them.

>  	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);

> +	}


ditto

>  	dwc3_qcom_enable_wakeup_irq(qcom->ss_phy_irq);

>  }


Other than the nits:

Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
diff mbox series

Patch

diff --git a/drivers/usb/dwc3/dwc3-qcom.c b/drivers/usb/dwc3/dwc3-qcom.c
index 66183c6..b1e9061 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);
 }