339-v5.1-0002-brcmfmac-pass-bus-to-the-__brcmf_err-in-pcie.c.patch 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  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. This enables dev_err() usage (instead of pr_err()) in the __brcmf_err().
  9. It makes error messages more meaningful and is important for debugging
  10. errors/bugs on systems with multiple brcmfmac supported devices.
  11. All bus files should follow & get updated similarly (soon).
  12. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
  13. Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
  14. ---
  15. .../broadcom/brcm80211/brcmfmac/debug.h | 2 +
  16. .../broadcom/brcm80211/brcmfmac/pcie.c | 59 +++++++++++--------
  17. 2 files changed, 38 insertions(+), 23 deletions(-)
  18. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
  19. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
  20. @@ -52,6 +52,7 @@ void __brcmf_err(struct brcmf_bus *bus,
  21. /* Macro for error messages. When debugging / tracing the driver all error
  22. * messages are important to us.
  23. */
  24. +#ifndef brcmf_err
  25. #define brcmf_err(fmt, ...) \
  26. do { \
  27. if (IS_ENABLED(CPTCFG_BRCMDBG) || \
  28. @@ -59,6 +60,7 @@ void __brcmf_err(struct brcmf_bus *bus,
  29. net_ratelimit()) \
  30. __brcmf_err(NULL, __func__, fmt, ##__VA_ARGS__);\
  31. } while (0)
  32. +#endif
  33. #if defined(DEBUG) || defined(CPTCFG_BRCM_TRACING)
  34. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
  35. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
  36. @@ -30,6 +30,15 @@
  37. #include <brcmu_wifi.h>
  38. #include <brcm_hw_ids.h>
  39. +/* Custom brcmf_err() that takes bus arg and passes it further */
  40. +#define brcmf_err(bus, fmt, ...) \
  41. + do { \
  42. + if (IS_ENABLED(CPTCFG_BRCMDBG) || \
  43. + IS_ENABLED(CPTCFG_BRCM_TRACING) || \
  44. + net_ratelimit()) \
  45. + __brcmf_err(bus, __func__, fmt, ##__VA_ARGS__); \
  46. + } while (0)
  47. +
  48. #include "debug.h"
  49. #include "bus.h"
  50. #include "commonring.h"
  51. @@ -529,6 +538,7 @@ static void
  52. brcmf_pcie_select_core(struct brcmf_pciedev_info *devinfo, u16 coreid)
  53. {
  54. const struct pci_dev *pdev = devinfo->pdev;
  55. + struct brcmf_bus *bus = dev_get_drvdata(&pdev->dev);
  56. struct brcmf_core *core;
  57. u32 bar0_win;
  58. @@ -546,7 +556,7 @@ brcmf_pcie_select_core(struct brcmf_pcie
  59. }
  60. }
  61. } else {
  62. - brcmf_err("Unsupported core selected %x\n", coreid);
  63. + brcmf_err(bus, "Unsupported core selected %x\n", coreid);
  64. }
  65. }
  66. @@ -840,9 +850,8 @@ static irqreturn_t brcmf_pcie_isr_thread
  67. static int brcmf_pcie_request_irq(struct brcmf_pciedev_info *devinfo)
  68. {
  69. - struct pci_dev *pdev;
  70. -
  71. - pdev = devinfo->pdev;
  72. + struct pci_dev *pdev = devinfo->pdev;
  73. + struct brcmf_bus *bus = dev_get_drvdata(&pdev->dev);
  74. brcmf_pcie_intr_disable(devinfo);
  75. @@ -853,7 +862,7 @@ static int brcmf_pcie_request_irq(struct
  76. brcmf_pcie_isr_thread, IRQF_SHARED,
  77. "brcmf_pcie_intr", devinfo)) {
  78. pci_disable_msi(pdev);
  79. - brcmf_err("Failed to request IRQ %d\n", pdev->irq);
  80. + brcmf_err(bus, "Failed to request IRQ %d\n", pdev->irq);
  81. return -EIO;
  82. }
  83. devinfo->irq_allocated = true;
  84. @@ -863,15 +872,14 @@ static int brcmf_pcie_request_irq(struct
  85. static void brcmf_pcie_release_irq(struct brcmf_pciedev_info *devinfo)
  86. {
  87. - struct pci_dev *pdev;
  88. + struct pci_dev *pdev = devinfo->pdev;
  89. + struct brcmf_bus *bus = dev_get_drvdata(&pdev->dev);
  90. u32 status;
  91. u32 count;
  92. if (!devinfo->irq_allocated)
  93. return;
  94. - pdev = devinfo->pdev;
  95. -
  96. brcmf_pcie_intr_disable(devinfo);
  97. free_irq(pdev->irq, devinfo);
  98. pci_disable_msi(pdev);
  99. @@ -883,7 +891,7 @@ static void brcmf_pcie_release_irq(struc
  100. count++;
  101. }
  102. if (devinfo->in_irq)
  103. - brcmf_err("Still in IRQ (processing) !!!\n");
  104. + brcmf_err(bus, "Still in IRQ (processing) !!!\n");
  105. status = brcmf_pcie_read_reg32(devinfo, BRCMF_PCIE_PCIE2REG_MAILBOXINT);
  106. brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_PCIE2REG_MAILBOXINT, status);
  107. @@ -1094,6 +1102,7 @@ static void brcmf_pcie_release_ringbuffe
  108. static int brcmf_pcie_init_ringbuffers(struct brcmf_pciedev_info *devinfo)
  109. {
  110. + struct brcmf_bus *bus = dev_get_drvdata(&devinfo->pdev->dev);
  111. struct brcmf_pcie_ringbuf *ring;
  112. struct brcmf_pcie_ringbuf *rings;
  113. u32 d2h_w_idx_ptr;
  114. @@ -1246,7 +1255,7 @@ static int brcmf_pcie_init_ringbuffers(s
  115. return 0;
  116. fail:
  117. - brcmf_err("Allocating ring buffers failed\n");
  118. + brcmf_err(bus, "Allocating ring buffers failed\n");
  119. brcmf_pcie_release_ringbuffers(devinfo);
  120. return -ENOMEM;
  121. }
  122. @@ -1269,6 +1278,7 @@ brcmf_pcie_release_scratchbuffers(struct
  123. static int brcmf_pcie_init_scratchbuffers(struct brcmf_pciedev_info *devinfo)
  124. {
  125. + struct brcmf_bus *bus = dev_get_drvdata(&devinfo->pdev->dev);
  126. u64 address;
  127. u32 addr;
  128. @@ -1308,7 +1318,7 @@ static int brcmf_pcie_init_scratchbuffer
  129. return 0;
  130. fail:
  131. - brcmf_err("Allocating scratch buffers failed\n");
  132. + brcmf_err(bus, "Allocating scratch buffers failed\n");
  133. brcmf_pcie_release_scratchbuffers(devinfo);
  134. return -ENOMEM;
  135. }
  136. @@ -1409,6 +1419,7 @@ static int
  137. brcmf_pcie_init_share_ram_info(struct brcmf_pciedev_info *devinfo,
  138. u32 sharedram_addr)
  139. {
  140. + struct brcmf_bus *bus = dev_get_drvdata(&devinfo->pdev->dev);
  141. struct brcmf_pcie_shared_info *shared;
  142. u32 addr;
  143. @@ -1420,7 +1431,8 @@ brcmf_pcie_init_share_ram_info(struct br
  144. brcmf_dbg(PCIE, "PCIe protocol version %d\n", shared->version);
  145. if ((shared->version > BRCMF_PCIE_MAX_SHARED_VERSION) ||
  146. (shared->version < BRCMF_PCIE_MIN_SHARED_VERSION)) {
  147. - brcmf_err("Unsupported PCIE version %d\n", shared->version);
  148. + brcmf_err(bus, "Unsupported PCIE version %d\n",
  149. + shared->version);
  150. return -EINVAL;
  151. }
  152. @@ -1462,6 +1474,7 @@ static int brcmf_pcie_download_fw_nvram(
  153. const struct firmware *fw, void *nvram,
  154. u32 nvram_len)
  155. {
  156. + struct brcmf_bus *bus = dev_get_drvdata(&devinfo->pdev->dev);
  157. u32 sharedram_addr;
  158. u32 sharedram_addr_written;
  159. u32 loop_counter;
  160. @@ -1516,7 +1529,7 @@ static int brcmf_pcie_download_fw_nvram(
  161. loop_counter--;
  162. }
  163. if (sharedram_addr == sharedram_addr_written) {
  164. - brcmf_err("FW failed to initialize\n");
  165. + brcmf_err(bus, "FW failed to initialize\n");
  166. return -ENODEV;
  167. }
  168. brcmf_dbg(PCIE, "Shared RAM addr: 0x%08x\n", sharedram_addr);
  169. @@ -1527,16 +1540,15 @@ static int brcmf_pcie_download_fw_nvram(
  170. static int brcmf_pcie_get_resource(struct brcmf_pciedev_info *devinfo)
  171. {
  172. - struct pci_dev *pdev;
  173. + struct pci_dev *pdev = devinfo->pdev;
  174. + struct brcmf_bus *bus = dev_get_drvdata(&pdev->dev);
  175. int err;
  176. phys_addr_t bar0_addr, bar1_addr;
  177. ulong bar1_size;
  178. - pdev = devinfo->pdev;
  179. -
  180. err = pci_enable_device(pdev);
  181. if (err) {
  182. - brcmf_err("pci_enable_device failed err=%d\n", err);
  183. + brcmf_err(bus, "pci_enable_device failed err=%d\n", err);
  184. return err;
  185. }
  186. @@ -1549,7 +1561,7 @@ static int brcmf_pcie_get_resource(struc
  187. /* read Bar-1 mapped memory range */
  188. bar1_size = pci_resource_len(pdev, 2);
  189. if ((bar1_size == 0) || (bar1_addr == 0)) {
  190. - brcmf_err("BAR1 Not enabled, device size=%ld, addr=%#016llx\n",
  191. + brcmf_err(bus, "BAR1 Not enabled, device size=%ld, addr=%#016llx\n",
  192. bar1_size, (unsigned long long)bar1_addr);
  193. return -EINVAL;
  194. }
  195. @@ -1558,7 +1570,7 @@ static int brcmf_pcie_get_resource(struc
  196. devinfo->tcm = ioremap_nocache(bar1_addr, bar1_size);
  197. if (!devinfo->regs || !devinfo->tcm) {
  198. - brcmf_err("ioremap() failed (%p,%p)\n", devinfo->regs,
  199. + brcmf_err(bus, "ioremap() failed (%p,%p)\n", devinfo->regs,
  200. devinfo->tcm);
  201. return -EINVAL;
  202. }
  203. @@ -1585,16 +1597,17 @@ static void brcmf_pcie_release_resource(
  204. static int brcmf_pcie_attach_bus(struct brcmf_pciedev_info *devinfo)
  205. {
  206. + struct brcmf_bus *bus = dev_get_drvdata(&devinfo->pdev->dev);
  207. int ret;
  208. /* Attach to the common driver interface */
  209. ret = brcmf_attach(&devinfo->pdev->dev, devinfo->settings);
  210. if (ret) {
  211. - brcmf_err("brcmf_attach failed\n");
  212. + brcmf_err(bus, "brcmf_attach failed\n");
  213. } else {
  214. ret = brcmf_bus_started(&devinfo->pdev->dev);
  215. if (ret)
  216. - brcmf_err("dongle is not responding\n");
  217. + brcmf_err(bus, "dongle is not responding\n");
  218. }
  219. return ret;
  220. @@ -1823,7 +1836,7 @@ fail_bus:
  221. kfree(bus->msgbuf);
  222. kfree(bus);
  223. fail:
  224. - brcmf_err("failed %x:%x\n", pdev->vendor, pdev->device);
  225. + brcmf_err(NULL, "failed %x:%x\n", pdev->vendor, pdev->device);
  226. brcmf_pcie_release_resource(devinfo);
  227. if (devinfo->ci)
  228. brcmf_chip_detach(devinfo->ci);
  229. @@ -1897,7 +1910,7 @@ static int brcmf_pcie_pm_enter_D3(struct
  230. wait_event_timeout(devinfo->mbdata_resp_wait, devinfo->mbdata_completed,
  231. BRCMF_PCIE_MBDATA_TIMEOUT);
  232. if (!devinfo->mbdata_completed) {
  233. - brcmf_err("Timeout on response for entering D3 substate\n");
  234. + brcmf_err(bus, "Timeout on response for entering D3 substate\n");
  235. brcmf_bus_change_state(bus, BRCMF_BUS_UP);
  236. return -EIO;
  237. }
  238. @@ -1942,7 +1955,7 @@ cleanup:
  239. err = brcmf_pcie_probe(pdev, NULL);
  240. if (err)
  241. - brcmf_err("probe after resume failed, err=%d\n", err);
  242. + brcmf_err(bus, "probe after resume failed, err=%d\n", err);
  243. return err;
  244. }
  245. @@ -2014,7 +2027,8 @@ void brcmf_pcie_register(void)
  246. brcmf_dbg(PCIE, "Enter\n");
  247. err = pci_register_driver(&brcmf_pciedrvr);
  248. if (err)
  249. - brcmf_err("PCIE driver registration failed, err=%d\n", err);
  250. + brcmf_err(NULL, "PCIE driver registration failed, err=%d\n",
  251. + err);
  252. }