wifi: brcmfmac: pcie: Add IDs/properties for BCM4378
authorHector Martin <marcan@marcan.st>
Fri, 16 Sep 2022 16:03:17 +0000 (17:03 +0100)
committerKalle Valo <kvalo@kernel.org>
Mon, 19 Sep 2022 09:59:35 +0000 (12:59 +0300)
This chip is present on Apple M1 (t8103) platforms:

* atlantisb (apple,j274): Mac mini (M1, 2020)
* honshu    (apple,j293): MacBook Pro (13-inch, M1, 2020)
* shikoku   (apple,j313): MacBook Air (M1, 2020)
* capri     (apple,j456): iMac (24-inch, 4x USB-C, M1, 2020)
* santorini (apple,j457): iMac (24-inch, 2x USB-C, M1, 2020)

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Hector Martin <marcan@marcan.st>
Reviewed-by: Alvin Šipraga <alsi@bang-olufsen.dk>
Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/E1oZDoD-0077ax-AI@rmk-PC.armlinux.org.uk
drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h

index 23295fceb06213e7e66835a35606030cc4975abd..3026166a56c17224643a623702bac192351386b6 100644 (file)
@@ -733,6 +733,8 @@ static u32 brcmf_chip_tcm_rambase(struct brcmf_chip_priv *ci)
                return 0x160000;
        case CY_CC_43752_CHIP_ID:
                return 0x170000;
+       case BRCM_CC_4378_CHIP_ID:
+               return 0x352000;
        default:
                brcmf_err("unknown chip: %s\n", ci->pub.name);
                break;
index 36fc643af08676c531997a544c6897b16b751e0d..f98641bb1528ec0f249264c73f3191607efa69cd 100644 (file)
@@ -59,6 +59,7 @@ BRCMF_FW_DEF(4365C, "brcmfmac4365c-pcie");
 BRCMF_FW_DEF(4366B, "brcmfmac4366b-pcie");
 BRCMF_FW_DEF(4366C, "brcmfmac4366c-pcie");
 BRCMF_FW_DEF(4371, "brcmfmac4371-pcie");
+BRCMF_FW_CLM_DEF(4378B1, "brcmfmac4378b1-pcie");
 
 /* firmware config files */
 MODULE_FIRMWARE(BRCMF_FW_DEFAULT_PATH "brcmfmac*-pcie.txt");
@@ -88,6 +89,7 @@ static const struct brcmf_firmware_mapping brcmf_pcie_fwnames[] = {
        BRCMF_FW_ENTRY(BRCM_CC_43664_CHIP_ID, 0xFFFFFFF0, 4366C),
        BRCMF_FW_ENTRY(BRCM_CC_43666_CHIP_ID, 0xFFFFFFF0, 4366C),
        BRCMF_FW_ENTRY(BRCM_CC_4371_CHIP_ID, 0xFFFFFFFF, 4371),
+       BRCMF_FW_ENTRY(BRCM_CC_4378_CHIP_ID, 0xFFFFFFFF, 4378B1), /* revision ID 3 */
 };
 
 #define BRCMF_PCIE_FW_UP_TIMEOUT               5000 /* msec */
@@ -1970,6 +1972,11 @@ static int brcmf_pcie_read_otp(struct brcmf_pciedev_info *devinfo)
        int ret;
 
        switch (devinfo->ci->chip) {
+       case BRCM_CC_4378_CHIP_ID:
+               coreid = BCMA_CORE_GCI;
+               base = 0x1120;
+               words = 0x170;
+               break;
        default:
                /* OTP not supported on this chip */
                return 0;
@@ -2457,6 +2464,7 @@ static const struct pci_device_id brcmf_pcie_devid_table[] = {
        BRCMF_PCIE_DEVICE(BRCM_PCIE_4366_2G_DEVICE_ID),
        BRCMF_PCIE_DEVICE(BRCM_PCIE_4366_5G_DEVICE_ID),
        BRCMF_PCIE_DEVICE(BRCM_PCIE_4371_DEVICE_ID),
+       BRCMF_PCIE_DEVICE(BRCM_PCIE_4378_DEVICE_ID),
        { /* end: all zeroes */ }
 };
 
index 1f225cdac9bdd1e19cb63c238fdf6e19b835028e..1003f123ec2539b689f8bb48bfb30476ea2676c0 100644 (file)
@@ -51,6 +51,7 @@
 #define BRCM_CC_43664_CHIP_ID          43664
 #define BRCM_CC_43666_CHIP_ID          43666
 #define BRCM_CC_4371_CHIP_ID           0x4371
+#define BRCM_CC_4378_CHIP_ID           0x4378
 #define CY_CC_4373_CHIP_ID             0x4373
 #define CY_CC_43012_CHIP_ID            43012
 #define CY_CC_43439_CHIP_ID            43439
@@ -88,6 +89,7 @@
 #define BRCM_PCIE_4366_2G_DEVICE_ID    0x43c4
 #define BRCM_PCIE_4366_5G_DEVICE_ID    0x43c5
 #define BRCM_PCIE_4371_DEVICE_ID       0x440d
+#define BRCM_PCIE_4378_DEVICE_ID       0x4425
 
 
 /* brcmsmac IDs */