From c4a6194d4954bcfdc066355e1e931b3091637ea0 Mon Sep 17 00:00:00 2001 From: Pranav Vinayak Wagh Date: Wed, 14 Jun 2023 00:52:44 -0500 Subject: [PATCH 198/296] brcmfmac: support 43022 Cypress Vendor and Device ID Earlier 43022 used following vendor and device ID: Broadcom VID :0x02d0 Device ID :0xa80e Now 43022 should support and use Cypress VID/DID: Cypress VID :0x04b4 Device ID :0xbd3f To keep backward compatibility with 43022 chips already OTP flashed with older VID/DID, adding new device ID support separately. Signed-off-by: Pranav Vinayak Wagh --- drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 1 + drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 6 +++++- include/linux/mmc/sdio_ids.h | 2 ++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c index 67da7efbe2e2..9a221326ae3e 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c @@ -1016,6 +1016,7 @@ static const struct sdio_device_id brcmf_sdmmc_ids[] = { CYW_SDIO_DEVICE(SDIO_DEVICE_ID_CYPRESS_54594, CYW), CYW_SDIO_DEVICE(SDIO_DEVICE_ID_CYPRESS_55572, CYW), CYW_SDIO_DEVICE(SDIO_DEVICE_ID_CYPRESS_55500, CYW), + CYW_SDIO_DEVICE(SDIO_DEVICE_ID_CYPRESS_43022, CYW), { /* end: all zeroes */ } }; MODULE_DEVICE_TABLE(sdio, brcmf_sdmmc_ids); diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c index ddfc29949f73..7c067a332861 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c @@ -4970,6 +4970,8 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err, CY_4373_MESBUSYCTRL, &err); break; case SDIO_DEVICE_ID_BROADCOM_CYPRESS_43012: + case SDIO_DEVICE_ID_BROADCOM_CYPRESS_43022: + case SDIO_DEVICE_ID_CYPRESS_43022: brcmf_dbg(INFO, "set F2 watermark to 0x%x*4 bytes\n", CY_43012_F2_WATERMARK); brcmf_sdiod_writeb(sdiod, SBSDIO_WATERMARK, @@ -5121,7 +5123,9 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err, } /* Register for ULP events */ - if (sdiod->func1->device == SDIO_DEVICE_ID_BROADCOM_CYPRESS_43012) + if (sdiod->func1->device == SDIO_DEVICE_ID_BROADCOM_CYPRESS_43012 || + sdiod->func1->device == SDIO_DEVICE_ID_BROADCOM_CYPRESS_43022 || + sdiod->func1->device == SDIO_DEVICE_ID_CYPRESS_43022) brcmf_fweh_register(bus_if->drvr, BRCMF_E_ULP, brcmf_ulp_event_notify); diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h index 55d844a54f8e..baff896af2bb 100644 --- a/include/linux/mmc/sdio_ids.h +++ b/include/linux/mmc/sdio_ids.h @@ -69,6 +69,7 @@ #define SDIO_DEVICE_ID_BROADCOM_CYPRESS_43439 0xa9af #define SDIO_DEVICE_ID_BROADCOM_CYPRESS_4373 0x4373 #define SDIO_DEVICE_ID_BROADCOM_CYPRESS_43012 0xa804 +#define SDIO_DEVICE_ID_BROADCOM_CYPRESS_43022 0xa80e #define SDIO_DEVICE_ID_BROADCOM_43143 0xa887 #define SDIO_DEVICE_ID_BROADCOM_43340 0xa94c #define SDIO_DEVICE_ID_BROADCOM_43341 0xa94d @@ -86,6 +87,7 @@ #define SDIO_DEVICE_ID_CYPRESS_43439 0xbd3d #define SDIO_DEVICE_ID_CYPRESS_55572 0xbd31 #define SDIO_DEVICE_ID_CYPRESS_55500 0xbd3e +#define SDIO_DEVICE_ID_CYPRESS_43022 0xbd3f #define SDIO_VENDOR_ID_MARVELL 0x02df #define SDIO_DEVICE_ID_MARVELL_LIBERTAS 0x9103 -- 2.25.1