mac80211: backport more brcmfmac changes queued for the 5.1
[openwrt/openwrt.git] / package / kernel / mac80211 / patches / brcm / 345-v5.1-brcmfmac-pass-bus-to-the-__brcmf_err-in-pcie.c.patch
1 From 8602e62441aba276cafd68034b72162fbc5ca0a6 Mon Sep 17 00:00:00 2001
2 From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
3 Date: Wed, 6 Feb 2019 12:28:16 +0100
4 Subject: [PATCH] brcmfmac: pass bus to the __brcmf_err() in pcie.c
5 MIME-Version: 1.0
6 Content-Type: text/plain; charset=UTF-8
7 Content-Transfer-Encoding: 8bit
8
9 This enables dev_err() usage (instead of pr_err()) in the __brcmf_err().
10 It makes error messages more meaningful and is important for debugging
11 errors/bugs on systems with multiple brcmfmac supported devices.
12
13 All bus files should follow & get updated similarly (soon).
14
15 Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
16 Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
17 ---
18 .../broadcom/brcm80211/brcmfmac/debug.h | 2 +
19 .../broadcom/brcm80211/brcmfmac/pcie.c | 59 +++++++++++--------
20 2 files changed, 38 insertions(+), 23 deletions(-)
21
22 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
23 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
24 @@ -52,6 +52,7 @@ void __brcmf_err(struct brcmf_bus *bus,
25 /* Macro for error messages. When debugging / tracing the driver all error
26 * messages are important to us.
27 */
28 +#ifndef brcmf_err
29 #define brcmf_err(fmt, ...) \
30 do { \
31 if (IS_ENABLED(CPTCFG_BRCMDBG) || \
32 @@ -59,6 +60,7 @@ void __brcmf_err(struct brcmf_bus *bus,
33 net_ratelimit()) \
34 __brcmf_err(NULL, __func__, fmt, ##__VA_ARGS__);\
35 } while (0)
36 +#endif
37
38 #if defined(DEBUG) || defined(CPTCFG_BRCM_TRACING)
39
40 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
41 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
42 @@ -30,6 +30,15 @@
43 #include <brcmu_wifi.h>
44 #include <brcm_hw_ids.h>
45
46 +/* Custom brcmf_err() that takes bus arg and passes it further */
47 +#define brcmf_err(bus, fmt, ...) \
48 + do { \
49 + if (IS_ENABLED(CPTCFG_BRCMDBG) || \
50 + IS_ENABLED(CPTCFG_BRCM_TRACING) || \
51 + net_ratelimit()) \
52 + __brcmf_err(bus, __func__, fmt, ##__VA_ARGS__); \
53 + } while (0)
54 +
55 #include "debug.h"
56 #include "bus.h"
57 #include "commonring.h"
58 @@ -531,6 +540,7 @@ static void
59 brcmf_pcie_select_core(struct brcmf_pciedev_info *devinfo, u16 coreid)
60 {
61 const struct pci_dev *pdev = devinfo->pdev;
62 + struct brcmf_bus *bus = dev_get_drvdata(&pdev->dev);
63 struct brcmf_core *core;
64 u32 bar0_win;
65
66 @@ -548,7 +558,7 @@ brcmf_pcie_select_core(struct brcmf_pcie
67 }
68 }
69 } else {
70 - brcmf_err("Unsupported core selected %x\n", coreid);
71 + brcmf_err(bus, "Unsupported core selected %x\n", coreid);
72 }
73 }
74
75 @@ -848,9 +858,8 @@ static irqreturn_t brcmf_pcie_isr_thread
76
77 static int brcmf_pcie_request_irq(struct brcmf_pciedev_info *devinfo)
78 {
79 - struct pci_dev *pdev;
80 -
81 - pdev = devinfo->pdev;
82 + struct pci_dev *pdev = devinfo->pdev;
83 + struct brcmf_bus *bus = dev_get_drvdata(&pdev->dev);
84
85 brcmf_pcie_intr_disable(devinfo);
86
87 @@ -861,7 +870,7 @@ static int brcmf_pcie_request_irq(struct
88 brcmf_pcie_isr_thread, IRQF_SHARED,
89 "brcmf_pcie_intr", devinfo)) {
90 pci_disable_msi(pdev);
91 - brcmf_err("Failed to request IRQ %d\n", pdev->irq);
92 + brcmf_err(bus, "Failed to request IRQ %d\n", pdev->irq);
93 return -EIO;
94 }
95 devinfo->irq_allocated = true;
96 @@ -871,15 +880,14 @@ static int brcmf_pcie_request_irq(struct
97
98 static void brcmf_pcie_release_irq(struct brcmf_pciedev_info *devinfo)
99 {
100 - struct pci_dev *pdev;
101 + struct pci_dev *pdev = devinfo->pdev;
102 + struct brcmf_bus *bus = dev_get_drvdata(&pdev->dev);
103 u32 status;
104 u32 count;
105
106 if (!devinfo->irq_allocated)
107 return;
108
109 - pdev = devinfo->pdev;
110 -
111 brcmf_pcie_intr_disable(devinfo);
112 free_irq(pdev->irq, devinfo);
113 pci_disable_msi(pdev);
114 @@ -891,7 +899,7 @@ static void brcmf_pcie_release_irq(struc
115 count++;
116 }
117 if (devinfo->in_irq)
118 - brcmf_err("Still in IRQ (processing) !!!\n");
119 + brcmf_err(bus, "Still in IRQ (processing) !!!\n");
120
121 status = brcmf_pcie_read_reg32(devinfo, BRCMF_PCIE_PCIE2REG_MAILBOXINT);
122 brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_PCIE2REG_MAILBOXINT, status);
123 @@ -1102,6 +1110,7 @@ static void brcmf_pcie_release_ringbuffe
124
125 static int brcmf_pcie_init_ringbuffers(struct brcmf_pciedev_info *devinfo)
126 {
127 + struct brcmf_bus *bus = dev_get_drvdata(&devinfo->pdev->dev);
128 struct brcmf_pcie_ringbuf *ring;
129 struct brcmf_pcie_ringbuf *rings;
130 u32 d2h_w_idx_ptr;
131 @@ -1254,7 +1263,7 @@ static int brcmf_pcie_init_ringbuffers(s
132 return 0;
133
134 fail:
135 - brcmf_err("Allocating ring buffers failed\n");
136 + brcmf_err(bus, "Allocating ring buffers failed\n");
137 brcmf_pcie_release_ringbuffers(devinfo);
138 return -ENOMEM;
139 }
140 @@ -1277,6 +1286,7 @@ brcmf_pcie_release_scratchbuffers(struct
141
142 static int brcmf_pcie_init_scratchbuffers(struct brcmf_pciedev_info *devinfo)
143 {
144 + struct brcmf_bus *bus = dev_get_drvdata(&devinfo->pdev->dev);
145 u64 address;
146 u32 addr;
147
148 @@ -1316,7 +1326,7 @@ static int brcmf_pcie_init_scratchbuffer
149 return 0;
150
151 fail:
152 - brcmf_err("Allocating scratch buffers failed\n");
153 + brcmf_err(bus, "Allocating scratch buffers failed\n");
154 brcmf_pcie_release_scratchbuffers(devinfo);
155 return -ENOMEM;
156 }
157 @@ -1437,6 +1447,7 @@ static int
158 brcmf_pcie_init_share_ram_info(struct brcmf_pciedev_info *devinfo,
159 u32 sharedram_addr)
160 {
161 + struct brcmf_bus *bus = dev_get_drvdata(&devinfo->pdev->dev);
162 struct brcmf_pcie_shared_info *shared;
163 u32 addr;
164
165 @@ -1448,7 +1459,8 @@ brcmf_pcie_init_share_ram_info(struct br
166 brcmf_dbg(PCIE, "PCIe protocol version %d\n", shared->version);
167 if ((shared->version > BRCMF_PCIE_MAX_SHARED_VERSION) ||
168 (shared->version < BRCMF_PCIE_MIN_SHARED_VERSION)) {
169 - brcmf_err("Unsupported PCIE version %d\n", shared->version);
170 + brcmf_err(bus, "Unsupported PCIE version %d\n",
171 + shared->version);
172 return -EINVAL;
173 }
174
175 @@ -1490,6 +1502,7 @@ static int brcmf_pcie_download_fw_nvram(
176 const struct firmware *fw, void *nvram,
177 u32 nvram_len)
178 {
179 + struct brcmf_bus *bus = dev_get_drvdata(&devinfo->pdev->dev);
180 u32 sharedram_addr;
181 u32 sharedram_addr_written;
182 u32 loop_counter;
183 @@ -1544,7 +1557,7 @@ static int brcmf_pcie_download_fw_nvram(
184 loop_counter--;
185 }
186 if (sharedram_addr == sharedram_addr_written) {
187 - brcmf_err("FW failed to initialize\n");
188 + brcmf_err(bus, "FW failed to initialize\n");
189 return -ENODEV;
190 }
191 brcmf_dbg(PCIE, "Shared RAM addr: 0x%08x\n", sharedram_addr);
192 @@ -1555,16 +1568,15 @@ static int brcmf_pcie_download_fw_nvram(
193
194 static int brcmf_pcie_get_resource(struct brcmf_pciedev_info *devinfo)
195 {
196 - struct pci_dev *pdev;
197 + struct pci_dev *pdev = devinfo->pdev;
198 + struct brcmf_bus *bus = dev_get_drvdata(&pdev->dev);
199 int err;
200 phys_addr_t bar0_addr, bar1_addr;
201 ulong bar1_size;
202
203 - pdev = devinfo->pdev;
204 -
205 err = pci_enable_device(pdev);
206 if (err) {
207 - brcmf_err("pci_enable_device failed err=%d\n", err);
208 + brcmf_err(bus, "pci_enable_device failed err=%d\n", err);
209 return err;
210 }
211
212 @@ -1577,7 +1589,7 @@ static int brcmf_pcie_get_resource(struc
213 /* read Bar-1 mapped memory range */
214 bar1_size = pci_resource_len(pdev, 2);
215 if ((bar1_size == 0) || (bar1_addr == 0)) {
216 - brcmf_err("BAR1 Not enabled, device size=%ld, addr=%#016llx\n",
217 + brcmf_err(bus, "BAR1 Not enabled, device size=%ld, addr=%#016llx\n",
218 bar1_size, (unsigned long long)bar1_addr);
219 return -EINVAL;
220 }
221 @@ -1586,7 +1598,7 @@ static int brcmf_pcie_get_resource(struc
222 devinfo->tcm = ioremap_nocache(bar1_addr, bar1_size);
223
224 if (!devinfo->regs || !devinfo->tcm) {
225 - brcmf_err("ioremap() failed (%p,%p)\n", devinfo->regs,
226 + brcmf_err(bus, "ioremap() failed (%p,%p)\n", devinfo->regs,
227 devinfo->tcm);
228 return -EINVAL;
229 }
230 @@ -1873,7 +1885,7 @@ fail_bus:
231 kfree(bus->msgbuf);
232 kfree(bus);
233 fail:
234 - brcmf_err("failed %x:%x\n", pdev->vendor, pdev->device);
235 + brcmf_err(NULL, "failed %x:%x\n", pdev->vendor, pdev->device);
236 brcmf_pcie_release_resource(devinfo);
237 if (devinfo->ci)
238 brcmf_chip_detach(devinfo->ci);
239 @@ -1947,7 +1959,7 @@ static int brcmf_pcie_pm_enter_D3(struct
240 wait_event_timeout(devinfo->mbdata_resp_wait, devinfo->mbdata_completed,
241 BRCMF_PCIE_MBDATA_TIMEOUT);
242 if (!devinfo->mbdata_completed) {
243 - brcmf_err("Timeout on response for entering D3 substate\n");
244 + brcmf_err(bus, "Timeout on response for entering D3 substate\n");
245 brcmf_bus_change_state(bus, BRCMF_BUS_UP);
246 return -EIO;
247 }
248 @@ -1993,7 +2005,7 @@ cleanup:
249
250 err = brcmf_pcie_probe(pdev, NULL);
251 if (err)
252 - brcmf_err("probe after resume failed, err=%d\n", err);
253 + brcmf_err(bus, "probe after resume failed, err=%d\n", err);
254
255 return err;
256 }
257 @@ -2066,7 +2078,8 @@ void brcmf_pcie_register(void)
258 brcmf_dbg(PCIE, "Enter\n");
259 err = pci_register_driver(&brcmf_pciedrvr);
260 if (err)
261 - brcmf_err("PCIE driver registration failed, err=%d\n", err);
262 + brcmf_err(NULL, "PCIE driver registration failed, err=%d\n",
263 + err);
264 }
265
266