Re: [PATCH wireless-next] wifi: brcmfmac: support CYW54591 PCIE device

Arend Van Spriel <[email protected]> Sun, 20 Jul 2025 16:40:51 +0200
Newsgroups dev.linux.lists.brcm80211,org.kernel.vger.linux-wireless
Message-ID <[email protected]>
On June 24, 2025 11:36:19 AM Ian Lin <[email protected]> wrote:

> From: Double Lo <[email protected]>
>
> CYW54591 is a variant of BCM4355 silicon with the same chipid. In the
> chipid-fwname mapping table, apply chiprev 13 to identify CYW54591.
> Skip reading OTP process for CYW chip since it contains vendor specific
> information which is not common for cypress.

Acked-by: Arend van Spriel <[email protected]>
> Signed-off-by: Double Lo <[email protected]>
> Signed-off-by: Chi-hsien Lin <[email protected]>
> Signed-off-by: Ian Lin <[email protected]>
> ---
> .../broadcom/brcm80211/brcmfmac/pcie.c        | 21 ++++++++++++++-----
> .../broadcom/brcm80211/include/brcm_hw_ids.h  |  1 +
> 2 files changed, 17 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c 
> b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
> index 9747928a3650..6327f4eca500 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
> @@ -71,6 +71,7 @@ BRCMF_FW_CLM_DEF(4377B3, "brcmfmac4377b3-pcie");
> BRCMF_FW_CLM_DEF(4378B1, "brcmfmac4378b1-pcie");
> BRCMF_FW_CLM_DEF(4378B3, "brcmfmac4378b3-pcie");
> BRCMF_FW_CLM_DEF(4387C2, "brcmfmac4387c2-pcie");
> +BRCMF_FW_CLM_DEF(54591, "brcmfmac54591-pcie");
>
> /* firmware config files */
> MODULE_FIRMWARE(BRCMF_FW_DEFAULT_PATH "brcmfmac*-pcie.txt");
> @@ -88,6 +89,7 @@ static const struct brcmf_firmware_mapping 
> brcmf_pcie_fwnames[] = {
>  BRCMF_FW_ENTRY(BRCM_CC_4350_CHIP_ID, 0xFFFFFF00, 4350),
>  BRCMF_FW_ENTRY(BRCM_CC_43525_CHIP_ID, 0xFFFFFFF0, 4365C),
>  BRCMF_FW_ENTRY(BRCM_CC_4355_CHIP_ID, 0x000007FF, 4355),
> + BRCMF_FW_ENTRY(BRCM_CC_4355_CHIP_ID, 0x00002000, 54591),
>  BRCMF_FW_ENTRY(BRCM_CC_4355_CHIP_ID, 0xFFFFF800, 4355C1), /* rev ID 12/C2 
>  seen */
>  BRCMF_FW_ENTRY(BRCM_CC_4356_CHIP_ID, 0xFFFFFFFF, 4356),
>  BRCMF_FW_ENTRY(BRCM_CC_43567_CHIP_ID, 0xFFFFFFFF, 43570),
> @@ -2522,10 +2524,19 @@ brcmf_pcie_probe(struct pci_dev *pdev, const struct 
> pci_device_id *id)
>  if (ret)
>  goto fail_bus;
>
> - ret = brcmf_pcie_read_otp(devinfo);
> - if (ret) {
> - brcmf_err(bus, "failed to parse OTP\n");
> - goto fail_brcmf;
> + /* otp read operation */
> + switch (bus->fwvid) {
> + case BRCMF_FWVENDOR_WCC:
> + case BRCMF_FWVENDOR_BCA:
> + ret = brcmf_pcie_read_otp(devinfo);
> + if (ret) {
> + brcmf_err(bus, "failed to parse OTP\n");
> + goto fail_brcmf;
> + }
> + break;
> + case BRCMF_FWVENDOR_CYW:
> + default:
> + break;
>  }
>
> #ifdef DEBUG
> @@ -2740,7 +2751,7 @@ static const struct pci_device_id 
> brcmf_pcie_devid_table[] = {
>  BRCMF_PCIE_DEVICE(BRCM_PCIE_4378_DEVICE_ID, WCC_SEED),
>  BRCMF_PCIE_DEVICE(BRCM_PCIE_4387_DEVICE_ID, WCC_SEED),
>  BRCMF_PCIE_DEVICE(BRCM_PCIE_43752_DEVICE_ID, WCC_SEED),
> -
> + BRCMF_PCIE_DEVICE(CY_PCIE_54591_DEVICE_ID, CYW),
>  { /* end: all zeroes */ }
> };
>
> 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..5195c6c1a5b5 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h
> +++ b/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h
> @@ -99,6 +99,7 @@
> #define BRCM_PCIE_4377_DEVICE_ID 0x4488
> #define BRCM_PCIE_4378_DEVICE_ID 0x4425
> #define BRCM_PCIE_4387_DEVICE_ID 0x4433
> +#define CY_PCIE_54591_DEVICE_ID 0x4417
>
> /* brcmsmac IDs */
> #define BCM4313_D11N2G_ID 0x4727 /* 4313 802.11n 2.4G device */
> --
> 2.25.0