Skip to content

Commit 41f5a09

Browse files
jhovoldgregkh
authored andcommitted
USB: dwc3: qcom: fix wakeup after probe deferral
The Qualcomm glue driver is overriding the interrupt trigger types defined by firmware when requesting the wakeup interrupts during probe. This can lead to a failure to map the DP/DM wakeup interrupts after a probe deferral as the firmware defined trigger types do not match the type used for the initial mapping: irq: type mismatch, failed to map hwirq-14 for interrupt-controller@b220000! irq: type mismatch, failed to map hwirq-15 for interrupt-controller@b220000! Fix this by not overriding the firmware provided trigger types when requesting the wakeup interrupts. Fixes: a4333c3 ("usb: dwc3: Add Qualcomm DWC3 glue driver") Cc: [email protected] # 4.18 Signed-off-by: Johan Hovold <[email protected]> Reviewed-by: Andrew Halaney <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 0c2671f commit 41f5a09

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

drivers/usb/dwc3/dwc3-qcom.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -549,7 +549,7 @@ static int dwc3_qcom_setup_irq(struct platform_device *pdev)
549549
irq_set_status_flags(irq, IRQ_NOAUTOEN);
550550
ret = devm_request_threaded_irq(qcom->dev, irq, NULL,
551551
qcom_dwc3_resume_irq,
552-
IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
552+
IRQF_ONESHOT,
553553
"qcom_dwc3 HS", qcom);
554554
if (ret) {
555555
dev_err(qcom->dev, "hs_phy_irq failed: %d\n", ret);
@@ -564,7 +564,7 @@ static int dwc3_qcom_setup_irq(struct platform_device *pdev)
564564
irq_set_status_flags(irq, IRQ_NOAUTOEN);
565565
ret = devm_request_threaded_irq(qcom->dev, irq, NULL,
566566
qcom_dwc3_resume_irq,
567-
IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
567+
IRQF_ONESHOT,
568568
"qcom_dwc3 DP_HS", qcom);
569569
if (ret) {
570570
dev_err(qcom->dev, "dp_hs_phy_irq failed: %d\n", ret);
@@ -579,7 +579,7 @@ static int dwc3_qcom_setup_irq(struct platform_device *pdev)
579579
irq_set_status_flags(irq, IRQ_NOAUTOEN);
580580
ret = devm_request_threaded_irq(qcom->dev, irq, NULL,
581581
qcom_dwc3_resume_irq,
582-
IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
582+
IRQF_ONESHOT,
583583
"qcom_dwc3 DM_HS", qcom);
584584
if (ret) {
585585
dev_err(qcom->dev, "dm_hs_phy_irq failed: %d\n", ret);
@@ -594,7 +594,7 @@ static int dwc3_qcom_setup_irq(struct platform_device *pdev)
594594
irq_set_status_flags(irq, IRQ_NOAUTOEN);
595595
ret = devm_request_threaded_irq(qcom->dev, irq, NULL,
596596
qcom_dwc3_resume_irq,
597-
IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
597+
IRQF_ONESHOT,
598598
"qcom_dwc3 SS", qcom);
599599
if (ret) {
600600
dev_err(qcom->dev, "ss_phy_irq failed: %d\n", ret);

0 commit comments

Comments
 (0)