2023-04-07 01:48:10

by Marek Vasut

[permalink] [raw]
Subject: [PATCH] wifi: brcmfmac: add Cypress 43439 SDIO ids

Add SDIO ids for use with the muRata 1YN (Cypress CYW43439).
The odd thing about this is that the previous 1YN populated
on M.2 card for evaluation purposes had BRCM SDIO vendor ID,
while the chip populated on real hardware has a Cypress one.
The device ID also differs between the two devices. But they
are both 43439 otherwise, so add the IDs for both.

```
/sys/.../mmc_host/mmc2/mmc2:0001 # cat vendor device
0x04b4
0xbd3d
```

Fixes: be376df724aa3 ("wifi: brcmfmac: add 43439 SDIO ids and initialization")
Signed-off-by: Marek Vasut <[email protected]>
---
NOTE: Please drop the Fixes tag if this is considered unjustified
Cc: "David S. Miller" <[email protected]>
Cc: Arend van Spriel <[email protected]>
Cc: Danny van Heumen <[email protected]>
Cc: Eric Dumazet <[email protected]>
Cc: Franky Lin <[email protected]>
Cc: Hans de Goede <[email protected]>
Cc: Hante Meuleman <[email protected]>
Cc: Jakub Kicinski <[email protected]>
Cc: Kalle Valo <[email protected]>
Cc: Paolo Abeni <[email protected]>
Cc: Paul Cercueil <[email protected]>
Cc: [email protected]
Cc: Ulf Hansson <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
---
.../net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 9 ++++++++-
include/linux/mmc/sdio_ids.h | 5 ++++-
2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
index 65d4799a56584..ff710b0b5071a 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
@@ -965,6 +965,12 @@ int brcmf_sdiod_probe(struct brcmf_sdio_dev *sdiodev)
.driver_data = BRCMF_FWVENDOR_ ## fw_vend \
}

+#define CYW_SDIO_DEVICE(dev_id, fw_vend) \
+ { \
+ SDIO_DEVICE(SDIO_VENDOR_ID_CYPRESS, dev_id), \
+ .driver_data = BRCMF_FWVENDOR_ ## fw_vend \
+ }
+
/* devices we support, null terminated */
static const struct sdio_device_id brcmf_sdmmc_ids[] = {
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43143, WCC),
@@ -979,6 +985,7 @@ static const struct sdio_device_id brcmf_sdmmc_ids[] = {
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4335_4339, WCC),
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4339, WCC),
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43430, WCC),
+ BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43439, WCC),
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4345, WCC),
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43455, WCC),
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4354, WCC),
@@ -986,9 +993,9 @@ 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_43439, CYW),
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_43752, CYW),
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_89359, CYW),
+ CYW_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_43439, CYW),
{ /* end: all zeroes */ }
};
MODULE_DEVICE_TABLE(sdio, brcmf_sdmmc_ids);
diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
index 0e4ef9c5127ad..bf3c95d8eb8af 100644
--- a/include/linux/mmc/sdio_ids.h
+++ b/include/linux/mmc/sdio_ids.h
@@ -74,10 +74,13 @@
#define SDIO_DEVICE_ID_BROADCOM_43362 0xa962
#define SDIO_DEVICE_ID_BROADCOM_43364 0xa9a4
#define SDIO_DEVICE_ID_BROADCOM_43430 0xa9a6
-#define SDIO_DEVICE_ID_BROADCOM_CYPRESS_43439 0xa9af
+#define SDIO_DEVICE_ID_BROADCOM_43439 0xa9af
#define SDIO_DEVICE_ID_BROADCOM_43455 0xa9bf
#define SDIO_DEVICE_ID_BROADCOM_CYPRESS_43752 0xaae8

+#define SDIO_VENDOR_ID_CYPRESS 0x04b4
+#define SDIO_DEVICE_ID_BROADCOM_CYPRESS_43439 0xbd3d
+
#define SDIO_VENDOR_ID_MARVELL 0x02df
#define SDIO_DEVICE_ID_MARVELL_LIBERTAS 0x9103
#define SDIO_DEVICE_ID_MARVELL_8688_WLAN 0x9104
--
2.39.2


2023-04-07 13:25:21

by Hans de Goede

[permalink] [raw]
Subject: Re: [PATCH] wifi: brcmfmac: add Cypress 43439 SDIO ids

Hi,

On 4/7/23 03:31, Marek Vasut wrote:
> Add SDIO ids for use with the muRata 1YN (Cypress CYW43439).
> The odd thing about this is that the previous 1YN populated
> on M.2 card for evaluation purposes had BRCM SDIO vendor ID,
> while the chip populated on real hardware has a Cypress one.
> The device ID also differs between the two devices. But they
> are both 43439 otherwise, so add the IDs for both.
>
> ```
> /sys/.../mmc_host/mmc2/mmc2:0001 # cat vendor device
> 0x04b4
> 0xbd3d
> ```
>
> Fixes: be376df724aa3 ("wifi: brcmfmac: add 43439 SDIO ids and initialization")
> Signed-off-by: Marek Vasut <[email protected]>

