diff options
author | Franky Lin <frankyl@broadcom.com> | 2014-03-15 12:18:17 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-03-17 13:44:14 -0400 |
commit | a797ca1eadeef7f4fdba2ab5d143d56cc3ec5da3 (patch) | |
tree | 0d18da4337325db6837f8ac3fee95505ae16666a | |
parent | 20d83f2464c0d1e27b24d654aa5495dcc44759c0 (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.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/chip.c | 5 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/include/brcm_hw_ids.h | 1 | ||||
-rw-r--r-- | include/linux/mmc/sdio_ids.h | 1 |
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 | }; |
993 | MODULE_DEVICE_TABLE(sdio, brcmf_sdmmc_ids); | 994 | MODULE_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 | ||
582 | MODULE_FIRMWARE(BCM43143_FIRMWARE_NAME); | 584 | MODULE_FIRMWARE(BCM43143_FIRMWARE_NAME); |
583 | MODULE_FIRMWARE(BCM43143_NVRAM_NAME); | 585 | MODULE_FIRMWARE(BCM43143_NVRAM_NAME); |
@@ -597,6 +599,8 @@ MODULE_FIRMWARE(BCM43362_FIRMWARE_NAME); | |||
597 | MODULE_FIRMWARE(BCM43362_NVRAM_NAME); | 599 | MODULE_FIRMWARE(BCM43362_NVRAM_NAME); |
598 | MODULE_FIRMWARE(BCM4339_FIRMWARE_NAME); | 600 | MODULE_FIRMWARE(BCM4339_FIRMWARE_NAME); |
599 | MODULE_FIRMWARE(BCM4339_NVRAM_NAME); | 601 | MODULE_FIRMWARE(BCM4339_NVRAM_NAME); |
602 | MODULE_FIRMWARE(BCM4354_FIRMWARE_NAME); | ||
603 | MODULE_FIRMWARE(BCM4354_NVRAM_NAME); | ||
600 | 604 | ||
601 | struct brcmf_firmware_names { | 605 | struct 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 |