]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: brcmfmac: Add support for the SDIO 43751 device
authorFabio Estevam <festevam@gmail.com>
Sat, 12 Jul 2025 21:53:07 +0000 (18:53 -0300)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 18 Jul 2025 12:14:24 +0000 (14:14 +0200)
Add the SDIO ID and firmware matching for the 43751 device.

Based on the previous work from Marc Gonzalez <mgonzalez@freebox.fr>.

Tested on an i.MX6DL board connected to an AP6398SV chip with the
brcmfmac43752-sdio.bin firmware taken from:

https://source.puri.sm/Librem5/firmware-brcm43752-nonfree

Signed-off-by: Fabio Estevam <festevam@gmail.com>
Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>>
Link: https://patch.msgid.link/20250712215307.1310802-1-festevam@gmail.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h
include/linux/mmc/sdio_ids.h

index 6bc107476a2a344bf8df01d4b4b56d194587475a..8ab7d1e34a6e14d1a619b6b112fe6c1ff335c675 100644 (file)
@@ -996,6 +996,7 @@ static const struct sdio_device_id brcmf_sdmmc_ids[] = {
        BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4354, WCC),
        BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4356, WCC),
        BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4359, WCC),
+       BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43751, WCC),
        BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_4373, CYW),
        BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_43012, CYW),
        BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_43752, CYW),
index 2ef92ef25517e8e90ea12e4d2c8b86ed66a6e4dd..9074ab49e8068597e3f64de5bf545f076aa62e6b 100644 (file)
@@ -739,6 +739,7 @@ static u32 brcmf_chip_tcm_rambase(struct brcmf_chip_priv *ci)
        case CY_CC_4373_CHIP_ID:
                return 0x160000;
        case CY_CC_43752_CHIP_ID:
+       case BRCM_CC_43751_CHIP_ID:
        case BRCM_CC_4377_CHIP_ID:
                return 0x170000;
        case BRCM_CC_4378_CHIP_ID:
@@ -1450,6 +1451,7 @@ bool brcmf_chip_sr_capable(struct brcmf_chip *pub)
                reg = chip->ops->read32(chip->ctx, addr);
                return (reg & CC_SR_CTL0_ENABLE_MASK) != 0;
        case BRCM_CC_4359_CHIP_ID:
+       case BRCM_CC_43751_CHIP_ID:
        case CY_CC_43752_CHIP_ID:
        case CY_CC_43012_CHIP_ID:
                addr = CORE_CC_REG(pmu->base, retention_ctl);
index cf26ab15ee0c806b8e95eace86ce3a033526df98..8a0bad5119a0ddac68180ea1d527b1e7d22d6649 100644 (file)
@@ -654,6 +654,7 @@ static const struct brcmf_firmware_mapping brcmf_sdio_fwnames[] = {
        BRCMF_FW_ENTRY(BRCM_CC_4354_CHIP_ID, 0xFFFFFFFF, 4354),
        BRCMF_FW_ENTRY(BRCM_CC_4356_CHIP_ID, 0xFFFFFFFF, 4356),
        BRCMF_FW_ENTRY(BRCM_CC_4359_CHIP_ID, 0xFFFFFFFF, 4359),
+       BRCMF_FW_ENTRY(BRCM_CC_43751_CHIP_ID, 0xFFFFFFFF, 43752),
        BRCMF_FW_ENTRY(CY_CC_4373_CHIP_ID, 0xFFFFFFFF, 4373),
        BRCMF_FW_ENTRY(CY_CC_43012_CHIP_ID, 0xFFFFFFFF, 43012),
        BRCMF_FW_ENTRY(CY_CC_43439_CHIP_ID, 0xFFFFFFFF, 43439),
@@ -3424,7 +3425,8 @@ err:
 
 static bool brcmf_sdio_aos_no_decode(struct brcmf_sdio *bus)
 {
-       if (bus->ci->chip == CY_CC_43012_CHIP_ID ||
+       if (bus->ci->chip == BRCM_CC_43751_CHIP_ID ||
+           bus->ci->chip == CY_CC_43012_CHIP_ID ||
            bus->ci->chip == CY_CC_43752_CHIP_ID)
                return true;
        else
@@ -4275,6 +4277,7 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err,
                                   bus->hostintmask, NULL);
 
                switch (sdiod->func1->device) {
+               case SDIO_DEVICE_ID_BROADCOM_43751:
                case SDIO_DEVICE_ID_BROADCOM_CYPRESS_4373:
                case SDIO_DEVICE_ID_BROADCOM_CYPRESS_43752:
                        brcmf_dbg(INFO, "set F2 watermark to 0x%x*4 bytes\n",
index c1e22c589d85eb1c13b01f30eff39d2aa24da0a1..6564616a57df12a93bef56ba38c4d485994629d3 100644 (file)
@@ -52,6 +52,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_43751_CHIP_ID          43751
 #define BRCM_CC_43752_CHIP_ID          43752
 #define BRCM_CC_4377_CHIP_ID           0x4377
 #define BRCM_CC_4378_CHIP_ID           0x4378
index 7cddfdac2f5762df5150b96c70efacecd527a81e..fe3d6d98f8da417401faf2feb986da37b4c3e853 100644 (file)
@@ -76,6 +76,7 @@
 #define SDIO_DEVICE_ID_BROADCOM_43430          0xa9a6
 #define SDIO_DEVICE_ID_BROADCOM_43439          0xa9af
 #define SDIO_DEVICE_ID_BROADCOM_43455          0xa9bf
+#define SDIO_DEVICE_ID_BROADCOM_43751          0xaae7
 #define SDIO_DEVICE_ID_BROADCOM_CYPRESS_43752  0xaae8
 
 #define SDIO_VENDOR_ID_CYPRESS                 0x04b4