]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
brcmfmac: allow GCI core enumuration
authorChi-Hsien Lin <Chi-Hsien.Lin@cypress.com>
Wed, 21 Nov 2018 07:53:48 +0000 (07:53 +0000)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 13 Dec 2018 14:57:20 +0000 (16:57 +0200)
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.

Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c

index a3c857721446dc535f980faaed228b8949d0e6e4..a8d3b96b727fc5e458d0805824c6cb3b21ac1e25 100644 (file)
@@ -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 */