diff mbox

[v2,2/3] brcmfmac: Add support for CYW4373 SDIO/USB chipset

Message ID 1501753079-1758-2-git-send-email-wright.feng@cypress.com (mailing list archive)
State Accepted
Commit 0ec9eb90feec4933637fbde9d5bfbc3b62aea218
Delegated to: Kalle Valo
Headers show

Commit Message

Wright Feng Aug. 3, 2017, 9:37 a.m. UTC
From: Chi-Hsien Lin <chi-hsien.lin@cypress.com>

Add support for CYW4373 SDIO/USB chipset.
CYW4373 is a 1x1 dual-band 11ac chipset with 20/40/80Mhz channel support.
It's a WiFi/BT combo device.

Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
---
v2: add new chip(4737) info in commit message
---
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c     | 1 +
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c       | 2 ++
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c       | 4 +++-
 drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c        | 9 ++++++++-
 drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h | 3 +++
 include/linux/mmc/sdio_ids.h                                  | 1 +
 6 files changed, 18 insertions(+), 2 deletions(-)

Comments

Arend van Spriel Aug. 7, 2017, 12:27 p.m. UTC | #1
On 8/3/2017 11:37 AM, Wright Feng wrote:
> From: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
>
> Add support for CYW4373 SDIO/USB chipset.
> CYW4373 is a 1x1 dual-band 11ac chipset with 20/40/80Mhz channel support.
> It's a WiFi/BT combo device.

Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
> ---
> v2: add new chip(4737) info in commit message

comment below...

> ---
>   drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c     | 1 +
>   drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c       | 2 ++
>   drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c       | 4 +++-
>   drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c        | 9 ++++++++-
>   drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h | 3 +++
>   include/linux/mmc/sdio_ids.h                                  | 1 +
>   6 files changed, 18 insertions(+), 2 deletions(-)
>

[...]

> diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
> index b733eb4..abacd54 100644
> --- a/include/linux/mmc/sdio_ids.h
> +++ b/include/linux/mmc/sdio_ids.h
> @@ -39,6 +39,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_CYPRESS_4373		0x4373

So is there no specific Cypress SDIO vendor ID?

>   #define SDIO_VENDOR_ID_INTEL			0x0089
>   #define SDIO_DEVICE_ID_INTEL_IWMC3200WIMAX	0x1402
>
Chi-Hsien Lin Aug. 8, 2017, 6:53 a.m. UTC | #2
On 08/07/2017 8:27, Arend van Spriel wrote:
> On 8/3/2017 11:37 AM, Wright Feng wrote:
>> From: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
>>
>> Add support for CYW4373 SDIO/USB chipset.
>> CYW4373 is a 1x1 dual-band 11ac chipset with 20/40/80Mhz channel support.
>> It's a WiFi/BT combo device.
> 
> Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
>> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
>> ---
>> v2: add new chip(4737) info in commit message
> 
> comment below...
> 
>> ---
>>   drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c     | 1 +
>>   drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c       | 2 ++
>>   drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c       | 4 +++-
>>   drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c        | 9 
>> ++++++++-
>>   drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h | 3 +++
>>   include/linux/mmc/sdio_ids.h                                  | 1 +
>>   6 files changed, 18 insertions(+), 2 deletions(-)
>>
> 
> [...]
> 
>> diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
>> index b733eb4..abacd54 100644
>> --- a/include/linux/mmc/sdio_ids.h
>> +++ b/include/linux/mmc/sdio_ids.h
>> @@ -39,6 +39,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_CYPRESS_4373        0x4373
> 
> So is there no specific Cypress SDIO vendor ID?
There is no Cypress SDIO vid. I believe the legacy chips 4343w ...etc. 
shipped are still using BRCM SDIO vid. Also, 4373 project was initiated 
in Broadcom so the default id was set to the Broadcom id. Will it a 
requirement to add Cypress vid here?


