Search Linux Wireless

Re: [PATCH] wifi: brcmfmac: Add support for the SDIO 43751 device

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux