mac80211: add the new 802.11n minstrel rate control implementation (optional, not...
[openwrt.git] / package / mac80211 / Makefile
1 #
2 # Copyright (C) 2007-2010 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:=2010-02-16
14 PKG_RELEASE:=3
15 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
16 #       http://www.orbit-lab.org/kernel/compat-wireless-2.6/2010/11 \
17 #       http://wireless.kernel.org/download/compat-wireless-2.6
18 PKG_MD5SUM:=190060a705c2b78e9b0bc873a8803b37
19
20 PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2
21 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION)
22
23 PKG_CONFIG_DEPENDS:= \
24         CONFIG_PACKAGE_kmod-mac80211 \
25         CONFIG_PACKAGE_MAC80211_DEBUGFS \
26         CONFIG_PACKAGE_ATH9K_USE_MINSTREL \
27         CONFIG_PACKAGE_ATH_DEBUG \
28         CONFIG_ATH_USER_REGD \
29
30 include $(INCLUDE_DIR)/package.mk
31
32 WMENU:=Wireless Drivers
33
34 define KernelPackage/mac80211/Default
35   SUBMENU:=$(WMENU)
36   URL:=http://linuxwireless.org/
37   MAINTAINER:=Felix Fietkau <nbd@openwrt.org>
38   DEPENDS:=@LINUX_2_6 @!TARGET_avr32 @(!(TARGET_ep93xx||TARGET_ps3||TARGET_pxcab)||BROKEN)
39 endef
40
41 define KernelPackage/mac80211
42   $(call KernelPackage/mac80211/Default)
43   TITLE:=Linux 802.11 Wireless Networking Stack
44   DEPENDS+= +kmod-crypto-core +kmod-crypto-arc4 +kmod-crypto-aes +wireless-tools +iw @!LINUX_2_6_25
45   FILES:= \
46         $(PKG_BUILD_DIR)/compat/compat.$(LINUX_KMOD_SUFFIX) \
47         $(PKG_BUILD_DIR)/compat/compat_firmware_class.$(LINUX_KMOD_SUFFIX) \
48         $(PKG_BUILD_DIR)/net/mac80211/mac80211.$(LINUX_KMOD_SUFFIX) \
49         $(PKG_BUILD_DIR)/net/wireless/cfg80211.$(LINUX_KMOD_SUFFIX)
50   AUTOLOAD:=$(call AutoLoad,20,compat compat_firmware_class cfg80211 mac80211)
51 endef
52
53 define KernelPackage/mac80211/config
54         source "$(SOURCE)/Config.in"
55 endef
56
57 define KernelPackage/mac80211/description
58 Linux 802.11 Wireless Networking Stack
59 endef
60
61 # Prism54 drivers
62 P54PCIFW:=2.13.12.0.arm
63 P54USBFW:=2.13.24.0.lm87.arm
64
65 define Download/p54usb
66   FILE:=$(P54USBFW)
67   URL:=http://daemonizer.de/prism54/prism54-fw/fw-usb
68   MD5SUM:=8e8ab005a4f8f0123bcdc51bc25b47f6
69 endef
70 $(eval $(call Download,p54usb))
71
72 define Download/p54pci
73   FILE:=$(P54PCIFW)
74   URL:=http://daemonizer.de/prism54/prism54-fw/fw-softmac
75   MD5SUM:=ff7536af2092b1c4b21315bd103ef4c4
76 endef
77 $(eval $(call Download,p54pci))
78
79 define KernelPackage/p54/Default
80   $(call KernelPackage/mac80211/Default)
81   TITLE:=Prism54 Drivers
82 endef
83
84 define KernelPackage/p54/description
85   Kernel module for Prism54 chipsets (mac80211)
86 endef
87
88 define KernelPackage/p54-common
89   $(call KernelPackage/p54/Default)
90   DEPENDS+= @PCI_SUPPORT||@USB_SUPPORT +kmod-mac80211
91   TITLE+= (COMMON)
92   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/p54/p54common.$(LINUX_KMOD_SUFFIX)
93   AUTOLOAD:=$(call AutoLoad,30,p54common)
94 endef
95
96 define KernelPackage/p54-pci
97   $(call KernelPackage/p54/Default)
98   TITLE+= (PCI)
99   DEPENDS+= @PCI_SUPPORT +kmod-p54-common
100   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/p54/p54pci.$(LINUX_KMOD_SUFFIX)
101   AUTOLOAD:=$(call AutoLoad,31,p54pci)
102 endef
103
104 define KernelPackage/p54-usb
105   $(call KernelPackage/p54/Default)
106   TITLE+= (USB)
107   DEPENDS+= @USB_SUPPORT +kmod-usb-core +kmod-p54-common
108   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/p54/p54usb.$(LINUX_KMOD_SUFFIX)
109   AUTOLOAD:=$(call AutoLoad,31,p54usb)
110 endef
111
112 # Ralink rt2x00 drivers
113 RT61FW:=RT61_Firmware_V1.2.zip
114 RT71FW:=RT71W_Firmware_V1.8.zip
115 RT2860FW:=RT2860_Firmware_V11.zip
116 RT2870FW:=RT2870_Firmware_V8.zip
117
118 define Download/rt61
119   FILE:=$(RT61FW)
120   URL:=http://www.ralinktech.com.tw/data/
121   MD5SUM:=d4c690c93b470bc9a681297c2adc6281
122 endef
123 $(eval $(call Download,rt61))
124
125 define Download/rt71w
126   FILE:=$(RT71FW)
127   URL:=http://www.ralinktech.com.tw/data/
128   MD5SUM:=1e7a5dc574e0268574fcda3fd5cf52f7
129 endef
130 $(eval $(call Download,rt71w))
131
132 define Download/rt2860
133   FILE:=$(RT2860FW)
134   URL:=http://www.ralinktech.com.tw/data/drivers
135   MD5SUM:=440a81756a52c53528f16faa41c40124
136 endef
137 $(eval $(call Download,rt2860))
138
139 define Download/rt2870
140   FILE:=$(RT2870FW)
141   URL:=http://www.ralinktech.com.tw/data/drivers
142   MD5SUM:=a7aae1d8cfd68e4d86a73000df0b6584
143 endef
144 $(eval $(call Download,rt2870))
145
146 AR9170FW:=ar9170.fw
147
148 define Download/ar9170
149   FILE:=$(AR9170FW)
150   URL:=http://www.kernel.org/pub/linux/kernel/people/mcgrof/firmware/ar9170
151   MD5SUM:=34feec4ec0eae3bb92c7c1ea2dfb4530
152 endef
153 $(eval $(call Download,ar9170))
154
155 define KernelPackage/rt2x00/Default
156   $(call KernelPackage/mac80211/Default)
157   TITLE:=Ralink Drivers for RT2x00 cards
158 endef
159
160 define KernelPackage/rt2x00-lib
161 $(call KernelPackage/rt2x00/Default)
162   DEPENDS+= @(PCI_SUPPORT||USB_SUPPORT) +kmod-mac80211 +kmod-crc-itu-t
163   TITLE+= (LIB)
164   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2x00lib.$(LINUX_KMOD_SUFFIX)
165   AUTOLOAD:=$(call AutoLoad,25,rt2x00lib)
166 endef
167
168 define KernelPackage/rt2x00-pci
169 $(call KernelPackage/rt2x00/Default)
170   DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-lib +kmod-eeprom-93cx6
171   TITLE+= (PCI)
172   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2x00pci.$(LINUX_KMOD_SUFFIX)
173   AUTOLOAD:=$(call AutoLoad,26,rt2x00pci)
174 endef
175
176 define KernelPackage/rt2x00-usb
177 $(call KernelPackage/rt2x00/Default)
178   DEPENDS+= @USB_SUPPORT +kmod-rt2x00-lib +kmod-usb-core
179   TITLE+= (USB)
180   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2x00usb.$(LINUX_KMOD_SUFFIX)
181   AUTOLOAD:=$(call AutoLoad,26,rt2x00usb)
182 endef
183
184 define KernelPackage/rt2800-lib
185 $(call KernelPackage/rt2x00/Default)
186   DEPENDS+= @(PCI_SUPPORT||USB_SUPPORT) +kmod-rt2x00-lib +USB_SUPPORT:kmod-rt2x00-usb
187   TITLE+= (rt2800 LIB)
188   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2800lib.$(LINUX_KMOD_SUFFIX)
189   AUTOLOAD:=$(call AutoLoad,27,rt2800lib)
190 endef
191
192 define KernelPackage/rt2400-pci
193 $(call KernelPackage/rt2x00/Default)
194   DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-pci
195   TITLE+= (RT2400 PCI)
196   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2400pci.$(LINUX_KMOD_SUFFIX)
197   AUTOLOAD:=$(call AutoLoad,27,rt2400pci)
198 endef
199
200 define KernelPackage/rt2500-pci
201 $(call KernelPackage/rt2x00/Default)
202   DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-pci
203   TITLE+= (RT2500 PCI)
204   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2500pci.$(LINUX_KMOD_SUFFIX)
205   AUTOLOAD:=$(call AutoLoad,27,rt2500pci)
206 endef
207
208 define KernelPackage/rt2500-usb
209 $(call KernelPackage/rt2x00/Default)
210   DEPENDS+= @USB_SUPPORT +kmod-rt2x00-usb
211   TITLE+= (RT2500 USB)
212   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2500usb.$(LINUX_KMOD_SUFFIX)
213   AUTOLOAD:=$(call AutoLoad,27,rt2500usb)
214 endef
215
216 define KernelPackage/rt61-pci
217 $(call KernelPackage/rt2x00/Default)
218   DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-pci
219   TITLE+= (RT2x61 PCI)
220   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt61pci.$(LINUX_KMOD_SUFFIX)
221   AUTOLOAD:=$(call AutoLoad,27,rt61pci)
222 endef
223
224 define KernelPackage/rt73-usb
225   $(call KernelPackage/rt2x00/Default)
226   DEPENDS+= @USB_SUPPORT +kmod-rt2x00-usb
227   TITLE+= (RT73 USB)
228   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt73usb.$(LINUX_KMOD_SUFFIX)
229   AUTOLOAD:=$(call AutoLoad,27,rt73usb)
230 endef
231
232 define KernelPackage/rt2800-pci
233 $(call KernelPackage/rt2x00/Default)
234   DEPENDS+= +kmod-rt2x00-pci +kmod-rt2800-lib +kmod-crc-ccitt
235   TITLE+= (RT2860 PCI)
236   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2800pci.$(LINUX_KMOD_SUFFIX)
237   AUTOLOAD:=$(call AutoLoad,28,rt2800pci)
238 endef
239
240 define KernelPackage/rt2800-usb
241 $(call KernelPackage/rt2x00/Default)
242   DEPENDS+= +kmod-rt2x00-usb +kmod-rt2800-lib +kmod-crc-ccitt
243   TITLE+= (RT2870 USB)
244   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2800usb.$(LINUX_KMOD_SUFFIX)
245   AUTOLOAD:=$(call AutoLoad,28,rt2800usb)
246 endef
247
248 define KernelPackage/rtl818x/Default
249   $(call KernelPackage/mac80211/Default)
250   TITLE:=Realtek Drivers for RTL818x devices
251   URL:=http://wireless.kernel.org/en/users/Drivers/rtl8187
252   DEPENDS+= +kmod-eeprom-93cx6 +kmod-mac80211
253 endef
254
255 define KernelPackage/rtl8180
256   $(call KernelPackage/rtl818x/Default)
257   DEPENDS+= @PCI_SUPPORT
258   TITLE+= (RTL8180 PCI)
259   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rtl818x/rtl8180.$(LINUX_KMOD_SUFFIX)
260   AUTOLOAD:=$(call AutoLoad,27,rtl8180)
261 endef
262
263 define KernelPackage/rtl8187
264 $(call KernelPackage/rtl818x/Default)
265   DEPENDS+= @USB_SUPPORT
266   TITLE+= (RTL8187 USB)
267   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rtl818x/rtl8187.$(LINUX_KMOD_SUFFIX)
268   AUTOLOAD:=$(call AutoLoad,27,rtl8187)
269 endef
270
271 ZD1211FW_NAME:=zd1211-firmware
272 ZD1211FW_VERSION:=1.4
273 define Download/zd1211rw
274   FILE:=$(ZD1211FW_NAME)-$(ZD1211FW_VERSION).tar.bz2
275   URL:=@SF/zd1211/
276   MD5SUM:=19f28781d76569af8551c9d11294c870
277 endef
278 $(eval $(call Download,zd1211rw))
279
280 define KernelPackage/zd1211rw
281   $(call KernelPackage/mac80211/Default)
282   TITLE:=Zydas ZD1211 support
283   DEPENDS+= @USB_SUPPORT +kmod-usb-core +kmod-mac80211
284   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/zd1211rw/zd1211rw.$(LINUX_KMOD_SUFFIX)
285   AUTOLOAD:=$(call AutoLoad,60,zd1211rw)
286 endef
287
288 define KernelPackage/ath/config
289
290 config ATH_USER_REGD
291         bool "Force Atheros drivers to respect the user's regdomain settings"
292         depends on PACKAGE_kmod-ath
293         help
294                 Atheros' idea of regulatory handling is that the EEPROM of the card defines
295                 the regulatory limits and the user is only allowed to restrict the settings
296                 even further, even if the country allows frequencies or power levels that
297                 are forbidden by the EEPROM settings.
298                 Select this option if you want the driver to respect the user's decision about
299                 regulatory settings.
300
301 config PACKAGE_ATH_DEBUG
302         bool "Atheros wireless debugging"
303         depends on PACKAGE_kmod-ath
304         help
305                 Say Y, if you want to debug atheros wireless drivers.
306                 Right now only ath9k makes use of this.
307 endef
308
309 define KernelPackage/ath
310   $(call KernelPackage/mac80211/Default)
311   TITLE:=Atheros common driver part
312   DEPENDS+= @PCI_SUPPORT +kmod-mac80211
313   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath.$(LINUX_KMOD_SUFFIX)
314   AUTOLOAD:=$(call AutoLoad,26,ath)
315 endef
316
317 define KernelPackage/ath/description
318  This module contains some common parts needed by Atheros Wireless drivers.
319 endef
320
321 define KernelPackage/ath5k
322   $(call KernelPackage/mac80211/Default)
323   TITLE:=Atheros 5xxx wireless cards support
324   URL:=http://linuxwireless.org/en/users/Drivers/ath5k
325   DEPENDS+= +kmod-ath
326   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath5k/ath5k.$(LINUX_KMOD_SUFFIX)
327   AUTOLOAD:=$(call AutoLoad,27,ath5k)
328 endef
329
330 define KernelPackage/ath5k/description
331  This module adds support for wireless adapters based on
332  Atheros 5xxx chipset.
333 endef
334
335 define KernelPackage/ath9k
336   $(call KernelPackage/mac80211/Default)
337   TITLE:=Atheros 802.11n wireless cards support
338   URL:=http://linuxwireless.org/en/users/Drivers/ath9k
339   DEPENDS+= +kmod-ath
340   FILES:= \
341         $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k_common.$(LINUX_KMOD_SUFFIX) \
342         $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k_hw.$(LINUX_KMOD_SUFFIX) \
343         $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k.$(LINUX_KMOD_SUFFIX)
344   AUTOLOAD:=$(call AutoLoad,27,ath9k_hw ath9k_common ath9k)
345 endef
346
347 define KernelPackage/ath9k/description
348 This module adds support for wireless adapters based on
349 Atheros IEEE 802.11n AR5008 and AR9001 family of chipsets.
350 endef
351
352 define KernelPackage/ath9k/config
353         source "$(SOURCE)/Config.in.ath9k"
354 endef
355
356 USB8388FW_NAME:=usb8388
357 USB8388FW_VERSION:=5.110.22.p23
358
359 define Download/usb8388
360   URL:=http://dev.laptop.org/pub/firmware/libertas/
361   FILE:=$(USB8388FW_NAME)-$(USB8388FW_VERSION).bin
362   MD5SUM=5e38f55719df3d0c58dd3bd02575a09c
363 endef
364 $(eval $(call Download,usb8388))
365
366 define KernelPackage/libertas
367   $(call KernelPackage/mac80211/Default)
368   DEPENDS+= @USB_SUPPORT +kmod-mac80211 +kmod-usb-core +kmod-lib80211
369   TITLE:=Marvell 88W8015 Wireless Driver
370   FILES:= \
371         $(PKG_BUILD_DIR)/drivers/net/wireless/libertas/libertas.$(LINUX_KMOD_SUFFIX) \
372         $(PKG_BUILD_DIR)/drivers/net/wireless/libertas/usb8xxx.$(LINUX_KMOD_SUFFIX)
373   AUTOLOAD:=$(call AutoLoad,27,libertas usb8xxx)
374 endef
375
376
377 define KernelPackage/ar9170
378   $(call KernelPackage/mac80211/Default)
379   TITLE:=Atheros AR9170 802.11n USB support
380   URL:=http://wireless.kernel.org/en/users/Drivers/ar9170
381   DEPENDS+= @USB_SUPPORT @!LINUX_2_6_25 +kmod-ath +kmod-usb-core
382   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ar9170/ar9170usb.$(LINUX_KMOD_SUFFIX)
383   AUTOLOAD:=$(call AutoLoad,27,ar9170usb)
384 endef
385
386 define KernelPackage/ar9170/description
387  This is a driver for the Atheros "otus" 802.11n USB devices.
388 endef
389
390 define KernelPackage/mac80211-hwsim
391   $(call KernelPackage/mac80211/Default)
392   TITLE:=mac80211 HW simulation device
393   DEPENDS+= +kmod-mac80211
394   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/mac80211_hwsim.$(LINUX_KMOD_SUFFIX)
395   AUTOLOAD:=$(call AutoLoad,60,mac80211_hwsim)
396 endef
397
398 #Broadcom firmware
399 ifneq ($(CONFIG_B43_EXPERIMENTAL),)
400   PKG_B43_FWV4_NAME:=broadcom-wl
401   PKG_B43_FWV4_VERSION:=4.178.10.4
402   PKG_B43_FWV4_OBJECT:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)/linux/wl.o
403   PKG_B43_FWV4_SOURCE:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION).tar.bz2
404   PKG_B43_FWV4_SOURCE_URL:=http://mirror2.openwrt.org/sources/
405   PKG_B43_FWV4_MD5SUM:=14477e8cbbb91b11896affac9b219fdb
406 else
407   PKG_B43_FWV4_NAME:=broadcom-wl
408   PKG_B43_FWV4_VERSION:=4.150.10.5
409   PKG_B43_FWV4_OBJECT:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)/driver/wl_apsta_mimo.o
410   PKG_B43_FWV4_SOURCE:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION).tar.bz2
411   PKG_B43_FWV4_SOURCE_URL:=http://mirror2.openwrt.org/sources/
412   PKG_B43_FWV4_MD5SUM:=0c6ba9687114c6b598e8019e262d9a60
413 endif
414 ifneq ($(CONFIG_B43_OPENFIRMWARE),)
415   PKG_B43_FWV4_NAME:=broadcom-wl
416   PKG_B43_FWV4_VERSION:=5.2
417   PKG_B43_FWV4_OBJECT:=openfwwf-$(PKG_B43_FWV4_VERSION)
418   PKG_B43_FWV4_SOURCE:=openfwwf-$(PKG_B43_FWV4_VERSION).tar.gz
419   PKG_B43_FWV4_SOURCE_URL:=http://www.ing.unibs.it/openfwwf/firmware/
420   PKG_B43_FWV4_MD5SUM:=e045a135453274e439ae183f8498b0fa
421 endif
422
423
424 PKG_B43_FWV3_NAME:=wl_apsta
425 PKG_B43_FWV3_VERSION:=3.130.20.0
426 PKG_B43_FWV3_SOURCE:=$(PKG_B43_FWV3_NAME)-$(PKG_B43_FWV3_VERSION).o
427 PKG_B43_FWV3_SOURCE_URL:=http://downloads.openwrt.org/sources/
428 PKG_B43_FWV3_MD5SUM:=e08665c5c5b66beb9c3b2dd54aa80cb3
429
430 ifneq ($(CONFIG_B43_OPENFIRMWARE),)
431   PKG_B43_FWCUTTER_NAME:=b43-fwcutter
432   PKG_B43_FWCUTTER_VERSION:=3e69531aa65b8f664a0ab00dfc3e2eefeb0cb417
433   PKG_B43_FWCUTTER_SOURCE:=$(PKG_B43_FWCUTTER_NAME)-$(PKG_B43_FWCUTTER_VERSION).tar.bz2
434   PKG_B43_FWCUTTER_PROTO:=git
435   PKG_B43_FWCUTTER_SOURCE_URL:=http://git.bu3sch.de/git/b43-tools.git
436   PKG_B43_FWCUTTER_SUBDIR:=$(PKG_B43_FWCUTTER_NAME)-$(PKG_B43_FWCUTTER_VERSION)
437   PKG_B43_FWCUTTER_OBJECT:=$(PKG_B43_FWCUTTER_NAME)-$(PKG_B43_FWCUTTER_VERSION)/fwcutter/
438 else
439   PKG_B43_FWCUTTER_NAME:=b43-fwcutter
440   PKG_B43_FWCUTTER_VERSION:=012
441   PKG_B43_FWCUTTER_SOURCE:=$(PKG_B43_FWCUTTER_NAME)-$(PKG_B43_FWCUTTER_VERSION).tar.bz2
442   PKG_B43_FWCUTTER_PROTO:=default
443   PKG_B43_FWCUTTER_SOURCE_URL:=http://bu3sch.de/b43/fwcutter/
444   PKG_B43_FWCUTTER_MD5SUM:=69eadf67b459f313a8d6b37aaabef96c
445   PKG_B43_FWCUTTER_SUBDIR:=b43-fwcutter-$(PKG_B43_FWCUTTER_VERSION)
446   PKG_B43_FWCUTTER_OBJECT:=$(PKG_B43_FWCUTTER_NAME)-$(PKG_B43_FWCUTTER_VERSION)/
447 endif
448
449 define Download/b43-common
450   FILE:=$(PKG_B43_FWCUTTER_SOURCE)
451   URL:=$(PKG_B43_FWCUTTER_SOURCE_URL)
452   MD5SUM:=$(PKG_B43_FWCUTTER_MD5SUM)
453   PROTO:=$(PKG_B43_FWCUTTER_PROTO)
454   VERSION:=$(PKG_B43_FWCUTTER_VERSION)
455   SUBDIR:=$(PKG_B43_FWCUTTER_SUBDIR)
456 endef
457 $(eval $(call Download,b43-common))
458
459 define Download/b43
460   FILE:=$(PKG_B43_FWV4_SOURCE)
461   URL:=$(PKG_B43_FWV4_SOURCE_URL)
462   MD5SUM:=$(PKG_B43_FWV4_MD5SUM)
463 endef
464 $(eval $(call Download,b43))
465
466 define Download/b43legacy
467   FILE:=$(PKG_B43_FWV3_SOURCE)
468   URL:=$(PKG_B43_FWV3_SOURCE_URL)
469   MD5SUM:=$(PKG_B43_FWV3_MD5SUM)
470 endef
471 $(eval $(call Download,b43legacy))
472
473 define KernelPackage/b43-common
474   $(call KernelPackage/mac80211/Default)
475   TITLE:=Generic stuff for Broadcom wireless devices
476   URL:=http://linuxwireless.org/en/users/Drivers/b43
477   KCONFIG:= \
478         CONFIG_HW_RANDOM=y
479   DEPENDS+= +kmod-mac80211 +!(TARGET_brcm47xx||TARGET_brcm63xx):kmod-ssb
480 endef
481
482 define KernelPackage/b43
483 $(call KernelPackage/b43-common)
484   TITLE:=Broadcom 43xx wireless support
485   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/b43/b43.$(LINUX_KMOD_SUFFIX)
486   AUTOLOAD:=$(call AutoLoad,30,b43)
487 endef
488
489 define KernelPackage/b43/config
490         source "$(SOURCE)/Config.in.b43"
491 endef
492
493 define KernelPackage/b43/description
494 Kernel module for Broadcom 43xx wireless support (mac80211 stack) new
495 endef
496
497 define KernelPackage/b43legacy
498 $(call KernelPackage/b43-common)
499   TITLE:=Broadcom 43xx-legacy wireless support
500   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/b43legacy/b43legacy.$(LINUX_KMOD_SUFFIX)
501   AUTOLOAD:=$(call AutoLoad,30,b43legacy)
502 endef
503
504 define KernelPackage/b43legacy/config
505         source "$(SOURCE)/Config.in.b43legacy"
506 endef
507
508 define KernelPackage/b43legacy/description
509 Kernel module for Broadcom 43xx-legacy wireless support (mac80211 stack) new
510 endef
511
512 BUILDFLAGS:= \
513         -I$(PKG_BUILD_DIR)/include \
514         $(foreach opt,$(CONFOPTS),-DCONFIG_$(opt)) \
515         $(if $(CONFIG_PCI),-DCONFIG_B43_PCI_AUTOSELECT -DCONFIG_B43_PCICORE_AUTOSELECT -DCONFIG_SSB_DRIVER_PCICORE_POSSIBLE -DCONFIG_SSB_DRIVER_PCICORE) \
516         $(if $(CONFIG_PCI),-DCONFIG_SSB_PCIHOST_POSSIBLE -DCONFIG_SSB_PCIHOST) \
517         $(if $(CONFIG_PCI),-DCONFIG_SSB_SPROM) \
518         $(if $(CONFIG_LEDS_TRIGGERS), -DCONFIG_MAC80211_LEDS -DCONFIG_LEDS_TRIGGERS -DCONFIG_B43_LEDS -DCONFIG_B43LEGACY_LEDS -DCONFIG_AR9170_LEDS) \
519         -DCONFIG_B43_HWRNG -DCONFIG_B43LEGACY_HWRNG \
520         $(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),-DCONFIG_MAC80211_DEBUGFS -DCONFIG_ATH9K_DEBUGFS) \
521         $(if $(CONFIG_PACKAGE_ATH_DEBUG),-DCONFIG_ATH_DEBUG) \
522         -D__CONFIG_MAC80211_RC_DEFAULT=minstrel \
523         $(if $(CONFIG_ATH_USER_REGD),-DATH_USER_REGD=1) \
524         $(if $(CONFIG_PACKAGE_ATH9K_USE_MINSTREL),-DATH9K_USE_MINSTREL)
525
526 MAKE_OPTS:= \
527         CROSS_COMPILE="$(KERNEL_CROSS)" \
528         ARCH="$(LINUX_KARCH)" \
529         EXTRA_CFLAGS="$(BUILDFLAGS)" \
530         $(foreach opt,$(CONFOPTS),CONFIG_$(opt)=m) \
531         CONFIG_MAC80211_RC_PID=y \
532         CONFIG_MAC80211_RC_MINSTREL=y \
533         CONFIG_MAC80211_LEDS=$(CONFIG_LEDS_TRIGGERS) \
534         CONFIG_MAC80211_DEBUGFS=$(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),y) \
535         CONFIG_B43_PCMCIA=n CONFIG_B43_PIO=n \
536         CONFIG_B43_PCI_AUTOSELECT=$(if $(CONFIG_PCI),y) \
537         CONFIG_B43_PCICORE_AUTOSELECT=$(if $(CONFIG_PCI),y) \
538         CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=$(if $(CONFIG_PCI),y) \
539         CONFIG_SSB_DRIVER_PCICORE=$(if $(CONFIG_PCI),y) \
540         CONFIG_SSB_PCIHOST_POSSIBLE=$(if $(CONFIG_PCI),y) \
541         CONFIG_SSB_PCIHOST=$(if $(CONFIG_PCI),y) \
542         CONFIG_B43LEGACY_LEDS=$(CONFIG_LEDS_TRIGGERS) \
543         CONFIG_B43_LEDS=$(CONFIG_LEDS_TRIGGERS) \
544         CONFIG_B43_HWRNG=$(if $(CONFIG_HW_RANDOM),y) \
545         CONFIG_B43LEGACY_HWRNG=$(if $(CONFIG_HW_RANDOM),y) \
546         CONFIG_B43=$(if $(CONFIG_PACKAGE_kmod-b43),m) \
547         CONFIG_B43LEGACY=$(if $(CONFIG_PACKAGE_kmod-b43legacy),m) \
548         CONFIG_ATH_COMMON=$(if $(CONFIG_PACKAGE_kmod-ath),m) \
549         CONFIG_ATH_DEBUG=$(if $(CONFIG_PACKAGE_ATH_DEBUG),y) \
550         CONFIG_ATH5K=$(if $(CONFIG_PACKAGE_kmod-ath5k),m) \
551         CONFIG_ATH9K=$(if $(CONFIG_PACKAGE_kmod-ath9k),m) \
552         CONFIG_ATH9K_DEBUGFS=$(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),y) \
553         CONFIG_ZD1211RW=$(if $(CONFIG_PACKAGE_kmod-zd1211rw),m) \
554         CONFIG_P54_COMMON=$(if $(CONFIG_PACKAGE_kmod-p54-common),m) \
555         CONFIG_P54_PCI=$(if $(CONFIG_PACKAGE_kmod-p54-pci),m) \
556         CONFIG_P54_USB=$(if $(CONFIG_PACKAGE_kmod-p54-usb),m) \
557         CONFIG_P54_SPI= \
558         CONFIG_RT2X00=$(if $(CONFIG_PACKAGE_kmod-rt2x00-lib),m) \
559         CONFIG_RT2X00_LIB=$(if $(CONFIG_PACKAGE_kmod-rt2x00-lib),m) \
560         CONFIG_RT2X00_LIB_PCI=$(if $(CONFIG_PACKAGE_kmod-rt2x00-pci),m) \
561         CONFIG_RT2X00_LIB_USB=$(if $(CONFIG_PACKAGE_kmod-rt2x00-usb),m) \
562         CONFIG_RT2400PCI=$(if $(CONFIG_PACKAGE_kmod-rt2400-pci),m) \
563         CONFIG_RT2500PCI=$(if $(CONFIG_PACKAGE_kmod-rt2500-pci),m) \
564         CONFIG_RT2500USB=$(if $(CONFIG_PACKAGE_kmod-rt2500-usb),m) \
565         CONFIG_RT61PCI=$(if $(CONFIG_PACKAGE_kmod-rt61-pci),m) \
566         CONFIG_RT73USB=$(if $(CONFIG_PACKAGE_kmod-rt73-usb),m) \
567         CONFIG_RT2800_LIB=$(if $(CONFIG_PACKAGE_kmod-rt2800-lib),m) \
568         CONFIG_RT2800PCI=$(if $(CONFIG_PACKAGE_kmod-rt2800-pci),m) \
569         CONFIG_RT2800USB=$(if $(CONFIG_PACKAGE_kmod-rt2800-usb),m) \
570         CONFIG_RTL8180=$(if $(CONFIG_PACKAGE_kmod-rtl8180),m) \
571         CONFIG_RTL8187=$(if $(CONFIG_PACKAGE_kmod-rtl8187),m) \
572         CONFIG_MAC80211_HWSIM=$(if $(CONFIG_PACKAGE_kmod-mac80211-hwsim),m) \
573         CONFIG_PCMCIA= \
574         CONFIG_LIBIPW= \
575         CONFIG_LIBERTAS=$(if $(CONFIG_PACKAGE_kmod-libertas),m) \
576         CONFIG_LIBERTAS_CS= \
577         CONFIG_LIBERTAS_SDIO= \
578         CONFIG_LIBERTAS_THINFIRM= \
579         CONFIG_LIBERTAS_USB=$(if $(CONFIG_PACKAGE_kmod-libertas),m) \
580         CONFIG_IPW2100= \
581         CONFIG_IPW2200= \
582         CONFIG_NL80211=y \
583         CONFIG_LIB80211= \
584         CONFIG_LIB80211_CRYPT_WEP= \
585         CONFIG_LIB80211_CRYPT_CCMP= \
586         CONFIG_LIB80211_CRYPT_TKIP= \
587         CONFIG_IWLWIFI= \
588         CONFIG_IWLAGN= \
589         CONFIG_MWL8K= \
590         CONFIG_ATMEL= \
591         CONFIG_PCMCIA_ATMEL= \
592         CONFIG_ADM8211= \
593         CONFIG_USB_NET_RNDIS_HOST= \
594         CONFIG_USB_NET_RNDIS_WLAN= \
595         CONFIG_USB_NET_CDCETHER= \
596         CONFIG_USB_USBNET= \
597         CONFIG_AT76C50X_USB= \
598         CONFIG_WL12XX= \
599         CONFIG_EEPROM_93CX6= \
600         CONFIG_AR9170_USB=$(if $(CONFIG_PACKAGE_kmod-ar9170),m) \
601         CONFIG_AR9170_LEDS=$(CONFIG_LEDS_TRIGGERS) \
602         CONFIG_IWM= \
603         MADWIFI= \
604         OLD_IWL= \
605         KLIB_BUILD="$(LINUX_DIR)" \
606         MODPROBE=: \
607         KLIB=$(TARGET_MODULES_DIR) \
608         KERNEL_SUBLEVEL=$(lastword $(subst ., ,$(KERNEL_PATCHVER)))
609
610 define Build/Prepare
611         rm -rf $(PKG_BUILD_DIR)
612         mkdir -p $(PKG_BUILD_DIR)
613         $(PKG_UNPACK)
614         $(Build/Patch)
615         unzip -jod $(PKG_BUILD_DIR) $(DL_DIR)/$(RT61FW)
616         unzip -jod $(PKG_BUILD_DIR) $(DL_DIR)/$(RT71FW)
617         -unzip -jod $(PKG_BUILD_DIR) $(DL_DIR)/$(RT2860FW)
618         -unzip -jod $(PKG_BUILD_DIR) $(DL_DIR)/$(RT2870FW)
619         $(TAR) -C $(PKG_BUILD_DIR) -xjf $(DL_DIR)/$(ZD1211FW_NAME)-$(ZD1211FW_VERSION).tar.bz2
620         rm -rf $(PKG_BUILD_DIR)/include/linux/ssb
621         rm -f $(PKG_BUILD_DIR)/include/net/ieee80211.h
622         rm $(PKG_BUILD_DIR)/include/linux/eeprom_93cx6.h
623 endef
624
625 ifneq ($(CONFIG_PACKAGE_kmod-mac80211),)
626  define Build/Compile/kmod
627         rm -rf $(PKG_BUILD_DIR)/modules
628         $(MAKE) -C "$(PKG_BUILD_DIR)" $(MAKE_OPTS) all
629  endef
630 endif
631
632 define Build/Compile
633         $(call Build/Compile/kmod)
634 endef
635
636 define Build/InstallDev
637         mkdir -p \
638                 $(1)/usr/include/mac80211 \
639                 $(1)/usr/include/mac80211/ath \
640                 $(1)/usr/include/net/mac80211
641         $(CP) $(PKG_BUILD_DIR)/net/mac80211/*.h $(PKG_BUILD_DIR)/include/* $(1)/usr/include/mac80211/
642         $(CP) $(PKG_BUILD_DIR)/net/mac80211/rate.h $(1)/usr/include/net/mac80211/
643         $(CP) $(PKG_BUILD_DIR)/drivers/net/wireless/ath/*.h $(1)/usr/include/mac80211/ath/
644 endef
645
646 define KernelPackage/libertas/install
647         $(INSTALL_DIR) $(1)/lib/firmware
648         $(INSTALL_DATA) $(DL_DIR)/$(USB8388FW_NAME)-$(USB8388FW_VERSION).bin $(1)/lib/firmware/$(USB8388FW_NAME).bin
649 endef
650
651 define KernelPackage/mac80211/install
652         $(INSTALL_DIR) $(1)/lib/wifi
653         $(INSTALL_DATA) ./files/lib/wifi/mac80211.sh $(1)/lib/wifi
654 endef
655
656 define KernelPackage/p54-pci/install
657         $(INSTALL_DIR) $(1)/lib/firmware
658         $(INSTALL_DATA) $(DL_DIR)/$(P54PCIFW) $(1)/lib/firmware/isl3886pci
659 endef
660
661 define KernelPackage/p54-usb/install
662         $(INSTALL_DIR) $(1)/lib/firmware
663         $(INSTALL_DATA) $(DL_DIR)/$(P54USBFW) $(1)/lib/firmware/isl3887usb
664 endef
665
666 define KernelPackage/rt61-pci/install
667         $(INSTALL_DIR) $(1)/lib/firmware
668         $(INSTALL_DATA) $(PKG_BUILD_DIR)/rt2?61*.bin $(1)/lib/firmware/
669 endef
670
671 define KernelPackage/rt73-usb/install
672         $(INSTALL_DIR) $(1)/lib/firmware
673         $(INSTALL_DATA) $(PKG_BUILD_DIR)/rt73.bin $(1)/lib/firmware/
674 endef
675
676 define KernelPackage/rt2800-pci/install
677         $(INSTALL_DIR) $(1)/lib/firmware
678         $(INSTALL_DATA) $(PKG_BUILD_DIR)/rt2860.bin $(1)/lib/firmware/
679 endef
680
681 define KernelPackage/rt2800-usb/install
682         $(INSTALL_DIR) $(1)/lib/firmware
683         $(INSTALL_DATA) $(PKG_BUILD_DIR)/rt2870.bin $(1)/lib/firmware/
684 endef
685
686 define KernelPackage/zd1211rw/install
687         $(INSTALL_DIR) $(1)/lib/firmware/zd1211
688         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(ZD1211FW_NAME)/zd1211* $(1)/lib/firmware/zd1211
689 endef
690
691 define KernelPackage/ar9170/install
692         $(INSTALL_DIR) $(1)/lib/firmware
693         $(INSTALL_DATA) $(DL_DIR)/$(AR9170FW) $(1)/lib/firmware/
694 endef
695
696 define Build/b43-common
697         tar xjf "$(DL_DIR)/$(PKG_B43_FWCUTTER_SOURCE)" -C "$(PKG_BUILD_DIR)"
698         $(MAKE) -C "$(PKG_BUILD_DIR)/$(PKG_B43_FWCUTTER_OBJECT)" \
699                 CFLAGS="-I$(STAGING_DIR_HOST)/include -include endian.h"
700         $(INSTALL_BIN) $(PKG_BUILD_DIR)/$(PKG_B43_FWCUTTER_OBJECT)/b43-fwcutter $(STAGING_DIR_HOST)/bin/
701 ifneq ($(CONFIG_B43_OPENFIRMWARE),)
702         $(INSTALL_DIR) $(STAGING_DIR_HOST)/bin/
703         $(MAKE) -C "$(PKG_BUILD_DIR)/$(PKG_B43_FWCUTTER_SUBDIR)/assembler/"
704         $(INSTALL_BIN) $(PKG_BUILD_DIR)/$(PKG_B43_FWCUTTER_SUBDIR)/assembler/b43-asm $(STAGING_DIR_HOST)/bin/
705         $(INSTALL_BIN) $(PKG_BUILD_DIR)/$(PKG_B43_FWCUTTER_SUBDIR)/assembler/b43-asm.bin $(STAGING_DIR_HOST)/bin/
706 endif
707         $(INSTALL_BIN) ./files/host_bin/b43-fwsquash.py $(STAGING_DIR_HOST)/bin/
708 endef
709
710 define KernelPackage/b43/install
711         rm -rf $(1)/lib/firmware/
712         $(call Build/b43-common)
713 ifneq ($(CONFIG_B43_OPENFIRMWARE),)
714         tar xzf "$(DL_DIR)/$(PKG_B43_FWV4_SOURCE)" -C "$(PKG_BUILD_DIR)"
715 else
716         tar xjf "$(DL_DIR)/$(PKG_B43_FWV4_SOURCE)" -C "$(PKG_BUILD_DIR)"
717 endif
718         $(INSTALL_DIR) $(1)/lib/firmware/
719 ifneq ($(CONFIG_B43_OPENFIRMWARE),)
720         $(MAKE) -C "$(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT)/"
721         $(INSTALL_DIR) $(1)/lib/firmware/b43-open/
722         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT)/ucode5.fw $(1)/lib/firmware/b43-open/ucode5.fw
723         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT)/b0g0bsinitvals5.fw $(1)/lib/firmware/b43-open/b0g0bsinitvals5.fw
724         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT)/b0g0initvals5.fw $(1)/lib/firmware/b43-open/b0g0initvals5.fw
725 else
726         b43-fwcutter --unsupported -w $(1)/lib/firmware/ $(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT)
727 endif
728 ifneq ($(CONFIG_B43_FW_SQUASH),)
729         b43-fwsquash.py "$(CONFIG_B43_FW_SQUASH_PHYTYPES)" "$(CONFIG_B43_FW_SQUASH_COREREVS)" "$(1)/lib/firmware/b43"
730 endif
731 endef
732
733 define KernelPackage/b43legacy/install
734         $(call Build/b43-common)
735         $(INSTALL_DIR) $(1)/lib/firmware/
736
737         b43-fwcutter --unsupported -w $(1)/lib/firmware/ $(DL_DIR)/$(PKG_B43_FWV3_SOURCE)
738 ifneq ($(CONFIG_B43LEGACY_FW_SQUASH),)
739         b43-fwsquash.py "G" "$(CONFIG_B43LEGACY_FW_SQUASH_COREREVS)" "$(1)/lib/firmware/b43legacy"
740 endif
741 endef
742
743 $(eval $(call KernelPackage,ath5k))
744 $(eval $(call KernelPackage,libertas))
745 $(eval $(call KernelPackage,mac80211))
746 $(eval $(call KernelPackage,p54-common))
747 $(eval $(call KernelPackage,p54-pci))
748 $(eval $(call KernelPackage,p54-usb))
749 $(eval $(call KernelPackage,rt2x00-lib))
750 $(eval $(call KernelPackage,rt2x00-pci))
751 $(eval $(call KernelPackage,rt2x00-usb))
752 $(eval $(call KernelPackage,rt2800-lib))
753 $(eval $(call KernelPackage,rt2400-pci))
754 $(eval $(call KernelPackage,rt2500-pci))
755 $(eval $(call KernelPackage,rt2500-usb))
756 $(eval $(call KernelPackage,rt61-pci))
757 $(eval $(call KernelPackage,rt73-usb))
758 $(eval $(call KernelPackage,rt2800-pci))
759 $(eval $(call KernelPackage,rt2800-usb))
760 $(eval $(call KernelPackage,rtl8180))
761 $(eval $(call KernelPackage,rtl8187))
762 $(eval $(call KernelPackage,zd1211rw))
763 $(eval $(call KernelPackage,mac80211-hwsim))
764 $(eval $(call KernelPackage,ath9k))
765 $(eval $(call KernelPackage,ath))
766 $(eval $(call KernelPackage,ar9170))
767 $(eval $(call KernelPackage,b43))
768 $(eval $(call KernelPackage,b43legacy))