Skip to content

Commit 02b8773

Browse files
marcanjannau
authored andcommitted
wifi: brcmfmac: Add support for SYSMEM corerev >= 12 & fix < 12
SYSMEM corerev 12+ uses different coreinfo masks for the ROM/RAM sizes. The masks for cores <12 also look like they were wrong all along, since the register layout is not the same as for SOCRAM (even though it was sharing the defines). Plus we need to skip the ROM banks, which we weren't doing. So it looks like this was always wrong for SYSMEM chips. Fix it and add support for the new revisions. Signed-off-by: Hector Martin <marcan@marcan.st>
1 parent 091bc2c commit 02b8773

1 file changed

Lines changed: 18 additions & 2 deletions

File tree

  • drivers/net/wireless/broadcom/brcm80211/brcmfmac

drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,15 @@ struct sbconfig {
162162
#define SRCI_SRBSZ_SHIFT 0
163163
#define SR_BSZ_BASE 14
164164

165+
#define SYSMEM_SRCI_ROMNB_MASK 0x3e0
166+
#define SYSMEM_SRCI_ROMNB_SHIFT 5
167+
#define SYSMEM_SRCI_SRNB_MASK 0x1f
168+
#define SYSMEM_SRCI_SRNB_SHIFT 0
169+
#define SYSMEM_SRCI_NEW_ROMNB_MASK 0xff000000
170+
#define SYSMEM_SRCI_NEW_ROMNB_SHIFT 24
171+
#define SYSMEM_SRCI_NEW_SRNB_MASK 0xff0000
172+
#define SYSMEM_SRCI_NEW_SRNB_SHIFT 16
173+
165174
struct sbsocramregs {
166175
u32 coreinfo;
167176
u32 bwalloc;
@@ -659,17 +668,24 @@ static u32 brcmf_chip_sysmem_ramsize(struct brcmf_core_priv *sysmem)
659668
u32 memsize = 0;
660669
u32 coreinfo;
661670
u32 idx;
671+
u32 nrb;
662672
u32 nb;
663673
u32 banksize;
664674

665675
if (!brcmf_chip_iscoreup(&sysmem->pub))
666676
brcmf_chip_resetcore(&sysmem->pub, 0, 0, 0);
667677

668678
coreinfo = brcmf_chip_core_read32(sysmem, SYSMEMREGOFFS(coreinfo));
669-
nb = (coreinfo & SRCI_SRNB_MASK) >> SRCI_SRNB_SHIFT;
679+
if (sysmem->pub.rev >= 12) {
680+
nrb = (coreinfo & SYSMEM_SRCI_NEW_ROMNB_MASK) >> SYSMEM_SRCI_NEW_ROMNB_SHIFT;
681+
nb = (coreinfo & SYSMEM_SRCI_NEW_SRNB_MASK) >> SYSMEM_SRCI_NEW_SRNB_SHIFT;
682+
} else {
683+
nrb = (coreinfo & SYSMEM_SRCI_ROMNB_MASK) >> SYSMEM_SRCI_ROMNB_SHIFT;
684+
nb = (coreinfo & SYSMEM_SRCI_SRNB_MASK) >> SYSMEM_SRCI_SRNB_SHIFT;
685+
}
670686

671687
for (idx = 0; idx < nb; idx++) {
672-
brcmf_chip_socram_banksize(sysmem, idx, &banksize);
688+
brcmf_chip_socram_banksize(sysmem, idx + nrb, &banksize);
673689
memsize += banksize;
674690
}
675691

0 commit comments

Comments
 (0)