2
0

330-v4.18-0005-brcmfmac-add-hostready-indication.patch 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. From 84ad327d18debe19b8d509059b61db445d048b02 Mon Sep 17 00:00:00 2001
  2. From: Franky Lin <[email protected]>
  3. Date: Thu, 26 Apr 2018 12:16:50 +0200
  4. Subject: [PATCH] brcmfmac: add hostready indication
  5. A hostready signal is introduced to inform firmware through mailbox
  6. doorbell1 when common ring initialized or D3 exited.
  7. Reviewed-by: Arend van Spriel <[email protected]>
  8. Signed-off-by: Franky Lin <[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/pcie.c | 14 ++++++++++++--
  13. 1 file changed, 12 insertions(+), 2 deletions(-)
  14. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
  15. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
  16. @@ -105,7 +105,8 @@ static const struct brcmf_firmware_mappi
  17. #define BRCMF_PCIE_PCIE2REG_MAILBOXMASK 0x4C
  18. #define BRCMF_PCIE_PCIE2REG_CONFIGADDR 0x120
  19. #define BRCMF_PCIE_PCIE2REG_CONFIGDATA 0x124
  20. -#define BRCMF_PCIE_PCIE2REG_H2D_MAILBOX 0x140
  21. +#define BRCMF_PCIE_PCIE2REG_H2D_MAILBOX_0 0x140
  22. +#define BRCMF_PCIE_PCIE2REG_H2D_MAILBOX_1 0x144
  23. #define BRCMF_PCIE2_INTA 0x01
  24. #define BRCMF_PCIE2_INTB 0x02
  25. @@ -140,6 +141,7 @@ static const struct brcmf_firmware_mappi
  26. #define BRCMF_PCIE_SHARED_VERSION_MASK 0x00FF
  27. #define BRCMF_PCIE_SHARED_DMA_INDEX 0x10000
  28. #define BRCMF_PCIE_SHARED_DMA_2B_IDX 0x100000
  29. +#define BRCMF_PCIE_SHARED_HOSTRDY_DB1 0x10000000
  30. #define BRCMF_PCIE_FLAGS_HTOD_SPLIT 0x4000
  31. #define BRCMF_PCIE_FLAGS_DTOH_SPLIT 0x8000
  32. @@ -782,6 +784,12 @@ static void brcmf_pcie_intr_enable(struc
  33. BRCMF_PCIE_MB_INT_FN0_1);
  34. }
  35. +static void brcmf_pcie_hostready(struct brcmf_pciedev_info *devinfo)
  36. +{
  37. + if (devinfo->shared.flags & BRCMF_PCIE_SHARED_HOSTRDY_DB1)
  38. + brcmf_pcie_write_reg32(devinfo,
  39. + BRCMF_PCIE_PCIE2REG_H2D_MAILBOX_1, 1);
  40. +}
  41. static irqreturn_t brcmf_pcie_quick_check_isr(int irq, void *arg)
  42. {
  43. @@ -924,7 +932,7 @@ static int brcmf_pcie_ring_mb_ring_bell(
  44. brcmf_dbg(PCIE, "RING !\n");
  45. /* Any arbitrary value will do, lets use 1 */
  46. - brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_PCIE2REG_H2D_MAILBOX, 1);
  47. + brcmf_pcie_write_reg32(devinfo, BRCMF_PCIE_PCIE2REG_H2D_MAILBOX_0, 1);
  48. return 0;
  49. }
  50. @@ -1728,6 +1736,7 @@ static void brcmf_pcie_setup(struct devi
  51. init_waitqueue_head(&devinfo->mbdata_resp_wait);
  52. brcmf_pcie_intr_enable(devinfo);
  53. + brcmf_pcie_hostready(devinfo);
  54. if (brcmf_attach(&devinfo->pdev->dev, devinfo->settings) == 0)
  55. return;
  56. @@ -1950,6 +1959,7 @@ static int brcmf_pcie_pm_leave_D3(struct
  57. brcmf_pcie_select_core(devinfo, BCMA_CORE_PCIE2);
  58. brcmf_bus_change_state(bus, BRCMF_BUS_UP);
  59. brcmf_pcie_intr_enable(devinfo);
  60. + brcmf_pcie_hostready(devinfo);
  61. return 0;
  62. }