Hi Hans, On Sun, Sep 30, 2018 at 05:07:39PM +0200, Hans de Goede wrote: > Hi all, > > I've hit this problem myself this weekend on both a > Cubietruck and on a "LeMaker Banana Pro. > > For me the problem was intermittent on both devices, once > it happened it seems to require a power-cycle to fix. > > Once things work one can safely reboot without hitting > the issue. > > I'm attaching a patch which fixes this problem for me, > it is more of a workaround but it does not have much of > a downside. Using an OOB IRQ instead of the sdio-IRQ > mechanism is mostly important to allow the MMC controller > to go into runtime-suspend which is not really an issue > on these boards since they are (usually) not battery > powered. > > Regards, > > Hans >
> >From 34de386e5a1113360c967ba9f76901282e46a415 Mon Sep 17 00:00:00 2001 > From: Hans de Goede <hdego...@redhat.com> > Date: Sun, 30 Sep 2018 16:58:52 +0200 > Subject: [PATCH resend] ARM: dts: sun7i: Disable OOB IRQ for brcm wifi on > Cubietruck and Banana Pro > > While doing some brcmfmac driver work I needed to test this also on some > devicetree based boards. So I fired up the good old Cubietruck and when > that would not work a Banana Pro. > > With an unmodified 4.17 kernel both boards intermittently would come up > with non working wifi with the following errors: > > brcmfmac: brcmf_sdio_bus_rxctl: resumed on timeout > brcmfmac: brcmf_bus_started: failed: -110 > brcmfmac: brcmf_attach: dongle is not responding: err=-110 > brcmfmac: brcmf_sdio_firmware_callback: brcmf_attach failed > > They would come up this way more often then with actual working wifi, > once this problem happens it seems to require a power-cycle to fix. > Once things work one can safely reboot without hitting the issue. > > I've found that disabling OOB interrupts fixes this. This really is more > of a workaround then a proper fix, but it makes the wifi reliable again > and it does not have much of a downside. > > Using an OOB IRQ instead of the sdio-IRQ mechanism is mostly important to > allow the MMC controller to go into runtime-suspend which is not really an > issue on these boards since they are (usually) not battery powered. > > I've looked at recent brcmfmac and mmc-core changes which may explain this > and I've not found anything. So the most likely culprit is the A20 external > interrupt handling e.g. perhaps it is set to edge instead of level? Either > way I do not have time to further investigate this. > > BugLink: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=908438 > Signed-off-by: Hans de Goede <hdego...@redhat.com> > --- > arch/arm/boot/dts/sun7i-a20-bananapro.dts | 16 +++++++++++++--- > arch/arm/boot/dts/sun7i-a20-cubietruck.dts | 16 +++++++++++++--- > 2 files changed, 26 insertions(+), 6 deletions(-) > > diff --git a/arch/arm/boot/dts/sun7i-a20-bananapro.dts > b/arch/arm/boot/dts/sun7i-a20-bananapro.dts > index 0898eb6162f5..0e1ddd998b20 100644 > --- a/arch/arm/boot/dts/sun7i-a20-bananapro.dts > +++ b/arch/arm/boot/dts/sun7i-a20-bananapro.dts > @@ -174,9 +174,19 @@ > brcmf: wifi@1 { > reg = <1>; > compatible = "brcm,bcm4329-fmac"; > - interrupt-parent = <&pio>; > - interrupts = <7 15 IRQ_TYPE_LEVEL_LOW>; > - interrupt-names = "host-wake"; > + /* > + * OOB interrupt support is broken ATM, often the first irq > + * does not get seen resulting in the drv probe failing with: > + * > + * brcmfmac: brcmf_sdio_bus_rxctl: resumed on timeout > + * brcmfmac: brcmf_bus_started: failed: -110 > + * brcmfmac: brcmf_attach: dongle is not responding: err=-110 > + * brcmfmac: brcmf_sdio_firmware_callback: brcmf_attach failed > + * > + * interrupt-parent = <&pio>; > + * interrupts = <7 15 IRQ_TYPE_LEVEL_LOW>; > + * interrupt-names = "host-wake"; > + */ > }; > }; > > diff --git a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts > b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts > index 5649161de1d7..a837516db6f9 100644 > --- a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts > +++ b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts > @@ -222,9 +222,19 @@ > brcmf: wifi@1 { > reg = <1>; > compatible = "brcm,bcm4329-fmac"; > - interrupt-parent = <&pio>; > - interrupts = <7 10 IRQ_TYPE_LEVEL_LOW>; /* PH10 / EINT10 */ > - interrupt-names = "host-wake"; > + /* > + * OOB interrupt support is broken ATM, often the first irq > + * does not get seen resulting in the drv probe failing with: > + * > + * brcmfmac: brcmf_sdio_bus_rxctl: resumed on timeout > + * brcmfmac: brcmf_bus_started: failed: -110 > + * brcmfmac: brcmf_attach: dongle is not responding: err=-110 > + * brcmfmac: brcmf_sdio_firmware_callback: brcmf_attach failed > + * > + * interrupt-parent = <&pio>; > + * interrupts = <7 10 IRQ_TYPE_LEVEL_LOW>; /* PH10 / EINT10 */ > + * interrupt-names = "host-wake"; > + */ > }; > }; Can you report this to upstream directly? (Please keep the Debian bug into the loop). Regards, Salvatore