aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFranky Lin <frankyl@broadcom.com>2014-03-15 12:18:17 -0400
committerJohn W. Linville <linville@tuxdriver.com>2014-03-17 13:44:14 -0400
commita797ca1eadeef7f4fdba2ab5d143d56cc3ec5da3 (patch)
tree0d18da4337325db6837f8ac3fee95505ae16666a
parent20d83f2464c0d1e27b24d654aa5495dcc44759c0 (diff)
brcmfmac: add BCM4354 SDIO interface support
BCM4354 is an a/b/g/n/ac 2x2 WiFi chip. This patch adds support for it through SDIO interface. Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com> Reviewed-by: Arend Van Spriel <arend@broadcom.com> Signed-off-by: Franky Lin <frankyl@broadcom.com> Signed-off-by: Arend van Spriel <arend@broadcom.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c1
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/chip.c5
-rw-r--r--drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c7
-rw-r--r--drivers/net/wireless/brcm80211/include/brcm_hw_ids.h1
-rw-r--r--include/linux/mmc/sdio_ids.h1
5 files changed, 14 insertions, 1 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
index d737cf78469a..6e8718bf6920 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh.c
@@ -988,6 +988,7 @@ static const struct sdio_device_id brcmf_sdmmc_ids[] = {
988 {SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_DEVICE_ID_BROADCOM_43362)}, 988 {SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_DEVICE_ID_BROADCOM_43362)},
989 {SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, 989 {SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM,
990 SDIO_DEVICE_ID_BROADCOM_4335_4339)}, 990 SDIO_DEVICE_ID_BROADCOM_4335_4339)},
991 {SDIO_DEVICE(SDIO_VENDOR_ID_BROADCOM, SDIO_DEVICE_ID_BROADCOM_4354)},
991 { /* end: all zeroes */ }, 992 { /* end: all zeroes */ },
992}; 993};
993MODULE_DEVICE_TABLE(sdio, brcmf_sdmmc_ids); 994MODULE_DEVICE_TABLE(sdio, brcmf_sdmmc_ids);
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/chip.c b/drivers/net/wireless/brcm80211/brcmfmac/chip.c
index a07b95ef9e70..df130ef53d1c 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/chip.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/chip.c
@@ -504,6 +504,7 @@ static void brcmf_chip_get_raminfo(struct brcmf_chip_priv *ci)
504 ci->pub.ramsize = 0x3c000; 504 ci->pub.ramsize = 0x3c000;
505 break; 505 break;
506 case BCM4339_CHIP_ID: 506 case BCM4339_CHIP_ID:
507 case BCM4354_CHIP_ID:
507 ci->pub.ramsize = 0xc0000; 508 ci->pub.ramsize = 0xc0000;
508 ci->pub.rambase = 0x180000; 509 ci->pub.rambase = 0x180000;
509 break; 510 break;
@@ -1006,6 +1007,10 @@ bool brcmf_chip_sr_capable(struct brcmf_chip *pub)
1006 chip = container_of(pub, struct brcmf_chip_priv, pub); 1007 chip = container_of(pub, struct brcmf_chip_priv, pub);
1007 1008
1008 switch (pub->chip) { 1009 switch (pub->chip) {
1010 case BCM4354_CHIP_ID:
1011 /* explicitly check SR engine enable bit */
1012 pmu_cc3_mask = BIT(2);
1013 /* fall-through */
1009 case BCM43241_CHIP_ID: 1014 case BCM43241_CHIP_ID:
1010 case BCM4335_CHIP_ID: 1015 case BCM4335_CHIP_ID:
1011 case BCM4339_CHIP_ID: 1016 case BCM4339_CHIP_ID:
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
index a111b6fbbeba..4aa8678590d5 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c
@@ -578,6 +578,8 @@ static const struct sdiod_drive_str sdiod_drvstr_tab2_3v3[] = {
578#define BCM43362_NVRAM_NAME "brcm/brcmfmac43362-sdio.txt" 578#define BCM43362_NVRAM_NAME "brcm/brcmfmac43362-sdio.txt"
579#define BCM4339_FIRMWARE_NAME "brcm/brcmfmac4339-sdio.bin" 579#define BCM4339_FIRMWARE_NAME "brcm/brcmfmac4339-sdio.bin"
580#define BCM4339_NVRAM_NAME "brcm/brcmfmac4339-sdio.txt" 580#define BCM4339_NVRAM_NAME "brcm/brcmfmac4339-sdio.txt"
581#define BCM4354_FIRMWARE_NAME "brcm/brcmfmac4354-sdio.bin"
582#define BCM4354_NVRAM_NAME "brcm/brcmfmac4354-sdio.txt"
581 583
582MODULE_FIRMWARE(BCM43143_FIRMWARE_NAME); 584MODULE_FIRMWARE(BCM43143_FIRMWARE_NAME);
583MODULE_FIRMWARE(BCM43143_NVRAM_NAME); 585MODULE_FIRMWARE(BCM43143_NVRAM_NAME);
@@ -597,6 +599,8 @@ MODULE_FIRMWARE(BCM43362_FIRMWARE_NAME);
597MODULE_FIRMWARE(BCM43362_NVRAM_NAME); 599MODULE_FIRMWARE(BCM43362_NVRAM_NAME);
598MODULE_FIRMWARE(BCM4339_FIRMWARE_NAME); 600MODULE_FIRMWARE(BCM4339_FIRMWARE_NAME);
599MODULE_FIRMWARE(BCM4339_NVRAM_NAME); 601MODULE_FIRMWARE(BCM4339_NVRAM_NAME);
602MODULE_FIRMWARE(BCM4354_FIRMWARE_NAME);
603MODULE_FIRMWARE(BCM4354_NVRAM_NAME);
600 604
601struct brcmf_firmware_names { 605struct brcmf_firmware_names {
602 u32 chipid; 606 u32 chipid;
@@ -622,7 +626,8 @@ static const struct brcmf_firmware_names brcmf_fwname_data[] = {
622 { BCM4334_CHIP_ID, 0xFFFFFFFF, BRCMF_FIRMWARE_NVRAM(BCM4334) }, 626 { BCM4334_CHIP_ID, 0xFFFFFFFF, BRCMF_FIRMWARE_NVRAM(BCM4334) },
623 { BCM4335_CHIP_ID, 0xFFFFFFFF, BRCMF_FIRMWARE_NVRAM(BCM4335) }, 627 { BCM4335_CHIP_ID, 0xFFFFFFFF, BRCMF_FIRMWARE_NVRAM(BCM4335) },
624 { BCM43362_CHIP_ID, 0xFFFFFFFE, BRCMF_FIRMWARE_NVRAM(BCM43362) }, 628 { BCM43362_CHIP_ID, 0xFFFFFFFE, BRCMF_FIRMWARE_NVRAM(BCM43362) },
625 { BCM4339_CHIP_ID, 0xFFFFFFFF, BRCMF_FIRMWARE_NVRAM(BCM4339) } 629 { BCM4339_CHIP_ID, 0xFFFFFFFF, BRCMF_FIRMWARE_NVRAM(BCM4339) },
630 { BCM4354_CHIP_ID, 0xFFFFFFFF, BRCMF_FIRMWARE_NVRAM(BCM4354) }
626}; 631};
627 632
628 633
diff --git a/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h b/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h
index 6fa5d4863782..d816270db3be 100644
--- a/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h
+++ b/drivers/net/wireless/brcm80211/include/brcm_hw_ids.h
@@ -43,5 +43,6 @@
43#define BCM4335_CHIP_ID 0x4335 43#define BCM4335_CHIP_ID 0x4335
44#define BCM43362_CHIP_ID 43362 44#define BCM43362_CHIP_ID 43362
45#define BCM4339_CHIP_ID 0x4339 45#define BCM4339_CHIP_ID 0x4339
46#define BCM4354_CHIP_ID 0x4354
46 47
47#endif /* _BRCM_HW_IDS_H_ */ 48#endif /* _BRCM_HW_IDS_H_ */
diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h
index d8836623f36a..0f01fe065424 100644
--- a/include/linux/mmc/sdio_ids.h
+++ b/include/linux/mmc/sdio_ids.h
@@ -31,6 +31,7 @@
31#define SDIO_DEVICE_ID_BROADCOM_4334 0x4334 31#define SDIO_DEVICE_ID_BROADCOM_4334 0x4334
32#define SDIO_DEVICE_ID_BROADCOM_4335_4339 0x4335 32#define SDIO_DEVICE_ID_BROADCOM_4335_4339 0x4335
33#define SDIO_DEVICE_ID_BROADCOM_43362 43362 33#define SDIO_DEVICE_ID_BROADCOM_43362 43362
34#define SDIO_DEVICE_ID_BROADCOM_4354 0x4354
34 35
35#define SDIO_VENDOR_ID_INTEL 0x0089 36#define SDIO_VENDOR_ID_INTEL 0x0089
36#define SDIO_DEVICE_ID_INTEL_IWMC3200WIMAX 0x1402 37#define SDIO_DEVICE_ID_INTEL_IWMC3200WIMAX 0x1402