mirror of
https://github.com/nxp-imx/mwifiex.git
synced 2025-01-15 16:25:35 +00:00
bd8827d169
The sdk release is from NXP offial web: https://www.nxp.com/products/wireless/wi-fi-plus-bluetooth/ 88w8997-wi-fi-dual-band-with-bluetooth-5-for-a-v-streaming-and-digital-tv:88W8997?tab=Design_Tools_Tab The release file is: PCIE-WLAN-UART-BT-8997-U16-X86-W16.68.10.p16-16.26.10.p16-C4X16640_V4-MGPL The sdk version is: W16.68.10.p16 Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
356 lines
12 KiB
Text
Executable file
356 lines
12 KiB
Text
Executable file
=================================================================================
|
|
U S E R M A N U A L F O R OpenWrt
|
|
|
|
This section describes detailed steps to add Marvell Wireless NIC (sdio/usb/pcie)
|
|
driver to OpenWrt build system.
|
|
|
|
Add marvell driver (sdio/usb/pcie) to OpenWrt build system.
|
|
|
|
1. Go to the openwrt source code folder
|
|
2. make menuconfig
|
|
choose x86 platform
|
|
other general openwrt configurations please refer to:
|
|
https://wiki.openwrt.org/doc/howto/build
|
|
3. After make menuconfig
|
|
make sure that following configurations are set in .config
|
|
CONFIG_PACKAGE_hostapd=y
|
|
CONFIG_PACKAGE_hostapd-common=y
|
|
CONFIG_PACKAGE_kmod-cfg80211=y
|
|
4. Go to the openwrt source code folder and Compile openwrt BSP
|
|
make V=s [-j[number]]
|
|
5. After the first time compiling, openwrt/dl folder will be created
|
|
, related packages will be downloaded during compiling, so you need
|
|
network access as long as you need to compile openwrt BSP.
|
|
6. Go to the openwrt source code folder: openwrt/dl/
|
|
7. Find compat-wireless-xxxx-xx-xx.tar.bz2, and uncompress the package
|
|
8. Go to compat-wireless-xxxx-xx-xx/drivers/net/wireless/marvell/
|
|
9. Modify compat-wireless-xxxx-xx-xx/drivers/net/wireless/marvell/Kconfig
|
|
|
|
source "drivers/net/wireless/marvell/libertas/Kconfig"
|
|
source "drivers/net/wireless/marvell/libertas_tf/Kconfig"
|
|
source "drivers/net/wireless/marvell/mwifiex/Kconfig"
|
|
+source "drivers/net/wireless/marvell/mrvl-pcie/Kconfig"
|
|
+source "drivers/net/wireless/marvell/mrvl-sd8xxx/Kconfig"
|
|
+source "drivers/net/wireless/marvell/mrvl-usb/Kconfig"
|
|
|
|
10. Modify compat-wireless-xxxx-xx-xx/drivers/net/wireless/marvell/Makefile
|
|
|
|
obj-$(CPTCFG_LIBERTAS_THINFIRM) += libertas_tf/
|
|
obj-$(CPTCFG_MWIFIEX) += mwifiex/
|
|
+obj-$(CPTCFG_MRVL_PCIE) += mrvl-pcie/
|
|
+obj-$(CPTCFG_MRVL_SD8XXX) += mrvl-sd8xxx/
|
|
+obj-$(CPTCFG_MRVL_USB) += mrvl-usb/
|
|
|
|
11. Go to compat-wireless-xxxx-xx-xx/drivers/net/wireless/marvell/
|
|
12. mkdir (mrvl-pcie/mrvl-sd8xxx/mrvl-usb)
|
|
13. copy (pcie/sdio/usb)/wlan_src/* to (mrvl-pcie/mrvl-sd8xxx/mrvl-usb)
|
|
14. Go to mrvl-pcie/mrvl-sd8xxx/mrvl-usb
|
|
15. Add new Kconfig:
|
|
mrvl-pcie/Kconfig
|
|
|
|
+config MRVL_PCIE
|
|
+ tristate "Marvell Wireless Driver for PCIE 8997"
|
|
+ depends on m
|
|
+ depends on PCI
|
|
+ depends on CFG80211
|
|
+ depends on WIRELESS_EXT
|
|
+ ---help---
|
|
+ This adds support for wireless adapters based on Marvell
|
|
+ pcie 8997 chipsets with PCIe interface.
|
|
+
|
|
+ If you choose to build it as a module, it will be called
|
|
+ pcie8xxx.
|
|
|
|
mrvl-sd8xxx/Kconfig
|
|
|
|
+config MRVL_SD8XXX
|
|
+ tristate "Marvell sdio 802.11n/802.11ac Wireless cards"
|
|
+ depends on m
|
|
+ depends on MMC
|
|
+ depends on CFG80211
|
|
+ depends on WIRELESS_EXT
|
|
+ ---help---
|
|
+ A driver for Marvell sdio 802.11n/802.11ac Wireless cards.
|
|
|
|
mrvl-usb/Kconfig
|
|
|
|
+config MRVL_USB
|
|
+ tristate "Marvell sdio 802.11n/802.11ac Wireless cards"
|
|
+ depends on m
|
|
+ depends on USB
|
|
+ depends on CFG80211
|
|
+ depends on WIRELESS_EXT
|
|
+ ---help---
|
|
+ A driver for Marvell sdio 802.11n/802.11ac Wireless cards.
|
|
|
|
16. Open moal_main.h under (mrvl-pcie/mrvl-sd8xxx/mrvl-usb)/mlinux/
|
|
|
|
find #define COMPAT_VERSION_CODE KERNEL_VERSION_CODE(x, x, x)
|
|
modify (x, x, x) to the kernel version code of backports/compat-wireless package
|
|
|
|
backported kernel version code could be found in
|
|
compat-wireless-xxxx-xx-xx/version as following
|
|
|
|
'BACKPORTED_KERNEL_VERSION="v4.4-rc5-1913-gc8fdf68"'
|
|
v4.4 means KERNEL_VERSION(4, 4, 0)
|
|
|
|
17. Modify (mrvl-pcie/mrvl-sd8xxx/mrvl-usb)/Makefile
|
|
|
|
# OpenWrt support
|
|
-CONFIG_OPENWRT_SUPPORT=n
|
|
+CONFIG_OPENWRT_SUPPORT=y
|
|
|
|
...
|
|
|
|
#############################################################################
|
|
# Select Platform Tools
|
|
#############################################################################
|
|
|
|
MODEXT = ko
|
|
-ccflags-y += -I$(M)/mlan
|
|
+ccflags-y += -I$(M)/drivers/net/wireless/marvell/(mrvl-pcie/mrvl-sd8xxx/mrvl-usb)/mlan
|
|
ccflags-y += -DLINUX
|
|
|
|
|
|
ifeq ($(CONFIG_EMBEDDED_SUPP_AUTH), y)
|
|
-ccflags-y += -I$(M)/mlan/esa
|
|
-ccflags-y += -I$(M)/mlan/esa/common
|
|
+ccflags-y += -I$(M)/drivers/net/wireless/marvell/(mrvl-pcie/mrvl-sd8xxx/mrvl-usb)/mlan/esa
|
|
+ccflags-y += -I$(M)/drivers/net/wireless/marvell/(mrvl-pcie/mrvl-sd8xxx/mrvl-usb)/mlan/esa/common
|
|
endif
|
|
|
|
18. compress compat-wireless-xxxx-xx-xx to its original .tar.bz2 format
|
|
19. Go to the openwrt source code folder: openwrt/package/kernel/mac80211/
|
|
20. Modify openwrt/package/kernel/mac80211/Makefile.
|
|
|
|
PKG_DRIVERS = \
|
|
adm8211 \
|
|
ath ath5k ath9k ath9k-common ath9k-htc ath10k \
|
|
b43 b43legacy \
|
|
carl9170 \
|
|
hermes hermes-pci hermes-pcmcia hermes-plx\
|
|
iwl-legacy iwl3945 iwl4965 iwlwifi \
|
|
lib80211 \
|
|
libipw ipw2100 ipw2200 \
|
|
libertas-sdio libertas-usb libertas-spi \
|
|
mac80211-hwsim \
|
|
mt7601u \
|
|
mwl8k mwifiex-pcie \
|
|
+mrvl-pcie \
|
|
+mrvl-sd8xxx \
|
|
+mrvl-usb \
|
|
p54-common p54-pci p54-spi p54-usb \
|
|
rt2x00-lib rt2x00-pci rt2x00-usb \
|
|
rt2400-pci rt2500-pci rt2500-usb \
|
|
|
|
...
|
|
|
|
+define KernelPackage/mrvl-pcie
|
|
+ $(call KernelPackage/mac80211/Default)
|
|
+ TITLE:=Marvell pcie wireless driver
|
|
+ URL:=http://wireless.kernel.org/en/users/Drivers/mwifiex
|
|
+ DEPENDS+= @PCI_SUPPORT +kmod-mac80211 +@DRIVER_11N_SUPPORT
|
|
+ FILES:= \
|
|
+ $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mrvl-pcie/mlan.ko \
|
|
+ $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mrvl-pcie/pcie8xxx.ko
|
|
+ AUTOLOAD:=$(call AutoProbe,mrvl-pcie)
|
|
+endef
|
|
|
|
+define KernelPackage/mrvl-pcie/description
|
|
+ Kernel modules for Marvell pcie 802.11n/802.11ac PCIe Wireless cards
|
|
+endef
|
|
|
|
+define KernelPackage/mrvl-sd8xxx
|
|
+ $(call KernelPackage/mac80211/Default)
|
|
+ DEPENDS+= +kmod-cfg80211 +kmod-lib80211 +kmod-mmc +@DRIVER_WEXT_SUPPORT
|
|
+ TITLE:=Marvell sdio Wireless Driver
|
|
+ FILES:= \
|
|
+ $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mrvl-sd8xxx/mlan.ko \
|
|
+ $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mrvl-sd8xxx/sd8xxx.ko
|
|
+ AUTOLOAD:=$(call AutoProbe, mrvl-sd8xxx)
|
|
+endef
|
|
|
|
+define KernelPackage/mrvl-sd8xxx/description
|
|
+ Kernel modules for Marvell sdio 802.11n/802.11ac Wireless cards
|
|
+endef
|
|
|
|
+define KernelPackage/mrvl-usb
|
|
+ $(call KernelPackage/mac80211/Default)
|
|
+ DEPENDS+= @USB_SUPPORT +kmod-cfg80211 +kmod-usb-core +kmod-lib80211 +@DRIVER_WEXT_SUPPORT
|
|
+ TITLE:=Marvell usb Wireless Driver
|
|
+ FILES:= \
|
|
+ $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mrvl-usb/mlan.ko \
|
|
+ $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mrvl-usb/usb8xxx.ko
|
|
+ AUTOLOAD:=$(call AutoProbe, mrvl-usb)
|
|
+endef
|
|
|
|
+define KernelPackage/mrvl-usb/description
|
|
+ Kernel modules for Marvell usb 802.11n/802.11ac Wireless cards
|
|
+endef
|
|
|
|
...
|
|
|
|
config-$(call config_package,mwl8k) += MWL8K
|
|
config-$(call config_package,mwifiex-pcie) += MWIFIEX MWIFIEX_PCIE
|
|
+config-$(call config_package,mrvl-pcie) += MRVL_PCIE
|
|
+config-$(call config_package,mrvl-sd8xxx) += MRVL_SD8XXX
|
|
+config-$(call config_package,mrvl-usb) += MRVL_USB
|
|
config-$(call config_package,rtl8180) += RTL8180
|
|
config-$(call config_package,rtl8187) += RTL8187
|
|
|
|
...
|
|
|
|
$(eval $(call KernelPackage,mwl8k))
|
|
$(eval $(call KernelPackage,mwifiex-pcie))
|
|
+$(eval $(call KernelPackage,mrvl-pcie))
|
|
+$(eval $(call KernelPackage,mrvl-sd8xxx))
|
|
+$(eval $(call KernelPackage,mrvl-usb))
|
|
$(eval $(call KernelPackage,p54-common))
|
|
|
|
OpenWrt configuration
|
|
21. Go to OpenWrt srouce code folder
|
|
22. Make menuconfig
|
|
|
|
select one of the newly added marvell driver
|
|
│-> Kernel modules
|
|
│ -> Wireless Drivers
|
|
| ->mrvl-pcie
|
|
| ->mrvl-sd8xxx
|
|
| ->mrvl-usb
|
|
|
|
23. Other general configurations, please refer to the https://wiki.openwrt.org/doc/howto/build
|
|
24. after menucofig make soure that following configurations are seletect
|
|
|
|
CONFIG_PACKAGE_hostapd=y
|
|
CONFIG_PACKAGE_hostapd-common=y
|
|
CONFIG_PACKAGE_kmod-cfg80211=y
|
|
|
|
Go to openwrt folder and re-build openwrt BSP
|
|
make V=s [-j[number]]
|
|
|
|
After openwrt BSP is successfully build, kernel modules could be found
|
|
both in the build folder and the running OS once openwrt is boot up.
|
|
kernel modules will be written to u-disk while openwrt img is burned to u-disk.
|
|
|
|
kernel modules in openwrt build dir:
|
|
openwrt/build_dir/target-x86_64_uClibc-0.9.33.2/linux-x86_64/compat-wireless-2016-01-10/
|
|
ipkg-x86_64/kmod-mrvl-(usb/sd8xxx/pcie)/lib/modules/3.18.45/
|
|
|
|
kernel modules in openwrt running OS:
|
|
/lib/modules/xx.xx.xx/
|
|
|
|
25. To support SDIO card in OpenWrt x86 platforma
|
|
Add following kernel configurations for OpenWrt
|
|
Go to OpenWrt source code foler
|
|
|
|
make kernel_menuconfig
|
|
|
|
Device Drivers---->
|
|
--- MMC/SD/SDIO card support
|
|
[ ] MMC debugging
|
|
[ ] MMC host clock gating
|
|
*** MMC/SD/SDIO Card Drivers ***
|
|
< > MMC block device driver
|
|
< > SDIO UART/GPS class support
|
|
< > MMC host test driver
|
|
*** MMC/SD/SDIO Host Controller Drivers ***
|
|
<*> Secure Digital Host Controller Interface support
|
|
<*> SDHCI support on PCI bus
|
|
[ ] Ricoh MMC Controller Disabler
|
|
< > SDHCI platform and OF driver helper
|
|
< > Winbond W83L51xD SD/MMC Card Interface support
|
|
< > TI Flash Media MMC/SD Interface support
|
|
< > ENE CB710 MMC/SD Interface support
|
|
< > VIA SD/MMC Card Reader Driver
|
|
< > Renesas USDHI6ROL0 SD/SDIO Host Controller support
|
|
|
|
Compile OpenWrt using Make V=s, then write openwrt img to u-disk and boot up
|
|
|
|
26. Bring up marvell wireless NIC on OpenWrt system
|
|
|
|
copy pcie/sdio/usb firmware to /lib/firmware/mrvl folder
|
|
On OpenWrt running OS
|
|
scp usrname@<target_pc ip address>:/path/firmware.bin /lib/firmware/mrvl
|
|
|
|
Another way is to add firmware binary to OpenWrt source code
|
|
|
|
27. load marvell pcie/sdio/usb driver modules
|
|
|
|
End with Marvell Wirelss NIC card bring up on OpenWrt
|
|
|
|
=======================================================================================================
|
|
If firmware is copied to OpenWrt via scp, following steps could be ignored.
|
|
28. Add firmware binary in OpenWrt
|
|
Copy pcie/usb/sdio firmware to folder:
|
|
openwrt/build_dir/target-x86_64_uClibc-0.9.33.2/linux-firmware-52442afee9907bc32a058f22bb3295d040677c26/mrvl/
|
|
29. Go to penwrt/package/firmware/linux-firmware
|
|
Modify marvell.mk as following
|
|
|
|
+Package/mrvl-pcie-firmware = $(call Package/firmware-default,Marvell PCIE8997 firmware)
|
|
+define Package/mrvl-pcie-firmware/install
|
|
+ $(INSTALL_DIR) $(1)/lib/firmware/mrvl
|
|
+ $(INSTALL_DATA) \
|
|
+ $(PKG_BUILD_DIR)/mrvl/pcieusb8997_combo_v4.bin \
|
|
+ $(1)/lib/firmware/mrvl/
|
|
+endef
|
|
+$(eval $(call BuildPackage,mrvl-pcie-firmware))
|
|
|
|
+Package/mrvl-sd8xxx-firmware = $(call Package/firmware-default,Marvell SDIO8997 firmware)
|
|
+define Package/mrvl-sd8xxx-firmware/install
|
|
+ $(INSTALL_DIR) $(1)/lib/firmware/mrvl
|
|
+ $(INSTALL_DATA) \
|
|
+ $(PKG_BUILD_DIR)/mrvl/sdsd8997_combo_v4.bin \
|
|
+ $(1)/lib/firmware/mrvl/
|
|
+endef
|
|
+$(eval $(call BuildPackage,mrvl-sd8xxx-firmware))
|
|
|
|
+Package/mrvl-usb-firmware = $(call Package/firmware-default,Marvell SDIO8997 firmware)
|
|
+define Package/mrvl-usb-firmware/install
|
|
+ $(INSTALL_DIR) $(1)/lib/firmware/mrvl
|
|
+ $(INSTALL_DATA) \
|
|
+ $(PKG_BUILD_DIR)/mrvl/usbusb8997_combo_v4.bin \
|
|
+ $(1)/lib/firmware/mrvl/
|
|
+endef
|
|
+$(eval $(call BuildPackage,mrvl-usb-firmware))
|
|
|
|
30. re-modify openwrt/package/kernel/mac80211/Makefile
|
|
|
|
for PCIE
|
|
+ DEPENDS+= @PCI_SUPPORT +kmod-mac80211 +@DRIVER_11N_SUPPORT +mrvl-pcie-firmware
|
|
for SDIO
|
|
+ DEPENDS+= +kmod-cfg80211 +kmod-lib80211 +kmod-mmc +@DRIVER_WEXT_SUPPORT +mrvl-sd8xxx-firmware
|
|
for USB
|
|
+ DEPENDS+= @USB_SUPPORT +kmod-cfg80211 +kmod-usb-core +kmod-lib80211 +@DRIVER_WEXT_SUPPORT +mrvl-usb-firmware
|
|
31. Go to step 25.
|
|
=======================================================================================================
|
|
To support SDIO, USB and PCIE in one OpenWrt BSP
|
|
if no need to support multi bus types in one BSP, ignore the following steps
|
|
32. Re-modify Modify openwrt/package/kernel/mac80211/Makefile.
|
|
for PCIE
|
|
+ $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mrvl-pcie/mlan-pcie.ko \
|
|
for SDIO
|
|
+ $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mrvl-sd8xxx/mlan-sdio.ko \
|
|
for USB
|
|
+ $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mrvl-usb/mlan-usb.ko \
|
|
33. Re-modify (mrvl-pcie/mrvl-sd8xxx/mrvl-usb)/Makefile
|
|
for PCIE
|
|
|
|
-obj-m := mlan.o
|
|
-mlan-objs := $(MLANOBJS)
|
|
+obj-m := mlan-pcie.o
|
|
+mlan-pcie-objs := $(MLANOBJS)
|
|
|
|
for SDIO
|
|
|
|
-obj-m := mlan.o
|
|
-mlan-objs := $(MLANOBJS)
|
|
+obj-m := mlan-sdio.o
|
|
+mlan-sdio-objs := $(MLANOBJS)
|
|
|
|
for USB
|
|
|
|
-obj-m := mlan.o
|
|
-mlan-objs := $(MLANOBJS)
|
|
+obj-m := mlan-usb.o
|
|
+mlan-usb-objs := $(MLANOBJS)
|
|
34. Go to step 25.
|