Re: [PATCH v2 5/9] brcmfmac: add support for BCM4359 SDIO chipset

From: Ulf Hansson
Date: Thu Dec 12 2019 - 03:34:27 EST


On Thu, 12 Dec 2019 at 00:53, Soeren Moch <smoch@xxxxxx> wrote:
>
> BCM4359 is a 2x2 802.11 abgn+ac Dual-Band HT80 combo chip and it
> supports Real Simultaneous Dual Band feature.
>
> Based on a similar patch by: Wright Feng <wright.feng@xxxxxxxxxxx>
>
> Signed-off-by: Soeren Moch <smoch@xxxxxx>

Acked-by: Ulf Hansson <ulf.hansson@xxxxxxxxxx>

Kind regards
Uffe

> ---
> changes in v2:
> - add SDIO_DEVICE_ID_CYPRESS_89359 as requested
> by Chi-Hsien Lin <chi-hsien.lin@xxxxxxxxxxx>
>
> Cc: Kalle Valo <kvalo@xxxxxxxxxxxxxx>
> Cc: Heiko Stuebner <heiko@xxxxxxxxx>
> Cc: Arend van Spriel <arend.vanspriel@xxxxxxxxxxxx>
> Cc: Franky Lin <franky.lin@xxxxxxxxxxxx>
> Cc: Hante Meuleman <hante.meuleman@xxxxxxxxxxxx>
> Cc: Chi-Hsien Lin <chi-hsien.lin@xxxxxxxxxxx>
> Cc: Wright Feng <wright.feng@xxxxxxxxxxx>
> Cc: linux-wireless@xxxxxxxxxxxxxxx
> Cc: brcm80211-dev-list.pdl@xxxxxxxxxxxx
> Cc: brcm80211-dev-list@xxxxxxxxxxx
> Cc: netdev@xxxxxxxxxxxxxxx
> Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
> Cc: linux-rockchip@xxxxxxxxxxxxxxxxxxx
> Cc: linux-kernel@xxxxxxxxxxxxxxx
> ---
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 2 ++
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 1 +
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 2 ++
> include/linux/mmc/sdio_ids.h | 2 ++
> 4 files changed, 7 insertions(+)
>
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
> index 68baf0189305..f4c53ab46058 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
> @@ -973,8 +973,10 @@ static const struct sdio_device_id brcmf_sdmmc_ids[] = {
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43455),
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4354),
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4356),
> + BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4359),
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_CYPRESS_4373),
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_CYPRESS_43012),
> + BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_CYPRESS_89359),
> { /* end: all zeroes */ }
> };
> MODULE_DEVICE_TABLE(sdio, brcmf_sdmmc_ids);
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
> index baf72e3984fc..282d0bc14e8e 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
> @@ -1408,6 +1408,7 @@ bool brcmf_chip_sr_capable(struct brcmf_chip *pub)
> addr = CORE_CC_REG(base, sr_control0);
> reg = chip->ops->read32(chip->ctx, addr);
> return (reg & CC_SR_CTL0_ENABLE_MASK) != 0;
> + case BRCM_CC_4359_CHIP_ID:
> case CY_CC_43012_CHIP_ID:
> addr = CORE_CC_REG(pmu->base, retention_ctl);
> reg = chip->ops->read32(chip->ctx, addr);
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> index 21e535072f3f..c4012ed58b9c 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
> @@ -616,6 +616,7 @@ BRCMF_FW_DEF(43455, "brcmfmac43455-sdio");
> BRCMF_FW_DEF(43456, "brcmfmac43456-sdio");
> BRCMF_FW_DEF(4354, "brcmfmac4354-sdio");
> BRCMF_FW_DEF(4356, "brcmfmac4356-sdio");
> +BRCMF_FW_DEF(4359, "brcmfmac4359-sdio");
> BRCMF_FW_DEF(4373, "brcmfmac4373-sdio");
> BRCMF_FW_DEF(43012, "brcmfmac43012-sdio");
>
> @@ -638,6 +639,7 @@ static const struct brcmf_firmware_mapping brcmf_sdio_fwnames[] = {
> BRCMF_FW_ENTRY(BRCM_CC_4345_CHIP_ID, 0xFFFFFDC0, 43455),
> BRCMF_FW_ENTRY(BRCM_CC_4354_CHIP_ID, 0xFFFFFFFF, 4354),
> BRCMF_FW_ENTRY(BRCM_CC_4356_CHIP_ID, 0xFFFFFFFF, 4356),
> + BRCMF_FW_ENTRY(BRCM_CC_4359_CHIP_ID, 0xFFFFFFFF, 4359),
> BRCMF_FW_ENTRY(CY_CC_4373_CHIP_ID, 0xFFFFFFFF, 4373),
> BRCMF_FW_ENTRY(CY_CC_43012_CHIP_ID, 0xFFFFFFFF, 43012)
> };
> diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
> index 08b25c02b5a1..2e9a6e4634eb 100644
> --- a/include/linux/mmc/sdio_ids.h
> +++ b/include/linux/mmc/sdio_ids.h
> @@ -41,8 +41,10 @@
> #define SDIO_DEVICE_ID_BROADCOM_43455 0xa9bf
> #define SDIO_DEVICE_ID_BROADCOM_4354 0x4354
> #define SDIO_DEVICE_ID_BROADCOM_4356 0x4356
> +#define SDIO_DEVICE_ID_BROADCOM_4359 0x4359
> #define SDIO_DEVICE_ID_CYPRESS_4373 0x4373
> #define SDIO_DEVICE_ID_CYPRESS_43012 43012
> +#define SDIO_DEVICE_ID_CYPRESS_89359 0x4355
>
> #define SDIO_VENDOR_ID_INTEL 0x0089
> #define SDIO_DEVICE_ID_INTEL_IWMC3200WIMAX 0x1402
> --
> 2.17.1
>