#define        ARMCR4_TCBANB_MASK      0xf
 #define        ARMCR4_TCBANB_SHIFT     0
 
-#define        ARMCR4_BSZ_MASK         0x3f
+#define        ARMCR4_BSZ_MASK         0x7f
 #define        ARMCR4_BSZ_MULT         8192
+#define        ARMCR4_BLK_1K_MASK      0x200
 
 struct brcmf_core_priv {
        struct brcmf_core pub;
        u32 nbb;
        u32 totb;
        u32 bxinfo;
+       u32 blksize;
        u32 idx;
 
        corecap = brcmf_chip_core_read32(cr4, ARMCR4_CAP);
        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;
+               blksize = ARMCR4_BSZ_MULT;
+               if (bxinfo & ARMCR4_BLK_1K_MASK)
+                       blksize >>= 3;
+
+               memsize += ((bxinfo & ARMCR4_BSZ_MASK) + 1) * blksize;
        }
 
        return memsize;