diff options
| author | Arend van Spriel <arend@broadcom.com> | 2014-09-11 16:51:31 -0400 |
|---|---|---|
| committer | John W. Linville <linville@tuxdriver.com> | 2014-09-15 15:09:26 -0400 |
| commit | f1d56039b58f6f786450a858b2c8d2459a3382cc (patch) | |
| tree | 2566ab263d36c19b8453d7688dc8c0b61ac32e87 | |
| parent | fac7d2a3b8798f8b58004c74c4b37b9643b5897a (diff) | |
brcmfmac: conditionally compile firmware protocol source code
The host-interface can select which protocol implementation it
needs. Selecting PCIe will include the msgbuf protocol and selecting
USB and/or SDIO will include the bcdc protocol. The PCIe kconfig
option assures the dependencies for msgbuf are met, ie. HAS_DMA.
Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
Reviewed-by: Franky (Zhenhui) Lin <frankyl@broadcom.com>
Reviewed-by: Hante Meuleman <meuleman@broadcom.com>
Reviewed-by: Daniel (Deognyoun) Kim <dekim@broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieterpg@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/Kconfig | 10 | ||||
| -rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/Makefile | 10 | ||||
| -rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/bcdc.h | 7 | ||||
| -rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/msgbuf.h | 11 |
4 files changed, 30 insertions, 8 deletions
diff --git a/drivers/net/wireless/brcm80211/Kconfig b/drivers/net/wireless/brcm80211/Kconfig index b8e2561ea645..fe3dc126b149 100644 --- a/drivers/net/wireless/brcm80211/Kconfig +++ b/drivers/net/wireless/brcm80211/Kconfig | |||
| @@ -27,10 +27,17 @@ config BRCMFMAC | |||
| 27 | one of the bus interface support. If you choose to build a module, | 27 | one of the bus interface support. If you choose to build a module, |
| 28 | it'll be called brcmfmac.ko. | 28 | it'll be called brcmfmac.ko. |
| 29 | 29 | ||
| 30 | config BRCMFMAC_PROTO_BCDC | ||
| 31 | bool | ||
| 32 | |||
| 33 | config BRCMFMAC_PROTO_MSGBUF | ||
| 34 | bool | ||
| 35 | |||
| 30 | config BRCMFMAC_SDIO | 36 | config BRCMFMAC_SDIO |
| 31 | bool "SDIO bus interface support for FullMAC driver" | 37 | bool "SDIO bus interface support for FullMAC driver" |
| 32 | depends on (MMC = y || MMC = BRCMFMAC) | 38 | depends on (MMC = y || MMC = BRCMFMAC) |
| 33 | depends on BRCMFMAC | 39 | depends on BRCMFMAC |
| 40 | select BRCMFMAC_PROTO_BCDC | ||
| 34 | select FW_LOADER | 41 | select FW_LOADER |
| 35 | default y | 42 | default y |
| 36 | ---help--- | 43 | ---help--- |
| @@ -42,6 +49,7 @@ config BRCMFMAC_USB | |||
| 42 | bool "USB bus interface support for FullMAC driver" | 49 | bool "USB bus interface support for FullMAC driver" |
| 43 | depends on (USB = y || USB = BRCMFMAC) | 50 | depends on (USB = y || USB = BRCMFMAC) |
| 44 | depends on BRCMFMAC | 51 | depends on BRCMFMAC |
| 52 | select BRCMFMAC_PROTO_BCDC | ||
| 45 | select FW_LOADER | 53 | select FW_LOADER |
| 46 | ---help--- | 54 | ---help--- |
| 47 | This option enables the USB bus interface support for Broadcom | 55 | This option enables the USB bus interface support for Broadcom |
| @@ -52,6 +60,8 @@ config BRCMFMAC_PCIE | |||
| 52 | bool "PCIE bus interface support for FullMAC driver" | 60 | bool "PCIE bus interface support for FullMAC driver" |
| 53 | depends on BRCMFMAC | 61 | depends on BRCMFMAC |
| 54 | depends on PCI | 62 | depends on PCI |
| 63 | depends on HAS_DMA | ||
| 64 | select BRCMFMAC_PROTO_MSGBUF | ||
| 55 | select FW_LOADER | 65 | select FW_LOADER |
| 56 | ---help--- | 66 | ---help--- |
| 57 | This option enables the PCIE bus interface support for Broadcom | 67 | This option enables the PCIE bus interface support for Broadcom |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/Makefile b/drivers/net/wireless/brcm80211/brcmfmac/Makefile index c35adf4bc70b..90a977fe9a64 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/Makefile +++ b/drivers/net/wireless/brcm80211/brcmfmac/Makefile | |||
| @@ -30,16 +30,18 @@ brcmfmac-objs += \ | |||
| 30 | fwsignal.o \ | 30 | fwsignal.o \ |
| 31 | p2p.o \ | 31 | p2p.o \ |
| 32 | proto.o \ | 32 | proto.o \ |
| 33 | bcdc.o \ | ||
| 34 | commonring.o \ | ||
| 35 | flowring.o \ | ||
| 36 | msgbuf.o \ | ||
| 37 | dhd_common.o \ | 33 | dhd_common.o \ |
| 38 | dhd_linux.o \ | 34 | dhd_linux.o \ |
| 39 | firmware.o \ | 35 | firmware.o \ |
| 40 | feature.o \ | 36 | feature.o \ |
| 41 | btcoex.o \ | 37 | btcoex.o \ |
| 42 | vendor.o | 38 | vendor.o |
| 39 | brcmfmac-$(CONFIG_BRCMFMAC_PROTO_BCDC) += \ | ||
| 40 | bcdc.o | ||
| 41 | brcmfmac-$(CONFIG_BRCMFMAC_PROTO_MSGBUF) += \ | ||
| 42 | commonring.o \ | ||
| 43 | flowring.o \ | ||
| 44 | msgbuf.o | ||
| 43 | brcmfmac-$(CONFIG_BRCMFMAC_SDIO) += \ | 45 | brcmfmac-$(CONFIG_BRCMFMAC_SDIO) += \ |
| 44 | dhd_sdio.o \ | 46 | dhd_sdio.o \ |
| 45 | bcmsdh.o | 47 | bcmsdh.o |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/bcdc.h b/drivers/net/wireless/brcm80211/brcmfmac/bcdc.h index 17e8c039ff32..6003179c0ceb 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/bcdc.h +++ b/drivers/net/wireless/brcm80211/brcmfmac/bcdc.h | |||
| @@ -16,9 +16,12 @@ | |||
| 16 | #ifndef BRCMFMAC_BCDC_H | 16 | #ifndef BRCMFMAC_BCDC_H |
| 17 | #define BRCMFMAC_BCDC_H | 17 | #define BRCMFMAC_BCDC_H |
| 18 | 18 | ||
| 19 | 19 | #ifdef CONFIG_BRCMFMAC_PROTO_BCDC | |
| 20 | int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr); | 20 | int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr); |
| 21 | void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr); | 21 | void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr); |
| 22 | 22 | #else | |
| 23 | static inline int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr) { return 0; } | ||
| 24 | static inline void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr) {} | ||
| 25 | #endif | ||
| 23 | 26 | ||
| 24 | #endif /* BRCMFMAC_BCDC_H */ | 27 | #endif /* BRCMFMAC_BCDC_H */ |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.h b/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.h index f901ae52bf2b..77a51b8c1e12 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.h +++ b/drivers/net/wireless/brcm80211/brcmfmac/msgbuf.h | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | #ifndef BRCMFMAC_MSGBUF_H | 15 | #ifndef BRCMFMAC_MSGBUF_H |
| 16 | #define BRCMFMAC_MSGBUF_H | 16 | #define BRCMFMAC_MSGBUF_H |
| 17 | 17 | ||
| 18 | #ifdef CONFIG_BRCMFMAC_PROTO_MSGBUF | ||
| 18 | 19 | ||
| 19 | #define BRCMF_H2D_MSGRING_CONTROL_SUBMIT_MAX_ITEM 20 | 20 | #define BRCMF_H2D_MSGRING_CONTROL_SUBMIT_MAX_ITEM 20 |
| 20 | #define BRCMF_H2D_MSGRING_RXPOST_SUBMIT_MAX_ITEM 256 | 21 | #define BRCMF_H2D_MSGRING_RXPOST_SUBMIT_MAX_ITEM 256 |
| @@ -32,9 +33,15 @@ | |||
| 32 | 33 | ||
| 33 | 34 | ||
| 34 | int brcmf_proto_msgbuf_rx_trigger(struct device *dev); | 35 | int brcmf_proto_msgbuf_rx_trigger(struct device *dev); |
| 36 | void brcmf_msgbuf_delete_flowring(struct brcmf_pub *drvr, u8 flowid); | ||
| 35 | int brcmf_proto_msgbuf_attach(struct brcmf_pub *drvr); | 37 | int brcmf_proto_msgbuf_attach(struct brcmf_pub *drvr); |
| 36 | void brcmf_proto_msgbuf_detach(struct brcmf_pub *drvr); | 38 | void brcmf_proto_msgbuf_detach(struct brcmf_pub *drvr); |
| 37 | void brcmf_msgbuf_delete_flowring(struct brcmf_pub *drvr, u8 flowid); | 39 | #else |
| 38 | 40 | static inline int brcmf_proto_msgbuf_attach(struct brcmf_pub *drvr) | |
| 41 | { | ||
| 42 | return 0; | ||
| 43 | } | ||
| 44 | static inline void brcmf_proto_msgbuf_detach(struct brcmf_pub *drvr) {} | ||
| 45 | #endif | ||
| 39 | 46 | ||
| 40 | #endif /* BRCMFMAC_MSGBUF_H */ | 47 | #endif /* BRCMFMAC_MSGBUF_H */ |
