On 07/02, Fabio Estevam wrote: > Add the SDIO ID and firmware matching for the SDIO 43751 device. > > Based on the previous work from Marc Gonzalez <mgonzalez@xxxxxxxxxx>. > > 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@xxxxxxxxx> > --- > drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 1 + > drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 2 ++ > drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 3 +++ > drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h | 1 + > include/linux/mmc/sdio_ids.h | 1 + > 5 files changed, 8 insertions(+) > > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c > index 6bc107476a2a..982b560a516a 100644 > --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c > +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c > @@ -998,6 +998,7 @@ static const struct sdio_device_id brcmf_sdmmc_ids[] = { > BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4359, 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_43751, CYW), Infineon/Cypress is not the vendor for this 43751 chip and so has not released any firmware binary for it. Kindly fix the firmware vendor ID here, as it is not appropriate to introduce this WLAN chip with firmware vendor ID as "CYW". We would suggest you to find who is the actual vendor for this WLAN chip and use the respective firmware vendor ID here. > BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_43752, CYW), Also we are not the vendor for the other chip 43752 which is already listed here with CYW firmware vendor ID. We will send a patch to remove 43752 from the list of Infineon/Cypress supported WLAN chips. > BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_89359, CYW), > CYW_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_43439, CYW), > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c > index 2ef92ef25517..f0f39fb68f82 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_43751_CHIP_ID: > case CY_CC_43752_CHIP_ID: > case BRCM_CC_4377_CHIP_ID: > return 0x170000; > @@ -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 CY_CC_43751_CHIP_ID: c> case CY_CC_43752_CHIP_ID: > case CY_CC_43012_CHIP_ID: > addr = CORE_CC_REG(pmu->base, retention_ctl); > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c > index cf26ab15ee0c..49b8b4ce0c6c 100644 > --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c > +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c > @@ -657,6 +657,7 @@ 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_43751_CHIP_ID, 0xFFFFFFFF, 43752), > BRCMF_FW_ENTRY(CY_CC_43752_CHIP_ID, 0xFFFFFFFF, 43752) > }; > > @@ -3425,6 +3426,7 @@ static int brcmf_sdio_download_firmware(struct brcmf_sdio *bus, > static bool brcmf_sdio_aos_no_decode(struct brcmf_sdio *bus) > { > if (bus->ci->chip == CY_CC_43012_CHIP_ID || > + bus->ci->chip == CY_CC_43751_CHIP_ID || > bus->ci->chip == CY_CC_43752_CHIP_ID) > return true; > else > @@ -4276,6 +4278,7 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err, > > switch (sdiod->func1->device) { > case SDIO_DEVICE_ID_BROADCOM_CYPRESS_4373: > + case SDIO_DEVICE_ID_BROADCOM_CYPRESS_43751: > case SDIO_DEVICE_ID_BROADCOM_CYPRESS_43752: > brcmf_dbg(INFO, "set F2 watermark to 0x%x*4 bytes\n", > CY_4373_F2_WATERMARK); > 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 c1e22c589d85..8975db60ac23 100644 > --- a/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h > +++ b/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h > @@ -59,6 +59,7 @@ > #define CY_CC_4373_CHIP_ID 0x4373 > #define CY_CC_43012_CHIP_ID 43012 > #define CY_CC_43439_CHIP_ID 43439 > +#define CY_CC_43751_CHIP_ID 43751 > #define CY_CC_43752_CHIP_ID 43752 > > /* USB Device IDs */ > diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h > index 7cddfdac2f57..bc94e373566b 100644 > --- a/include/linux/mmc/sdio_ids.h > +++ b/include/linux/mmc/sdio_ids.h > @@ -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_CYPRESS_43751 0xaae7 > #define SDIO_DEVICE_ID_BROADCOM_CYPRESS_43752 0xaae8 > > #define SDIO_VENDOR_ID_CYPRESS 0x04b4 > -- > 2.34.1