> 
>>   #define SDIO_VENDOR_ID_INTEL            0x0089
>>   #define SDIO_DEVICE_ID_INTEL_IWMC3200WIMAX    0x1402
>>
> 
> .
>
Arend van Spriel Aug. 8, 2017, 9:36 a.m. UTC | #3
On 08-08-17 08:53, Chi-Hsien Lin wrote:
> 
> 
> On 08/07/2017 8:27, Arend van Spriel wrote:
>> On 8/3/2017 11:37 AM, Wright Feng wrote:
>>> From: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
>>>
>>> Add support for CYW4373 SDIO/USB chipset.
>>> CYW4373 is a 1x1 dual-band 11ac chipset with 20/40/80Mhz channel
>>> support.
>>> It's a WiFi/BT combo device.
>>
>> Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
>>> Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com>
>>> ---
>>> v2: add new chip(4737) info in commit message
>>
>> comment below...
>>
>>> ---
>>>   drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c     | 1 +
>>>   drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c       | 2 ++
>>>   drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c       | 4 +++-
>>>   drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c        | 9
>>> ++++++++-
>>>   drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h | 3 +++
>>>   include/linux/mmc/sdio_ids.h                                  | 1 +
>>>   6 files changed, 18 insertions(+), 2 deletions(-)
>>>
>>
>> [...]
>>
>>> diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
>>> index b733eb4..abacd54 100644
>>> --- a/include/linux/mmc/sdio_ids.h
>>> +++ b/include/linux/mmc/sdio_ids.h
>>> @@ -39,6 +39,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_CYPRESS_4373        0x4373
>>
>> So is there no specific Cypress SDIO vendor ID?
> There is no Cypress SDIO vid. I believe the legacy chips 4343w ...etc.
> shipped are still using BRCM SDIO vid. Also, 4373 project was initiated
> in Broadcom so the default id was set to the Broadcom id. Will it a
> requirement to add Cypress vid here?

I was just wondering about it. It seems appropriate to do so although I
understand the 4373 history of things. Also for USB (in this same patch)
you seem to have used a Cypress USB vendor id so things just did not
look consistent. Hence I raised my comment.

Regards,
Arend

>>
>>>   #define SDIO_VENDOR_ID_INTEL            0x0089
>>>   #define SDIO_DEVICE_ID_INTEL_IWMC3200WIMAX    0x1402
>>>
>>
>> .
>>
diff mbox

