diff options
Diffstat (limited to 'package/kernel/mac80211/patches/370-0014-brcmfmac-Add-support-for-the-BCM4365-and-BCM4366-PCI.patch')
-rw-r--r-- | package/kernel/mac80211/patches/370-0014-brcmfmac-Add-support-for-the-BCM4365-and-BCM4366-PCI.patch | 277 |
1 files changed, 0 insertions, 277 deletions
diff --git a/package/kernel/mac80211/patches/370-0014-brcmfmac-Add-support-for-the-BCM4365-and-BCM4366-PCI.patch b/package/kernel/mac80211/patches/370-0014-brcmfmac-Add-support-for-the-BCM4365-and-BCM4366-PCI.patch deleted file mode 100644 index d0bbf2a878..0000000000 --- a/package/kernel/mac80211/patches/370-0014-brcmfmac-Add-support-for-the-BCM4365-and-BCM4366-PCI.patch +++ /dev/null @@ -1,277 +0,0 @@ -From: Hante Meuleman <meuleman@broadcom.com> -Date: Fri, 18 Sep 2015 22:08:17 +0200 -Subject: [PATCH] brcmfmac: Add support for the BCM4365 and BCM4366 PCIE - devices. - -This patch adds support for the BCM4365 and BCM4366 11ac Wave2 -PCIE devices. - -Reviewed-by: Arend Van Spriel <arend@broadcom.com> -Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com> -Signed-off-by: Hante Meuleman <meuleman@broadcom.com> -Signed-off-by: Arend van Spriel <arend@broadcom.com> -Signed-off-by: Kalle Valo <kvalo@codeaurora.org> ---- - ---- a/drivers/net/wireless/brcm80211/brcmfmac/chip.c -+++ b/drivers/net/wireless/brcm80211/brcmfmac/chip.c -@@ -208,6 +208,7 @@ struct sbsocramregs { - }; - - #define SOCRAMREGOFFS(_f) offsetof(struct sbsocramregs, _f) -+#define SYSMEMREGOFFS(_f) offsetof(struct sbsocramregs, _f) - - #define ARMCR4_CAP (0x04) - #define ARMCR4_BANKIDX (0x40) -@@ -516,6 +517,9 @@ static int brcmf_chip_cores_check(struct - case BCMA_CORE_ARM_CR4: - cpu_found = true; - break; -+ case BCMA_CORE_ARM_CA7: -+ cpu_found = true; -+ break; - default: - break; - } -@@ -614,6 +618,29 @@ static void brcmf_chip_socram_ramsize(st - } - } - -+/** Return the SYS MEM size */ -+static u32 brcmf_chip_sysmem_ramsize(struct brcmf_core_priv *sysmem) -+{ -+ u32 memsize = 0; -+ u32 coreinfo; -+ u32 idx; -+ u32 nb; -+ u32 banksize; -+ -+ if (!brcmf_chip_iscoreup(&sysmem->pub)) -+ brcmf_chip_resetcore(&sysmem->pub, 0, 0, 0); -+ -+ coreinfo = brcmf_chip_core_read32(sysmem, SYSMEMREGOFFS(coreinfo)); -+ nb = (coreinfo & SRCI_SRNB_MASK) >> SRCI_SRNB_SHIFT; -+ -+ for (idx = 0; idx < nb; idx++) { -+ brcmf_chip_socram_banksize(sysmem, idx, &banksize); -+ memsize += banksize; -+ } -+ -+ return memsize; -+} -+ - /** Return the TCM-RAM size of the ARMCR4 core. */ - static u32 brcmf_chip_tcm_ramsize(struct brcmf_core_priv *cr4) - { -@@ -656,6 +683,9 @@ static u32 brcmf_chip_tcm_rambase(struct - case BRCM_CC_4358_CHIP_ID: - case BRCM_CC_43602_CHIP_ID: - return 0x180000; -+ case BRCM_CC_4365_CHIP_ID: -+ case BRCM_CC_4366_CHIP_ID: -+ return 0x200000; - default: - brcmf_err("unknown chip: %s\n", ci->pub.name); - break; -@@ -678,10 +708,28 @@ static int brcmf_chip_get_raminfo(struct - return -EINVAL; - } - } else { -- mem = brcmf_chip_get_core(&ci->pub, BCMA_CORE_INTERNAL_MEM); -- mem_core = container_of(mem, struct brcmf_core_priv, pub); -- brcmf_chip_socram_ramsize(mem_core, &ci->pub.ramsize, -- &ci->pub.srsize); -+ mem = brcmf_chip_get_core(&ci->pub, BCMA_CORE_SYS_MEM); -+ if (mem) { -+ mem_core = container_of(mem, struct brcmf_core_priv, -+ pub); -+ ci->pub.ramsize = brcmf_chip_sysmem_ramsize(mem_core); -+ ci->pub.rambase = brcmf_chip_tcm_rambase(ci); -+ if (!ci->pub.rambase) { -+ brcmf_err("RAM base not provided with ARM CA7 core\n"); -+ return -EINVAL; -+ } -+ } else { -+ mem = brcmf_chip_get_core(&ci->pub, -+ BCMA_CORE_INTERNAL_MEM); -+ if (!mem) { -+ brcmf_err("No memory cores found\n"); -+ return -ENOMEM; -+ } -+ mem_core = container_of(mem, struct brcmf_core_priv, -+ pub); -+ brcmf_chip_socram_ramsize(mem_core, &ci->pub.ramsize, -+ &ci->pub.srsize); -+ } - } - brcmf_dbg(INFO, "RAM: base=0x%x size=%d (0x%x) sr=%d (0x%x)\n", - ci->pub.rambase, ci->pub.ramsize, ci->pub.ramsize, -@@ -924,7 +972,7 @@ static int brcmf_chip_recognition(struct - static void brcmf_chip_disable_arm(struct brcmf_chip_priv *chip, u16 id) - { - struct brcmf_core *core; -- struct brcmf_core_priv *cr4; -+ struct brcmf_core_priv *cpu; - u32 val; - - -@@ -937,10 +985,11 @@ static void brcmf_chip_disable_arm(struc - brcmf_chip_coredisable(core, 0, 0); - break; - case BCMA_CORE_ARM_CR4: -- cr4 = container_of(core, struct brcmf_core_priv, pub); -+ case BCMA_CORE_ARM_CA7: -+ cpu = container_of(core, struct brcmf_core_priv, pub); - - /* clear all IOCTL bits except HALT bit */ -- val = chip->ops->read32(chip->ctx, cr4->wrapbase + BCMA_IOCTL); -+ val = chip->ops->read32(chip->ctx, cpu->wrapbase + BCMA_IOCTL); - val &= ARMCR4_BCMA_IOCTL_CPUHALT; - brcmf_chip_resetcore(core, val, ARMCR4_BCMA_IOCTL_CPUHALT, - ARMCR4_BCMA_IOCTL_CPUHALT); -@@ -1162,6 +1211,33 @@ static bool brcmf_chip_cr4_set_active(st - return true; - } - -+static inline void -+brcmf_chip_ca7_set_passive(struct brcmf_chip_priv *chip) -+{ -+ struct brcmf_core *core; -+ -+ brcmf_chip_disable_arm(chip, BCMA_CORE_ARM_CA7); -+ -+ core = brcmf_chip_get_core(&chip->pub, BCMA_CORE_80211); -+ brcmf_chip_resetcore(core, D11_BCMA_IOCTL_PHYRESET | -+ D11_BCMA_IOCTL_PHYCLOCKEN, -+ D11_BCMA_IOCTL_PHYCLOCKEN, -+ D11_BCMA_IOCTL_PHYCLOCKEN); -+} -+ -+static bool brcmf_chip_ca7_set_active(struct brcmf_chip_priv *chip, u32 rstvec) -+{ -+ struct brcmf_core *core; -+ -+ chip->ops->activate(chip->ctx, &chip->pub, rstvec); -+ -+ /* restore ARM */ -+ core = brcmf_chip_get_core(&chip->pub, BCMA_CORE_ARM_CA7); -+ brcmf_chip_resetcore(core, ARMCR4_BCMA_IOCTL_CPUHALT, 0, 0); -+ -+ return true; -+} -+ - void brcmf_chip_set_passive(struct brcmf_chip *pub) - { - struct brcmf_chip_priv *chip; -@@ -1175,8 +1251,16 @@ void brcmf_chip_set_passive(struct brcmf - brcmf_chip_cr4_set_passive(chip); - return; - } -- -- brcmf_chip_cm3_set_passive(chip); -+ arm = brcmf_chip_get_core(pub, BCMA_CORE_ARM_CA7); -+ if (arm) { -+ brcmf_chip_ca7_set_passive(chip); -+ return; -+ } -+ arm = brcmf_chip_get_core(pub, BCMA_CORE_ARM_CM3); -+ if (arm) { -+ brcmf_chip_cm3_set_passive(chip); -+ return; -+ } - } - - bool brcmf_chip_set_active(struct brcmf_chip *pub, u32 rstvec) -@@ -1190,8 +1274,14 @@ bool brcmf_chip_set_active(struct brcmf_ - arm = brcmf_chip_get_core(pub, BCMA_CORE_ARM_CR4); - if (arm) - return brcmf_chip_cr4_set_active(chip, rstvec); -+ arm = brcmf_chip_get_core(pub, BCMA_CORE_ARM_CA7); -+ if (arm) -+ return brcmf_chip_ca7_set_active(chip, rstvec); -+ arm = brcmf_chip_get_core(pub, BCMA_CORE_ARM_CM3); -+ if (arm) -+ return brcmf_chip_cm3_set_active(chip); - -- return brcmf_chip_cm3_set_active(chip); -+ return false; - } - - bool brcmf_chip_sr_capable(struct brcmf_chip *pub) ---- a/drivers/net/wireless/brcm80211/brcmfmac/pcie.c -+++ b/drivers/net/wireless/brcm80211/brcmfmac/pcie.c -@@ -55,6 +55,10 @@ enum brcmf_pcie_state { - #define BRCMF_PCIE_43570_NVRAM_NAME "brcm/brcmfmac43570-pcie.txt" - #define BRCMF_PCIE_4358_FW_NAME "brcm/brcmfmac4358-pcie.bin" - #define BRCMF_PCIE_4358_NVRAM_NAME "brcm/brcmfmac4358-pcie.txt" -+#define BRCMF_PCIE_4365_FW_NAME "brcm/brcmfmac4365b-pcie.bin" -+#define BRCMF_PCIE_4365_NVRAM_NAME "brcm/brcmfmac4365b-pcie.txt" -+#define BRCMF_PCIE_4366_FW_NAME "brcm/brcmfmac4366b-pcie.bin" -+#define BRCMF_PCIE_4366_NVRAM_NAME "brcm/brcmfmac4366b-pcie.txt" - - #define BRCMF_PCIE_FW_UP_TIMEOUT 2000 /* msec */ - -@@ -204,6 +208,10 @@ MODULE_FIRMWARE(BRCMF_PCIE_43570_FW_NAME - MODULE_FIRMWARE(BRCMF_PCIE_43570_NVRAM_NAME); - MODULE_FIRMWARE(BRCMF_PCIE_4358_FW_NAME); - MODULE_FIRMWARE(BRCMF_PCIE_4358_NVRAM_NAME); -+MODULE_FIRMWARE(BRCMF_PCIE_4365_FW_NAME); -+MODULE_FIRMWARE(BRCMF_PCIE_4365_NVRAM_NAME); -+MODULE_FIRMWARE(BRCMF_PCIE_4366_FW_NAME); -+MODULE_FIRMWARE(BRCMF_PCIE_4366_NVRAM_NAME); - - - struct brcmf_pcie_console { -@@ -1440,6 +1448,14 @@ static int brcmf_pcie_get_fwnames(struct - fw_name = BRCMF_PCIE_4358_FW_NAME; - nvram_name = BRCMF_PCIE_4358_NVRAM_NAME; - break; -+ case BRCM_CC_4365_CHIP_ID: -+ fw_name = BRCMF_PCIE_4365_FW_NAME; -+ nvram_name = BRCMF_PCIE_4365_NVRAM_NAME; -+ break; -+ case BRCM_CC_4366_CHIP_ID: -+ fw_name = BRCMF_PCIE_4366_FW_NAME; -+ nvram_name = BRCMF_PCIE_4366_NVRAM_NAME; -+ break; - default: - brcmf_err("Unsupported chip 0x%04x\n", devinfo->ci->chip); - return -ENODEV; -@@ -1973,6 +1989,12 @@ static struct pci_device_id brcmf_pcie_d - BRCMF_PCIE_DEVICE(BRCM_PCIE_43602_2G_DEVICE_ID), - BRCMF_PCIE_DEVICE(BRCM_PCIE_43602_5G_DEVICE_ID), - BRCMF_PCIE_DEVICE(BRCM_PCIE_43602_RAW_DEVICE_ID), -+ BRCMF_PCIE_DEVICE(BRCM_PCIE_4365_DEVICE_ID), -+ BRCMF_PCIE_DEVICE(BRCM_PCIE_4365_2G_DEVICE_ID), -+ BRCMF_PCIE_DEVICE(BRCM_PCIE_4365_5G_DEVICE_ID), -+ BRCMF_PCIE_DEVICE(BRCM_PCIE_4366_DEVICE_ID), -+ BRCMF_PCIE_DEVICE(BRCM_PCIE_4366_2G_DEVICE_ID), -+ BRCMF_PCIE_DEVICE(BRCM_PCIE_4366_5G_DEVICE_ID), - { /* end: all zeroes */ } - }; - ---- a/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h -+++ b/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h -@@ -48,6 +48,8 @@ - #define BRCM_CC_43570_CHIP_ID 43570 - #define BRCM_CC_4358_CHIP_ID 0x4358 - #define BRCM_CC_43602_CHIP_ID 43602 -+#define BRCM_CC_4365_CHIP_ID 0x4365 -+#define BRCM_CC_4366_CHIP_ID 0x4366 - - /* USB Device IDs */ - #define BRCM_USB_43143_DEVICE_ID 0xbd1e -@@ -67,6 +69,13 @@ - #define BRCM_PCIE_43602_2G_DEVICE_ID 0x43bb - #define BRCM_PCIE_43602_5G_DEVICE_ID 0x43bc - #define BRCM_PCIE_43602_RAW_DEVICE_ID 43602 -+#define BRCM_PCIE_4365_DEVICE_ID 0x43ca -+#define BRCM_PCIE_4365_2G_DEVICE_ID 0x43cb -+#define BRCM_PCIE_4365_5G_DEVICE_ID 0x43cc -+#define BRCM_PCIE_4366_DEVICE_ID 0x43c3 -+#define BRCM_PCIE_4366_2G_DEVICE_ID 0x43c4 -+#define BRCM_PCIE_4366_5G_DEVICE_ID 0x43c5 -+ - - /* brcmsmac IDs */ - #define BCM4313_D11N2G_ID 0x4727 /* 4313 802.11n 2.4G device */ |