Thanks, patch looks good to me:

Reviewed-by: Hans de Goede <[email protected]>

Regards,

Hans




> ---
> NOTE: Please drop the Fixes tag if this is considered unjustified
> Cc: "David S. Miller" <[email protected]>
> Cc: Arend van Spriel <[email protected]>
> Cc: Danny van Heumen <[email protected]>
> Cc: Eric Dumazet <[email protected]>
> Cc: Franky Lin <[email protected]>
> Cc: Hans de Goede <[email protected]>
> Cc: Hante Meuleman <[email protected]>
> Cc: Jakub Kicinski <[email protected]>
> Cc: Kalle Valo <[email protected]>
> Cc: Paolo Abeni <[email protected]>
> Cc: Paul Cercueil <[email protected]>
> Cc: [email protected]
> Cc: Ulf Hansson <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> ---
> .../net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 9 ++++++++-
> include/linux/mmc/sdio_ids.h | 5 ++++-
> 2 files changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
> index 65d4799a56584..ff710b0b5071a 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
> @@ -965,6 +965,12 @@ int brcmf_sdiod_probe(struct brcmf_sdio_dev *sdiodev)
> .driver_data = BRCMF_FWVENDOR_ ## fw_vend \
> }
>
> +#define CYW_SDIO_DEVICE(dev_id, fw_vend) \
> + { \
> + SDIO_DEVICE(SDIO_VENDOR_ID_CYPRESS, dev_id), \
> + .driver_data = BRCMF_FWVENDOR_ ## fw_vend \
> + }
> +
> /* devices we support, null terminated */
> static const struct sdio_device_id brcmf_sdmmc_ids[] = {
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43143, WCC),
> @@ -979,6 +985,7 @@ static const struct sdio_device_id brcmf_sdmmc_ids[] = {
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4335_4339, WCC),
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4339, WCC),
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43430, WCC),
> + BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43439, WCC),
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4345, WCC),
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43455, WCC),
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4354, WCC),
> @@ -986,9 +993,9 @@ 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_43439, CYW),
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_43752, CYW),
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_89359, CYW),
> + CYW_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_43439, CYW),
> { /* end: all zeroes */ }
> };
> MODULE_DEVICE_TABLE(sdio, brcmf_sdmmc_ids);
> diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
> index 0e4ef9c5127ad..bf3c95d8eb8af 100644
> --- a/include/linux/mmc/sdio_ids.h
> +++ b/include/linux/mmc/sdio_ids.h
> @@ -74,10 +74,13 @@
> #define SDIO_DEVICE_ID_BROADCOM_43362 0xa962
> #define SDIO_DEVICE_ID_BROADCOM_43364 0xa9a4
> #define SDIO_DEVICE_ID_BROADCOM_43430 0xa9a6
> -#define SDIO_DEVICE_ID_BROADCOM_CYPRESS_43439 0xa9af
> +#define SDIO_DEVICE_ID_BROADCOM_43439 0xa9af
> #define SDIO_DEVICE_ID_BROADCOM_43455 0xa9bf
> #define SDIO_DEVICE_ID_BROADCOM_CYPRESS_43752 0xaae8
>
> +#define SDIO_VENDOR_ID_CYPRESS 0x04b4
> +#define SDIO_DEVICE_ID_BROADCOM_CYPRESS_43439 0xbd3d
> +
> #define SDIO_VENDOR_ID_MARVELL 0x02df
> #define SDIO_DEVICE_ID_MARVELL_LIBERTAS 0x9103
> #define SDIO_DEVICE_ID_MARVELL_8688_WLAN 0x9104

2023-04-07 15:00:07

by Marek Vasut

[permalink] [raw]
Subject: Re: [PATCH] wifi: brcmfmac: add Cypress 43439 SDIO ids

On 4/7/23 15:15, Hans de Goede wrote:
> Hi,

Hi,

> On 4/7/23 03:31, Marek Vasut wrote:
>> Add SDIO ids for use with the muRata 1YN (Cypress CYW43439).
>> The odd thing about this is that the previous 1YN populated
>> on M.2 card for evaluation purposes had BRCM SDIO vendor ID,
>> while the chip populated on real hardware has a Cypress one.
>> The device ID also differs between the two devices. But they
>> are both 43439 otherwise, so add the IDs for both.
>>
>> ```
>> /sys/.../mmc_host/mmc2/mmc2:0001 # cat vendor device
>> 0x04b4
>> 0xbd3d
>> ```
>>
>> Fixes: be376df724aa3 ("wifi: brcmfmac: add 43439 SDIO ids and initialization")
>> Signed-off-by: Marek Vasut <[email protected]>
>
> Thanks, patch looks good to me:

Thanks. I now assembled the old device and got both IDs, so I will add
them to the commit message and send V2. I also noticed that the old
device is some ES1.4 chip, while the new one is production silicon:

