PKG_DRIVERS += \ b43 brcmsmac brcmfmac brcmutil PKG_CONFIG_DEPENDS += \ CONFIG_PACKAGE_B43_DEBUG \ CONFIG_PACKAGE_B43_PIO \ CONFIG_PACKAGE_B43_PHY_G \ CONFIG_PACKAGE_B43_PHY_N \ CONFIG_PACKAGE_B43_PHY_LP \ CONFIG_PACKAGE_B43_PHY_HT \ CONFIG_PACKAGE_B43_BUSES_BCMA_AND_SSB \ CONFIG_PACKAGE_B43_BUSES_BCMA \ CONFIG_PACKAGE_B43_BUSES_SSB \ CONFIG_PACKAGE_BRCM80211_DEBUG config-$(call config_package,b43) += B43 config-$(CONFIG_PACKAGE_B43_BUSES_BCMA_AND_SSB) += B43_BUSES_BCMA_AND_SSB config-$(CONFIG_PACKAGE_B43_BUSES_BCMA) += B43_BUSES_BCMA config-$(CONFIG_PACKAGE_B43_BUSES_SSB) += B43_BUSES_SSB config-$(CONFIG_PACKAGE_B43_PHY_G) += B43_PHY_G config-$(CONFIG_PACKAGE_B43_PHY_N) += B43_PHY_N config-$(CONFIG_PACKAGE_B43_PHY_LP) += B43_PHY_LP config-$(CONFIG_PACKAGE_B43_PHY_HT) += B43_PHY_HT config-$(CONFIG_PACKAGE_B43_PIO) += B43_PIO config-$(CONFIG_PACKAGE_B43_DEBUG) += B43_DEBUG config-$(call config_package,brcmutil) += BRCMUTIL config-$(call config_package,brcmsmac) += BRCMSMAC config-$(call config_package,brcmfmac) += BRCMFMAC config-$(CONFIG_BRCMFMAC_SDIO) += BRCMFMAC_SDIO config-$(CONFIG_BRCMFMAC_USB) += BRCMFMAC_USB config-$(CONFIG_BRCMFMAC_PCIE) += BRCMFMAC_PCIE config-$(CONFIG_PACKAGE_BRCM80211_DEBUG) += BRCMDBG config-$(CONFIG_LEDS_TRIGGERS) += B43_LEDS B43LEGACY_LEDS #Broadcom firmware ifneq ($(CONFIG_B43_FW_6_30),) PKG_B43_FWV4_NAME:=broadcom-wl PKG_B43_FWV4_VERSION:=6.30.163.46 PKG_B43_FWV4_OBJECT:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION).wl_apsta.o PKG_B43_FWV4_SOURCE:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION).tar.bz2 PKG_B43_FWV4_SOURCE_URL:=http://www.lwfinger.com/b43-firmware/ PKG_B43_FWV4_HASH:=a07c3b6b277833c7dbe61daa511f908cd66c5e2763eb7a0859abc36cd9335c2d else ifneq ($(CONFIG_B43_FW_5_10),) PKG_B43_FWV4_NAME:=broadcom-wl PKG_B43_FWV4_VERSION:=5.10.56.27.3 PKG_B43_FWV4_OBJECT:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)/driver/wl_apsta/wl_prebuilt.o PKG_B43_FWV4_SOURCE:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)_mipsel.tar.bz2 PKG_B43_FWV4_SOURCE_URL:=@OPENWRT PKG_B43_FWV4_HASH:=26a8c370f48fc129d0731cfd751c36cae1419b0bc8ca35781126744e60eae009 else ifneq ($(CONFIG_B43_FW_4_178),) PKG_B43_FWV4_NAME:=broadcom-wl PKG_B43_FWV4_VERSION:=4.178.10.4 PKG_B43_FWV4_OBJECT:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)/linux/wl_apsta.o PKG_B43_FWV4_SOURCE:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION).tar.bz2 PKG_B43_FWV4_SOURCE_URL:=@OPENWRT PKG_B43_FWV4_HASH:=32f6ad98facbb9045646fdc8b54bb03086d204153253f9c65d0234a5d90ae53f else ifneq ($(CONFIG_B43_FW_5_100_138),) PKG_B43_FWV4_NAME:=broadcom-wl PKG_B43_FWV4_VERSION:=5.100.138 PKG_B43_FWV4_OBJECT:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)/linux/wl_apsta.o PKG_B43_FWV4_SOURCE:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION).tar.bz2 PKG_B43_FWV4_SOURCE_URL:=http://www.lwfinger.com/b43-firmware/ PKG_B43_FWV4_HASH:=f1e7067aac5b62b67b8b6e4c517990277804339ac16065eb13c731ff909ae46f else PKG_B43_FWV4_NAME:=broadcom-wl PKG_B43_FWV4_VERSION:=4.150.10.5 PKG_B43_FWV4_OBJECT:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)/driver/wl_apsta_mimo.o PKG_B43_FWV4_SOURCE:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION).tar.bz2 PKG_B43_FWV4_SOURCE_URL:=@OPENWRT PKG_B43_FWV4_HASH:=a9f4e276a4d8d3a1cd0f2eb87080ae89b77f0a7140f06d4e9e2135fc44fdd533 endif endif endif endif ifneq ($(CONFIG_B43_OPENFIRMWARE),) PKG_B43_FWV4_NAME:=broadcom-wl PKG_B43_FWV4_VERSION:=5.2 PKG_B43_FWV4_OBJECT:=openfwwf-$(PKG_B43_FWV4_VERSION) PKG_B43_FWV4_SOURCE:=openfwwf-$(PKG_B43_FWV4_VERSION).tar.gz PKG_B43_FWV4_SOURCE_URL:=http://netweb.ing.unibs.it/~openfwwf/firmware PKG_B43_FWV4_HASH:=9de03320083201080b2e94b81637ac07a159cf4e6f3481383e1a217e627bc0dc endif define Download/b43 FILE:=$(PKG_B43_FWV4_SOURCE) URL:=$(PKG_B43_FWV4_SOURCE_URL) HASH:=$(PKG_B43_FWV4_HASH) endef $(eval $(call Download,b43)) define KernelPackage/b43 $(call KernelPackage/mac80211/Default) TITLE:=Broadcom 43xx wireless support URL:=https://wireless.wiki.kernel.org/en/users/drivers/b43 KCONFIG:= \ CONFIG_HW_RANDOM=y # Depend on PCI_SUPPORT to make sure we can select kmod-bcma or kmod-ssb DEPENDS += \ @PCI_SUPPORT +kmod-mac80211 +kmod-lib-cordic \ $(if $(CONFIG_PACKAGE_B43_USE_SSB),+kmod-ssb) \ $(if $(CONFIG_PACKAGE_B43_USE_BCMA),+kmod-bcma) FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/broadcom/b43/b43.ko AUTOLOAD:=$(call AutoProbe,b43) MENU:=1 endef define KernelPackage/b43/config config PACKAGE_B43_USE_SSB select PACKAGE_kmod-ssb tristate depends on !TARGET_bcm47xx && !TARGET_bcm63xx default PACKAGE_kmod-b43 if PACKAGE_B43_BUSES_BCMA_AND_SSB default PACKAGE_kmod-b43 if PACKAGE_B43_BUSES_SSB config PACKAGE_B43_USE_BCMA select PACKAGE_kmod-bcma tristate depends on !TARGET_bcm47xx && !TARGET_bcm53xx default PACKAGE_kmod-b43 if PACKAGE_B43_BUSES_BCMA_AND_SSB default PACKAGE_kmod-b43 if PACKAGE_B43_BUSES_BCMA if PACKAGE_kmod-b43 choice prompt "b43 firmware version" default B43_FW_5_100_138 help This option allows you to select the version of the b43 firmware. config B43_FW_4_150 bool "Firmware 410.2160 from driver 4.150.10.5 (old stable)" help Old stable firmware for BCM43xx devices. If unsure, select this. config B43_FW_4_178 bool "Firmware 478.104 from driver 4.178.10.4" help Older firmware for BCM43xx devices. If unsure, select the "stable" firmware. config B43_FW_5_10 bool "Firmware 508.1084 from driver 5.10.56.27" help Older firmware for BCM43xx devices. If unsure, select the "stable" firmware. config B43_FW_5_100_138 bool "Firmware 666.2 from driver 5.100.138 (stable)" help The currently default firmware for BCM43xx devices. This firmware currently gets most of the testing and is needed for some N-PHY devices. If unsure, select the this firmware. config B43_FW_6_30 bool "Firmware 784.2 from driver 6.30.163.46 (experimental)" help Newer experimental firmware for BCM43xx devices. This firmware is mostly untested. If unsure, select the "stable" firmware. config B43_OPENFIRMWARE bool "Open FirmWare for WiFi networks" help Opensource firmware for BCM43xx devices. Do _not_ select this, unless you know what you are doing. The Opensource firmware is not suitable for embedded devices, yet. It does not support QoS, which is bad for AccessPoints. It does not support hardware crypto acceleration, which is a showstopper for embedded devices with low CPU resources. If unsure, select the "stable" firmware. endchoice config B43_FW_SQUASH bool "Remove unnecessary firmware files" depends on !B43_OPENFIRMWARE default y help This options allows you to remove unnecessary b43 firmware files from the final rootfs image. This can reduce the rootfs size by up to 200k. If unsure, say Y. config B43_FW_SQUASH_COREREVS string "Core revisions to include" depends on B43_FW_SQUASH default "5,6,7,8,9,10,11,13,15" if TARGET_bcm47xx_legacy default "16,28,29,30" if TARGET_bcm47xx_mips74k default "5,6,7,8,9,10,11,13,15,16,28,29,30" help This is a comma separated list of core revision numbers. Example (keep files for rev5 only): 5 Example (keep files for rev5 and rev11): 5,11 config B43_FW_SQUASH_PHYTYPES string "PHY types to include" depends on B43_FW_SQUASH default "G,N,LP" if TARGET_bcm47xx_legacy default "N,HT" if TARGET_bcm47xx_mips74k default "G,N,LP,HT" help This is a comma separated list of PHY types: A => A-PHY AG => Dual A-PHY G-PHY G => G-PHY LP => LP-PHY N => N-PHY HT => HT-PHY LCN => LCN-PHY LCN40 => LCN40-PHY AC => AC-PHY Example (keep files for G-PHY only): G Example (keep files for G-PHY and N-PHY): G,N choice prompt "Supported buses" default PACKAGE_B43_BUSES_BCMA_AND_SSB help This allows choosing buses that b43 should support. config PACKAGE_B43_BUSES_BCMA_AND_SSB depends on !TARGET_bcm47xx_legacy && !TARGET_bcm47xx_mips74k && !TARGET_bcm53xx && !TARGET_bmips bool "BCMA and SSB" config PACKAGE_B43_BUSES_BCMA depends on !TARGET_bcm47xx_legacy && !TARGET_bmips_bcm6358 && !TARGET_bmips_bcm6368 bool "BCMA only" config PACKAGE_B43_BUSES_SSB depends on !TARGET_bcm47xx_mips74k && !TARGET_bcm53xx bool "SSB only" endchoice config PACKAGE_B43_DEBUG bool "Enable debug output and debugfs for b43" default n help Enable additional debug output and runtime sanity checks for b43 and enables the debugfs interface. If unsure, say N. config PACKAGE_B43_PIO bool "Enable support for PIO transfer mode" default n help Enable support for using PIO instead of DMA. Unless you have DMA transfer problems you don't need this. If unsure, say N. config PACKAGE_B43_PHY_G bool "Enable support for G-PHYs" default n if TARGET_bcm47xx_mips74k default y help Enable support for G-PHY. This includes support for the following devices: PCI: BCM4306, BCM4311, BCM4318 SoC: BCM5352E, BCM4712 If unsure, say Y. config PACKAGE_B43_PHY_N bool "Enable support for N-PHYs" default y help Enable support for N-PHY. This includes support for the following devices: PCI: BCM4321, BCM4322, BCM43222, BCM43224, BCM43225 SoC: BCM4716, BCM4717, BCM4718 Currently only 11g speed is available. If unsure, say Y. config PACKAGE_B43_PHY_LP bool "Enable support for LP-PHYs" default n if TARGET_bcm47xx_mips74k default y help Enable support for LP-PHY. This includes support for the following devices: PCI: BCM4312 SoC: BCM5354 If unsure, say Y. config PACKAGE_B43_PHY_HT bool "Enable support for HT-PHYs" default n if TARGET_bcm47xx_legacy default y help Enable support for HT-PHY. This includes support for the following devices: PCI: BCM4331 Currently only 11g speed is available. If unsure, say Y. config PACKAGE_B43_PHY_LCN bool "Enable support for LCN-PHYs" depends on BROKEN default n help Currently broken. If unsure, say N. endif endef define KernelPackage/b43/description Kernel module for Broadcom 43xx wireless support (mac80211 stack) new endef define KernelPackage/brcmutil $(call KernelPackage/mac80211/Default) TITLE:=Broadcom IEEE802.11n common driver parts URL:=https://wireless.wiki.kernel.org/en/users/drivers/brcm80211 DEPENDS+=@PCI_SUPPORT||USB_SUPPORT FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil.ko AUTOLOAD:=$(call AutoProbe,brcmutil) MENU:=1 endef define KernelPackage/brcmutil/description This module contains some common parts needed by Broadcom Wireless drivers brcmsmac and brcmfmac. endef define KernelPackage/brcmutil/config if PACKAGE_kmod-brcmutil config PACKAGE_BRCM80211_DEBUG bool "Broadcom wireless driver debugging" help Say Y, if you want to debug brcmsmac and brcmfmac wireless driver. endif endef PKG_BRCMSMAC_FW_NAME:=broadcom-wl PKG_BRCMSMAC_FW_VERSION:=5.100.138 PKG_BRCMSMAC_FW_OBJECT:=$(PKG_BRCMSMAC_FW_NAME)-$(PKG_BRCMSMAC_FW_VERSION)/linux/wl_apsta.o PKG_BRCMSMAC_FW_SOURCE:=$(PKG_BRCMSMAC_FW_NAME)-$(PKG_BRCMSMAC_FW_VERSION).tar.bz2 PKG_BRCMSMAC_FW_SOURCE_URL:=http://www.lwfinger.com/b43-firmware/ PKG_BRCMSMAC_FW_HASH:=f1e7067aac5b62b67b8b6e4c517990277804339ac16065eb13c731ff909ae46f define Download/brcmsmac FILE:=$(PKG_BRCMSMAC_FW_SOURCE) URL:=$(PKG_BRCMSMAC_FW_SOURCE_URL) HASH:=$(PKG_BRCMSMAC_FW_HASH) endef $(eval $(call Download,brcmsmac)) define KernelPackage/brcmsmac $(call KernelPackage/mac80211/Default) TITLE:=Broadcom IEEE802.11n PCIe SoftMAC WLAN driver URL:=https://wireless.wiki.kernel.org/en/users/drivers/brcm80211 DEPENDS+=@!TARGET_bcm47xx_legacy +kmod-mac80211 +!TARGET_bcm47xx:kmod-bcma +kmod-lib-cordic +kmod-lib-crc8 +kmod-brcmutil +!BRCMSMAC_USE_FW_FROM_WL:brcmsmac-firmware FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/broadcom/brcm80211/brcmsmac/brcmsmac.ko AUTOLOAD:=$(call AutoProbe,brcmsmac) MENU:=1 endef define KernelPackage/brcmsmac/description Kernel module for Broadcom IEEE802.11n PCIe Wireless cards endef define KernelPackage/brcmsmac/config if PACKAGE_kmod-brcmsmac config BRCMSMAC_USE_FW_FROM_WL bool "Use firmware extracted from broadcom proprietary driver" default y help Instead of using the official brcmsmac firmware a firmware version 666.2 extracted from the proprietary Broadcom driver is used. This is needed to get core rev 17 used in bcm4716 to work. If unsure, say Y. endif endef define KernelPackage/brcmfmac $(call KernelPackage/mac80211/Default) TITLE:=Broadcom IEEE802.11n USB FullMAC WLAN driver URL:=https://wireless.wiki.kernel.org/en/users/drivers/brcm80211 DEPENDS+= @USB_SUPPORT +kmod-cfg80211 +@DRIVER_11AC_SUPPORT \ +kmod-brcmutil +BRCMFMAC_SDIO:kmod-mmc @!TARGET_uml \ +BRCMFMAC_USB:kmod-usb-core +BRCMFMAC_USB:brcmfmac-firmware-usb FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko AUTOLOAD:=$(call AutoProbe,brcmfmac) endef define KernelPackage/brcmfmac/description Kernel module for Broadcom IEEE802.11n USB Wireless cards endef define KernelPackage/brcmfmac/config if PACKAGE_kmod-brcmfmac config BRCMFMAC_SDIO bool "Enable SDIO bus interface support" default y if TARGET_bcm27xx default y if TARGET_imx_cortexa7 default y if TARGET_rockchip default y if TARGET_sunxi default n help Enable support for cards attached to an SDIO bus. Select this option only if you are sure that your board has a Broadcom wireless chip atacched to that bus. config BRCMFMAC_USB bool "Enable USB bus interface support" depends on USB_SUPPORT default y help Supported USB connected chipsets: BCM43235, BCM43236, BCM43238 (all in revision 3 only) BCM43143, BCM43242, BCM43566, BCM43569 config BRCMFMAC_PCIE bool "Enable PCIE bus interface support" depends on PCI_SUPPORT default y help Supported PCIe connected chipsets: BCM4354, BCM4356, BCM43567, BCM43570, BCM43602 endif endef define KernelPackage/b43/install rm -rf $(1)/lib/firmware/ ifeq ($(CONFIG_B43_OPENFIRMWARE),y) tar xzf "$(DL_DIR)/$(PKG_B43_FWV4_SOURCE)" -C "$(PKG_BUILD_DIR)" else tar xjf "$(DL_DIR)/$(PKG_B43_FWV4_SOURCE)" -C "$(PKG_BUILD_DIR)" endif $(INSTALL_DIR) $(1)/lib/firmware/ ifeq ($(CONFIG_B43_OPENFIRMWARE),y) $(MAKE) -C "$(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT)/" $(INSTALL_DIR) $(1)/lib/firmware/b43-open/ $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT)/ucode5.fw $(1)/lib/firmware/b43-open/ucode5.fw $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT)/b0g0bsinitvals5.fw $(1)/lib/firmware/b43-open/b0g0bsinitvals5.fw $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT)/b0g0initvals5.fw $(1)/lib/firmware/b43-open/b0g0initvals5.fw else b43-fwcutter -w $(1)/lib/firmware/ $(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT) endif ifneq ($(CONFIG_B43_FW_SQUASH),) b43-fwsquash.py "$(CONFIG_B43_FW_SQUASH_PHYTYPES)" "$(CONFIG_B43_FW_SQUASH_COREREVS)" "$(1)/lib/firmware/b43" endif endef define KernelPackage/brcmsmac/install $(INSTALL_DIR) $(1)/lib/firmware/brcm ifeq ($(CONFIG_BRCMSMAC_USE_FW_FROM_WL),y) tar xjf "$(DL_DIR)/$(PKG_BRCMSMAC_FW_SOURCE)" -C "$(PKG_BUILD_DIR)" b43-fwcutter --brcmsmac -w $(1)/lib/firmware/ $(PKG_BUILD_DIR)/$(PKG_BRCMSMAC_FW_OBJECT) endif endef