From cc4418e2f8c1e9a8f0cd02bfabaa712836672d78 Mon Sep 17 00:00:00 2001 From: Brendan Szymanski Date: Sun, 12 Jul 2026 22:59:40 -0400 Subject: [PATCH] brcmfmac: add BCM43711 chip and firmware support with named constants Add proper named constants for the Synaptics SYN43711 (AP6611S) WiFi chip used on Orange Pi 5 Ultra: - SDIO_VENDOR_ID_SYNAPTICS (0x06cb) in sdio_ids.h - SDIO_DEVICE_ID_BROADCOM_CYPRESS_43711 (0xaabf) in sdio_ids.h - CY_CC_43711_CHIP_ID (43711) in brcm_hw_ids.h Driver changes: - bcmsdh.c: bind both Broadcom (0x02d0) and Synaptics (0x06cb) vendors - chip.c: add RAM base 0x170000 (from bcmdhd CR4_43711_RAM_BASE) - sdio.c: firmware mapping entry for brcmfmac43711-sdio --- drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 6 +++--- drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 1 + drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 3 ++- .../net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h | 2 ++ include/linux/mmc/sdio_ids.h | 2 ++ 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c index 2b4cbc55c..d5e07147c 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c @@ -1000,9 +1000,9 @@ static const struct sdio_device_id brcmf_sdmmc_ids[] = { BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_43012, CYW), BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_43752, CYW), BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_89359, CYW), - {SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, 0xaabf), - .driver_data = BRCMF_FWVENDOR_CYW}, - {SDIO_DEVICE(0x06cb, 0xaabf), + BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_43711, CYW), + {SDIO_DEVICE(SDIO_VENDOR_ID_SYNAPTICS, + SDIO_DEVICE_ID_BROADCOM_CYPRESS_43711), .driver_data = BRCMF_FWVENDOR_CYW}, CYW_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_43439, CYW), { /* end: all zeroes */ } diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c index 2ef92ef25..8ade7fdf1 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c @@ -738,6 +738,7 @@ static u32 brcmf_chip_tcm_rambase(struct brcmf_chip_priv *ci) case BRCM_CC_4364_CHIP_ID: case CY_CC_4373_CHIP_ID: return 0x160000; + case CY_CC_43711_CHIP_ID: /* BCM43711 / SYN43711 (AP6611S) */ case CY_CC_43752_CHIP_ID: case BRCM_CC_4377_CHIP_ID: return 0x170000; diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c index 93727b9a5..d1f8e7167 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c @@ -657,7 +657,8 @@ static const struct brcmf_firmware_mapping brcmf_sdio_fwnames[] = { 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) + BRCMF_FW_ENTRY(CY_CC_43752_CHIP_ID, 0xFFFFFFFF, 43752), + BRCMF_FW_ENTRY(CY_CC_43711_CHIP_ID, 0xFFFFFFFF, 43711) }; #define TXCTL_CREDITS 2 diff --git a/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h b/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h index c1e22c589..7cece6b4f 100644 --- a/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h +++ b/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h @@ -60,6 +60,8 @@ #define CY_CC_43012_CHIP_ID 43012 #define CY_CC_43439_CHIP_ID 43439 #define CY_CC_43752_CHIP_ID 43752 +/* Synaptics SYN43711 (AP6611S) — chip ID 43711 = 0xaabf */ +#define CY_CC_43711_CHIP_ID 43711 /* USB Device IDs */ #define BRCM_USB_43143_DEVICE_ID 0xbd1e diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h index 7cddfdac2..4c5c53f74 100644 --- a/include/linux/mmc/sdio_ids.h +++ b/include/linux/mmc/sdio_ids.h @@ -54,6 +54,7 @@ #define SDIO_DEVICE_ID_ATHEROS_QCA9377 0x0701 #define SDIO_VENDOR_ID_BROADCOM 0x02d0 +#define SDIO_VENDOR_ID_SYNAPTICS 0x06cb #define SDIO_DEVICE_ID_BROADCOM_NINTENDO_WII 0x044b #define SDIO_DEVICE_ID_BROADCOM_43241 0x4324 #define SDIO_DEVICE_ID_BROADCOM_4329 0x4329 @@ -76,6 +77,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_CYPRESS_43711 0xaabf #define SDIO_DEVICE_ID_BROADCOM_CYPRESS_43752 0xaae8 #define SDIO_VENDOR_ID_CYPRESS 0x04b4