wifi: brcmfmac: add 43439 SDIO ids and initialization
authorMarek Vasut <marex@denx.de>
Sat, 27 Aug 2022 02:49:03 +0000 (04:49 +0200)
committerKalle Valo <kvalo@kernel.org>
Wed, 7 Sep 2022 08:01:15 +0000 (11:01 +0300)
Add HW and SDIO ids for use with the muRata 1YN (Cypress CYW43439).
Add the firmware mapping structures for the CYW43439 chipset.
The 43439 needs some things setup similar to the 43430 chipset.

Signed-off-by: Marek Vasut <marex@denx.de>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20220827024903.617294-1-marex@denx.de
drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.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 d639bb8b51ae42ac8c90ad0451394817f7f20c73..d0daef674e7289a7c4c397afe9eec81b9e357211 100644 (file)
@@ -983,6 +983,7 @@ static const struct sdio_device_id brcmf_sdmmc_ids[] = {
        BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4359),
        BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_4373),
        BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_43012),
+       BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_43439),
        BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_43752),
        BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_89359),
        { /* end: all zeroes */ }
index 4ec7773b690645daef40307e7d5d06c95da47c5d..23295fceb06213e7e66835a35606030cc4975abd 100644 (file)
@@ -641,6 +641,7 @@ static void brcmf_chip_socram_ramsize(struct brcmf_core_priv *sr, u32 *ramsize,
                        *srsize = (32 * 1024);
                break;
        case BRCM_CC_43430_CHIP_ID:
+       case CY_CC_43439_CHIP_ID:
                /* assume sr for now as we can not check
                 * firmware sr capability at this point.
                 */
@@ -1258,7 +1259,8 @@ brcmf_chip_cm3_set_passive(struct brcmf_chip_priv *chip)
        brcmf_chip_resetcore(core, 0, 0, 0);
 
        /* disable bank #3 remap for this device */
-       if (chip->pub.chip == BRCM_CC_43430_CHIP_ID) {
+       if (chip->pub.chip == BRCM_CC_43430_CHIP_ID ||
+           chip->pub.chip == CY_CC_43439_CHIP_ID) {
                sr = container_of(core, struct brcmf_core_priv, pub);
                brcmf_chip_core_write32(sr, SOCRAMREGOFFS(bankidx), 3);
                brcmf_chip_core_write32(sr, SOCRAMREGOFFS(bankpda), 0);
@@ -1416,6 +1418,7 @@ bool brcmf_chip_sr_capable(struct brcmf_chip *pub)
                reg = chip->ops->read32(chip->ctx, addr);
                return (reg & pmu_cc3_mask) != 0;
        case BRCM_CC_43430_CHIP_ID:
+       case CY_CC_43439_CHIP_ID:
                addr = CORE_CC_REG(base, sr_control1);
                reg = chip->ops->read32(chip->ctx, addr);
                return reg != 0;
index d2ac844e1e9ffe3f1111eaf945903a3f1e7dfe24..2c2f3e026c136672f714605bf2f632c6953052f5 100644 (file)
@@ -249,7 +249,8 @@ void brcmf_feat_attach(struct brcmf_pub *drvr)
        memset(&gscan_cfg, 0, sizeof(gscan_cfg));
        if (drvr->bus_if->chip != BRCM_CC_43430_CHIP_ID &&
            drvr->bus_if->chip != BRCM_CC_4345_CHIP_ID &&
-           drvr->bus_if->chip != BRCM_CC_43454_CHIP_ID)
+           drvr->bus_if->chip != BRCM_CC_43454_CHIP_ID &&
+           drvr->bus_if->chip != CY_CC_43439_CHIP_ID)
                brcmf_feat_iovar_data_set(ifp, BRCMF_FEAT_GSCAN,
                                          "pfn_gscan_cfg",
                                          &gscan_cfg, sizeof(gscan_cfg));
index 8968809399c7a4392cfec5e7a70371799f9c8e03..d7072009c47f188eb1ef085afde59207355e7c50 100644 (file)
@@ -618,6 +618,7 @@ BRCMF_FW_DEF(43430A0, "brcmfmac43430a0-sdio");
 /* Note the names are not postfixed with a1 for backward compatibility */
 BRCMF_FW_CLM_DEF(43430A1, "brcmfmac43430-sdio");
 BRCMF_FW_DEF(43430B0, "brcmfmac43430b0-sdio");
+BRCMF_FW_CLM_DEF(43439, "brcmfmac43439-sdio");
 BRCMF_FW_CLM_DEF(43455, "brcmfmac43455-sdio");
 BRCMF_FW_DEF(43456, "brcmfmac43456-sdio");
 BRCMF_FW_CLM_DEF(4354, "brcmfmac4354-sdio");
@@ -657,6 +658,7 @@ static const struct brcmf_firmware_mapping brcmf_sdio_fwnames[] = {
        BRCMF_FW_ENTRY(BRCM_CC_4359_CHIP_ID, 0xFFFFFFFF, 4359),
        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),
        BRCMF_FW_ENTRY(CY_CC_43752_CHIP_ID, 0xFFFFFFFF, 43752)
 };
 
index ed0b707f0cdfc4ac5e00fc40a5950db745160e1a..1f225cdac9bdd1e19cb63c238fdf6e19b835028e 100644 (file)
@@ -53,6 +53,7 @@
 #define BRCM_CC_4371_CHIP_ID           0x4371
 #define CY_CC_4373_CHIP_ID             0x4373
 #define CY_CC_43012_CHIP_ID            43012
+#define CY_CC_43439_CHIP_ID            43439
 #define CY_CC_43752_CHIP_ID            43752
 
 /* USB Device IDs */
index 53f0efa0bccf15fe2fa73fda0c8a41fd4beae418..74f9d9a6d33076dc6c000b32b123355c745896ab 100644 (file)
@@ -74,6 +74,7 @@
 #define SDIO_DEVICE_ID_BROADCOM_43362          0xa962
 #define SDIO_DEVICE_ID_BROADCOM_43364          0xa9a4
 #define SDIO_DEVICE_ID_BROADCOM_43430          0xa9a6
+#define SDIO_DEVICE_ID_BROADCOM_CYPRESS_43439  0xa9af
 #define SDIO_DEVICE_ID_BROADCOM_43455          0xa9bf
 #define SDIO_DEVICE_ID_BROADCOM_CYPRESS_43752  0xaae8