a0a798be93ba5d5a5fee57c557d877483e248e0d
[openwrt/svn-archive/archive.git] / package / kernel / mac80211 / patches / 327-brcmfmac-add-dedicated-debug-level-for-firmware-cons.patch
1 From: Arend van Spriel <arend@broadcom.com>
2 Date: Wed, 26 Aug 2015 22:15:01 +0200
3 Subject: [PATCH] brcmfmac: add dedicated debug level for firmware
4 console logging
5
6 Both PCIe and SDIO devices have the possibility to log the firmware
7 console output in kernel log. For PCIe it is logged when PCIE debug
8 level is enabled. For SDIO it is logged when user specifies a non-zero
9 console interval through debugfs. This patch tries to make it a
10 bit more consistent. The firmware console output is only logged when
11 FWCON debug level is enabled.
12
13 Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
14 Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
15 Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
16 Reviewed-by: Pontus Fuchs <pontusf@broadcom.com>
17 Signed-off-by: Arend van Spriel <arend@broadcom.com>
18 ---
19
20 --- a/drivers/net/wireless/brcm80211/brcmfmac/debug.h
21 +++ b/drivers/net/wireless/brcm80211/brcmfmac/debug.h
22 @@ -37,6 +37,7 @@
23 #define BRCMF_SDIO_VAL 0x00020000
24 #define BRCMF_MSGBUF_VAL 0x00040000
25 #define BRCMF_PCIE_VAL 0x00080000
26 +#define BRCMF_FWCON_VAL 0x00100000
27
28 /* set default print format */
29 #undef pr_fmt
30 @@ -78,6 +79,7 @@ do { \
31 #define BRCMF_GLOM_ON() (brcmf_msg_level & BRCMF_GLOM_VAL)
32 #define BRCMF_EVENT_ON() (brcmf_msg_level & BRCMF_EVENT_VAL)
33 #define BRCMF_FIL_ON() (brcmf_msg_level & BRCMF_FIL_VAL)
34 +#define BRCMF_FWCON_ON() (brcmf_msg_level & BRCMF_FWCON_VAL)
35
36 #else /* defined(DEBUG) || defined(CPTCFG_BRCM_TRACING) */
37
38 @@ -90,6 +92,7 @@ do { \
39 #define BRCMF_GLOM_ON() 0
40 #define BRCMF_EVENT_ON() 0
41 #define BRCMF_FIL_ON() 0
42 +#define BRCMF_FWCON_ON() 0
43
44 #endif /* defined(DEBUG) || defined(CPTCFG_BRCM_TRACING) */
45
46 --- a/drivers/net/wireless/brcm80211/brcmfmac/pcie.c
47 +++ b/drivers/net/wireless/brcm80211/brcmfmac/pcie.c
48 @@ -644,7 +644,7 @@ static void brcmf_pcie_bus_console_init(
49 addr = console->base_addr + BRCMF_CONSOLE_BUFSIZE_OFFSET;
50 console->bufsize = brcmf_pcie_read_tcm32(devinfo, addr);
51
52 - brcmf_dbg(PCIE, "Console: base %x, buf %x, size %d\n",
53 + brcmf_dbg(FWCON, "Console: base %x, buf %x, size %d\n",
54 console->base_addr, console->buf_addr, console->bufsize);
55 }
56
57 @@ -656,6 +656,9 @@ static void brcmf_pcie_bus_console_read(
58 u8 ch;
59 u32 newidx;
60
61 + if (!BRCMF_FWCON_ON())
62 + return;
63 +
64 console = &devinfo->shared.console;
65 addr = console->base_addr + BRCMF_CONSOLE_WRITEIDX_OFFSET;
66 newidx = brcmf_pcie_read_tcm32(devinfo, addr);
67 @@ -677,7 +680,7 @@ static void brcmf_pcie_bus_console_read(
68 }
69 if (ch == '\n') {
70 console->log_str[console->log_idx] = 0;
71 - brcmf_dbg(PCIE, "CONSOLE: %s", console->log_str);
72 + pr_debug("CONSOLE: %s", console->log_str);
73 console->log_idx = 0;
74 }
75 }
76 --- a/drivers/net/wireless/brcm80211/brcmfmac/sdio.c
77 +++ b/drivers/net/wireless/brcm80211/brcmfmac/sdio.c
78 @@ -123,6 +123,7 @@ struct rte_console {
79
80 #define BRCMF_FIRSTREAD (1 << 6)
81
82 +#define BRCMF_CONSOLE 10 /* watchdog interval to poll console */
83
84 /* SBSDIO_DEVICE_CTL */
85
86 @@ -3204,6 +3205,8 @@ static void brcmf_sdio_debugfs_create(st
87 if (IS_ERR_OR_NULL(dentry))
88 return;
89
90 + bus->console_interval = BRCMF_CONSOLE;
91 +
92 brcmf_debugfs_add_entry(drvr, "forensics", brcmf_sdio_forensic_read);
93 brcmf_debugfs_add_entry(drvr, "counters",
94 brcmf_debugfs_sdio_count_read);
95 @@ -3613,7 +3616,7 @@ static void brcmf_sdio_bus_watchdog(stru
96 }
97 #ifdef DEBUG
98 /* Poll for console output periodically */
99 - if (bus->sdiodev->state == BRCMF_SDIOD_DATA &&
100 + if (bus->sdiodev->state == BRCMF_SDIOD_DATA && BRCMF_FWCON_ON() &&
101 bus->console_interval != 0) {
102 bus->console.count += BRCMF_WD_POLL_MS;
103 if (bus->console.count >= bus->console_interval) {