aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/brcm/349-v5.1-0005-brcmfmac-check-and-dump-trap-info-during-sdio-probe.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/brcm/349-v5.1-0005-brcmfmac-check-and-dump-trap-info-during-sdio-probe.patch')
-rw-r--r--package/kernel/mac80211/patches/brcm/349-v5.1-0005-brcmfmac-check-and-dump-trap-info-during-sdio-probe.patch121
1 files changed, 0 insertions, 121 deletions
diff --git a/package/kernel/mac80211/patches/brcm/349-v5.1-0005-brcmfmac-check-and-dump-trap-info-during-sdio-probe.patch b/package/kernel/mac80211/patches/brcm/349-v5.1-0005-brcmfmac-check-and-dump-trap-info-during-sdio-probe.patch
deleted file mode 100644
index dce4331585..0000000000
--- a/package/kernel/mac80211/patches/brcm/349-v5.1-0005-brcmfmac-check-and-dump-trap-info-during-sdio-probe.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-From 4ab2cf03da91785f2c34d79a302e53da06928bc1 Mon Sep 17 00:00:00 2001
-From: Arend van Spriel <arend.vanspriel@broadcom.com>
-Date: Thu, 14 Feb 2019 13:43:51 +0100
-Subject: [PATCH] brcmfmac: check and dump trap info during sdio probe
-
-When the firmware crashes during the probe sequence we provide little
-information on what really failed. This patch checks the sdpcm shared
-location and show the trap information if a firmware trap has happened.
-
-Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
-Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
-Reviewed-by: Franky Lin <franky.lin@broadcom.com>
-Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
-Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
----
- .../broadcom/brcm80211/brcmfmac/sdio.c | 59 +++++++++++++------
- 1 file changed, 40 insertions(+), 19 deletions(-)
-
---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
-+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
-@@ -2999,21 +2999,35 @@ static int brcmf_sdio_trap_info(struct s
- if (error < 0)
- return error;
-
-- seq_printf(seq,
-- "dongle trap info: type 0x%x @ epc 0x%08x\n"
-- " cpsr 0x%08x spsr 0x%08x sp 0x%08x\n"
-- " lr 0x%08x pc 0x%08x offset 0x%x\n"
-- " r0 0x%08x r1 0x%08x r2 0x%08x r3 0x%08x\n"
-- " r4 0x%08x r5 0x%08x r6 0x%08x r7 0x%08x\n",
-- le32_to_cpu(tr.type), le32_to_cpu(tr.epc),
-- le32_to_cpu(tr.cpsr), le32_to_cpu(tr.spsr),
-- le32_to_cpu(tr.r13), le32_to_cpu(tr.r14),
-- le32_to_cpu(tr.pc), sh->trap_addr,
-- le32_to_cpu(tr.r0), le32_to_cpu(tr.r1),
-- le32_to_cpu(tr.r2), le32_to_cpu(tr.r3),
-- le32_to_cpu(tr.r4), le32_to_cpu(tr.r5),
-- le32_to_cpu(tr.r6), le32_to_cpu(tr.r7));
--
-+ if (seq)
-+ seq_printf(seq,
-+ "dongle trap info: type 0x%x @ epc 0x%08x\n"
-+ " cpsr 0x%08x spsr 0x%08x sp 0x%08x\n"
-+ " lr 0x%08x pc 0x%08x offset 0x%x\n"
-+ " r0 0x%08x r1 0x%08x r2 0x%08x r3 0x%08x\n"
-+ " r4 0x%08x r5 0x%08x r6 0x%08x r7 0x%08x\n",
-+ le32_to_cpu(tr.type), le32_to_cpu(tr.epc),
-+ le32_to_cpu(tr.cpsr), le32_to_cpu(tr.spsr),
-+ le32_to_cpu(tr.r13), le32_to_cpu(tr.r14),
-+ le32_to_cpu(tr.pc), sh->trap_addr,
-+ le32_to_cpu(tr.r0), le32_to_cpu(tr.r1),
-+ le32_to_cpu(tr.r2), le32_to_cpu(tr.r3),
-+ le32_to_cpu(tr.r4), le32_to_cpu(tr.r5),
-+ le32_to_cpu(tr.r6), le32_to_cpu(tr.r7));
-+ else
-+ pr_debug("dongle trap info: type 0x%x @ epc 0x%08x\n"
-+ " cpsr 0x%08x spsr 0x%08x sp 0x%08x\n"
-+ " lr 0x%08x pc 0x%08x offset 0x%x\n"
-+ " r0 0x%08x r1 0x%08x r2 0x%08x r3 0x%08x\n"
-+ " r4 0x%08x r5 0x%08x r6 0x%08x r7 0x%08x\n",
-+ le32_to_cpu(tr.type), le32_to_cpu(tr.epc),
-+ le32_to_cpu(tr.cpsr), le32_to_cpu(tr.spsr),
-+ le32_to_cpu(tr.r13), le32_to_cpu(tr.r14),
-+ le32_to_cpu(tr.pc), sh->trap_addr,
-+ le32_to_cpu(tr.r0), le32_to_cpu(tr.r1),
-+ le32_to_cpu(tr.r2), le32_to_cpu(tr.r3),
-+ le32_to_cpu(tr.r4), le32_to_cpu(tr.r5),
-+ le32_to_cpu(tr.r6), le32_to_cpu(tr.r7));
- return 0;
- }
-
-@@ -3067,8 +3081,10 @@ static int brcmf_sdio_checkdied(struct b
- else if (sh.flags & SDPCM_SHARED_ASSERT)
- brcmf_err("assertion in dongle\n");
-
-- if (sh.flags & SDPCM_SHARED_TRAP)
-+ if (sh.flags & SDPCM_SHARED_TRAP) {
- brcmf_err("firmware trap in dongle\n");
-+ brcmf_sdio_trap_info(NULL, bus, &sh);
-+ }
-
- return 0;
- }
-@@ -4199,7 +4215,7 @@ static void brcmf_sdio_firmware_callback
- } else {
- /* Disable F2 again */
- sdio_disable_func(sdiod->func2);
-- goto release;
-+ goto checkdied;
- }
-
- if (brcmf_chip_sr_capable(bus->ci)) {
-@@ -4220,8 +4236,10 @@ static void brcmf_sdio_firmware_callback
- }
-
- /* If we didn't come up, turn off backplane clock */
-- if (err != 0)
-+ if (err != 0) {
- brcmf_sdio_clkctl(bus, CLK_NONE, false);
-+ goto checkdied;
-+ }
-
- sdio_release_host(sdiod->func1);
-
-@@ -4235,12 +4253,15 @@ static void brcmf_sdio_firmware_callback
- err = brcmf_attach(sdiod->dev, sdiod->settings);
- if (err != 0) {
- brcmf_err("brcmf_attach failed\n");
-- goto fail;
-+ sdio_claim_host(sdiod->func1);
-+ goto checkdied;
- }
-
- /* ready */
- return;
-
-+checkdied:
-+ brcmf_sdio_checkdied(bus);
- release:
- sdio_release_host(sdiod->func1);
- fail: