[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#908438: cubietruck wifi reversion



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 <hdegoede@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 <hdegoede@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


Reply to: