311-v4.16-0002-brcmfmac-Register-sizes-on-hardware-are-not-dependen.patch 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. From 1e6f676f43aa4270ebc5cff8e32a55f72362e042 Mon Sep 17 00:00:00 2001
  2. From: Ian Molton <[email protected]>
  3. Date: Mon, 13 Nov 2017 21:35:39 +0100
  4. Subject: [PATCH] brcmfmac: Register sizes on hardware are not dependent on
  5. compiler types
  6. The 4 IO functions in this patch are incorrect as they use compiler types
  7. to determine how many bytes to send to the hardware.
  8. Signed-off-by: Ian Molton <[email protected]>
  9. Signed-off-by: Arend van Spriel <[email protected]>
  10. Signed-off-by: Kalle Valo <[email protected]>
  11. ---
  12. .../wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 22 +++++++++++-----------
  13. 1 file changed, 11 insertions(+), 11 deletions(-)
  14. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
  15. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
  16. @@ -264,7 +264,7 @@ static int brcmf_sdiod_request_data(stru
  17. func = sdiodev->func[fn];
  18. switch (regsz) {
  19. - case sizeof(u8):
  20. + case 1:
  21. if (write) {
  22. if (fn)
  23. sdio_writeb(func, *(u8 *)data, addr, &ret);
  24. @@ -278,13 +278,13 @@ static int brcmf_sdiod_request_data(stru
  25. *(u8 *)data = sdio_f0_readb(func, addr, &ret);
  26. }
  27. break;
  28. - case sizeof(u16):
  29. + case 2:
  30. if (write)
  31. sdio_writew(func, *(u16 *)data, addr, &ret);
  32. else
  33. *(u16 *)data = sdio_readw(func, addr, &ret);
  34. break;
  35. - case sizeof(u32):
  36. + case 4:
  37. if (write)
  38. sdio_writel(func, *(u32 *)data, addr, &ret);
  39. else
  40. @@ -368,7 +368,7 @@ brcmf_sdiod_set_sbaddr_window(struct brc
  41. for (i = 0; i < 3; i++) {
  42. err = brcmf_sdiod_regrw_helper(sdiodev,
  43. SBSDIO_FUNC1_SBADDRLOW + i,
  44. - sizeof(u8), &addr[i], true);
  45. + 1, &addr[i], true);
  46. if (err) {
  47. brcmf_err("failed at addr: 0x%0x\n",
  48. SBSDIO_FUNC1_SBADDRLOW + i);
  49. @@ -407,7 +407,7 @@ u8 brcmf_sdiod_regrb(struct brcmf_sdio_d
  50. int retval;
  51. brcmf_dbg(SDIO, "addr:0x%08x\n", addr);
  52. - retval = brcmf_sdiod_regrw_helper(sdiodev, addr, sizeof(data), &data,
  53. + retval = brcmf_sdiod_regrw_helper(sdiodev, addr, 1, &data,
  54. false);
  55. brcmf_dbg(SDIO, "data:0x%02x\n", data);
  56. @@ -423,10 +423,10 @@ u32 brcmf_sdiod_regrl(struct brcmf_sdio_
  57. int retval;
  58. brcmf_dbg(SDIO, "addr:0x%08x\n", addr);
  59. - retval = brcmf_sdiod_addrprep(sdiodev, sizeof(data), &addr);
  60. + retval = brcmf_sdiod_addrprep(sdiodev, 4, &addr);
  61. if (retval)
  62. goto done;
  63. - retval = brcmf_sdiod_regrw_helper(sdiodev, addr, sizeof(data), &data,
  64. + retval = brcmf_sdiod_regrw_helper(sdiodev, addr, 4, &data,
  65. false);
  66. brcmf_dbg(SDIO, "data:0x%08x\n", data);
  67. @@ -443,7 +443,7 @@ void brcmf_sdiod_regwb(struct brcmf_sdio
  68. int retval;
  69. brcmf_dbg(SDIO, "addr:0x%08x, data:0x%02x\n", addr, data);
  70. - retval = brcmf_sdiod_regrw_helper(sdiodev, addr, sizeof(data), &data,
  71. + retval = brcmf_sdiod_regrw_helper(sdiodev, addr, 1, &data,
  72. true);
  73. if (ret)
  74. *ret = retval;
  75. @@ -455,10 +455,10 @@ void brcmf_sdiod_regwl(struct brcmf_sdio
  76. int retval;
  77. brcmf_dbg(SDIO, "addr:0x%08x, data:0x%08x\n", addr, data);
  78. - retval = brcmf_sdiod_addrprep(sdiodev, sizeof(data), &addr);
  79. + retval = brcmf_sdiod_addrprep(sdiodev, 4, &addr);
  80. if (retval)
  81. goto done;
  82. - retval = brcmf_sdiod_regrw_helper(sdiodev, addr, sizeof(data), &data,
  83. + retval = brcmf_sdiod_regrw_helper(sdiodev, addr, 4, &data,
  84. true);
  85. done:
  86. @@ -876,7 +876,7 @@ int brcmf_sdiod_abort(struct brcmf_sdio_
  87. /* issue abort cmd52 command through F0 */
  88. brcmf_sdiod_request_data(sdiodev, SDIO_FUNC_0, SDIO_CCCR_ABORT,
  89. - sizeof(t_func), &t_func, true);
  90. + 1, &t_func, true);
  91. brcmf_dbg(SDIO, "Exit\n");
  92. return 0;