Re: [PATCH v10 6/6] usb: dwc3: qcom: Enable the interrupts during probe

From: Steev Klimaszewski
Date: Thu Feb 17 2022 - 17:16:54 EST


Hi Sandeep,

On 2/17/22 12:05 AM, Sandeep Maheswaram wrote:

Hi Steev,

On 2/16/2022 3:21 PM, Steev Klimaszewski wrote:
That does allow it to boot, however.... it breaks USB.

[    2.013325] genirq: Setting trigger mode 3 for irq 35 failed (gic_set_type+0x0/0x1b0)
[    2.014063] dwc3-qcom a6f8800.usb: dp_hs_phy_irq failed: -22
[    2.014134] dwc3-qcom a6f8800.usb: failed to setup IRQs, err=-22
[    2.014351] dwc3-qcom: probe of a6f8800.usb failed with error -22
[    2.018496] genirq: Setting trigger mode 3 for irq 39 failed (gic_set_type+0x0/0x1b0)
[    2.019124] dwc3-qcom a8f8800.usb: dp_hs_phy_irq failed: -22
[    2.019193] dwc3-qcom a8f8800.usb: failed to setup IRQs, err=-22
[    2.019372] dwc3-qcom: probe of a8f8800.usb failed with error -22

steev@limitless:~$ lsusb
steev@limitless:~$


-- steev

Can you try with only IRQ_TYPE_EDGE_RISING as you are using GIC interrupts  where IRQ_TYPE_EDGE_FALLING may not be supported

diff --git a/arch/arm64/boot/dts/qcom/sdm845.dtsi b/arch/arm64/boot/dts/qcom/sdm845.dtsi
index 0d6286d..ee3b031 100644
--- a/arch/arm64/boot/dts/qcom/sdm845.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845.dtsi
@@ -3796,8 +3796,8 @@

                        interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 488 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 489 IRQ_TYPE_LEVEL_HIGH>;
+                                    <GIC_SPI 488 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 489 IRQ_TYPE_EDGE_RISING>;
                        interrupt-names = "hs_phy_irq", "ss_phy_irq",
                                          "dm_hs_phy_irq", "dp_hs_phy_irq";

@@ -3844,8 +3844,8 @@

                        interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 487 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 490 IRQ_TYPE_LEVEL_HIGH>,
-                                    <GIC_SPI 491 IRQ_TYPE_LEVEL_HIGH>;
+                                    <GIC_SPI 490 IRQ_TYPE_EDGE_RISING>,
+                                    <GIC_SPI 491 IRQ_TYPE_EDGE_RISING>;
                        interrupt-names = "hs_phy_irq", "ss_phy_irq",
                                          "dm_hs_phy_irq", "dp_hs_phy_irq";
Regards

Sandeep

With this change, and with either EDGE_RISING or EDGE_BOTH in the lenovo yoga c630 dts, it does indeed boot.  Leaving LEVEL_HIGH in the c630, it does also boot, but there is a delay of about 30 seconds (I'm assuming interrupt storm?) during the boot.

-- steev