314-v4.16-0004-brcmfmac-Correctly-handle-accesses-to-SDIO-func0.patch 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. From 508422f3695bf66f7b85fb4723c22f5166003ec6 Mon Sep 17 00:00:00 2001
  2. From: Ian Molton <[email protected]>
  3. Date: Tue, 19 Dec 2017 13:47:10 +0100
  4. Subject: [PATCH] brcmfmac: Correctly handle accesses to SDIO func0
  5. Rather than workaround the restrictions on func0 addressing in the
  6. driver, set MMC_QUIRK_LENIENT_FN0
  7. Signed-off-by: Ian Molton <[email protected]>
  8. Acked-by: Arend van Spriel <[email protected]>
  9. Signed-off-by: Arend van Spriel <[email protected]>
  10. Signed-off-by: Kalle Valo <[email protected]>
  11. ---
  12. drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 4 ++++
  13. drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h | 4 ++--
  14. 2 files changed, 6 insertions(+), 2 deletions(-)
  15. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
  16. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
  17. @@ -995,6 +995,10 @@ static int brcmf_ops_sdio_probe(struct s
  18. brcmf_dbg(SDIO, "Function#: %d\n", func->num);
  19. dev = &func->dev;
  20. +
  21. + /* Set MMC_QUIRK_LENIENT_FN0 for this card */
  22. + func->card->quirks |= MMC_QUIRK_LENIENT_FN0;
  23. +
  24. /* prohibit ACPI power management for this device */
  25. brcmf_sdiod_acpi_set_power_manageable(dev, 0);
  26. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
  27. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
  28. @@ -297,10 +297,10 @@ void brcmf_sdiod_intr_unregister(struct
  29. /* SDIO device register access interface */
  30. /* Accessors for SDIO Function 0 */
  31. #define brcmf_sdiod_func0_rb(sdiodev, addr, r) \
  32. - sdio_readb((sdiodev)->func[0], (addr), (r))
  33. + sdio_f0_readb((sdiodev)->func[0], (addr), (r))
  34. #define brcmf_sdiod_func0_wb(sdiodev, addr, v, ret) \
  35. - sdio_writeb((sdiodev)->func[0], (v), (addr), (ret))
  36. + sdio_f0_writeb((sdiodev)->func[0], (v), (addr), (ret))
  37. /* Accessors for SDIO Function 1 */
  38. #define brcmf_sdiod_readb(sdiodev, addr, r) \