Message ID | 20230212063813.27622-2-marcan@marcan.st |
---|---|
State | Superseded |
Headers | show |
Series | BCM4355/4364/4377 support & identification fixes | expand |
On Sun, 12 Feb 2023 at 06:46, Hector Martin <marcan@marcan.st> wrote: > > The commit that introduced support for this chip incorrectly claimed it > is a Cypress-specific part, while in actuality it is just a variant of > BCM4355 silicon (as evidenced by the chip ID). > > The relationship between Cypress products and Broadcom products isn't > entirely clear but given what little information is available and prior > art in the driver, it seems the convention should be that originally > Broadcom parts should retain the Broadcom name. > > Thus, rename the relevant constants and firmware file. Also rename the > specific 89459 PCIe ID to BCM43596, which seems to be the original > subvariant name for this PCI ID (as defined in the out-of-tree bcmdhd > driver). > > Since Cypress added this part and will presumably be providing its > supported firmware, we keep the CYW designation for this device. > > We also drop the RAW device ID in this commit. We don't do this for the > other chips since apparently some devices with them exist in the wild, > but there is already a 4355 entry with the Broadcom subvendor and WCC > firmware vendor, so adding a generic fallback to Cypress seems > redundant (no reason why a device would have the raw device ID *and* an > explicitly programmed subvendor). > > Fixes: dce45ded7619 ("brcmfmac: Support 89459 pcie") > Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com> > Signed-off-by: Hector Martin <marcan@marcan.st> Reviewed-by: Eric Curtin <ecurtin@redhat.com> Is mise le meas/Regards, Eric Curtin > --- > drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 5 ++--- > drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 7 +++---- > .../net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h | 5 ++--- > 3 files changed, 7 insertions(+), 10 deletions(-) > > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c > index 121893bbaa1d..3e42c2bd0d9a 100644 > --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c > +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c > @@ -726,6 +726,7 @@ static u32 brcmf_chip_tcm_rambase(struct brcmf_chip_priv *ci) > case BRCM_CC_43664_CHIP_ID: > case BRCM_CC_43666_CHIP_ID: > return 0x200000; > + case BRCM_CC_4355_CHIP_ID: > case BRCM_CC_4359_CHIP_ID: > return (ci->pub.chiprev < 9) ? 0x180000 : 0x160000; > case BRCM_CC_4364_CHIP_ID: > @@ -735,8 +736,6 @@ static u32 brcmf_chip_tcm_rambase(struct brcmf_chip_priv *ci) > return 0x170000; > case BRCM_CC_4378_CHIP_ID: > return 0x352000; > - case CY_CC_89459_CHIP_ID: > - return ((ci->pub.chiprev < 9) ? 0x180000 : 0x160000); > default: > brcmf_err("unknown chip: %s\n", ci->pub.name); > break; > @@ -1426,8 +1425,8 @@ bool brcmf_chip_sr_capable(struct brcmf_chip *pub) > addr = CORE_CC_REG(base, sr_control1); > reg = chip->ops->read32(chip->ctx, addr); > return reg != 0; > + case BRCM_CC_4355_CHIP_ID: > case CY_CC_4373_CHIP_ID: > - case CY_CC_89459_CHIP_ID: > /* explicitly check SR engine enable bit */ > addr = CORE_CC_REG(base, sr_control0); > reg = chip->ops->read32(chip->ctx, addr); > diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c > index ae57a9a3ab05..96608174a123 100644 > --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c > +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c > @@ -51,6 +51,7 @@ enum brcmf_pcie_state { > BRCMF_FW_DEF(43602, "brcmfmac43602-pcie"); > BRCMF_FW_DEF(4350, "brcmfmac4350-pcie"); > BRCMF_FW_DEF(4350C, "brcmfmac4350c2-pcie"); > +BRCMF_FW_CLM_DEF(4355, "brcmfmac4355-pcie"); > BRCMF_FW_CLM_DEF(4356, "brcmfmac4356-pcie"); > BRCMF_FW_CLM_DEF(43570, "brcmfmac43570-pcie"); > BRCMF_FW_DEF(4358, "brcmfmac4358-pcie"); > @@ -62,7 +63,6 @@ BRCMF_FW_DEF(4366B, "brcmfmac4366b-pcie"); > BRCMF_FW_DEF(4366C, "brcmfmac4366c-pcie"); > BRCMF_FW_DEF(4371, "brcmfmac4371-pcie"); > BRCMF_FW_CLM_DEF(4378B1, "brcmfmac4378b1-pcie"); > -BRCMF_FW_DEF(4355, "brcmfmac89459-pcie"); > > /* firmware config files */ > MODULE_FIRMWARE(BRCMF_FW_DEFAULT_PATH "brcmfmac*-pcie.txt"); > @@ -78,6 +78,7 @@ static const struct brcmf_firmware_mapping brcmf_pcie_fwnames[] = { > BRCMF_FW_ENTRY(BRCM_CC_4350_CHIP_ID, 0x000000FF, 4350C), > 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, 0xFFFFFFFF, 4355), > BRCMF_FW_ENTRY(BRCM_CC_4356_CHIP_ID, 0xFFFFFFFF, 4356), > BRCMF_FW_ENTRY(BRCM_CC_43567_CHIP_ID, 0xFFFFFFFF, 43570), > BRCMF_FW_ENTRY(BRCM_CC_43569_CHIP_ID, 0xFFFFFFFF, 43570), > @@ -93,7 +94,6 @@ static const struct brcmf_firmware_mapping brcmf_pcie_fwnames[] = { > BRCMF_FW_ENTRY(BRCM_CC_43666_CHIP_ID, 0xFFFFFFF0, 4366C), > BRCMF_FW_ENTRY(BRCM_CC_4371_CHIP_ID, 0xFFFFFFFF, 4371), > BRCMF_FW_ENTRY(BRCM_CC_4378_CHIP_ID, 0xFFFFFFFF, 4378B1), /* revision ID 3 */ > - BRCMF_FW_ENTRY(CY_CC_89459_CHIP_ID, 0xFFFFFFFF, 4355), > }; > > #define BRCMF_PCIE_FW_UP_TIMEOUT 5000 /* msec */ > @@ -2609,9 +2609,8 @@ static const struct pci_device_id brcmf_pcie_devid_table[] = { > BRCMF_PCIE_DEVICE(BRCM_PCIE_4366_2G_DEVICE_ID, BCA), > BRCMF_PCIE_DEVICE(BRCM_PCIE_4366_5G_DEVICE_ID, BCA), > BRCMF_PCIE_DEVICE(BRCM_PCIE_4371_DEVICE_ID, WCC), > + BRCMF_PCIE_DEVICE(BRCM_PCIE_43596_DEVICE_ID, CYW), > BRCMF_PCIE_DEVICE(BRCM_PCIE_4378_DEVICE_ID, WCC), > - BRCMF_PCIE_DEVICE(CY_PCIE_89459_DEVICE_ID, CYW), > - BRCMF_PCIE_DEVICE(CY_PCIE_89459_RAW_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 f4939cf62767..28b6cf8ff286 100644 > --- a/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h > +++ b/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h > @@ -37,6 +37,7 @@ > #define BRCM_CC_4350_CHIP_ID 0x4350 > #define BRCM_CC_43525_CHIP_ID 43525 > #define BRCM_CC_4354_CHIP_ID 0x4354 > +#define BRCM_CC_4355_CHIP_ID 0x4355 > #define BRCM_CC_4356_CHIP_ID 0x4356 > #define BRCM_CC_43566_CHIP_ID 43566 > #define BRCM_CC_43567_CHIP_ID 43567 > @@ -56,7 +57,6 @@ > #define CY_CC_43012_CHIP_ID 43012 > #define CY_CC_43439_CHIP_ID 43439 > #define CY_CC_43752_CHIP_ID 43752 > -#define CY_CC_89459_CHIP_ID 0x4355 > > /* USB Device IDs */ > #define BRCM_USB_43143_DEVICE_ID 0xbd1e > @@ -90,9 +90,8 @@ > #define BRCM_PCIE_4366_2G_DEVICE_ID 0x43c4 > #define BRCM_PCIE_4366_5G_DEVICE_ID 0x43c5 > #define BRCM_PCIE_4371_DEVICE_ID 0x440d > +#define BRCM_PCIE_43596_DEVICE_ID 0x4415 > #define BRCM_PCIE_4378_DEVICE_ID 0x4425 > -#define CY_PCIE_89459_DEVICE_ID 0x4415 > -#define CY_PCIE_89459_RAW_DEVICE_ID 0x4355 > > /* brcmsmac IDs */ > #define BCM4313_D11N2G_ID 0x4727 /* 4313 802.11n 2.4G device */ > -- > 2.35.1 > >
Hector Martin <marcan@marcan.st> wrote: > The commit that introduced support for this chip incorrectly claimed it > is a Cypress-specific part, while in actuality it is just a variant of > BCM4355 silicon (as evidenced by the chip ID). > > The relationship between Cypress products and Broadcom products isn't > entirely clear but given what little information is available and prior > art in the driver, it seems the convention should be that originally > Broadcom parts should retain the Broadcom name. > > Thus, rename the relevant constants and firmware file. Also rename the > specific 89459 PCIe ID to BCM43596, which seems to be the original > subvariant name for this PCI ID (as defined in the out-of-tree bcmdhd > driver). > > Since Cypress added this part and will presumably be providing its > supported firmware, we keep the CYW designation for this device. > > We also drop the RAW device ID in this commit. We don't do this for the > other chips since apparently some devices with them exist in the wild, > but there is already a 4355 entry with the Broadcom subvendor and WCC > firmware vendor, so adding a generic fallback to Cypress seems > redundant (no reason why a device would have the raw device ID *and* an > explicitly programmed subvendor). > > Fixes: dce45ded7619 ("brcmfmac: Support 89459 pcie") > Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com> > Signed-off-by: Hector Martin <marcan@marcan.st> 4 patches applied to wireless-next.git, thanks. 54f01f56cf63 wifi: brcmfmac: Rename Cypress 89459 to BCM4355 69005e67ce54 wifi: brcmfmac: pcie: Add IDs/properties for BCM4355 bf8bbd903f07 wifi: brcmfmac: pcie: Add IDs/properties for BCM4377 6a142f70774f wifi: brcmfmac: pcie: Perform correct BCM4364 firmware selection
Hi all > > 4 patches applied to wireless-next.git, thanks. > > 54f01f56cf63 wifi: brcmfmac: Rename Cypress 89459 to BCM4355 Shouldn’t this path be backported to stable so as to prevent different firmware names in different kernels?
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c index 121893bbaa1d..3e42c2bd0d9a 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c @@ -726,6 +726,7 @@ static u32 brcmf_chip_tcm_rambase(struct brcmf_chip_priv *ci) case BRCM_CC_43664_CHIP_ID: case BRCM_CC_43666_CHIP_ID: return 0x200000; + case BRCM_CC_4355_CHIP_ID: case BRCM_CC_4359_CHIP_ID: return (ci->pub.chiprev < 9) ? 0x180000 : 0x160000; case BRCM_CC_4364_CHIP_ID: @@ -735,8 +736,6 @@ static u32 brcmf_chip_tcm_rambase(struct brcmf_chip_priv *ci) return 0x170000; case BRCM_CC_4378_CHIP_ID: return 0x352000; - case CY_CC_89459_CHIP_ID: - return ((ci->pub.chiprev < 9) ? 0x180000 : 0x160000); default: brcmf_err("unknown chip: %s\n", ci->pub.name); break; @@ -1426,8 +1425,8 @@ bool brcmf_chip_sr_capable(struct brcmf_chip *pub) addr = CORE_CC_REG(base, sr_control1); reg = chip->ops->read32(chip->ctx, addr); return reg != 0; + case BRCM_CC_4355_CHIP_ID: case CY_CC_4373_CHIP_ID: - case CY_CC_89459_CHIP_ID: /* explicitly check SR engine enable bit */ addr = CORE_CC_REG(base, sr_control0); reg = chip->ops->read32(chip->ctx, addr); diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c index ae57a9a3ab05..96608174a123 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c @@ -51,6 +51,7 @@ enum brcmf_pcie_state { BRCMF_FW_DEF(43602, "brcmfmac43602-pcie"); BRCMF_FW_DEF(4350, "brcmfmac4350-pcie"); BRCMF_FW_DEF(4350C, "brcmfmac4350c2-pcie"); +BRCMF_FW_CLM_DEF(4355, "brcmfmac4355-pcie"); BRCMF_FW_CLM_DEF(4356, "brcmfmac4356-pcie"); BRCMF_FW_CLM_DEF(43570, "brcmfmac43570-pcie"); BRCMF_FW_DEF(4358, "brcmfmac4358-pcie"); @@ -62,7 +63,6 @@ BRCMF_FW_DEF(4366B, "brcmfmac4366b-pcie"); BRCMF_FW_DEF(4366C, "brcmfmac4366c-pcie"); BRCMF_FW_DEF(4371, "brcmfmac4371-pcie"); BRCMF_FW_CLM_DEF(4378B1, "brcmfmac4378b1-pcie"); -BRCMF_FW_DEF(4355, "brcmfmac89459-pcie"); /* firmware config files */ MODULE_FIRMWARE(BRCMF_FW_DEFAULT_PATH "brcmfmac*-pcie.txt"); @@ -78,6 +78,7 @@ static const struct brcmf_firmware_mapping brcmf_pcie_fwnames[] = { BRCMF_FW_ENTRY(BRCM_CC_4350_CHIP_ID, 0x000000FF, 4350C), 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, 0xFFFFFFFF, 4355), BRCMF_FW_ENTRY(BRCM_CC_4356_CHIP_ID, 0xFFFFFFFF, 4356), BRCMF_FW_ENTRY(BRCM_CC_43567_CHIP_ID, 0xFFFFFFFF, 43570), BRCMF_FW_ENTRY(BRCM_CC_43569_CHIP_ID, 0xFFFFFFFF, 43570), @@ -93,7 +94,6 @@ static const struct brcmf_firmware_mapping brcmf_pcie_fwnames[] = { BRCMF_FW_ENTRY(BRCM_CC_43666_CHIP_ID, 0xFFFFFFF0, 4366C), BRCMF_FW_ENTRY(BRCM_CC_4371_CHIP_ID, 0xFFFFFFFF, 4371), BRCMF_FW_ENTRY(BRCM_CC_4378_CHIP_ID, 0xFFFFFFFF, 4378B1), /* revision ID 3 */ - BRCMF_FW_ENTRY(CY_CC_89459_CHIP_ID, 0xFFFFFFFF, 4355), }; #define BRCMF_PCIE_FW_UP_TIMEOUT 5000 /* msec */ @@ -2609,9 +2609,8 @@ static const struct pci_device_id brcmf_pcie_devid_table[] = { BRCMF_PCIE_DEVICE(BRCM_PCIE_4366_2G_DEVICE_ID, BCA), BRCMF_PCIE_DEVICE(BRCM_PCIE_4366_5G_DEVICE_ID, BCA), BRCMF_PCIE_DEVICE(BRCM_PCIE_4371_DEVICE_ID, WCC), + BRCMF_PCIE_DEVICE(BRCM_PCIE_43596_DEVICE_ID, CYW), BRCMF_PCIE_DEVICE(BRCM_PCIE_4378_DEVICE_ID, WCC), - BRCMF_PCIE_DEVICE(CY_PCIE_89459_DEVICE_ID, CYW), - BRCMF_PCIE_DEVICE(CY_PCIE_89459_RAW_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 f4939cf62767..28b6cf8ff286 100644 --- a/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h +++ b/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h @@ -37,6 +37,7 @@ #define BRCM_CC_4350_CHIP_ID 0x4350 #define BRCM_CC_43525_CHIP_ID 43525 #define BRCM_CC_4354_CHIP_ID 0x4354 +#define BRCM_CC_4355_CHIP_ID 0x4355 #define BRCM_CC_4356_CHIP_ID 0x4356 #define BRCM_CC_43566_CHIP_ID 43566 #define BRCM_CC_43567_CHIP_ID 43567 @@ -56,7 +57,6 @@ #define CY_CC_43012_CHIP_ID 43012 #define CY_CC_43439_CHIP_ID 43439 #define CY_CC_43752_CHIP_ID 43752 -#define CY_CC_89459_CHIP_ID 0x4355 /* USB Device IDs */ #define BRCM_USB_43143_DEVICE_ID 0xbd1e @@ -90,9 +90,8 @@ #define BRCM_PCIE_4366_2G_DEVICE_ID 0x43c4 #define BRCM_PCIE_4366_5G_DEVICE_ID 0x43c5 #define BRCM_PCIE_4371_DEVICE_ID 0x440d +#define BRCM_PCIE_43596_DEVICE_ID 0x4415 #define BRCM_PCIE_4378_DEVICE_ID 0x4425 -#define CY_PCIE_89459_DEVICE_ID 0x4415 -#define CY_PCIE_89459_RAW_DEVICE_ID 0x4355 /* brcmsmac IDs */ #define BCM4313_D11N2G_ID 0x4727 /* 4313 802.11n 2.4G device */