2019-12-09 22:39:21

by Soeren Moch

[permalink] [raw]
Subject: [PATCH 5/8] brcmfmac: add support for BCM4359 SDIO chipset

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 <[email protected]>

Signed-off-by: Soeren Moch <[email protected]>
---
Cc: Kalle Valo <[email protected]>
Cc: Arend van Spriel <[email protected]>
Cc: Franky Lin <[email protected]>
Cc: Hante Meuleman <[email protected]>
Cc: Chi-Hsien Lin <[email protected]>
Cc: Wright Feng <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 1 +
drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 1 +
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 2 ++
include/linux/mmc/sdio_ids.h | 1 +
4 files changed, 5 insertions(+)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
index 68baf0189305..5b57d37caf17 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
@@ -973,6 +973,7 @@ 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),
{ /* end: all zeroes */ }
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..930ef2d8264a 100644
--- a/include/linux/mmc/sdio_ids.h
+++ b/include/linux/mmc/sdio_ids.h
@@ -41,6 +41,7 @@
#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

--
2.17.1


2019-12-10 06:34:49

by Chi-Hsien Lin

[permalink] [raw]
Subject: Re: [PATCH 5/8] brcmfmac: add support for BCM4359 SDIO chipset



On 12/10/2019 11:38, Chi-Hsien Lin wrote:
>
>
> On 12/10/2019 6:38, Soeren Moch 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 <[email protected]>
>
> Hi Soeren,
>
> Is it possible to also keep the ID in the original patch from Wright?
> You can use below IDs and allow both to be supported:
>
> #define SDIO_DEVICE_ID_BROADCOM_4359 0x4359
> #define SDIO_DEVICE_ID_CY_89359 0x4355

Fix a typo. The ID should be

#define SDIO_DEVICE_ID_CYPRESS_89359 0x4355

Note that brcmf_sdmmc_ids[] also needs an entry for the above ID. The
chipid references can remain unchanged.

Chi-hsien Lin

>
>
> Chi-hsien Lin
>
>
>>
>> Signed-off-by: Soeren Moch <[email protected]>
>> ---
>> Cc: Kalle Valo <[email protected]>
>> Cc: Arend van Spriel <[email protected]>
>> Cc: Franky Lin <[email protected]>
>> Cc: Hante Meuleman <[email protected]>
>> Cc: Chi-Hsien Lin <[email protected]>
>> Cc: Wright Feng <[email protected]>
>> Cc: [email protected]
>> Cc: [email protected]
>> Cc: [email protected]
>> Cc: [email protected]
>> Cc: [email protected]
>> ---
>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 1 +
>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 1 +
>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 2 ++
>> include/linux/mmc/sdio_ids.h | 1 +
>> 4 files changed, 5 insertions(+)
>>
>> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
>> index 68baf0189305..5b57d37caf17 100644
>> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
>> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
>> @@ -973,6 +973,7 @@ 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),
>> { /* end: all zeroes */ }
>> 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..930ef2d8264a 100644
>> --- a/include/linux/mmc/sdio_ids.h
>> +++ b/include/linux/mmc/sdio_ids.h
>> @@ -41,6 +41,7 @@
>> #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
>>
>> --
>> 2.17.1
>>
>> .
>>