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