mac80211: brcmsmac: use firmware extracted from proprietary driver

The firmware from linux-firmware does not support the rev 17 core found
in a bcm4716. The firmware extracted from the proprietary driver
supports this core. Use this firmware instead by default.

SVN-Revision: 33669
This commit is contained in:
Hauke Mehrtens 2012-10-08 20:18:27 +00:00
parent d14c6b29eb
commit 8086b7a750
3 changed files with 34 additions and 2 deletions

View file

@ -1079,6 +1079,13 @@ define KernelPackage/brcmutil/config
endmenu endmenu
endef 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_MD5SUM:=f4e357b09eaf5d8b1f1920cf3493a555
define KernelPackage/brcmsmac define KernelPackage/brcmsmac
$(call KernelPackage/mac80211/Default) $(call KernelPackage/mac80211/Default)
TITLE:=Broadcom IEEE802.11n PCIe SoftMAC WLAN driver TITLE:=Broadcom IEEE802.11n PCIe SoftMAC WLAN driver
@ -1086,12 +1093,32 @@ define KernelPackage/brcmsmac
DEPENDS+= +kmod-mac80211 +@DRIVER_11N_SUPPORT +!TARGET_brcm47xx:kmod-bcma +kmod-lib-cordic +kmod-lib-crc8 +kmod-brcmutil DEPENDS+= +kmod-mac80211 +@DRIVER_11N_SUPPORT +!TARGET_brcm47xx:kmod-bcma +kmod-lib-cordic +kmod-lib-crc8 +kmod-brcmutil
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/brcm80211/brcmsmac/brcmsmac.ko FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/brcm80211/brcmsmac/brcmsmac.ko
AUTOLOAD:=$(call AutoLoad,31,brcmsmac) AUTOLOAD:=$(call AutoLoad,31,brcmsmac)
MENU:=1
endef endef
define KernelPackage/brcmsmac/description define KernelPackage/brcmsmac/description
Kernel module for Broadcom IEEE802.11n PCIe Wireless cards Kernel module for Broadcom IEEE802.11n PCIe Wireless cards
endef endef
define KernelPackage/brcmsmac/config
menu "Configuration"
depends on 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.
endmenu
endef
define KernelPackage/brcmfmac define KernelPackage/brcmfmac
$(call KernelPackage/mac80211/Default) $(call KernelPackage/mac80211/Default)
TITLE:=Broadcom IEEE802.11n USB FullMAC WLAN driver TITLE:=Broadcom IEEE802.11n USB FullMAC WLAN driver
@ -1521,10 +1548,15 @@ endef
define KernelPackage/brcmsmac/install define KernelPackage/brcmsmac/install
$(INSTALL_DIR) $(1)/lib/firmware/brcm $(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)
else
$(INSTALL_DATA) \ $(INSTALL_DATA) \
$(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/brcm/bcm43xx-0.fw \ $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/brcm/bcm43xx-0.fw \
$(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/brcm/bcm43xx_hdr-0.fw \ $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/brcm/bcm43xx_hdr-0.fw \
$(1)/lib/firmware/brcm/ $(1)/lib/firmware/brcm/
endif
endef endef
define KernelPackage/brcmfmac/install define KernelPackage/brcmfmac/install

View file

@ -4,7 +4,7 @@
/* recognized BCMA Core IDs */ /* recognized BCMA Core IDs */
static struct bcma_device_id brcms_coreid_table[] = { static struct bcma_device_id brcms_coreid_table[] = {
+// BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 17, BCMA_ANY_CLASS), + BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 17, BCMA_ANY_CLASS),
BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 23, BCMA_ANY_CLASS), BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 23, BCMA_ANY_CLASS),
BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 24, BCMA_ANY_CLASS), BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 24, BCMA_ANY_CLASS),
BCMA_CORETABLE_END BCMA_CORETABLE_END

View file

@ -25,7 +25,7 @@ ifneq ($(CONFIG_TARGET_ar71xx),)
tools-y += lzma-old squashfs tools-y += lzma-old squashfs
endif endif
tools-y += lzma squashfs4 tools-y += lzma squashfs4
ifneq ($(CONFIG_PACKAGE_kmod-b43)$(CONFIG_PACKAGE_kmod-b43legacy),) ifneq ($(CONFIG_PACKAGE_kmod-b43)$(CONFIG_PACKAGE_kmod-b43legacy)$(CONFIG_BRCMSMAC_USE_FW_FROM_WL),)
tools-y += b43-tools tools-y += b43-tools
endif endif