ath10k: enable Atheros 802.11ac driver
[openwrt.git] / package / kernel / mac80211 / Makefile
1 #
2 # Copyright (C) 2007-2012 OpenWrt.org
3 #
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
6 #
7
8 include $(TOPDIR)/rules.mk
9 include $(INCLUDE_DIR)/kernel.mk
10
11 PKG_NAME:=mac80211
12
13 PKG_VERSION:=2013-06-27
14 PKG_RELEASE:=1
15 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
16 PKG_BACKPORT_VERSION:=.1
17 PKG_MD5SUM:=73bd220c64c5c6fdc22b3bb7f180644f
18
19 PKG_SOURCE:=compat-wireless-$(PKG_VERSION)$(PKG_BACKPORT_VERSION).tar.bz2
20 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION)
21 PKG_BUILD_PARALLEL:=1
22
23 PKG_MAINTAINER:=Felix Fietkau <nbd@openwrt.org>
24
25 PKG_DRIVERS = \
26         adm8211 ath5k libertas-usb libertas-sd p54-common p54-pci p54-usb p54-spi \
27         rt2x00-lib rt2x00-pci rt2x00-usb rt2x00-soc rt2800-lib rt2400-pci \
28         rt2500-pci rt2500-usb rt61-pci rt73-usb rt2800-pci rt2800-usb \
29         rtl8180 rtl8187 zd1211rw mac80211-hwsim carl9170 b43 b43legacy \
30         ath9k-common ath9k ath9k-htc ath10k ath net-libipw net-ipw2100 net-ipw2200 \
31         mwl8k net-hermes net-hermes-pci net-hermes-plx net-hermes-pcmcia \
32         iwl-legacy iwl3945 iwl4965 iwlagn wl12xx lib80211 \
33         rtlwifi rtlwifi-pci rtlwifi-usb rtl8192c-common rtl8192ce rtl8192se \
34         rtl8192de rtl8192cu
35
36 PKG_CONFIG_DEPENDS:= \
37         CONFIG_PACKAGE_kmod-mac80211 \
38         $(patsubst %,CONFIG_PACKAGE_kmod-%,$(PKG_DRIVERS)) \
39         CONFIG_PACKAGE_MAC80211_DEBUGFS \
40         CONFIG_PACKAGE_MAC80211_MESH \
41         CONFIG_PACKAGE_ATH_DEBUG \
42         CONFIG_PACKAGE_B43_DEBUG \
43         CONFIG_PACKAGE_B43_PIO \
44         CONFIG_PACKAGE_B43_N_PHY \
45         CONFIG_PACKAGE_RTLWIFI_DEBUG \
46         CONFIG_ATH_USER_REGD \
47
48 CARL9170_FW_VERSION:=1.9.6
49
50 include $(INCLUDE_DIR)/package.mk
51
52 WMENU:=Wireless Drivers
53
54 define KernelPackage/mac80211/Default
55   SUBMENU:=$(WMENU)
56   URL:=http://linuxwireless.org/
57   MAINTAINER:=Felix Fietkau <nbd@openwrt.org>
58   DEPENDS:=@(!(TARGET_avr32||TARGET_ps3||TARGET_pxcab)||BROKEN)
59 endef
60
61 define KernelPackage/cfg80211
62   $(call KernelPackage/mac80211/Default)
63   TITLE:=cfg80211 - wireless configuration API
64   DEPENDS+= +iw
65   FILES:= \
66         $(PKG_BUILD_DIR)/compat/compat.ko \
67         $(PKG_BUILD_DIR)/net/wireless/cfg80211.ko
68   AUTOLOAD:=$(call AutoLoad,20,compat cfg80211)
69 endef
70
71 define KernelPackage/cfg80211/description
72 cfg80211 is the Linux wireless LAN (802.11) configuration API.
73 endef
74
75 define KernelPackage/mac80211
76   $(call KernelPackage/mac80211/Default)
77   TITLE:=Linux 802.11 Wireless Networking Stack
78   DEPENDS+= +kmod-crypto-core +kmod-crypto-arc4 +kmod-crypto-aes +kmod-cfg80211
79   KCONFIG:=\
80         CONFIG_AVERAGE=y
81   FILES:= $(PKG_BUILD_DIR)/net/mac80211/mac80211.ko
82   AUTOLOAD:=$(call AutoLoad,21,mac80211)
83   MENU:=1
84 endef
85
86 define KernelPackage/mac80211/config
87   if PACKAGE_kmod-mac80211
88
89         config PACKAGE_MAC80211_DEBUGFS
90                 bool "Export mac80211 internals in DebugFS"
91                 select KERNEL_DEBUG_FS
92                 select KERNEL_RELAY if PACKAGE_kmod-ath9k-common
93                 default y
94                 help
95                   Select this to see extensive information about
96                   the internal state of mac80211 in debugfs.
97
98         config PACKAGE_MAC80211_MESH
99                 bool "Enable 802.11s mesh support"
100                 default y
101
102   endif
103 endef
104
105 define KernelPackage/mac80211/description
106 Generic IEEE 802.11 Networking Stack (mac80211)
107 endef
108
109 PKG_LINUX_FIRMWARE_NAME:=linux-firmware
110 PKG_LINUX_FIRMWARE_VERSION:=6942dba419d2ebf8c15514972e89734fd7a8cebc
111 PKG_LINUX_FIRMWARE_SOURCE:=$(PKG_LINUX_FIRMWARE_NAME)-$(PKG_LINUX_FIRMWARE_VERSION).tar.bz2
112 PKG_LINUX_FIRMWARE_PROTO:=git
113 PKG_LINUX_FIRMWARE_SOURCE_URL:=git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
114 PKG_LINUX_FIRMWARE_SUBDIR:=$(PKG_LINUX_FIRMWARE_NAME)-$(PKG_LINUX_FIRMWARE_VERSION)
115 PKG_LINUX_FIRMWARE_MIRROR_MD5SUM:=a5f8c27af9e43f0ad24d7f821c5a781e
116
117 define Download/linux-firmware
118   FILE:=$(PKG_LINUX_FIRMWARE_SOURCE)
119   URL:=$(PKG_LINUX_FIRMWARE_SOURCE_URL)
120   MD5SUM:=$(PKG_LINUX_FIRMWARE_MD5SUM)
121   PROTO:=$(PKG_LINUX_FIRMWARE_PROTO)
122   VERSION:=$(PKG_LINUX_FIRMWARE_VERSION)
123   SUBDIR:=$(PKG_LINUX_FIRMWARE_SUBDIR)
124   MIRROR_MD5SUM:=$(PKG_LINUX_FIRMWARE_MIRROR_MD5SUM)
125 endef
126 $(eval $(call Download,linux-firmware))
127
128 PKG_ATH10K_LINUX_FIRMWARE_NAME:=ath10k-firmware
129 PKG_ATH10K_LINUX_FIRMWARE_VERSION:=9374d42c01bd84487855af9f9bffc622c50e7331
130 PKG_ATH10K_LINUX_FIRMWARE_SOURCE:=$(PKG_ATH10K_LINUX_FIRMWARE_NAME)-$(PKG_ATH10K_LINUX_FIRMWARE_VERSION).tar.bz2
131 PKG_ATH10K_LINUX_FIRMWARE_PROTO:=git
132 PKG_ATH10K_LINUX_FIRMWARE_SOURCE_URL:=https://github.com/kvalo/ath10k-firmware.git
133 PKG_ATH10K_LINUX_FIRMWARE_SUBDIR:=$(PKG_ATH10K_LINUX_FIRMWARE_NAME)-$(PKG_ATH10K_LINUX_FIRMWARE_VERSION)
134 #PKG_ATH10K_LINUX_FIRMWARE_MIRROR_MD5SUM:=?
135
136 define Download/ath10k-firmware
137   FILE:=$(PKG_ATH10K_LINUX_FIRMWARE_SOURCE)
138   URL:=$(PKG_ATH10K_LINUX_FIRMWARE_SOURCE_URL)
139   PROTO:=$(PKG_ATH10K_LINUX_FIRMWARE_PROTO)
140   VERSION:=$(PKG_ATH10K_LINUX_FIRMWARE_VERSION)
141   SUBDIR:=$(PKG_ATH10K_LINUX_FIRMWARE_SUBDIR)
142   #MIRROR_MD5SUM:=$(PKG_ATH10K_LINUX_FIRMWARE_MIRROR_MD5SUM)
143 endef
144 $(eval $(call Download,ath10k-firmware))
145
146 # Prism54 drivers
147 P54PCIFW:=2.13.12.0.arm
148 P54USBFW:=2.13.24.0.lm87.arm
149 P54SPIFW:=2.13.0.0.a.13.14.arm
150 CARL9170_FW:=carl9170-1.fw
151
152 define Download/p54usb
153   FILE:=$(P54USBFW)
154   URL:=http://daemonizer.de/prism54/prism54-fw/fw-usb
155   MD5SUM:=8e8ab005a4f8f0123bcdc51bc25b47f6
156 endef
157 $(eval $(call Download,p54usb))
158
159 define Download/p54pci
160   FILE:=$(P54PCIFW)
161   URL:=http://daemonizer.de/prism54/prism54-fw/fw-softmac
162   MD5SUM:=ff7536af2092b1c4b21315bd103ef4c4
163 endef
164 $(eval $(call Download,p54pci))
165
166 define Download/p54spi
167   FILE:=$(P54SPIFW)
168   URL:=http://daemonizer.de/prism54/prism54-fw/stlc4560
169   MD5SUM:=42661f8ecbadd88012807493f596081d
170 endef
171 $(eval $(call Download,p54spi))
172
173 define Download/carl9170
174   FILE:=$(CARL9170_FW)-$(CARL9170_FW_VERSION)
175   URL:=http://downloads.openwrt.org/sources/
176   MD5SUM:=2fa6ed98d53d0b5fbcc136d1cf5e9609
177 endef
178 $(eval $(call Download,carl9170))
179
180 define KernelPackage/p54/Default
181   $(call KernelPackage/mac80211/Default)
182   TITLE:=Prism54 Drivers
183 endef
184
185 define KernelPackage/p54/description
186   Kernel module for Prism54 chipsets (mac80211)
187 endef
188
189 define KernelPackage/p54-common
190   $(call KernelPackage/p54/Default)
191   DEPENDS+= @PCI_SUPPORT||@USB_SUPPORT||@TARGET_omap24xx +kmod-mac80211 +kmod-lib-crc-ccitt
192   TITLE+= (COMMON)
193   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/p54/p54common.ko
194   AUTOLOAD:=$(call AutoLoad,30,p54common)
195 endef
196
197 define KernelPackage/p54-pci
198   $(call KernelPackage/p54/Default)
199   TITLE+= (PCI)
200   DEPENDS+= @PCI_SUPPORT +kmod-p54-common
201   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/p54/p54pci.ko
202   AUTOLOAD:=$(call AutoLoad,31,p54pci)
203 endef
204
205 define KernelPackage/p54-usb
206   $(call KernelPackage/p54/Default)
207   TITLE+= (USB)
208   DEPENDS+= @USB_SUPPORT +kmod-usb-core +kmod-p54-common
209   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/p54/p54usb.ko
210   AUTOLOAD:=$(call AutoLoad,31,p54usb)
211 endef
212
213 define KernelPackage/p54-spi
214   $(call KernelPackage/p54/Default)
215   TITLE+= (SPI)
216   DEPENDS+= @TARGET_omap24xx +kmod-p54-common
217   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/p54/p54spi.ko
218   AUTOLOAD:=$(call AutoLoad,31,p54spi)
219 endef
220
221 define KernelPackage/rt2x00/Default
222   $(call KernelPackage/mac80211/Default)
223   TITLE:=Ralink Drivers for RT2x00 cards
224 endef
225
226 define KernelPackage/rt2x00-lib
227 $(call KernelPackage/rt2x00/Default)
228   DEPENDS+= @(PCI_SUPPORT||USB_SUPPORT||TARGET_ramips) +kmod-mac80211 +kmod-lib-crc-itu-t
229   TITLE+= (LIB)
230   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2x00lib.ko
231   AUTOLOAD:=$(call AutoLoad,24,rt2x00lib)
232   MENU:=1
233 endef
234
235 define KernelPackage/rt2x00-lib/config
236   if PACKAGE_kmod-rt2x00-lib
237
238         config PACKAGE_RT2X00_LIB_DEBUGFS
239                 bool "Enable rt2x00 debugfs support"
240                 depends on PACKAGE_MAC80211_DEBUGFS
241                 help
242                   Enable creation of debugfs files for the rt2x00 drivers.
243                   These debugfs files support both reading and writing of the
244                   most important register types of the rt2x00 hardware.
245
246         config PACKAGE_RT2X00_DEBUG
247                 bool "Enable rt2x00 debug output"
248                 help
249                   Enable debugging output for all rt2x00 modules
250
251   endif
252 endef
253
254 define KernelPackage/rt2x00-mmio
255 $(call KernelPackage/rt2x00/Default)
256   DEPENDS+= @(PCI_SUPPORT||TARGET_ramips) +kmod-rt2x00-lib +kmod-eeprom-93cx6
257   TITLE+= (MMIO)
258   FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2x00mmio.ko
259   AUTOLOAD:=$(call AutoLoad,25,rt2x00mmio)
260 endef
261
262 define KernelPackage/rt2x00-pci
263 $(call KernelPackage/rt2x00/Default)
264   DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-mmio +kmod-rt2x00-lib
265   TITLE+= (PCI)
266   FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2x00pci.ko
267   AUTOLOAD:=$(call AutoLoad,26,rt2x00pci)
268 endef
269
270 define KernelPackage/rt2x00-usb
271 $(call KernelPackage/rt2x00/Default)
272   DEPENDS+= @USB_SUPPORT +kmod-rt2x00-lib +kmod-usb-core
273   TITLE+= (USB)
274   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2x00usb.ko
275   AUTOLOAD:=$(call AutoLoad,26,rt2x00usb)
276 endef
277
278 define KernelPackage/rt2x00-soc
279 $(call KernelPackage/rt2x00/Default)
280   DEPENDS+=@TARGET_ramips_rt305x +kmod-rt2x00-mmio +kmod-rt2x00-lib
281   TITLE+= (SoC)
282   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2x00soc.ko
283   AUTOLOAD:=$(call AutoLoad,26,rt2x00soc)
284 endef
285
286 define KernelPackage/rt2800-lib
287 $(call KernelPackage/rt2x00/Default)
288   DEPENDS+= @(PCI_SUPPORT||USB_SUPPORT||TARGET_ramips) +kmod-rt2x00-lib +kmod-lib-crc-ccitt +@DRIVER_11N_SUPPORT
289   TITLE+= (rt2800 LIB)
290   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2800lib.ko
291   AUTOLOAD:=$(call AutoLoad,27,rt2800lib)
292 endef
293
294 define KernelPackage/rt2400-pci
295 $(call KernelPackage/rt2x00/Default)
296   DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-pci
297   TITLE+= (RT2400 PCI)
298   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2400pci.ko
299   AUTOLOAD:=$(call AutoLoad,27,rt2400pci)
300 endef
301
302 define KernelPackage/rt2500-pci
303 $(call KernelPackage/rt2x00/Default)
304   DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-pci
305   TITLE+= (RT2500 PCI)
306   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2500pci.ko
307   AUTOLOAD:=$(call AutoLoad,27,rt2500pci)
308 endef
309
310 define KernelPackage/rt2500-usb
311 $(call KernelPackage/rt2x00/Default)
312   DEPENDS+= @USB_SUPPORT +kmod-rt2x00-usb
313   TITLE+= (RT2500 USB)
314   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2500usb.ko
315   AUTOLOAD:=$(call AutoLoad,27,rt2500usb)
316 endef
317
318 define KernelPackage/rt61-pci
319 $(call KernelPackage/rt2x00/Default)
320   DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-pci
321   TITLE+= (RT2x61 PCI)
322   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt61pci.ko
323   AUTOLOAD:=$(call AutoLoad,27,rt61pci)
324 endef
325
326 define KernelPackage/rt73-usb
327   $(call KernelPackage/rt2x00/Default)
328   DEPENDS+= @USB_SUPPORT +kmod-rt2x00-usb
329   TITLE+= (RT73 USB)
330   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt73usb.ko
331   AUTOLOAD:=$(call AutoLoad,27,rt73usb)
332 endef
333
334 define KernelPackage/rt2800-pci
335 $(call KernelPackage/rt2x00/Default)
336   DEPENDS+= @(PCI_SUPPORT||TARGET_ramips_rt305x) +PCI_SUPPORT:kmod-rt2x00-pci +kmod-rt2800-lib +kmod-lib-crc-ccitt +TARGET_ramips_rt305x:kmod-rt2x00-soc
337   TITLE+= (RT2860 PCI)
338   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2800pci.ko
339   AUTOLOAD:=$(call AutoLoad,28,rt2800pci)
340 endef
341
342 define KernelPackage/rt2800-usb
343 $(call KernelPackage/rt2x00/Default)
344   DEPENDS+= @USB_SUPPORT +kmod-rt2x00-usb +kmod-rt2800-lib +kmod-lib-crc-ccitt
345   TITLE+= (RT2870 USB)
346   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2800usb.ko
347   AUTOLOAD:=$(call AutoLoad,28,rt2800usb)
348 endef
349
350 define KernelPackage/rtl818x/Default
351   $(call KernelPackage/mac80211/Default)
352   TITLE:=Realtek Drivers for RTL818x devices
353   URL:=http://wireless.kernel.org/en/users/Drivers/rtl8187
354   DEPENDS+= +kmod-eeprom-93cx6 +kmod-mac80211
355 endef
356
357 define KernelPackage/rtl8180
358   $(call KernelPackage/rtl818x/Default)
359   DEPENDS+= @PCI_SUPPORT
360   TITLE+= (RTL8180 PCI)
361   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rtl818x/rtl8180/rtl8180.ko
362   AUTOLOAD:=$(call AutoLoad,27,rtl8180)
363 endef
364
365 define KernelPackage/rtl8187
366 $(call KernelPackage/rtl818x/Default)
367   DEPENDS+= @USB_SUPPORT +kmod-usb-core
368   TITLE+= (RTL8187 USB)
369   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rtl818x/rtl8187/rtl8187.ko
370   AUTOLOAD:=$(call AutoLoad,27,rtl8187)
371 endef
372
373 define KernelPackage/rtlwifi/config
374         menu "Configuration"
375                 depends on PACKAGE_kmod-rtlwifi
376
377         config PACKAGE_RTLWIFI_DEBUG
378                 bool "Realtek wireless debugging"
379                 help
380                   Say Y, if you want to debug realtek wireless drivers.
381
382         endmenu
383 endef
384
385 define KernelPackage/rtlwifi
386   $(call KernelPackage/mac80211/Default)
387   TITLE:=Realtek common driver part
388   DEPENDS+= @(PCI_SUPPORT||USB_SUPPORT) +kmod-mac80211 +@DRIVER_11N_SUPPORT
389   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rtlwifi/rtlwifi.ko
390   AUTOLOAD:=$(call AutoLoad,26,rtlwifi)
391   MENU:=1
392 endef
393
394 define KernelPackage/rtlwifi-pci
395   $(call KernelPackage/mac80211/Default)
396   TITLE:=Realtek common driver part (PCI support)
397   DEPENDS+= @PCI_SUPPORT +kmod-rtlwifi
398   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rtlwifi/rtl_pci.ko
399   AUTOLOAD:=$(call AutoLoad,27,rtl_pci)
400   HIDDEN:=1
401 endef
402
403 define KernelPackage/rtlwifi-usb
404   $(call KernelPackage/mac80211/Default)
405   TITLE:=Realtek common driver part (USB support)
406   DEPENDS+= @USB_SUPPORT +kmod-usb-core +kmod-rtlwifi
407   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rtlwifi/rtl_usb.ko
408   AUTOLOAD:=$(call AutoLoad,27,rtl_usb)
409   HIDDEN:=1
410 endef
411
412 define KernelPackage/rtl8192c-common
413   $(call KernelPackage/mac80211/Default)
414   TITLE:=Realtek RTL8192CE/RTL8192CU common support module
415   DEPENDS+= +kmod-rtlwifi
416   FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common.ko
417   AUTOLOAD:=$(call AutoLoad,27,rtl8192c-common)
418   HIDDEN:=1
419 endef
420
421 define KernelPackage/rtl8192ce
422   $(call KernelPackage/mac80211/Default)
423   TITLE:=Realtek RTL8192CE/RTL8188CE support
424   DEPENDS+= +kmod-rtlwifi-pci +kmod-rtl8192c-common
425   FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192ce.ko
426   AUTOLOAD:=$(call AutoLoad,28,rtl8192ce)
427 endef
428
429 define KernelPackage/rtl8192ce/install
430         $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
431         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/rtlwifi/rtl8192cfw.bin $(1)/lib/firmware/rtlwifi
432 endef
433
434 define KernelPackage/rtl8192se
435   $(call KernelPackage/mac80211/Default)
436   TITLE:=Realtek RTL8192SE/RTL8191SE support
437   DEPENDS+= +kmod-rtlwifi-pci
438   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rtlwifi/rtl8192se/rtl8192se.ko
439   AUTOLOAD:=$(call AutoLoad,28,rtl8192se)
440 endef
441
442 define KernelPackage/rtl8192se/install
443         $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
444         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/rtlwifi/rtl8192sefw.bin $(1)/lib/firmware/rtlwifi
445 endef
446
447 define KernelPackage/rtl8192de
448   $(call KernelPackage/mac80211/Default)
449   TITLE:=Realtek RTL8192DE/RTL8188DE support
450   DEPENDS+= +kmod-rtlwifi-pci
451   FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/rtlwifi/rtl8192de/rtl8192de.ko
452   AUTOLOAD:=$(call AutoLoad,28,rtl8192de)
453 endef
454
455 define KernelPackage/rtl8192de/install
456         $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
457         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/rtlwifi/rtl8192defw.bin $(1)/lib/firmware/rtlwifi
458 endef
459
460 define KernelPackage/rtl8192cu
461   $(call KernelPackage/mac80211/Default)
462   TITLE:=Realtek RTL8192CU/RTL8188CU support
463   DEPENDS+= +kmod-rtlwifi-usb +kmod-rtl8192c-common
464   FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko
465   AUTOLOAD:=$(call AutoLoad,28,rtl8192cu)
466 endef
467
468 define KernelPackage/rtl8192cu/install
469         $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
470         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/rtlwifi/rtl8192cufw.bin $(1)/lib/firmware/rtlwifi
471 endef
472
473 ZD1211FW_NAME:=zd1211-firmware
474 ZD1211FW_VERSION:=1.4
475 define Download/zd1211rw
476   FILE:=$(ZD1211FW_NAME)-$(ZD1211FW_VERSION).tar.bz2
477   URL:=@SF/zd1211/
478   MD5SUM:=19f28781d76569af8551c9d11294c870
479 endef
480 $(eval $(call Download,zd1211rw))
481
482 define KernelPackage/zd1211rw
483   $(call KernelPackage/mac80211/Default)
484   TITLE:=Zydas ZD1211 support
485   DEPENDS+= @USB_SUPPORT +kmod-usb-core +kmod-mac80211
486   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/zd1211rw/zd1211rw.ko
487   AUTOLOAD:=$(call AutoLoad,60,zd1211rw)
488 endef
489
490 define KernelPackage/adm8211
491   $(call KernelPackage/mac80211/Default)
492   TITLE:=ADMTek 8211 support
493   DEPENDS+=@PCI_SUPPORT +kmod-mac80211 +kmod-eeprom-93cx6
494   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/adm8211.ko
495   AUTOLOAD:=$(call AutoLoad,60,adm8211)
496 endef
497
498 define KernelPackage/ath/config
499   if PACKAGE_kmod-ath
500         config ATH_USER_REGD
501                 bool "Force Atheros drivers to respect the user's regdomain settings"
502                 help
503                   Atheros' idea of regulatory handling is that the EEPROM of the card defines
504                   the regulatory limits and the user is only allowed to restrict the settings
505                   even further, even if the country allows frequencies or power levels that
506                   are forbidden by the EEPROM settings.
507
508                   Select this option if you want the driver to respect the user's decision about
509                   regulatory settings.
510
511         config PACKAGE_ATH_DEBUG
512                 bool "Atheros wireless debugging"
513                 help
514                   Say Y, if you want to debug atheros wireless drivers.
515                   Right now only ath9k makes use of this.
516   endif
517 endef
518
519 define KernelPackage/ath
520   $(call KernelPackage/mac80211/Default)
521   TITLE:=Atheros common driver part
522   DEPENDS+= @PCI_SUPPORT||USB_SUPPORT||TARGET_ar71xx||TARGET_atheros +kmod-mac80211
523   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath.ko
524   AUTOLOAD:=$(call AutoLoad,26,ath)
525   MENU:=1
526 endef
527
528 define KernelPackage/ath/description
529  This module contains some common parts needed by Atheros Wireless drivers.
530 endef
531
532 define KernelPackage/ath5k
533   $(call KernelPackage/mac80211/Default)
534   TITLE:=Atheros 5xxx wireless cards support
535   URL:=http://linuxwireless.org/en/users/Drivers/ath5k
536   DEPENDS+= @PCI_SUPPORT||@TARGET_atheros +kmod-ath
537   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath5k/ath5k.ko
538   AUTOLOAD:=$(call AutoLoad,27,ath5k)
539 endef
540
541 define KernelPackage/ath5k/description
542  This module adds support for wireless adapters based on
543  Atheros 5xxx chipset.
544 endef
545
546 define KernelPackage/ath9k-common
547   $(call KernelPackage/mac80211/Default)
548   TITLE:=Atheros 802.11n wireless devices (common code for ath9k and ath9k_htc)
549   URL:=http://linuxwireless.org/en/users/Drivers/ath9k
550   DEPENDS+= @PCI_SUPPORT||USB_SUPPORT||TARGET_ar71xx +kmod-ath +@DRIVER_11N_SUPPORT
551   FILES:= \
552         $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k_common.ko \
553         $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k_hw.ko
554   AUTOLOAD:=$(call AutoLoad,27,ath9k_hw ath9k_common)
555 endef
556
557 define KernelPackage/ath9k
558   $(call KernelPackage/mac80211/Default)
559   TITLE:=Atheros 802.11n PCI wireless cards support
560   URL:=http://linuxwireless.org/en/users/Drivers/ath9k
561   DEPENDS+= @PCI_SUPPORT||TARGET_ar71xx +kmod-ath9k-common
562   FILES:= \
563         $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k.ko
564   AUTOLOAD:=$(call AutoLoad,28,ath9k)
565 endef
566
567 define KernelPackage/ath9k/description
568 This module adds support for wireless adapters based on
569 Atheros IEEE 802.11n AR5008 and AR9001 family of chipsets.
570 endef
571
572 define KernelPackage/ath9k-htc
573   $(call KernelPackage/mac80211/Default)
574   TITLE:=Atheros 802.11n USB device support
575   URL:=http://linuxwireless.org/en/users/Drivers/ath9k
576   DEPENDS+= @USB_SUPPORT +kmod-ath9k-common +kmod-usb-core
577   FILES:= \
578         $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k_htc.ko
579   AUTOLOAD:=$(call AutoLoad,55,ath9k_htc)
580 endef
581
582 define KernelPackage/ath9k-htc/description
583 This module adds support for wireless adapters based on
584 Atheros USB AR9271 and AR7010 family of chipsets.
585 endef
586
587 define KernelPackage/ath10k
588   $(call KernelPackage/mac80211/Default)
589   TITLE:=Atheros 802.11ac wireless cards support
590   URL:=http://wireless.kernel.org/en/users/Drivers/ath10k
591   DEPENDS+= @PCI_SUPPORT +kmod-ath +@DRIVER_11N_SUPPORT
592   FILES:= \
593         $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath10k/ath10k_core.ko \
594         $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath10k/ath10k_pci.ko
595   AUTOLOAD:=$(call AutoLoad,55,ath10k_core ath10k_pci)
596 endef
597
598 define KernelPackage/ath10k/description
599 This module adds support for wireless adapters based on
600 Atheros IEEE 802.11ac family of chipsets. For now only
601 PCI is supported.
602 endef
603
604 define KernelPackage/carl9170
605   $(call KernelPackage/mac80211/Default)
606   TITLE:=Driver for Atheros AR9170 USB sticks
607   DEPENDS:=@USB_SUPPORT +kmod-mac80211 +kmod-ath +kmod-usb-core +kmod-input-core +@DRIVER_11N_SUPPORT
608   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/carl9170/carl9170.ko
609   AUTOLOAD:=$(call AutoLoad,60,carl9170)
610 endef
611
612 define KernelPackage/carl9170/install
613         $(INSTALL_DIR) $(1)/lib/firmware
614         $(INSTALL_DATA) $(DL_DIR)/$(CARL9170_FW)-$(CARL9170_FW_VERSION) $(1)/lib/firmware/$(CARL9170_FW)
615 endef
616
617 define KernelPackage/lib80211
618   $(call KernelPackage/mac80211/Default)
619   TITLE:=802.11 Networking stack
620   DEPENDS:=+kmod-cfg80211
621   FILES:= \
622         $(PKG_BUILD_DIR)/net/wireless/lib80211.ko \
623         $(PKG_BUILD_DIR)/net/wireless/lib80211_crypt_wep.ko \
624         $(PKG_BUILD_DIR)/net/wireless/lib80211_crypt_ccmp.ko \
625         $(PKG_BUILD_DIR)/net/wireless/lib80211_crypt_tkip.ko
626   AUTOLOAD:=$(call AutoLoad,21, \
627         lib80211 \
628         lib80211_crypt_wep \
629         lib80211_crypt_ccmp \
630         lib80211_crypt_tkip \
631   )
632 endef
633
634 define KernelPackage/lib80211/description
635  Kernel modules for 802.11 Networking stack
636  Includes:
637  - lib80211
638  - lib80211_crypt_wep
639  - lib80211_crypt_tkip
640  - lib80211_crytp_ccmp
641 endef
642
643 define KernelPackage/libertas-usb
644   $(call KernelPackage/mac80211/Default)
645   DEPENDS+= @USB_SUPPORT +kmod-cfg80211 +kmod-usb-core +kmod-lib80211 +@DRIVER_WEXT_SUPPORT
646   TITLE:=Marvell 88W8015 Wireless Driver
647   FILES:= \
648         $(PKG_BUILD_DIR)/drivers/net/wireless/libertas/libertas.ko \
649         $(PKG_BUILD_DIR)/drivers/net/wireless/libertas/usb8xxx.ko
650   AUTOLOAD:=$(call AutoLoad,27,libertas usb8xxx)
651 endef
652
653 define KernelPackage/libertas-sd
654   $(call KernelPackage/mac80211/Default)
655   DEPENDS+= +kmod-cfg80211 +kmod-lib80211 +kmod-mmc +@DRIVER_WEXT_SUPPORT
656   TITLE:=Marvell 88W8686 Wireless Driver
657   FILES:= \
658         $(PKG_BUILD_DIR)/drivers/net/wireless/libertas/libertas.ko \
659         $(PKG_BUILD_DIR)/drivers/net/wireless/libertas/libertas_sdio.ko
660   AUTOLOAD:=$(call AutoLoad,91,libertas libertas_sdio)
661 endef
662
663 define KernelPackage/mac80211-hwsim
664   $(call KernelPackage/mac80211/Default)
665   TITLE:=mac80211 HW simulation device
666   DEPENDS+= +kmod-mac80211
667   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/mac80211_hwsim.ko
668   AUTOLOAD:=$(call AutoLoad,60,mac80211_hwsim)
669 endef
670
671 define KernelPackage/net-libipw
672   $(call KernelPackage/mac80211/Default)
673   TITLE:=libipw for ipw2100 and ipw2200
674   DEPENDS:=@PCI_SUPPORT +kmod-crypto-core +kmod-crypto-arc4 +kmod-crypto-aes +kmod-crypto-michael-mic +kmod-lib80211 +kmod-cfg80211 +@DRIVER_WEXT_SUPPORT
675   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ipw2x00/libipw.ko
676   AUTOLOAD:=$(call AutoLoad,49,libipw)
677 endef
678
679 define KernelPackage/net-libipw/description
680  Hardware independent IEEE 802.11 networking stack for ipw2100 and ipw2200.
681 endef
682
683 IPW2100_NAME:=ipw2100-fw
684 IPW2100_VERSION:=1.3
685
686 define Download/net-ipw2100
687   URL:=http://bughost.org/firmware/
688   FILE:=$(IPW2100_NAME)-$(IPW2100_VERSION).tgz
689   MD5SUM=46aa75bcda1a00efa841f9707bbbd113
690 endef
691 $(eval $(call Download,net-ipw2100))
692
693 define KernelPackage/net-ipw2100
694   $(call KernelPackage/mac80211/Default)
695   TITLE:=Intel IPW2100 driver
696   DEPENDS:=@PCI_SUPPORT +kmod-net-libipw
697   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ipw2x00/ipw2100.ko
698   AUTOLOAD:=$(call AutoLoad,50,ipw2100)
699 endef
700
701 define KernelPackage/net-ipw2100/description
702  Kernel support for Intel IPW2100
703  Includes:
704  - ipw2100
705 endef
706
707 IPW2200_NAME:=ipw2200-fw
708 IPW2200_VERSION:=3.1
709
710 define Download/net-ipw2200
711   URL:=http://bughost.org/firmware/
712   FILE:=$(IPW2200_NAME)-$(IPW2200_VERSION).tgz
713   MD5SUM=eaba788643c7cc7483dd67ace70f6e99
714 endef
715 $(eval $(call Download,net-ipw2200))
716
717 define KernelPackage/net-ipw2200
718   $(call KernelPackage/mac80211/Default)
719   TITLE:=Intel IPW2200 driver
720   DEPENDS:=@PCI_SUPPORT +kmod-net-libipw
721   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ipw2x00/ipw2200.ko
722   AUTOLOAD:=$(call AutoLoad,50,ipw2200)
723 endef
724
725 define KernelPackage/net-ipw2200/description
726  Kernel support for Intel IPW2200
727  Includes:
728  - ipw2200
729 endef
730
731
732 define KernelPackage/net-hermes
733   $(call KernelPackage/mac80211/Default)
734   TITLE:=Hermes 802.11b chipset support
735   DEPENDS:=@PCI_SUPPORT||PCMCIA_SUPPORT +kmod-cfg80211 +@DRIVER_WEXT_SUPPORT
736   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/orinoco/orinoco.ko
737   AUTOLOAD:=$(call AutoLoad,50,orinoco)
738 endef
739
740 define KernelPackage/net-hermes/description
741  Kernel support for Hermes 802.11b chipsets
742 endef
743
744 define KernelPackage/net-hermes-pci
745   $(call KernelPackage/mac80211/Default)
746   TITLE:=Intersil Prism 2.5 PCI support
747   DEPENDS:=@PCI_SUPPORT +kmod-net-hermes
748   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/orinoco/orinoco_pci.ko
749   AUTOLOAD:=$(call AutoLoad,55,orinoco_pci)
750 endef
751
752 define KernelPackage/net-hermes-pci/description
753  Kernel modules for Intersil Prism 2.5 PCI support
754 endef
755
756 define KernelPackage/net-hermes-plx
757   $(call KernelPackage/mac80211/Default)
758   TITLE:=PLX9052 based PCI adaptor
759   DEPENDS:=@PCI_SUPPORT +kmod-net-hermes
760   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/orinoco/orinoco_plx.ko
761   AUTOLOAD:=$(call AutoLoad,55,orinoco_plx)
762 endef
763
764 define KernelPackage/net-hermes-plx/description
765  Kernel modules for Hermes in PLX9052 based PCI adaptors
766 endef
767
768 define KernelPackage/net-hermes-pcmcia
769   $(call KernelPackage/mac80211/Default)
770   TITLE:=Hermes based PCMCIA adaptors
771   DEPENDS:=@PCMCIA_SUPPORT +kmod-net-hermes @BROKEN
772   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/orinoco/orinoco_cs.ko
773   AUTOLOAD:=$(call AutoLoad,55,orinoco_cs)
774 endef
775
776 define KernelPackage/net-hermes-pcmcia/description
777  Kernel modules for Hermes based PCMCIA adaptors
778 endef
779
780 define KernelPackage/iwlagn
781   $(call KernelPackage/mac80211/Default)
782   DEPENDS:= +kmod-mac80211 @PCI_SUPPORT +@DRIVER_11N_SUPPORT
783   TITLE:=Intel AGN Wireless support
784   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/iwlwifi/iwlwifi.ko
785   AUTOLOAD:=$(call AutoLoad,60,iwlwifi)
786   MENU:=1
787 endef
788
789 define KernelPackage/iwlagn/description
790  iwlagn kernel module for Intel 5000/5150/1000/6000/6050/6005/6030/100 support
791 endef
792
793 define KernelPackage/iwlagn/config
794   if PACKAGE_kmod-iwlagn
795
796         config IWL5000_FW
797                 bool "Intel 5000 Firmware"
798                 default y
799                 help
800                   Download and install firmware for:
801                     Intel Wireless WiFi 5100AGN, 5300AGN, and 5350AGN
802
803         config IWL5150_FW
804                 bool "Intel 5150 Firmware"
805                 default y
806                 help
807                   Download and install firmware for:
808                     Intel Wireless WiFi 5150AGN
809
810         config IWL1000_FW
811                 bool "Intel 1000 Firmware"
812                 default y
813                 help
814                   Download and install firmware for:
815                     Intel Centrino Wireless-N 1000
816
817         config IWL6000_FW
818                 bool "Intel 6000 Firmware"
819                 default y
820                 help
821                   Download and install firmware for:
822                     Intel Centrino Ultimate-N 6300 and Advanced-N 6200
823
824         config IWL6050_FW
825                 bool "Intel 6050 Firmware"
826                 default y
827                 help
828                   Download and install firmware for:
829                     Intel Centrino Advanced-N + WiMAX 6250 and Wireless-N + WiMAX 6150
830
831         config IWL6005_FW
832                 bool "Intel 6005 Firmware"
833                 default y
834                 help
835                   Download and install firmware for:
836                     Intel Centrino Advanced-N 6205
837
838         config IWL6030_FW
839                 bool "Intel 6030 Firmware"
840                 default y
841                 help
842                   Download and install firmware for:
843                     Intel Centrino Advanced-N 6230, Wireless-N 1030, Wireless-N 130 and Advanced-N 6235
844
845         config IWL100_FW
846                 bool "Intel 100 Firmware"
847                 default y
848                 help
849                   Download and install firmware for:
850                     Intel Centrino Wireless-N 100
851
852         config IWL2000_FW
853                 bool "Intel 2000 Firmware"
854                 default y
855                 help
856                   Download and install firmware for:
857                     Intel Centrino Wireless-N 2200
858
859         config IWL2030_FW
860                 bool "Intel 2030 Firmware"
861                 default y
862                 help
863                   Download and install firmware for:
864                     Intel Centrino Wireless-N 2230
865
866         config IWL105_FW
867                 bool "Intel 105 Firmware"
868                 default y
869                 help
870                   Download and install firmware for:
871                     Intel Centrino Wireless-N 105
872
873         config IWL135_FW
874                 bool "Intel 135 Firmware"
875                 default y
876                 help
877                   Download and install firmware for:
878                     Intel Centrino Wireless-N 135
879   endif
880 endef
881
882 define KernelPackage/iwl-legacy
883   $(call KernelPackage/mac80211/Default)
884   DEPENDS:= +kmod-mac80211 @PCI_SUPPORT
885   TITLE:=Intel legacy Wireless support
886   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/iwlegacy/iwlegacy.ko
887   AUTOLOAD:=$(call AutoLoad,60,iwlegacy)
888 endef
889
890 define KernelPackage/iwl-legacy/description
891  iwl-legacy kernel module for legacy Intel wireless support
892 endef
893
894 define KernelPackage/iwl3945
895   $(call KernelPackage/mac80211/Default)
896   DEPENDS:= +kmod-mac80211 +kmod-iwl-legacy
897   TITLE:=Intel iwl3945 Wireless support
898   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/iwlegacy/iwl3945.ko
899   AUTOLOAD:=$(call AutoLoad,61,iwl3945)
900 endef
901
902 define KernelPackage/iwl3945/description
903  iwl3945 kernel module for Intel 3945 support
904 endef
905
906 define KernelPackage/iwl4965
907   $(call KernelPackage/mac80211/Default)
908   DEPENDS:= +kmod-mac80211 +kmod-iwl-legacy +@DRIVER_11N_SUPPORT
909   TITLE:=Intel iwl4965 Wireless support
910   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/iwlegacy/iwl4965.ko
911   AUTOLOAD:=$(call AutoLoad,61,iwl4965)
912 endef
913
914 define KernelPackage/iwl4965/description
915  iwl4965 kernel module for Intel 4965 support
916 endef
917
918
919 define KernelPackage/mwl8k
920   $(call KernelPackage/mac80211/Default)
921   TITLE:=Driver for Marvell TOPDOG 802.11 Wireless cards
922   URL:=http://wireless.kernel.org/en/users/Drivers/mwl8k
923   DEPENDS+= @PCI_SUPPORT +kmod-mac80211 +@DRIVER_11N_SUPPORT
924   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/mwl8k.ko
925   AUTOLOAD:=$(call AutoLoad,27,mwl8k)
926 endef
927
928 define KernelPackage/mwl8k/description
929  Kernel modules for Marvell TOPDOG 802.11 Wireless cards
930 endef
931
932
933 define KernelPackage/wl12xx
934   $(call KernelPackage/mac80211/Default)
935   TITLE:=Driver for TI WL12xx
936   URL:=http://wireless.kernel.org/en/users/Drivers/wl12xx
937   DEPENDS+= @TARGET_omap4 +kmod-mac80211
938   FILES:= \
939         $(PKG_BUILD_DIR)/drivers/net/wireless/ti/wl12xx/wl12xx.ko \
940         $(PKG_BUILD_DIR)/drivers/net/wireless/ti/wlcore/wlcore.ko \
941         $(PKG_BUILD_DIR)/drivers/net/wireless/ti/wlcore/wlcore_sdio.ko
942   AUTOLOAD:=$(call AutoLoad,61,wlcore wlcore_sdio wl12xx)
943 endef
944
945 define KernelPackage/wl12xx/description
946  Kernel modules for TI WL12xx
947 endef
948
949 #Broadcom firmware
950 ifneq ($(CONFIG_B43_FW_5_10),)
951   PKG_B43_FWV4_NAME:=broadcom-wl
952   PKG_B43_FWV4_VERSION:=5.10.56.27.3
953   PKG_B43_FWV4_OBJECT:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)/driver/wl_apsta/wl_prebuilt.o
954   PKG_B43_FWV4_SOURCE:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)_mipsel.tar.bz2
955   PKG_B43_FWV4_SOURCE_URL:=http://mirror2.openwrt.org/sources/
956   PKG_B43_FWV4_MD5SUM:=3363e3a6b3d9d73c49dea870c7834eac
957 else
958 ifneq ($(CONFIG_B43_FW_4_178),)
959   PKG_B43_FWV4_NAME:=broadcom-wl
960   PKG_B43_FWV4_VERSION:=4.178.10.4
961   PKG_B43_FWV4_OBJECT:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)/linux/wl_apsta.o
962   PKG_B43_FWV4_SOURCE:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION).tar.bz2
963   PKG_B43_FWV4_SOURCE_URL:=http://mirror2.openwrt.org/sources/
964   PKG_B43_FWV4_MD5SUM:=14477e8cbbb91b11896affac9b219fdb
965 else
966 ifneq ($(CONFIG_B43_FW_5_100_138),)
967   PKG_B43_FWV4_NAME:=broadcom-wl
968   PKG_B43_FWV4_VERSION:=5.100.138
969   PKG_B43_FWV4_OBJECT:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)/linux/wl_apsta.o
970   PKG_B43_FWV4_SOURCE:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION).tar.bz2
971   PKG_B43_FWV4_SOURCE_URL:=http://www.lwfinger.com/b43-firmware/
972   PKG_B43_FWV4_MD5SUM:=f4e357b09eaf5d8b1f1920cf3493a555
973 else
974   PKG_B43_FWV4_NAME:=broadcom-wl
975   PKG_B43_FWV4_VERSION:=4.150.10.5
976   PKG_B43_FWV4_OBJECT:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)/driver/wl_apsta_mimo.o
977   PKG_B43_FWV4_SOURCE:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION).tar.bz2
978   PKG_B43_FWV4_SOURCE_URL:=http://mirror2.openwrt.org/sources/
979   PKG_B43_FWV4_MD5SUM:=0c6ba9687114c6b598e8019e262d9a60
980 endif
981 endif
982 endif
983 ifneq ($(CONFIG_B43_OPENFIRMWARE),)
984   PKG_B43_FWV4_NAME:=broadcom-wl
985   PKG_B43_FWV4_VERSION:=5.2
986   PKG_B43_FWV4_OBJECT:=openfwwf-$(PKG_B43_FWV4_VERSION)
987   PKG_B43_FWV4_SOURCE:=openfwwf-$(PKG_B43_FWV4_VERSION).tar.gz
988   PKG_B43_FWV4_SOURCE_URL:=http://www.ing.unibs.it/openfwwf/firmware/
989   PKG_B43_FWV4_MD5SUM:=e045a135453274e439ae183f8498b0fa
990 endif
991
992
993 PKG_B43_FWV3_NAME:=wl_apsta
994 PKG_B43_FWV3_VERSION:=3.130.20.0
995 PKG_B43_FWV3_SOURCE:=$(PKG_B43_FWV3_NAME)-$(PKG_B43_FWV3_VERSION).o
996 PKG_B43_FWV3_SOURCE_URL:=http://downloads.openwrt.org/sources/
997 PKG_B43_FWV3_MD5SUM:=e08665c5c5b66beb9c3b2dd54aa80cb3
998
999 define Download/b43
1000   FILE:=$(PKG_B43_FWV4_SOURCE)
1001   URL:=$(PKG_B43_FWV4_SOURCE_URL)
1002   MD5SUM:=$(PKG_B43_FWV4_MD5SUM)
1003 endef
1004 $(eval $(call Download,b43))
1005
1006 define Download/b43legacy
1007   FILE:=$(PKG_B43_FWV3_SOURCE)
1008   URL:=$(PKG_B43_FWV3_SOURCE_URL)
1009   MD5SUM:=$(PKG_B43_FWV3_MD5SUM)
1010 endef
1011 $(eval $(call Download,b43legacy))
1012
1013
1014 define KernelPackage/b43
1015   $(call KernelPackage/mac80211/Default)
1016   TITLE:=Broadcom 43xx wireless support
1017   URL:=http://linuxwireless.org/en/users/Drivers/b43
1018   KCONFIG:= \
1019         CONFIG_HW_RANDOM=y
1020   DEPENDS+= +kmod-mac80211 +!TARGET_brcm47xx:kmod-bcma +!(TARGET_brcm47xx||TARGET_brcm63xx):kmod-ssb
1021   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/b43/b43.ko
1022   AUTOLOAD:=$(call AutoLoad,30,b43)
1023   MENU:=1
1024 endef
1025
1026 define KernelPackage/b43/config
1027   if PACKAGE_kmod-b43
1028
1029         choice
1030                 prompt "b43 firmware version"
1031                 default B43_FW_5_100_138
1032                 help
1033                   This option allows you to select the version of the b43 firmware.
1034
1035         config B43_FW_4_150
1036                 bool "Firmware 410.2160 from driver 4.150.10.5 (old stable)"
1037                 help
1038                   Stable firmware for BCM43xx devices.
1039
1040                   If unsure, select this.
1041
1042         config B43_FW_4_178
1043                 bool "Firmware 478.104 from driver 4.178.10.4"
1044                 help
1045                   Experimental firmware for BCM43xx devices.
1046
1047                   This firmware is not tested as much as the "stable" firmware.
1048
1049                   If unsure, select the "stable" firmware.
1050
1051         config B43_FW_5_10
1052                 bool "Firmware 508.1084 from driver 5.10.56.27"
1053                 help
1054                   Newer experimental firmware for BCM43xx devices.
1055
1056                   This firmware is mostly untested. It is needed for some N-PHY devices.
1057
1058                   If unsure, select the "stable" firmware.
1059
1060         config B43_FW_5_100_138
1061                 bool "Firmware 666.2 from driver 5.100.138 (stable)"
1062                 help
1063                   Newer experimental firmware for BCM43xx devices.
1064
1065                   This firmware is mostly untested. It is needed for some N-PHY devices.
1066
1067                   If unsure, select the "stable" firmware.
1068
1069         config B43_OPENFIRMWARE
1070                 bool "Open FirmWare for WiFi networks"
1071                 help
1072                   Opensource firmware for BCM43xx devices.
1073
1074                   Do _not_ select this, unless you know what you are doing.
1075                   The Opensource firmware is not suitable for embedded devices, yet.
1076                   It does not support QoS, which is bad for AccessPoints.
1077                   It does not support hardware crypto acceleration, which is a showstopper
1078                   for embedded devices with low CPU resources.
1079
1080                   If unsure, select the "stable" firmware.
1081
1082         endchoice
1083
1084         config B43_FW_SQUASH
1085                 bool "Remove unnecessary firmware files"
1086                 depends on !B43_OPENFIRMWARE
1087                 default y
1088                 help
1089                   This options allows you to remove unnecessary b43 firmware files
1090                   from the final rootfs image. This can reduce the rootfs size by
1091                   up to 200k.
1092
1093                   If unsure, say Y.
1094
1095         config B43_FW_SQUASH_COREREVS
1096                 string "Core revisions to include"
1097                 depends on B43_FW_SQUASH
1098                 default "5,6,7,8,9,10,11,13,15,16,29"
1099                 help
1100                   This is a comma seperated list of core revision numbers.
1101
1102                   Example (keep files for rev5 only):
1103                     5
1104
1105                   Example (keep files for rev5 and rev11):
1106                     5,11
1107
1108         config B43_FW_SQUASH_PHYTYPES
1109                 string "PHY types to include"
1110                 depends on B43_FW_SQUASH
1111                 default "G,LP,N,HT"
1112                 help
1113                   This is a comma seperated list of PHY types:
1114                     A  => A-PHY
1115                     AG => Dual A-PHY G-PHY
1116                     G  => G-PHY
1117                     LP => LP-PHY
1118                     N  => N-PHY
1119                     HT  => HT-PHY
1120                     LCN  => LCN-PHY
1121
1122                   Example (keep files for G-PHY only):
1123                     G
1124
1125                   Example (keep files for G-PHY and N-PHY):
1126                     G,N
1127
1128         config PACKAGE_B43_DEBUG
1129                 bool "Enable debug output and debugfs for b43"
1130                 default n
1131                 help
1132                   Enable additional debug output and runtime sanity checks for b43
1133                   and enables the debugfs interface.
1134
1135                   If unsure, say N.
1136
1137         config PACKAGE_B43_PIO
1138                 bool "Enable support for PIO transfer mode"
1139                 default n
1140                 help
1141                   Enable support for using PIO instead of DMA. Unless you have DMA
1142                   transfer problems you don't need this.
1143
1144                   If unsure, say N.
1145
1146         config PACKAGE_B43_PHY_N
1147                 bool "Enable support for N-PHYs"
1148                 default y
1149                 help
1150                   Enable support for N-PHY. This includes support for the following devices:
1151                   PCI: BCM4321, BCM4322, BCM43222, BCM43224, BCM43225
1152                   SoC: BCM4716, BCM4717, BCM4718
1153
1154                   Currently only 11g speed is available.
1155
1156                   If unsure, say Y.
1157
1158         config PACKAGE_B43_PHY_HT
1159                 bool "Enable support for HT-PHYs"
1160                 default y
1161                 help
1162                   Enable support for HT-PHY. This includes support for the following devices:
1163                   PCI: BCM4331
1164
1165                   Currently only 11g speed is available.
1166
1167                   If unsure, say Y.
1168
1169         config PACKAGE_B43_PHY_LCN
1170                 bool "Enable support for LCN-PHYs"
1171                 depends on BROKEN
1172                 default n
1173                 help
1174                   Currently broken.
1175
1176                   If unsure, say N.
1177
1178   endif
1179 endef
1180
1181 define KernelPackage/b43/description
1182 Kernel module for Broadcom 43xx wireless support (mac80211 stack) new
1183 endef
1184
1185 define KernelPackage/b43legacy
1186   $(call KernelPackage/mac80211/Default)
1187   TITLE:=Broadcom 43xx-legacy wireless support
1188   URL:=http://linuxwireless.org/en/users/Drivers/b43
1189   KCONFIG:= \
1190         CONFIG_HW_RANDOM=y
1191   DEPENDS+= +kmod-mac80211 +!(TARGET_brcm47xx||TARGET_brcm63xx):kmod-ssb
1192   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/b43legacy/b43legacy.ko
1193   AUTOLOAD:=$(call AutoLoad,30,b43legacy)
1194   MENU:=1
1195 endef
1196
1197 define KernelPackage/b43legacy/config
1198   if PACKAGE_kmod-b43legacy
1199
1200         config B43LEGACY_FW_SQUASH
1201                 bool "Remove unnecessary firmware files"
1202                 default y
1203                 help
1204                   This options allows you to remove unnecessary b43legacy firmware files
1205                   from the final rootfs image. This can reduce the rootfs size by
1206                   up to 50k.
1207
1208                   If unsure, say Y.
1209
1210         config B43LEGACY_FW_SQUASH_COREREVS
1211                 string "Core revisions to include"
1212                 depends on B43LEGACY_FW_SQUASH
1213                 default "1,2,3,4"
1214                 help
1215                   This is a comma seperated list of core revision numbers.
1216
1217                   Example (keep files for rev4 only):
1218                     4
1219
1220                   Example (keep files for rev2 and rev4):
1221                     2,4
1222
1223   endif
1224 endef
1225
1226 define KernelPackage/b43legacy/description
1227 Kernel module for Broadcom 43xx-legacy wireless support (mac80211 stack) new
1228 endef
1229
1230
1231 define KernelPackage/brcmutil
1232   $(call KernelPackage/mac80211/Default)
1233   TITLE:=Broadcom IEEE802.11n common driver parts
1234   URL:=http://linuxwireless.org/en/users/Drivers/brcm80211
1235   DEPENDS+=@PCI_SUPPORT||USB_SUPPORT
1236   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/brcm80211/brcmutil/brcmutil.ko
1237   AUTOLOAD:=$(call AutoLoad,30,brcmutil)
1238   MENU:=1
1239 endef
1240
1241 define KernelPackage/brcmutil/description
1242  This module contains some common parts needed by Broadcom Wireless drivers brcmsmac and brcmfmac.
1243 endef
1244
1245 define KernelPackage/brcmutil/config
1246   if PACKAGE_kmod-brcmutil
1247
1248         config PACKAGE_BRCM80211_DEBUG
1249                 bool "Broadcom wireless driver debugging"
1250                 help
1251                   Say Y, if you want to debug brcmsmac and brcmfmac wireless driver.
1252
1253   endif
1254 endef
1255
1256 PKG_BRCMSMAC_FW_NAME:=broadcom-wl
1257 PKG_BRCMSMAC_FW_VERSION:=5.100.138
1258 PKG_BRCMSMAC_FW_OBJECT:=$(PKG_BRCMSMAC_FW_NAME)-$(PKG_BRCMSMAC_FW_VERSION)/linux/wl_apsta.o
1259 PKG_BRCMSMAC_FW_SOURCE:=$(PKG_BRCMSMAC_FW_NAME)-$(PKG_BRCMSMAC_FW_VERSION).tar.bz2
1260 PKG_BRCMSMAC_FW_SOURCE_URL:=http://www.lwfinger.com/b43-firmware/
1261 PKG_BRCMSMAC_FW_MD5SUM:=f4e357b09eaf5d8b1f1920cf3493a555
1262
1263 define Download/brcmsmac
1264   FILE:=$(PKG_BRCMSMAC_FW_SOURCE)
1265   URL:=$(PKG_BRCMSMAC_FW_SOURCE_URL)
1266   MD5SUM:=$(PKG_BRCMSMAC_FW_MD5SUM)
1267 endef
1268 $(eval $(call Download,brcmsmac))
1269
1270 define KernelPackage/brcmsmac
1271   $(call KernelPackage/mac80211/Default)
1272   TITLE:=Broadcom IEEE802.11n PCIe SoftMAC WLAN driver
1273   URL:=http://linuxwireless.org/en/users/Drivers/brcm80211
1274   DEPENDS+= +kmod-mac80211 +@DRIVER_11N_SUPPORT +!TARGET_brcm47xx:kmod-bcma +kmod-lib-cordic +kmod-lib-crc8 +kmod-brcmutil
1275   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/brcm80211/brcmsmac/brcmsmac.ko
1276   AUTOLOAD:=$(call AutoLoad,31,brcmsmac)
1277   MENU:=1
1278 endef
1279
1280 define KernelPackage/brcmsmac/description
1281  Kernel module for Broadcom IEEE802.11n PCIe Wireless cards
1282 endef
1283
1284 define KernelPackage/brcmsmac/config
1285   if PACKAGE_kmod-brcmsmac
1286
1287         config BRCMSMAC_USE_FW_FROM_WL
1288                 bool "Use firmware extracted from broadcom proprietary driver"
1289                 default y
1290                 help
1291                   Instead of using the official brcmsmac firmware a firmware
1292                   version 666.2 extracted from the proprietary Broadcom driver
1293                   is used. This is needed to get core rev 17 used in bcm4716
1294                   to work.
1295
1296                   If unsure, say Y.
1297
1298   endif
1299 endef
1300
1301
1302 define KernelPackage/brcmfmac
1303   $(call KernelPackage/mac80211/Default)
1304   TITLE:=Broadcom IEEE802.11n USB FullMAC WLAN driver
1305   URL:=http://linuxwireless.org/en/users/Drivers/brcm80211
1306   DEPENDS+= @USB_SUPPORT +kmod-usb-core +kmod-cfg80211 +@DRIVER_11N_SUPPORT +kmod-brcmutil
1307   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/brcm80211/brcmfmac/brcmfmac.ko
1308   AUTOLOAD:=$(call AutoLoad,60,brcmfmac)
1309 endef
1310
1311 define KernelPackage/brcmfmac/description
1312  Kernel module for Broadcom IEEE802.11n USB Wireless cards
1313 endef
1314
1315 config_package=$(if $(CONFIG_PACKAGE_kmod-$(1)),m)
1316
1317 config-y:= \
1318         WLAN \
1319         NL80211_TESTMODE \
1320         CFG80211_WEXT \
1321         CFG80211_INTERNAL_REGDB \
1322         MAC80211_RC_MINSTREL \
1323         MAC80211_RC_MINSTREL_HT \
1324         MAC80211_RC_DEFAULT_MINSTREL \
1325
1326 config-$(call config_package,cfg80211) += CFG80211
1327
1328 config-$(call config_package,mac80211) += MAC80211
1329 config-$(CONFIG_PACKAGE_MAC80211_MESH) += MAC80211_MESH
1330 ifdef CONFIG_PACKAGE_MAC80211_DEBUGFS
1331   config-y += \
1332         CFG80211_DEBUGFS \
1333         MAC80211_DEBUGFS \
1334         ATH9K_DEBUGFS \
1335         ATH9K_HTC_DEBUGFS \
1336         ATH10K_DEBUGFS \
1337         CARL9170_DEBUGFS \
1338         ATH5K_DEBUG
1339 endif
1340
1341 config-$(call config_package,lib80211) += LIB80211 LIB80211_CRYPT_WEP LIB80211_CRYPT_CCMP LIB80211_CRYPT_TKIP
1342
1343 config-$(call config_package,ath) += ATH_CARDS ATH_COMMON
1344 config-$(CONFIG_PACKAGE_ATH_DEBUG) += ATH_DEBUG ATH10K_DEBUG
1345
1346 config-$(call config_package,ath9k) += ATH9K
1347 config-$(call config_package,ath9k-common) += ATH9K_COMMON
1348 config-$(CONFIG_TARGET_ar71xx) += ATH9K_AHB
1349 config-$(CONFIG_PCI) += ATH9K_PCI
1350 config-$(CONFIG_ATH_USER_REGD) += ATH_USER_REGD
1351
1352 config-$(call config_package,ath9k-htc) += ATH9K_HTC
1353 config-$(call config_package,ath10k) += ATH10K ATH10K_PCI
1354
1355 config-$(call config_package,ath5k) += ATH5K
1356 ifdef CONFIG_TARGET_atheros
1357   config-y += ATH5K_AHB
1358 else
1359   config-y += ATH5K_PCI
1360 endif
1361
1362 config-$(call config_package,carl9170) += CARL9170
1363
1364 config-$(call config_package,b43) += B43
1365 config-y += B43_SSB B43_BCMA B43_PHY_LP
1366 config-$(CONFIG_PACKAGE_B43_PHY_N) += B43_PHY_N
1367 config-$(CONFIG_PACKAGE_B43_PHY_HT) += B43_PHY_HT
1368 config-$(CONFIG_PACKAGE_B43_PIO) += B43_PIO
1369 config-$(CONFIG_PACKAGE_B43_DEBUG) += B43_DEBUG
1370
1371 config-$(call config_package,b43legacy) += B43LEGACY
1372 config-y += B43LEGACY_DMA_MODE
1373
1374 config-$(call config_package,brcmutil) += BRCMUTIL
1375 config-$(call config_package,brcmsmac) += BRCMSMAC
1376 config-$(call config_package,brcmfmac) += BRCMFMAC BRCMFMAC_USB
1377 config-$(CONFIG_PACKAGE_BRCM80211_DEBUG) += BRCMDBG
1378
1379 config-$(call config_package,mac80211-hwsim) += MAC80211_HWSIM
1380
1381 config-$(call config_package,rt2x00-lib) += RT2X00 RT2X00_LIB
1382 config-$(call config_package,rt2x00-pci) += RT2X00_LIB_PCI
1383 config-$(call config_package,rt2x00-mmio) += RT2X00_LIB_MMIO
1384 config-$(call config_package,rt2x00-usb) += RT2X00_LIB_USB
1385 config-$(call config_package,rt2x00-soc) += RT2X00_LIB_SOC
1386 config-$(CONFIG_PACKAGE_RT2X00_LIB_DEBUGFS) += RT2X00_LIB_DEBUGFS
1387 config-$(CONFIG_PACKAGE_RT2X00_DEBUG) += RT2X00_DEBUG
1388
1389 config-$(call config_package,rt2400-pci) += RT2400PCI
1390 config-$(call config_package,rt2500-pci) += RT2500PCI
1391 config-$(call config_package,rt2500-usb) += RT2500USB
1392 config-$(call config_package,rt61-pci) += RT61PCI
1393 config-$(call config_package,rt73-usb) += RT73USB
1394
1395 config-$(call config_package,rt2800-lib) += RT2800_LIB
1396
1397 config-$(call config_package,rt2800-pci) += RT2800PCI
1398 config-y += RT2800PCI_RT33XX RT2800PCI_RT35XX RT2800PCI_RT53XX RT2800PCI_RT3290
1399
1400 config-$(call config_package,rt2800-usb) += RT2800USB
1401 config-y += RT2800USB_RT33XX RT2800USB_RT35XX RT2800USB_RT3573 RT2800USB_RT53XX RT2800USB_RT55XX
1402
1403 config-$(call config_package,iwl-legacy) += IWLEGACY
1404 config-$(call config_package,iwl3945) += IWL3945
1405 config-$(call config_package,iwl4965) += IWL4965
1406 config-$(call config_package,iwlagn) += IWLWIFI
1407
1408 config-$(call config_package,net-libipw) += LIBIPW
1409 config-$(call config_package,net-ipw2100) += IPW2100
1410 config-$(call config_package,net-ipw2200) += IPW2200
1411
1412 config-$(call config_package,p54-common) += P54_COMMON
1413 config-$(call config_package,p54-pci) += P54_PCI
1414 config-$(call config_package,p54-usb) += P54_USB
1415 config-$(call config_package,p54-spi) += P54_SPI
1416
1417 config-$(call config_package,net-hermes) += HERMES
1418 config-$(call config_package,net-hermes-pci) += PCI_HERMES
1419 config-$(call config_package,net-hermes-plx) += PLX_HERMES
1420 config-$(call config_package,net-hermes-pcmcia) += PCMCIA_HERMES
1421 config-y += HERMES_PRISM
1422
1423 config-$(call config_package,adm8211) += ADM8211
1424 config-$(call config_package,libertas-sd) += LIBERTAS LIBERTAS_SDIO
1425 config-$(call config_package,libertas-usb) += LIBERTAS LIBERTAS_USB
1426 config-$(call config_package,mwl8k) += MWL8K
1427 config-$(call config_package,rtl8180) += RTL8180
1428 config-$(call config_package,rtl8187) += RTL8187
1429 config-$(call config_package,wl12xx) += WL_TI WLCORE WLCORE_SDIO WL12XX
1430 config-$(call config_package,zd1211rw) += ZD1211RW
1431
1432 config-$(call config_package,rtlwifi) += RTL_CARDS RTLWIFI
1433 config-$(call config_package,rtlwifi-pci) += RTLWIFI_PCI
1434 config-$(call config_package,rtlwifi-usb) += RTLWIFI_USB
1435 config-$(call config_package,rtl8192c-common) += RTL8192C_COMMON
1436 config-$(call config_package,rtl8192ce) += RTL8192CE
1437 config-$(call config_package,rtl8192se) += RTL8192SE
1438 config-$(call config_package,rtl8192de) += RTL8192DE
1439 config-$(call config_package,rtl8192cu) += RTL8192CU
1440 config-$(CONFIG_PACKAGE_RTLWIFI_DEBUG) += RTLWIFI_DEBUG
1441
1442 config-$(CONFIG_LEDS_TRIGGERS) += MAC80211_LEDS B43_LEDS B43LEGACY_LEDS
1443
1444 MAKE_OPTS:= -C "$(PKG_BUILD_DIR)" \
1445         CROSS_COMPILE="$(KERNEL_CROSS)" \
1446         ARCH="$(LINUX_KARCH)" \
1447         EXTRA_CFLAGS="-I$(PKG_BUILD_DIR)/include" \
1448         KLIB_BUILD="$(LINUX_DIR)" \
1449         MODPROBE=true \
1450         KLIB=$(TARGET_MODULES_DIR) \
1451         KERNEL_SUBLEVEL=$(lastword $(subst ., ,$(KERNEL_PATCHVER))) \
1452         KBUILD_LDFLAGS_MODULE_PREREQ=
1453
1454 ifneq ($(findstring c,$(OPENWRT_VERBOSE)),)
1455   MAKE_OPTS += V=1
1456 endif
1457
1458 define ConfigVars
1459 $(subst $(space),,$(foreach opt,$(config-$(1)),CPTCFG_$(opt)=$(1)
1460 ))
1461 endef
1462
1463 define mac80211_config
1464 $(call ConfigVars,m)$(call ConfigVars,y)
1465 endef
1466 $(eval $(call shexport,mac80211_config))
1467
1468 define Build/Prepare
1469         rm -rf $(PKG_BUILD_DIR)
1470         mkdir -p $(PKG_BUILD_DIR)
1471         $(PKG_UNPACK)
1472         $(Build/Patch)
1473         $(TAR) -C $(PKG_BUILD_DIR) -xzf $(DL_DIR)/$(IPW2100_NAME)-$(IPW2100_VERSION).tgz
1474         $(TAR) -C $(PKG_BUILD_DIR) -xzf $(DL_DIR)/$(IPW2200_NAME)-$(IPW2200_VERSION).tgz
1475         $(TAR) -C $(PKG_BUILD_DIR) -xjf $(DL_DIR)/$(ZD1211FW_NAME)-$(ZD1211FW_VERSION).tar.bz2
1476         $(TAR) -C $(PKG_BUILD_DIR) -xjf $(DL_DIR)/$(PKG_LINUX_FIRMWARE_SOURCE)
1477         $(TAR) -C $(PKG_BUILD_DIR) -xjf $(DL_DIR)/$(PKG_ATH10K_LINUX_FIRMWARE_SOURCE)
1478         rm -rf \
1479                 $(PKG_BUILD_DIR)/include/linux/ssb \
1480                 $(PKG_BUILD_DIR)/include/linux/bcma \
1481                 $(PKG_BUILD_DIR)/include/net/bluetooth
1482
1483         rm -f \
1484                 $(PKG_BUILD_DIR)/include/linux/cordic.h \
1485                 $(PKG_BUILD_DIR)/include/linux/crc8.h \
1486                 $(PKG_BUILD_DIR)/include/linux/eeprom_93cx6.h \
1487                 $(PKG_BUILD_DIR)/include/linux/wl12xx.h \
1488                 $(PKG_BUILD_DIR)/include/linux/spi/libertas_spi.h \
1489                 $(PKG_BUILD_DIR)/include/net/ieee80211.h
1490
1491         echo 'compat-wireless-$(PKG_VERSION)-$(PKG_RELEASE)-$(REVISION)' > $(PKG_BUILD_DIR)/compat_version
1492         $(CP) ./files/regdb.txt $(PKG_BUILD_DIR)/net/wireless/db.txt
1493 endef
1494
1495 ifneq ($(CONFIG_PACKAGE_kmod-cfg80211)$(CONFIG_PACKAGE_kmod-lib80211),)
1496  define Build/Compile/kmod
1497         rm -rf $(PKG_BUILD_DIR)/modules
1498         +$(MAKE) $(PKG_JOBS) $(MAKE_OPTS) modules
1499  endef
1500 endif
1501
1502 define Build/Configure
1503         cmp $(PKG_BUILD_DIR)/include/linux/ath9k_platform.h $(LINUX_DIR)/include/linux/ath9k_platform.h
1504         cmp $(PKG_BUILD_DIR)/include/linux/ath5k_platform.h $(LINUX_DIR)/include/linux/ath5k_platform.h
1505         cmp $(PKG_BUILD_DIR)/include/linux/rt2x00_platform.h $(LINUX_DIR)/include/linux/rt2x00_platform.h
1506 endef
1507
1508 define Build/Compile
1509         $(SH_FUNC) var2file "$(call shvar,mac80211_config)" $(PKG_BUILD_DIR)/.config
1510         $(MAKE) $(MAKE_OPTS) allnoconfig
1511         $(call Build/Compile/kmod)
1512 endef
1513
1514 define Build/InstallDev
1515         mkdir -p \
1516                 $(1)/usr/include/mac80211 \
1517                 $(1)/usr/include/mac80211-backport \
1518                 $(1)/usr/include/mac80211/ath \
1519                 $(1)/usr/include/net/mac80211
1520         $(CP) $(PKG_BUILD_DIR)/net/mac80211/*.h $(PKG_BUILD_DIR)/include/* $(1)/usr/include/mac80211/
1521         $(CP) $(PKG_BUILD_DIR)/backport-include/* $(1)/usr/include/mac80211-backport/
1522         $(CP) $(PKG_BUILD_DIR)/net/mac80211/rate.h $(1)/usr/include/net/mac80211/
1523         $(CP) $(PKG_BUILD_DIR)/drivers/net/wireless/ath/*.h $(1)/usr/include/mac80211/ath/
1524 endef
1525
1526 define KernelPackage/libertas-usb/install
1527         $(INSTALL_DIR) $(1)/lib/firmware/libertas
1528         $(INSTALL_DATA) \
1529                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/libertas/usb8388_v9.bin \
1530                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/libertas/usb8682.bin \
1531                 $(1)/lib/firmware/libertas/
1532 endef
1533
1534 define KernelPackage/libertas-sd/install
1535         $(INSTALL_DIR) $(1)/lib/firmware/libertas
1536         $(INSTALL_DATA) \
1537                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/libertas/sd8385_helper.bin \
1538                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/libertas/sd8385.bin \
1539                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/libertas/sd8686_v9_helper.bin \
1540                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/libertas/sd8686_v9.bin \
1541                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/libertas/sd8688_helper.bin \
1542                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/libertas/sd8688.bin \
1543                 $(1)/lib/firmware/libertas
1544 endef
1545
1546 define KernelPackage/cfg80211/install
1547         $(INSTALL_DIR) $(1)/lib/wifi
1548         $(INSTALL_DATA) ./files/lib/wifi/mac80211.sh $(1)/lib/wifi
1549 endef
1550
1551 define KernelPackage/p54-pci/install
1552         $(INSTALL_DIR) $(1)/lib/firmware
1553         $(INSTALL_DATA) $(DL_DIR)/$(P54PCIFW) $(1)/lib/firmware/isl3886pci
1554 endef
1555
1556 define KernelPackage/p54-usb/install
1557         $(INSTALL_DIR) $(1)/lib/firmware
1558         $(INSTALL_DATA) $(DL_DIR)/$(P54USBFW) $(1)/lib/firmware/isl3887usb
1559 endef
1560
1561 define KernelPackage/p54-spi/install
1562         $(INSTALL_DIR) $(1)/lib/firmware
1563         $(INSTALL_DATA) $(DL_DIR)/$(P54SPIFW) $(1)/lib/firmware/3826.arm
1564 endef
1565
1566 define KernelPackage/rt61-pci/install
1567         $(INSTALL_DIR) $(1)/lib/firmware
1568         $(INSTALL_DATA) \
1569                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/rt2561.bin \
1570                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/rt2561s.bin \
1571                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/rt2661.bin \
1572                 $(1)/lib/firmware/
1573 endef
1574
1575 define KernelPackage/rt73-usb/install
1576         $(INSTALL_DIR) $(1)/lib/firmware
1577         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/rt73.bin $(1)/lib/firmware/
1578 endef
1579
1580 define KernelPackage/rt2800-pci/install
1581         $(INSTALL_DIR) $(1)/lib/firmware
1582         $(INSTALL_DATA) \
1583                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/rt2860.bin \
1584                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/rt3290.bin \
1585                 $(1)/lib/firmware
1586 endef
1587
1588 define KernelPackage/rt2800-usb/install
1589         $(INSTALL_DIR) $(1)/lib/firmware
1590         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/rt2870.bin $(1)/lib/firmware/
1591 endef
1592
1593 define KernelPackage/wl12xx/install
1594         $(INSTALL_DIR) $(1)/lib/firmware/ti-connectivity
1595         $(INSTALL_DATA) \
1596                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/ti-connectivity/wl127x-fw-5-mr.bin \
1597                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/ti-connectivity/wl127x-fw-5-plt.bin \
1598                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/ti-connectivity/wl127x-fw-5-sr.bin \
1599                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/ti-connectivity/wl1271-nvs.bin \
1600                 $(1)/lib/firmware/ti-connectivity
1601 endef
1602
1603
1604 define KernelPackage/zd1211rw/install
1605         $(INSTALL_DIR) $(1)/lib/firmware/zd1211
1606         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(ZD1211FW_NAME)/zd1211* $(1)/lib/firmware/zd1211
1607 endef
1608
1609 define KernelPackage/ath9k-htc/install
1610         $(INSTALL_DIR) $(1)/lib/firmware
1611         $(INSTALL_DATA) \
1612                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/htc_9271.fw \
1613                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/htc_7010.fw \
1614                 $(1)/lib/firmware/
1615 endef
1616
1617 define KernelPackage/ath10k/install
1618         $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA988X/hw2.0
1619         $(INSTALL_DATA) \
1620                 $(PKG_BUILD_DIR)/$(PKG_ATH10K_LINUX_FIRMWARE_SUBDIR)/ath10k/QCA988X/hw2.0/board.bin \
1621                 $(PKG_BUILD_DIR)/$(PKG_ATH10K_LINUX_FIRMWARE_SUBDIR)/ath10k/QCA988X/hw2.0/firmware.bin \
1622                 $(PKG_BUILD_DIR)/$(PKG_ATH10K_LINUX_FIRMWARE_SUBDIR)/ath10k/QCA988X/hw2.0/otp.bin \
1623                 $(1)/lib/firmware/ath10k/QCA988X/hw2.0/
1624 endef
1625
1626 define KernelPackage/mwl8k/install
1627         $(INSTALL_DIR) $(1)/lib/firmware/mwl8k
1628         $(INSTALL_DATA) \
1629                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/mwl8k/fmimage_8366_ap-3.fw \
1630                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/mwl8k/fmimage_8366.fw \
1631                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/mwl8k/helper_8366.fw \
1632                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/mwl8k/fmimage_8687.fw \
1633                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/mwl8k/helper_8687.fw \
1634                 $(1)/lib/firmware/mwl8k/
1635 endef
1636
1637 define KernelPackage/net-ipw2100/install
1638         $(INSTALL_DIR) $(1)/lib/firmware
1639         $(INSTALL_DATA) $(PKG_BUILD_DIR)/ipw2100-$(IPW2100_VERSION)*.fw $(1)/lib/firmware
1640 endef
1641
1642 define KernelPackage/net-ipw2200/install
1643         $(INSTALL_DIR) $(1)/lib/firmware
1644         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(IPW2200_NAME)-$(IPW2200_VERSION)/ipw2200*.fw $(1)/lib/firmware
1645 endef
1646
1647 define KernelPackage/iwlagn/install
1648         $(INSTALL_DIR) $(1)/lib/firmware
1649 ifneq ($(CONFIG_IWL5000_FW),)
1650         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-5000-5.ucode $(1)/lib/firmware
1651 endif
1652 ifneq ($(CONFIG_IWL5150_FW),)
1653         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-5150-2.ucode $(1)/lib/firmware
1654 endif
1655 ifneq ($(CONFIG_IWL1000_FW),)
1656         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-1000-5.ucode $(1)/lib/firmware
1657 endif
1658 ifneq ($(CONFIG_IWL6000_FW),)
1659         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-6000-4.ucode $(1)/lib/firmware
1660 endif
1661 ifneq ($(CONFIG_IWL6050_FW),)
1662         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-6050-5.ucode $(1)/lib/firmware
1663 endif
1664 ifneq ($(CONFIG_IWL6005_FW),)
1665         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-6000g2a-6.ucode $(1)/lib/firmware
1666 endif
1667 ifneq ($(CONFIG_IWL6030_FW),)
1668         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-6000g2b-6.ucode $(1)/lib/firmware
1669 endif
1670 ifneq ($(CONFIG_IWL100_FW),)
1671         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-100-5.ucode $(1)/lib/firmware
1672 endif
1673 ifneq ($(CONFIG_IWL2000_FW),)
1674         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-2000-6.ucode $(1)/lib/firmware
1675 endif
1676 ifneq ($(CONFIG_IWL2030_FW),)
1677         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-2030-6.ucode $(1)/lib/firmware
1678 endif
1679 ifneq ($(CONFIG_IWL105_FW),)
1680         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-105-6.ucode $(1)/lib/firmware
1681 endif
1682 ifneq ($(CONFIG_IWL135_FW),)
1683         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-135-6.ucode $(1)/lib/firmware
1684 endif
1685 endef
1686
1687 define KernelPackage/iwl3945/install
1688         $(INSTALL_DIR) $(1)/lib/firmware
1689         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-3945-2.ucode $(1)/lib/firmware
1690 endef
1691
1692 define KernelPackage/iwl4965/install
1693         $(INSTALL_DIR) $(1)/lib/firmware
1694         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-4965-2.ucode $(1)/lib/firmware
1695 endef
1696
1697 define KernelPackage/b43/install
1698         rm -rf $(1)/lib/firmware/
1699 ifeq ($(CONFIG_B43_OPENFIRMWARE),y)
1700         tar xzf "$(DL_DIR)/$(PKG_B43_FWV4_SOURCE)" -C "$(PKG_BUILD_DIR)"
1701 else
1702         tar xjf "$(DL_DIR)/$(PKG_B43_FWV4_SOURCE)" -C "$(PKG_BUILD_DIR)"
1703 endif
1704         $(INSTALL_DIR) $(1)/lib/firmware/
1705 ifeq ($(CONFIG_B43_OPENFIRMWARE),y)
1706         $(MAKE) -C "$(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT)/"
1707         $(INSTALL_DIR) $(1)/lib/firmware/b43-open/
1708         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT)/ucode5.fw $(1)/lib/firmware/b43-open/ucode5.fw
1709         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT)/b0g0bsinitvals5.fw $(1)/lib/firmware/b43-open/b0g0bsinitvals5.fw
1710         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT)/b0g0initvals5.fw $(1)/lib/firmware/b43-open/b0g0initvals5.fw
1711 else
1712         b43-fwcutter -w $(1)/lib/firmware/ $(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT)
1713 endif
1714 ifneq ($(CONFIG_B43_FW_SQUASH),)
1715         b43-fwsquash.py "$(CONFIG_B43_FW_SQUASH_PHYTYPES)" "$(CONFIG_B43_FW_SQUASH_COREREVS)" "$(1)/lib/firmware/b43"
1716 endif
1717 endef
1718
1719 define KernelPackage/b43legacy/install
1720         $(INSTALL_DIR) $(1)/lib/firmware/
1721         b43-fwcutter --unsupported -w $(1)/lib/firmware/ $(DL_DIR)/$(PKG_B43_FWV3_SOURCE)
1722 ifneq ($(CONFIG_B43LEGACY_FW_SQUASH),)
1723         b43-fwsquash.py "G" "$(CONFIG_B43LEGACY_FW_SQUASH_COREREVS)" "$(1)/lib/firmware/b43legacy"
1724 endif
1725 endef
1726
1727 define KernelPackage/brcmsmac/install
1728         $(INSTALL_DIR) $(1)/lib/firmware/brcm
1729 ifeq ($(CONFIG_BRCMSMAC_USE_FW_FROM_WL),y)
1730         tar xjf "$(DL_DIR)/$(PKG_BRCMSMAC_FW_SOURCE)" -C "$(PKG_BUILD_DIR)"
1731         b43-fwcutter --brcmsmac -w $(1)/lib/firmware/ $(PKG_BUILD_DIR)/$(PKG_BRCMSMAC_FW_OBJECT)
1732 else
1733         $(INSTALL_DATA) \
1734                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/brcm/bcm43xx-0.fw \
1735                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/brcm/bcm43xx_hdr-0.fw \
1736                 $(1)/lib/firmware/brcm/
1737 endif
1738 endef
1739
1740 define KernelPackage/brcmfmac/install
1741         $(INSTALL_DIR) $(1)/lib/firmware/brcm
1742         $(INSTALL_DATA) \
1743                 $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/brcm/brcmfmac43236b.bin \
1744                 $(1)/lib/firmware/brcm/
1745 endef
1746
1747 $(eval $(call KernelPackage,adm8211))
1748 $(eval $(call KernelPackage,ath5k))
1749 $(eval $(call KernelPackage,lib80211))
1750 $(eval $(call KernelPackage,libertas-usb))
1751 $(eval $(call KernelPackage,libertas-sd))
1752 $(eval $(call KernelPackage,cfg80211))
1753 $(eval $(call KernelPackage,mac80211))
1754 $(eval $(call KernelPackage,p54-common))
1755 $(eval $(call KernelPackage,p54-pci))
1756 $(eval $(call KernelPackage,p54-usb))
1757 $(eval $(call KernelPackage,p54-spi))
1758 $(eval $(call KernelPackage,rt2x00-lib))
1759 $(eval $(call KernelPackage,rt2x00-mmio))
1760 $(eval $(call KernelPackage,rt2x00-pci))
1761 $(eval $(call KernelPackage,rt2x00-usb))
1762 $(eval $(call KernelPackage,rt2x00-soc))
1763 $(eval $(call KernelPackage,rt2800-lib))
1764 $(eval $(call KernelPackage,rt2400-pci))
1765 $(eval $(call KernelPackage,rt2500-pci))
1766 $(eval $(call KernelPackage,rt2500-usb))
1767 $(eval $(call KernelPackage,rt61-pci))
1768 $(eval $(call KernelPackage,rt73-usb))
1769 $(eval $(call KernelPackage,rt2800-pci))
1770 $(eval $(call KernelPackage,rt2800-usb))
1771 $(eval $(call KernelPackage,rtl8180))
1772 $(eval $(call KernelPackage,rtl8187))
1773 $(eval $(call KernelPackage,rtlwifi))
1774 $(eval $(call KernelPackage,rtlwifi-pci))
1775 $(eval $(call KernelPackage,rtlwifi-usb))
1776 $(eval $(call KernelPackage,rtl8192c-common))
1777 $(eval $(call KernelPackage,rtl8192ce))
1778 $(eval $(call KernelPackage,rtl8192se))
1779 $(eval $(call KernelPackage,rtl8192de))
1780 $(eval $(call KernelPackage,rtl8192cu))
1781 $(eval $(call KernelPackage,zd1211rw))
1782 $(eval $(call KernelPackage,mac80211-hwsim))
1783 $(eval $(call KernelPackage,ath9k-common))
1784 $(eval $(call KernelPackage,ath9k))
1785 $(eval $(call KernelPackage,ath9k-htc))
1786 $(eval $(call KernelPackage,ath10k))
1787 $(eval $(call KernelPackage,ath))
1788 $(eval $(call KernelPackage,carl9170))
1789 $(eval $(call KernelPackage,b43))
1790 $(eval $(call KernelPackage,b43legacy))
1791 $(eval $(call KernelPackage,brcmutil))
1792 $(eval $(call KernelPackage,brcmsmac))
1793 $(eval $(call KernelPackage,brcmfmac))
1794 $(eval $(call KernelPackage,net-libipw))
1795 $(eval $(call KernelPackage,net-ipw2100))
1796 $(eval $(call KernelPackage,net-ipw2200))
1797 $(eval $(call KernelPackage,iwlagn))
1798 $(eval $(call KernelPackage,iwl-legacy))
1799 $(eval $(call KernelPackage,iwl4965))
1800 $(eval $(call KernelPackage,iwl3945))
1801 $(eval $(call KernelPackage,mwl8k))
1802 $(eval $(call KernelPackage,net-hermes))
1803 $(eval $(call KernelPackage,net-hermes-pci))
1804 $(eval $(call KernelPackage,net-hermes-plx))
1805 $(eval $(call KernelPackage,net-hermes-pcmcia))
1806 $(eval $(call KernelPackage,wl12xx))