From: Hauke Mehrtens Date: Mon, 8 Oct 2012 20:18:27 +0000 (+0000) Subject: mac80211: brcmsmac: use firmware extracted from proprietary driver X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fstaging%2Fflorian.git;a=commitdiff_plain;h=8086b7a75004e9f0ec71d5ffc9afce94a075087b 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 --- diff --git a/package/mac80211/Makefile b/package/mac80211/Makefile index 35027d3ac4..6b99d5942d 100644 --- a/package/mac80211/Makefile +++ b/package/mac80211/Makefile @@ -1079,6 +1079,13 @@ define KernelPackage/brcmutil/config endmenu 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 $(call KernelPackage/mac80211/Default) 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 FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/brcm80211/brcmsmac/brcmsmac.ko AUTOLOAD:=$(call AutoLoad,31,brcmsmac) + MENU:=1 endef define KernelPackage/brcmsmac/description Kernel module for Broadcom IEEE802.11n PCIe Wireless cards 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 $(call KernelPackage/mac80211/Default) TITLE:=Broadcom IEEE802.11n USB FullMAC WLAN driver @@ -1521,10 +1548,15 @@ 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) +else $(INSTALL_DATA) \ $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/brcm/bcm43xx-0.fw \ $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/brcm/bcm43xx_hdr-0.fw \ $(1)/lib/firmware/brcm/ +endif endef define KernelPackage/brcmfmac/install diff --git a/package/mac80211/patches/849-brcmsmac-add-device-found-on-some-SoCs-like-the-bcm4.patch b/package/mac80211/patches/849-brcmsmac-add-device-found-on-some-SoCs-like-the-bcm4.patch index f70a261f03..46528d5e01 100644 --- a/package/mac80211/patches/849-brcmsmac-add-device-found-on-some-SoCs-like-the-bcm4.patch +++ b/package/mac80211/patches/849-brcmsmac-add-device-found-on-some-SoCs-like-the-bcm4.patch @@ -4,7 +4,7 @@ /* recognized BCMA Core IDs */ 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, 24, BCMA_ANY_CLASS), BCMA_CORETABLE_END diff --git a/tools/Makefile b/tools/Makefile index 620da05f00..b3ba6d06b1 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -25,7 +25,7 @@ ifneq ($(CONFIG_TARGET_ar71xx),) tools-y += lzma-old squashfs endif 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 endif