On-device 1YN (43439), the new one, chip label reads "1YN":
```
/sys/.../mmc_host/mmc2/mmc2:0001 # cat vendor device
0x04b4
0xbd3d
```

EA M.2 evaluation board 1YN (43439), the old one, chip label reads "1YN
ES1.4":
```
/sys/.../mmc_host/mmc0/mmc0:0001/# cat vendor device
0x02d0
0xa9a6
```

2023-04-13 07:00:39

by Ulf Hansson

[permalink] [raw]
Subject: Re: [PATCH] wifi: brcmfmac: add Cypress 43439 SDIO ids

On Fri, 7 Apr 2023 at 03:31, Marek Vasut <[email protected]> wrote:
>
> Add SDIO ids for use with the muRata 1YN (Cypress CYW43439).
> The odd thing about this is that the previous 1YN populated
> on M.2 card for evaluation purposes had BRCM SDIO vendor ID,
> while the chip populated on real hardware has a Cypress one.
> The device ID also differs between the two devices. But they
> are both 43439 otherwise, so add the IDs for both.
>
> ```
> /sys/.../mmc_host/mmc2/mmc2:0001 # cat vendor device
> 0x04b4
> 0xbd3d
> ```
>
> Fixes: be376df724aa3 ("wifi: brcmfmac: add 43439 SDIO ids and initialization")
> Signed-off-by: Marek Vasut <[email protected]>

Acked-by: Ulf Hansson <[email protected]>

Kind regards
Uffe

> ---
> NOTE: Please drop the Fixes tag if this is considered unjustified
> Cc: "David S. Miller" <[email protected]>
> Cc: Arend van Spriel <[email protected]>
> Cc: Danny van Heumen <[email protected]>
> Cc: Eric Dumazet <[email protected]>
> Cc: Franky Lin <[email protected]>
> Cc: Hans de Goede <[email protected]>
> Cc: Hante Meuleman <[email protected]>
> Cc: Jakub Kicinski <[email protected]>
> Cc: Kalle Valo <[email protected]>
> Cc: Paolo Abeni <[email protected]>
> Cc: Paul Cercueil <[email protected]>
> Cc: [email protected]
> Cc: Ulf Hansson <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> ---
> .../net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 9 ++++++++-
> include/linux/mmc/sdio_ids.h | 5 ++++-
> 2 files changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
> index 65d4799a56584..ff710b0b5071a 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
> @@ -965,6 +965,12 @@ int brcmf_sdiod_probe(struct brcmf_sdio_dev *sdiodev)
> .driver_data = BRCMF_FWVENDOR_ ## fw_vend \
> }
>
> +#define CYW_SDIO_DEVICE(dev_id, fw_vend) \
> + { \
> + SDIO_DEVICE(SDIO_VENDOR_ID_CYPRESS, dev_id), \
> + .driver_data = BRCMF_FWVENDOR_ ## fw_vend \
> + }
> +
> /* devices we support, null terminated */
> static const struct sdio_device_id brcmf_sdmmc_ids[] = {
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43143, WCC),
> @@ -979,6 +985,7 @@ static const struct sdio_device_id brcmf_sdmmc_ids[] = {
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4335_4339, WCC),
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4339, WCC),
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43430, WCC),
> + BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43439, WCC),
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4345, WCC),
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_43455, WCC),
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4354, WCC),
> @@ -986,9 +993,9 @@ 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_43439, CYW),
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_43752, CYW),
> BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_89359, CYW),
> + CYW_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_CYPRESS_43439, CYW),
> { /* end: all zeroes */ }
> };
> MODULE_DEVICE_TABLE(sdio, brcmf_sdmmc_ids);
> diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
> index 0e4ef9c5127ad..bf3c95d8eb8af 100644
> --- a/include/linux/mmc/sdio_ids.h
> +++ b/include/linux/mmc/sdio_ids.h
> @@ -74,10 +74,13 @@
> #define SDIO_DEVICE_ID_BROADCOM_43362 0xa962
> #define SDIO_DEVICE_ID_BROADCOM_43364 0xa9a4
> #define SDIO_DEVICE_ID_BROADCOM_43430 0xa9a6
> -#define SDIO_DEVICE_ID_BROADCOM_CYPRESS_43439 0xa9af
> +#define SDIO_DEVICE_ID_BROADCOM_43439 0xa9af
> #define SDIO_DEVICE_ID_BROADCOM_43455 0xa9bf
> #define SDIO_DEVICE_ID_BROADCOM_CYPRESS_43752 0xaae8
>
> +#define SDIO_VENDOR_ID_CYPRESS 0x04b4
> +#define SDIO_DEVICE_ID_BROADCOM_CYPRESS_43439 0xbd3d
> +
> #define SDIO_VENDOR_ID_MARVELL 0x02df
> #define SDIO_DEVICE_ID_MARVELL_LIBERTAS 0x9103
> #define SDIO_DEVICE_ID_MARVELL_8688_WLAN 0x9104
> --
> 2.39.2
>