On 11/12/2018 8:29 AM, Chi-Hsien Lin wrote:
GCI core is needed for ULP operation. Allow GCI core enumuration with
below changes:
 - Allow GCI to be added to core list even when it doesn't have a wrapper.
 - Allow 8K address space size.
 - Don't overwrite the address value when an additional size descriptor
   is in place.

One question. This only assures the GCI core is listed. So does the driver need to access it for ULP operation?

Regards,
Arend

Reviewed-by: Arend van Spriel <arend.vanspr...@broadcom.com>
Signed-off-by: Chi-Hsien Lin <chi-hsien....@cypress.com>
---
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c 
b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
index a3c857721446..a8d3b96b727f 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
@@ -786,7 +786,7 @@ static int brcmf_chip_dmp_get_regaddr(struct 
brcmf_chip_priv *ci, u32 *eromaddr,
                                      u32 *regbase, u32 *wrapbase)
 {
        u8 desc;
-       u32 val;
+       u32 val, szdesc;
        u8 mpnum = 0;
        u8 stype, sztype, wraptype;

@@ -832,14 +832,15 @@ static int brcmf_chip_dmp_get_regaddr(struct 
brcmf_chip_priv *ci, u32 *eromaddr,

                /* next size descriptor can be skipped */
                if (sztype == DMP_SLAVE_SIZE_DESC) {
-                       val = brcmf_chip_dmp_get_desc(ci, eromaddr, NULL);
+                       szdesc = brcmf_chip_dmp_get_desc(ci, eromaddr, NULL);
                        /* skip upper size descriptor if present */
-                       if (val & DMP_DESC_ADDRSIZE_GT32)
+                       if (szdesc & DMP_DESC_ADDRSIZE_GT32)
                                brcmf_chip_dmp_get_desc(ci, eromaddr, NULL);
                }

-               /* only look for 4K register regions */
-               if (sztype != DMP_SLAVE_SIZE_4K)
+               /* look for 4K or 8K register regions */
+               if (sztype != DMP_SLAVE_SIZE_4K &&
+                   sztype != DMP_SLAVE_SIZE_8K)
                        continue;

                stype = (val & DMP_SLAVE_TYPE) >> DMP_SLAVE_TYPE_S;
@@ -896,7 +897,8 @@ int brcmf_chip_dmp_erom_scan(struct brcmf_chip_priv *ci)

                /* need core with ports */
                if (nmw + nsw == 0 &&
-                   id != BCMA_CORE_PMU)
+                   id != BCMA_CORE_PMU &&
+                   id != BCMA_CORE_GCI)
                        continue;

                /* try to obtain register address info */


Reply via email to