You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
2.0 KiB
60 lines
2.0 KiB
From b021a6bc1175442609af0b66d64f850883e155fb Mon Sep 17 00:00:00 2001
|
|
From: Chi-Hsien Lin <Chi-Hsien.Lin@cypress.com>
|
|
Date: Wed, 21 Nov 2018 07:53:48 +0000
|
|
Subject: [PATCH] brcmfmac: allow GCI core enumuration
|
|
|
|
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>
|
|
---
|
|
.../wireless/broadcom/brcm80211/brcmfmac/chip.c | 14 ++++++++------
|
|
1 file changed, 8 insertions(+), 6 deletions(-)
|
|
|
|
--- 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(st
|
|
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(st
|
|
|
|
/* 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 brcm
|
|
|
|
/* 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 */
|
|
|