329-v5.0-0005-brcmfmac-allow-GCI-core-enumuration.patch 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. From b021a6bc1175442609af0b66d64f850883e155fb Mon Sep 17 00:00:00 2001
  2. From: Chi-Hsien Lin <[email protected]>
  3. Date: Wed, 21 Nov 2018 07:53:48 +0000
  4. Subject: [PATCH] brcmfmac: allow GCI core enumuration
  5. GCI core is needed for ULP operation. Allow GCI core enumuration with
  6. below changes:
  7. - Allow GCI to be added to core list even when it doesn't have a wrapper.
  8. - Allow 8K address space size.
  9. - Don't overwrite the address value when an additional size descriptor
  10. is in place.
  11. Reviewed-by: Arend van Spriel <[email protected]>
  12. Signed-off-by: Chi-Hsien Lin <[email protected]>
  13. Signed-off-by: Kalle Valo <[email protected]>
  14. ---
  15. .../wireless/broadcom/brcm80211/brcmfmac/chip.c | 14 ++++++++------
  16. 1 file changed, 8 insertions(+), 6 deletions(-)
  17. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
  18. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
  19. @@ -786,7 +786,7 @@ static int brcmf_chip_dmp_get_regaddr(st
  20. u32 *regbase, u32 *wrapbase)
  21. {
  22. u8 desc;
  23. - u32 val;
  24. + u32 val, szdesc;
  25. u8 mpnum = 0;
  26. u8 stype, sztype, wraptype;
  27. @@ -832,14 +832,15 @@ static int brcmf_chip_dmp_get_regaddr(st
  28. /* next size descriptor can be skipped */
  29. if (sztype == DMP_SLAVE_SIZE_DESC) {
  30. - val = brcmf_chip_dmp_get_desc(ci, eromaddr, NULL);
  31. + szdesc = brcmf_chip_dmp_get_desc(ci, eromaddr, NULL);
  32. /* skip upper size descriptor if present */
  33. - if (val & DMP_DESC_ADDRSIZE_GT32)
  34. + if (szdesc & DMP_DESC_ADDRSIZE_GT32)
  35. brcmf_chip_dmp_get_desc(ci, eromaddr, NULL);
  36. }
  37. - /* only look for 4K register regions */
  38. - if (sztype != DMP_SLAVE_SIZE_4K)
  39. + /* look for 4K or 8K register regions */
  40. + if (sztype != DMP_SLAVE_SIZE_4K &&
  41. + sztype != DMP_SLAVE_SIZE_8K)
  42. continue;
  43. stype = (val & DMP_SLAVE_TYPE) >> DMP_SLAVE_TYPE_S;
  44. @@ -896,7 +897,8 @@ int brcmf_chip_dmp_erom_scan(struct brcm
  45. /* need core with ports */
  46. if (nmw + nsw == 0 &&
  47. - id != BCMA_CORE_PMU)
  48. + id != BCMA_CORE_PMU &&
  49. + id != BCMA_CORE_GCI)
  50. continue;
  51. /* try to obtain register address info */