On 1/19/2022 1:36 PM, Arend van Spriel wrote:
On 1/4/2022 8:26 AM, Hector Martin wrote:BCM4387 has trailing odd-sized blocks as part of TCM which have their size described as a multiple of 1024 instead of 8192. Handle this so we can compute the TCM size properly.
So that is the deal. Wish someone over here told me about that :-p Gave my blessing already, but do have some remarks.
Reviewed-by: Arend van Spriel <arend.vanspriel@xxxxxxxxxxxx>Reviewed-by: Linus Walleij <linus.walleij@xxxxxxxxxx> Signed-off-by: Hector Martin <marcan@xxxxxxxxx> --- .../wireless/broadcom/brcm80211/brcmfmac/chip.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-)diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.cindex 713546cebd5a..cfa93e3ef1a1 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c @@ -212,8 +212,8 @@ struct sbsocramregs { #define ARMCR4_TCBANB_MASK 0xf #define ARMCR4_TCBANB_SHIFT 0 -#define ARMCR4_BSZ_MASK 0x3f -#define ARMCR4_BSZ_MULT 8192
Instead of deleting can we leave it here and...
+#define ARMCR4_BSZ_MASK 0x7f +#define ARMCR4_BLK_1K_MASK 0x200 struct brcmf_core_priv { struct brcmf_core pub;@@ -675,7 +675,8 @@ static u32 brcmf_chip_sysmem_ramsize(struct brcmf_core_priv *sysmem)} /** Return the TCM-RAM size of the ARMCR4 core. */ -static u32 brcmf_chip_tcm_ramsize(struct brcmf_core_priv *cr4) +static u32 brcmf_chip_tcm_ramsize(struct brcmf_chip_priv *ci, + struct brcmf_core_priv *cr4)Not sure why you add ci parameter here. It is not used below or am I overlooking something.{ u32 corecap; u32 memsize = 0;@@ -683,6 +684,7 @@ static u32 brcmf_chip_tcm_ramsize(struct brcmf_core_priv *cr4)u32 nbb; u32 totb; u32 bxinfo; + u32 blksize; u32 idx; corecap = brcmf_chip_core_read32(cr4, ARMCR4_CAP);@@ -694,7 +696,12 @@ static u32 brcmf_chip_tcm_ramsize(struct brcmf_core_priv *cr4)for (idx = 0; idx < totb; idx++) { brcmf_chip_core_write32(cr4, ARMCR4_BANKIDX, idx); bxinfo = brcmf_chip_core_read32(cr4, ARMCR4_BANKINFO); - memsize += ((bxinfo & ARMCR4_BSZ_MASK) + 1) * ARMCR4_BSZ_MULT; + if (bxinfo & ARMCR4_BLK_1K_MASK) + blksize = 1024; + else + blksize = 8192;
... do following here instead: blksize = 8192; if (bxinfo & ARMCR4_BLK_1K_MASK) blksize >>= 3; [not sure if mailreader is screwing with indentation or what]
+ + memsize += ((bxinfo & ARMCR4_BSZ_MASK) + 1) * blksize; } return memsize;
Attachment:
smime.p7s
Description: S/MIME Cryptographic Signature