Patch

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
index 9b970dc..ea47f75 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
@@ -1108,6 +1108,7 @@  static int brcmf_sdiod_probe(struct brcmf_sdio_dev *sdiodev)
 	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_CYPRESS_4373),
 	{ /* 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 05f22ff..c5d1a1c 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c
@@ -690,6 +690,8 @@  static u32 brcmf_chip_tcm_rambase(struct brcmf_chip_priv *ci)
 	case BRCM_CC_4365_CHIP_ID:
 	case BRCM_CC_4366_CHIP_ID:
 		return 0x200000;
+	case CY_CC_4373_CHIP_ID:
+		return 0x160000;
 	default:
 		brcmf_err("unknown chip: %s\n", ci->pub.name);
 		break;
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index 5653d6d..b1789b1 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -616,6 +616,7 @@  struct sdiod_drive_str {
 BRCMF_FW_NVRAM_DEF(43455, "brcmfmac43455-sdio.bin", "brcmfmac43455-sdio.txt");
 BRCMF_FW_NVRAM_DEF(4354, "brcmfmac4354-sdio.bin", "brcmfmac4354-sdio.txt");
 BRCMF_FW_NVRAM_DEF(4356, "brcmfmac4356-sdio.bin", "brcmfmac4356-sdio.txt");
+BRCMF_FW_NVRAM_DEF(4373, "brcmfmac4373-sdio.bin", "brcmfmac4373-sdio.txt");
 
 static struct brcmf_firmware_mapping brcmf_sdio_fwnames[] = {
 	BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43143_CHIP_ID, 0xFFFFFFFF, 43143),
@@ -633,7 +634,8 @@  struct sdiod_drive_str {
 	BRCMF_FW_NVRAM_ENTRY(BRCM_CC_43430_CHIP_ID, 0xFFFFFFFF, 43430),
 	BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4345_CHIP_ID, 0xFFFFFFC0, 43455),
 	BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4354_CHIP_ID, 0xFFFFFFFF, 4354),
-	BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4356_CHIP_ID, 0xFFFFFFFF, 4356)
+	BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4356_CHIP_ID, 0xFFFFFFFF, 4356),
+	BRCMF_FW_NVRAM_ENTRY(CY_CC_4373_CHIP_ID, 0xFFFFFFFF, 4373)
 };
 
 static void pkt_align(struct sk_buff *p, int len, int align)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
index 0eea48e..8f20a4b 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
@@ -50,6 +50,7 @@ 
 BRCMF_FW_DEF(43236B, "brcmfmac43236b.bin");
 BRCMF_FW_DEF(43242A, "brcmfmac43242a.bin");
 BRCMF_FW_DEF(43569, "brcmfmac43569.bin");
+BRCMF_FW_DEF(4373, "brcmfmac4373.bin");
 
 static struct brcmf_firmware_mapping brcmf_usb_fwnames[] = {
 	BRCMF_FW_ENTRY(BRCM_CC_43143_CHIP_ID, 0xFFFFFFFF, 43143),
@@ -58,7 +59,8 @@ 
 	BRCMF_FW_ENTRY(BRCM_CC_43238_CHIP_ID, 0x00000008, 43236B),
 	BRCMF_FW_ENTRY(BRCM_CC_43242_CHIP_ID, 0xFFFFFFFF, 43242A),
 	BRCMF_FW_ENTRY(BRCM_CC_43566_CHIP_ID, 0xFFFFFFFF, 43569),
-	BRCMF_FW_ENTRY(BRCM_CC_43569_CHIP_ID, 0xFFFFFFFF, 43569)
+	BRCMF_FW_ENTRY(BRCM_CC_43569_CHIP_ID, 0xFFFFFFFF, 43569),
+	BRCMF_FW_ENTRY(CY_CC_4373_CHIP_ID, 0xFFFFFFFF, 4373)
 };
 
 #define TRX_MAGIC		0x30524448	/* "HDR0" */
@@ -1463,15 +1465,20 @@  static int brcmf_usb_reset_resume(struct usb_interface *intf)
 #define LINKSYS_USB_DEVICE(dev_id)	\
 	{ USB_DEVICE(BRCM_USB_VENDOR_ID_LINKSYS, dev_id) }
 
+#define CYPRESS_USB_DEVICE(dev_id)	\
+	{ USB_DEVICE(CY_USB_VENDOR_ID_CYPRESS, dev_id) }
+
 static struct usb_device_id brcmf_usb_devid_table[] = {
 	BRCMF_USB_DEVICE(BRCM_USB_43143_DEVICE_ID),
 	BRCMF_USB_DEVICE(BRCM_USB_43236_DEVICE_ID),
 	BRCMF_USB_DEVICE(BRCM_USB_43242_DEVICE_ID),
 	BRCMF_USB_DEVICE(BRCM_USB_43569_DEVICE_ID),
 	LINKSYS_USB_DEVICE(BRCM_USB_43235_LINKSYS_DEVICE_ID),
+	CYPRESS_USB_DEVICE(CY_USB_4373_DEVICE_ID),
 	{ USB_DEVICE(BRCM_USB_VENDOR_ID_LG, BRCM_USB_43242_LG_DEVICE_ID) },
 	/* special entry for device with firmware loaded and running */
 	BRCMF_USB_DEVICE(BRCM_USB_BCMFW_DEVICE_ID),
+	CYPRESS_USB_DEVICE(BRCM_USB_BCMFW_DEVICE_ID),
 	{ /* 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 f1fb8a3..57544a3 100644
--- a/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h
+++ b/drivers/net/wireless/broadcom/brcm80211/include/brcm_hw_ids.h
@@ -23,6 +23,7 @@ 
 #define BRCM_USB_VENDOR_ID_BROADCOM	0x0a5c
 #define BRCM_USB_VENDOR_ID_LG		0x043e
 #define BRCM_USB_VENDOR_ID_LINKSYS	0x13b1
+#define CY_USB_VENDOR_ID_CYPRESS	0x04b4
 #define BRCM_PCIE_VENDOR_ID_BROADCOM	PCI_VENDOR_ID_BROADCOM
 
 /* Chipcommon Core Chip IDs */
@@ -57,6 +58,7 @@ 
 #define BRCM_CC_4365_CHIP_ID		0x4365
 #define BRCM_CC_4366_CHIP_ID		0x4366
 #define BRCM_CC_4371_CHIP_ID		0x4371
+#define CY_CC_4373_CHIP_ID		0x4373
 
 /* USB Device IDs */
 #define BRCM_USB_43143_DEVICE_ID	0xbd1e
@@ -66,6 +68,7 @@ 
 #define BRCM_USB_43242_LG_DEVICE_ID	0x3101
 #define BRCM_USB_43569_DEVICE_ID	0xbd27
 #define BRCM_USB_BCMFW_DEVICE_ID	0x0bdc
+#define CY_USB_4373_DEVICE_ID		0xbd29
 
 /* PCIE Device IDs */
 #define BRCM_PCIE_4350_DEVICE_ID	0x43a3
diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
index b733eb4..abacd54 100644
--- a/include/linux/mmc/sdio_ids.h
+++ b/include/linux/mmc/sdio_ids.h
@@ -39,6 +39,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_CYPRESS_4373		0x4373
 
 #define SDIO_VENDOR_ID_INTEL			0x0089
 #define SDIO_DEVICE_ID_INTEL_IWMC3200WIMAX	0x1402