mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-10 15:03:07 +00:00
0a59e2a76e
The removed patches were applied upstream. The changes to 357-mac80211-optimize-skb-resizing.patch are more complex. I think the patch already took care of the new changes done upstream. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
58 lines
2.4 KiB
Diff
58 lines
2.4 KiB
Diff
From 8c8e60fb86a90a30721bbd797f58f96b3980dcc1 Mon Sep 17 00:00:00 2001
|
|
From: Jean-Philippe Brucker <jean-philippe@linaro.org>
|
|
Date: Thu, 26 Dec 2019 10:20:33 +0100
|
|
Subject: [PATCH] brcmfmac: sdio: Fix OOB interrupt initialization on brcm43362
|
|
|
|
Commit 262f2b53f679 ("brcmfmac: call brcmf_attach() just before calling
|
|
brcmf_bus_started()") changed the initialization order of the brcmfmac
|
|
SDIO driver. Unfortunately since brcmf_sdiod_intr_register() is now
|
|
called before the sdiodev->bus_if initialization, it reads the wrong
|
|
chip ID and fails to initialize the GPIO on brcm43362. Thus the chip
|
|
cannot send interrupts and fails to probe:
|
|
|
|
[ 12.517023] brcmfmac: brcmf_sdio_bus_rxctl: resumed on timeout
|
|
[ 12.531214] ieee80211 phy0: brcmf_bus_started: failed: -110
|
|
[ 12.536976] ieee80211 phy0: brcmf_attach: dongle is not responding: err=-110
|
|
[ 12.566467] brcmfmac: brcmf_sdio_firmware_callback: brcmf_attach failed
|
|
|
|
Initialize the bus interface earlier to ensure that
|
|
brcmf_sdiod_intr_register() properly sets up the OOB interrupt.
|
|
|
|
BugLink: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=908438
|
|
Fixes: 262f2b53f679 ("brcmfmac: call brcmf_attach() just before calling brcmf_bus_started()")
|
|
Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org>
|
|
Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
|
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
---
|
|
.../net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 12 ++++++------
|
|
1 file changed, 6 insertions(+), 6 deletions(-)
|
|
|
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
|
@@ -4253,6 +4253,12 @@ static void brcmf_sdio_firmware_callback
|
|
}
|
|
|
|
if (err == 0) {
|
|
+ /* Assign bus interface call back */
|
|
+ sdiod->bus_if->dev = sdiod->dev;
|
|
+ sdiod->bus_if->ops = &brcmf_sdio_bus_ops;
|
|
+ sdiod->bus_if->chip = bus->ci->chip;
|
|
+ sdiod->bus_if->chiprev = bus->ci->chiprev;
|
|
+
|
|
/* Allow full data communication using DPC from now on. */
|
|
brcmf_sdiod_change_state(bus->sdiodev, BRCMF_SDIOD_DATA);
|
|
|
|
@@ -4269,12 +4275,6 @@ static void brcmf_sdio_firmware_callback
|
|
|
|
sdio_release_host(sdiod->func1);
|
|
|
|
- /* Assign bus interface call back */
|
|
- sdiod->bus_if->dev = sdiod->dev;
|
|
- sdiod->bus_if->ops = &brcmf_sdio_bus_ops;
|
|
- sdiod->bus_if->chip = bus->ci->chip;
|
|
- sdiod->bus_if->chiprev = bus->ci->chiprev;
|
|
-
|
|
err = brcmf_alloc(sdiod->dev, sdiod->settings);
|
|
if (err) {
|
|
brcmf_err("brcmf_alloc failed\n");
|