ifeq ($(wildcard $(KLIB_BUILD)/.config),)
# These will be ignored by compat autoconf
 export CONFIG_PCI=y
 export CONFIG_USB=y
 export CONFIG_PCMCIA=y
 export CONFIG_SSB=m
else
include $(KLIB_BUILD)/.config
endif

ifneq ($(wildcard $(KLIB_BUILD)/Makefile),)

KERNEL_VERSION := $(shell $(MAKE) -C $(KLIB_BUILD) kernelversion | sed -n 's/^\([0-9]\)\..*/\1/p')

ifneq ($(KERNEL_VERSION),2)
else
KERNEL_26SUBLEVEL := $(shell $(MAKE) -C $(KLIB_BUILD) kernelversion | sed -n 's/^2\.6\.\([0-9]\+\).*/\1/p')
endif

ifdef CONFIG_COMPAT_KERNEL_2_6_24
$(error "ERROR: compat-drivers by default supports kernels >= 2.6.24, try enabling only one driver though")
endif #CONFIG_COMPAT_KERNEL_2_6_24

ifeq ($(CONFIG_CFG80211),y)
$(error "ERROR: your kernel has CONFIG_CFG80211=y, you should have it CONFIG_CFG80211=m if you want to use this thing.")
endif


# 2.6.27 has FTRACE_DYNAMIC borked, so we will complain if
# you have it enabled, otherwise you will very likely run into
# a kernel panic.
# XXX: move this to compat_autoconf.h script generation
ifeq ($(KERNEL_VERSION),2)
ifeq ($(shell test $(KERNEL_VERSION) -eq 2 -a $(KERNEL_26SUBLEVEL) -eq 27 && echo yes),yes)
ifeq ($(CONFIG_DYNAMIC_FTRACE),y)
$(error "ERROR: Your 2.6.27 kernel has CONFIG_DYNAMIC_FTRACE, please upgrade your distribution kernel as newer ones should not have this enabled (and if so report a bug) or remove this warning if you know what you are doing")
endif
endif
endif

# This is because with CONFIG_MAC80211 include/linux/skbuff.h will
# enable on 2.6.27 a new attribute:
#
# skb->do_not_encrypt
#
# and on 2.6.28 another new attribute:
#
# skb->requeue
#
# In kernel 2.6.32 both attributes were removed.
#
# XXX: move this to compat_autoconf.h script generation
ifeq ($(KERNEL_VERSION),2)
ifeq ($(shell test $(KERNEL_VERSION) -eq 2 -a $(KERNEL_26SUBLEVEL) -ge 27 -a $(KERNEL_26SUBLEVEL) -le 31 && echo yes),yes)
ifeq ($(CONFIG_MAC80211),)
$(error "ERROR: Your >=2.6.27 and <= 2.6.31 kernel has CONFIG_MAC80211 disabled, you should have it CONFIG_MAC80211=m if you want to use this thing.")
endif
endif
endif

ifneq ($(KERNELRELEASE),) # This prevents a warning

# We will warn when you don't have MQ support or NET_SCHED enabled.
#
# We could consider just quiting if MQ and NET_SCHED is disabled
# as I suspect all users of this package want 802.11e (WME) and
# 802.11n (HT) support.
ifeq ($(CONFIG_NET_SCHED),)
 QOS_REQS_MISSING+=CONFIG_NET_SCHED
endif

ifneq ($(QOS_REQS_MISSING),) # Complain about our missing dependencies
$(warning "WARNING: You are running a kernel >= 2.6.23, you should enable in it $(QOS_REQS_MISSING) for 802.11[ne] support")
endif

endif # build check
endif # kernel Makefile check

# These both are needed by 802.11 and bluetooth so enable
 export CONFIG_COMPAT_RFKILL=y

ifeq ($(CONFIG_MAC80211),y)
$(error "ERROR: you have MAC80211 compiled into the kernel, CONFIG_MAC80211=y, as such you cannot replace its mac80211 driver. You need this set to CONFIG_MAC80211=m. If you are using Fedora upgrade your kernel as later version should this set as modular. For further information on Fedora see https://bugzilla.redhat.com/show_bug.cgi?id=470143. If you are using your own kernel recompile it and make mac80211 modular")
else
 export CONFIG_COMPAT_WIRELESS=y
 export CONFIG_COMPAT_WIRELESS_MODULES=m
 export CONFIG_COMPAT_VAR_MODULES=m
# We could technically separate these but not yet, we only have b44
# Note that we don't intend on backporting network drivers that
# use Multiqueue as that was a pain to backport to kernels older than
# 2.6.27. But -- we could just disable those drivers from kernels
# older than 2.6.27
 export CONFIG_COMPAT_NETWORK_MODULES=m
 export CONFIG_COMPAT_NET_USB_MODULES=m
endif

# The Bluetooth compatibility only builds on kernels >= 2.6.27 for now
ifndef CONFIG_COMPAT_KERNEL_2_6_27
ifeq ($(CONFIG_BT),y)
# we'll ignore compiling bluetooth
else
 export CONFIG_COMPAT_BLUETOOTH=y
 export CONFIG_COMPAT_BLUETOOTH_MODULES=m
 export CONFIG_HID_GENERIC=m
endif
endif #CONFIG_COMPAT_KERNEL_2_6_27

#
# CONFIG_COMPAT_FIRMWARE_CLASS definition has no leading whitespace,
# because it gets passed-on through compat_autoconf.h.
#
ifdef CONFIG_COMPAT_KERNEL_2_6_33
ifndef CONFIG_COMPAT_RHEL_6_1
ifdef CONFIG_FW_LOADER
export CONFIG_COMPAT_FIRMWARE_CLASS=m
endif #CONFIG_FW_LOADER
endif #CONFIG_COMPAT_RHEL_6_1
endif #CONFIG_COMPAT_KERNEL_2_6_33

ifdef CONFIG_COMPAT_KERNEL_2_6_36
ifndef CONFIG_COMPAT_RHEL_6_1
 export CONFIG_COMPAT_KFIFO=y
endif #CONFIG_COMPAT_RHEL_6_1
endif #CONFIG_COMPAT_KERNEL_2_6_36

#
# CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN definitions have no leading
# whitespace, because they get passed-on through compat_autoconf.h.
#
ifndef CONFIG_COMPAT_KERNEL_2_6_33
export CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN=y
endif #CONFIG_COMPAT_KERNEL_2_6_33
ifdef CONFIG_COMPAT_RHEL_6_0
export CONFIG_COMPAT_BT_SOCK_CREATE_NEEDS_KERN=y
endif #CONFIG_COMPAT_RHEL_6_0

#
# CONFIG_COMPAT_FIRMWARE_DATA_RW_NEEDS_FILP definition has no leading
# whitespace, because it gets passed-on through compat_autoconf.h.
#
ifdef CONFIG_COMPAT_RHEL_6_0
export CONFIG_COMPAT_FIRMWARE_DATA_RW_NEEDS_FILP=y
endif #CONFIG_COMPAT_RHEL_6_0

# Wireless subsystem stuff
export CONFIG_MAC80211=m

ifndef CONFIG_COMPAT_KERNEL_2_6_33
export CONFIG_COMPAT_MAC80211_DRIVER_API_TRACER=y
endif #CONFIG_COMPAT_KERNEL_2_6_33

# export CONFIG_MAC80211_DEBUGFS=y
# export CONFIG_MAC80211_NOINLINE=y
# export CONFIG_MAC80211_VERBOSE_DEBUG=y
# export CONFIG_MAC80211_MESSAGE_TRACING=y
# export CONFIG_MAC80211_DEBUG_COUNTERS=y

# export CONFIG_MAC80211_IBSS_DEBUG=y
# export CONFIG_MAC80211_PS_DEBUG=y
# export CONFIG_MAC80211_HT_DEBUG=y
# export CONFIG_MAC80211_MPL_DEBUG=y
# export CONFIG_MAC80211_MPATH_DEBUG=y
# export CONFIG_MAC80211_MHWMP_DEBUG=y
# export CONFIG_MAC80211_MESH_SYNC_DEBUG=y
# export CONFIG_MAC80211_TDLS_DEBUG=y
# export CONFIG_MAC80211_STA_DEBUG=y
# export CONFIG_MAC80211_MLME_DEBUG=y

# choose between pid and minstrel as default rate control algorithm
export CONFIG_MAC80211_RC_DEFAULT=minstrel_ht
export CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
# export CONFIG_MAC80211_RC_DEFAULT_PID=y
# This is the one used by our compat-drivers net/mac80211/rate.c
# in case you have and old kernel which is overriding this to pid.
export CONFIG_COMPAT_MAC80211_RC_DEFAULT=minstrel_ht
export CONFIG_MAC80211_RC_PID=y
export CONFIG_MAC80211_RC_MINSTREL=y
export CONFIG_MAC80211_RC_MINSTREL_HT=y
ifdef CONFIG_LEDS_TRIGGERS
export CONFIG_MAC80211_LEDS=y
endif #CONFIG_LEDS_TRIGGERS

# enable mesh networking too
export CONFIG_MAC80211_MESH=y

export CONFIG_CFG80211=m
export CONFIG_CFG80211_DEFAULT_PS=y
# export CONFIG_CFG80211_DEBUGFS=y
# export CONFIG_NL80211_TESTMODE=y
# export CONFIG_CFG80211_DEVELOPER_WARNINGS=y
# export CONFIG_CFG80211_REG_DEBUG=y
# export CONFIG_CFG80211_INTERNAL_REGDB=y
# See below for wext stuff

ifndef CONFIG_COMPAT_KERNEL_2_6_33
export CONFIG_COMPAT_CFG80211_DRIVER_API_TRACER=y
endif #CONFIG_COMPAT_KERNEL_2_6_33

export CONFIG_LIB80211=m
export CONFIG_LIB80211_CRYPT_WEP=m
export CONFIG_LIB80211_CRYPT_CCMP=m
export CONFIG_LIB80211_CRYPT_TKIP=m
# export CONFIG_LIB80211_DEBUG=y

export CONFIG_BT=m
export CONFIG_BT_RFCOMM=m
ifndef CONFIG_COMPAT_KERNEL_2_6_33
export CONFIG_COMPAT_BT_RFCOMM_TTY=y
endif #CONFIG_COMPAT_KERNEL_2_6_33
export CONFIG_BT_BNEP=m
export CONFIG_BT_BNEP_MC_FILTER=y
export CONFIG_BT_BNEP_PROTO_FILTER=y
# CONFIG_BT_CMTP depends on ISDN_CAPI
ifdef CONFIG_ISDN_CAPI
export CONFIG_BT_CMTP=m
endif #CONFIG_ISDN_CAPI
ifndef CONFIG_COMPAT_KERNEL_2_6_28
export CONFIG_COMPAT_BT_HIDP=m
endif #CONFIG_COMPAT_KERNEL_2_6_28

export CONFIG_BT_HCIUART=m
export CONFIG_BT_HCIUART_H4=y
export CONFIG_BT_HCIUART_BCSP=y
export CONFIG_BT_HCIUART_ATH3K=y
export CONFIG_BT_HCIUART_LL=y
export CONFIG_BT_HCIUART_3WIRE=y

export CONFIG_BT_HCIVHCI=m
export CONFIG_BT_MRVL=m
ifndef CONFIG_COMPAT_KERNEL_2_6_39
ifdef CONFIG_TI_ST
export CONFIG_BT_WILINK=m
endif #CONFIG_TI_ST
endif #CONFIG_COMPAT_KERNEL_2_6_39

ifdef CONFIG_PCMCIA
export CONFIG_BT_HCIDTL1=m
export CONFIG_BT_HCIBT3C=m
export CONFIG_BT_HCIBLUECARD=m
export CONFIG_BT_HCIBTUART=m
endif #CONFIG_PCMCIA


# We need CONFIG_WIRELESS_EXT for CONFIG_CFG80211_WEXT for every kernel 
# version. The new way CONFIG_CFG80211_WEXT is called from the kernel 
# does not work with compat-drivers because it calls some callback
# function on struct wiphy. This struct is shipped with compat-drivers
# and changes from kernel version to version. We are using the 
# wireless_handlers attribute which will be activated by 
# export CONFIG_WIRELESS_EXT. 
ifdef CONFIG_WIRELESS_EXT
export CONFIG_CFG80211_WEXT=y
else #CONFIG_CFG80211_WEXT
$(warning "WARNING: CONFIG_CFG80211_WEXT will be deactivated or not working because kernel was compiled with CONFIG_WIRELESS_EXT=n. Tools using wext interface like iwconfig will not work. To activate it build your kernel e.g. with CONFIG_LIBIPW=m.")
endif #CONFIG_WIRELESS_EXT

ifdef CONFIG_STAGING
export CONFIG_COMPAT_STAGING=m
endif #CONFIG_STAGING

ifndef CONFIG_COMPAT_KERNEL_2_6_31
# mac80211 test driver
export CONFIG_COMPAT_MAC80211_HWSIM=m
endif #CONFIG_COMPAT_KERNEL_2_6_31

export CONFIG_ATH5K=m
# export CONFIG_ATH5K_DEBUG=y
# export CONFIG_ATH5K_TRACER=y
# export CONFIG_ATH5K_AHB=y

export CONFIG_ATH9K=m
export CONFIG_ATH9K_HW=m
export CONFIG_ATH9K_COMMON=m
# export CONFIG_ATH9K_DEBUGFS=y
# export CONFIG_ATH9K_AHB=y

# Disable this to get minstrel as default, we leave the ath9k
# rate control algorithm as the default for now as that is also
# default upstream on the kernel. We will move this to minstrel
# as default once we get minstrel properly tested and blessed by
# our systems engineering team. CCK rates also need to be used
# for long range considerations.
export CONFIG_COMPAT_ATH9K_RATE_CONTROL=y

export CONFIG_ATH9K_BTCOEX_SUPPORT=y

ifndef CONFIG_COMPAT_KERNEL_2_6_27
export CONFIG_ATH6KL=m
# export CONFIG_ATH6KL_DEBUG=y
# export CONFIG_ATH6KL_TRACING=y
endif #CONFIG_COMPAT_KERNEL_2_6_27

# PCI Drivers
ifdef CONFIG_PCI

export CONFIG_ATH5K_PCI=y
export CONFIG_ATH9K_PCI=y

ifndef CONFIG_COMPAT_KERNEL_2_6_31
export CONFIG_WIL6210=m
export CONFIG_WIL6210_ISR_COR=y
endif #CONFIG_COMPAT_KERNEL_2_6_31

export CONFIG_IWLWIFI=m
export CONFIG_IWLDVM=m
export CONFIG_IWLMVM=m
export CONFIG_IWLWIFI_OPMODE_MODULAR=y
export CONFIG_IWLWIFI_P2P=y
# export CONFIG_IWLWIFI_DEBUG=y
# export CONFIG_IWLWIFI_DEBUGFS=y
# export CONFIG_IWLWIFI_DEVICE_TRACING=y
# export CONFIG_IWLWIFI_DEBUG_EXPERIMENTAL_UCODE=y

export CONFIG_IWLEGACY=m
export CONFIG_COMPAT_IWL4965=m
export CONFIG_IWL3945=m
# export CONFIG_IWLEGACY_DEBUG=y
# export CONFIG_IWLEGACY_DEBUGFS=y


export CONFIG_B43=m
export CONFIG_B43_HWRNG=y
export CONFIG_B43_PCI_AUTOSELECT=y
ifdef CONFIG_PCMCIA
export CONFIG_B43_PCMCIA=y
endif #CONFIG_PCMCIA
ifdef CONFIG_MAC80211_LEDS
export CONFIG_B43_LEDS=y
endif #CONFIG_MAC80211_LEDS
export CONFIG_B43_PHY_LP=y
export CONFIG_B43_PHY_N=y
export CONFIG_B43_PHY_HT=y
# export CONFIG_B43_PHY_LCN=y
# export CONFIG_B43_DEBUG=y

export CONFIG_B43LEGACY=m
export CONFIG_B43LEGACY_HWRNG=y
export CONFIG_B43LEGACY_PCI_AUTOSELECT=y
ifdef CONFIG_MAC80211_LEDS
export CONFIG_B43LEGACY_LEDS=y
endif #CONFIG_MAC80211_LEDS
# export CONFIG_B43LEGACY_DEBUG=y
export CONFIG_B43LEGACY_DMA=y
export CONFIG_B43LEGACY_PIO=y

ifdef CONFIG_WIRELESS_EXT
# The Intel ipws
export CONFIG_LIBIPW=m
# export CONFIG_LIBIPW_DEBUG=y

export CONFIG_IPW2100=m
export CONFIG_IPW2100_MONITOR=y
# export CONFIG_IPW2100_DEBUG=y
export CONFIG_IPW2200=m
export CONFIG_IPW2200_MONITOR=y
export CONFIG_IPW2200_RADIOTAP=y
export CONFIG_IPW2200_PROMISCUOUS=y
export CONFIG_IPW2200_QOS=y
# export CONFIG_IPW2200_DEBUG=y
# The above enables use a second interface prefixed 'rtap'.
#           Example usage:
#
# % modprobe ipw2200 rtap_iface=1
# % ifconfig rtap0 up
# % tethereal -i rtap0
#
# If you do not specify 'rtap_iface=1' as a module parameter then
# the rtap interface will not be created and you will need to turn
# it on via sysfs:
#
# % echo 1 > /sys/bus/pci/drivers/ipw2200/*/rtap_iface
endif #CONFIG_WIRELESS_EXT

ifdef CONFIG_SSB
# Sonics Silicon Backplane
export CONFIG_SSB_SPROM=y

export CONFIG_SSB_BLOCKIO=y
export CONFIG_SSB_PCIHOST=y
export CONFIG_SSB_B43_PCI_BRIDGE=y
ifdef CONFIG_PCMCIA
export CONFIG_SSB_PCMCIAHOST=y
endif #CONFIG_PCMCIA
# export CONFIG_SSB_DEBUG=y
export CONFIG_SSB_DRIVER_PCICORE=y
export CONFIG_B43_SSB=y
endif #CONFIG_SSB

export CONFIG_BCMA=m
export CONFIG_BCMA_BLOCKIO=y
export CONFIG_BCMA_HOST_PCI=y
# export CONFIG_BCMA_DEBUG=y
export CONFIG_B43_BCMA=y
export CONFIG_B43_BCMA_EXTRA=y

export CONFIG_P54_PCI=m

export CONFIG_B44=m
export CONFIG_B44_PCI=y

export CONFIG_RTL8180=m

export CONFIG_ADM8211=m

export CONFIG_RT2X00_LIB_PCI=m
export CONFIG_RT2400PCI=m
export CONFIG_RT2500PCI=m
ifdef CONFIG_CRC_CCITT
export CONFIG_RT2800PCI=m
export CONFIG_RT2800PCI_RT3290=y
export CONFIG_RT2800PCI_RT33XX=y
export CONFIG_RT2800PCI_RT35XX=y
export CONFIG_RT2800PCI_RT53XX=y
endif #CONFIG_CRC_CCITT
NEED_RT2X00=y

# Two rt2x00 drivers require firmware: rt61pci and rt73usb. They depend on
# CRC to check the firmware. We check here first for the PCI
# driver as we're in the PCI section.
ifdef CONFIG_CRC_ITU_T
export CONFIG_RT61PCI=m
endif #CONFIG_CRC_ITU_T

export CONFIG_MWL8K=m

# Ethernet drivers go here
export CONFIG_ATL1=m
export CONFIG_ATL2=m
export CONFIG_ATL1E=m
ifndef CONFIG_COMPAT_KERNEL_2_6_28
export CONFIG_ATL1C=m
export CONFIG_ALX=m
# If MDIO is needed for another driver feel free to
# make it not depend on 2.6.28
export CONFIG_COMPAT_MDIO=m
endif #CONFIG_COMPAT_KERNEL_2_6_28

ifdef CONFIG_WIRELESS_EXT
export CONFIG_HERMES=m
export CONFIG_HERMES_CACHE_FW_ON_INIT=y
ifdef CONFIG_PPC_PMAC
export CONFIG_APPLE_AIRPORT=m
endif #CONFIG_PPC_PMAC
export CONFIG_PLX_HERMES=m
export CONFIG_TMD_HERMES=m
export CONFIG_NORTEL_HERMES=m
export CONFIG_PCI_HERMES=m
ifdef CONFIG_PCMCIA
export CONFIG_PCMCIA_HERMES=m
export CONFIG_PCMCIA_SPECTRUM=m
endif #CONFIG_PCMCIA
endif #CONFIG_WIRELESS_EXT

export CONFIG_RTL8192CE=m
export CONFIG_RTL8192SE=m
export CONFIG_RTL8192DE=m
export CONFIG_RTL8723AE=m

export CONFIG_BRCMSMAC=m

export CONFIG_MWIFIEX_PCIE=m

endif #CONFIG_PCI
## end of PCI

ifdef CONFIG_PCMCIA

ifdef CONFIG_COMPAT_KERNEL_2_6_27
export CONFIG_LIBERTAS=n
export CONFIG_LIBERTAS_CS=n
else #CONFIG_COMPAT_KERNEL_2_6_27
export CONFIG_LIBERTAS_CS=m
NEED_LIBERTAS=y
endif #CONFIG_COMPAT_KERNEL_2_6_27

endif #CONFIG_PCMCIA
## end of PCMCIA

# This is required for some cards
export CONFIG_EEPROM_93CX6=m

# USB Drivers
ifdef CONFIG_USB
ifndef CONFIG_COMPAT_KERNEL_2_6_29
export CONFIG_COMPAT_ZD1211RW=m
# export CONFIG_ZD1211RW_DEBUG=y
endif #CONFIG_COMPAT_KERNEL_2_6_29

# Sorry, rndis_wlan uses cancel_work_sync which is new and can't be done in compat...

# Wireless RNDIS USB support (RTL8185 802.11g) A-Link WL54PC
# All of these devices are based on Broadcom 4320 chip which
# is only wireless RNDIS chip known to date.
# Note: this depends on CONFIG_USB_NET_RNDIS_HOST and CONFIG_USB_NET_CDCETHER
# it also requires new RNDIS_HOST and CDC_ETHER modules which we add
ifdef CONFIG_COMPAT_KERNEL_2_6_29
export CONFIG_USB_COMPAT_USBNET=n
export CONFIG_USB_NET_COMPAT_RNDIS_HOST=n
export CONFIG_USB_NET_COMPAT_RNDIS_WLAN=n
export CONFIG_USB_NET_COMPAT_CDCETHER=n
else #CONFIG_COMPAT_KERNEL_2_6_29
export CONFIG_USB_COMPAT_USBNET=m
ifdef CONFIG_USB_NET_CDCETHER
export CONFIG_USB_NET_COMPAT_RNDIS_HOST=m
export CONFIG_USB_NET_COMPAT_RNDIS_WLAN=m
endif #CONFIG_USB_NET_CDCETHER
ifdef CONFIG_USB_NET_CDCETHER_MODULE
export CONFIG_USB_NET_COMPAT_RNDIS_HOST=m
export CONFIG_USB_NET_COMPAT_RNDIS_WLAN=m
endif #CONFIG_USB_NET_CDCETHER
export CONFIG_USB_NET_COMPAT_CDCETHER=m
endif #CONFIG_COMPAT_KERNEL_2_6_29


export CONFIG_P54_USB=m
export CONFIG_RTL8187=m
ifdef CONFIG_MAC80211_LEDS
export CONFIG_RTL8187_LEDS=y
endif #CONFIG_MAC80211_LEDS

export CONFIG_AT76C50X_USB=m

ifndef CONFIG_COMPAT_KERNEL_2_6_29
export CONFIG_CARL9170=m
ifdef CONFIG_MAC80211_LEDS
export CONFIG_CARL9170_LEDS=y
endif #CONFIG_MAC80211_LEDS
# export CONFIG_CARL9170_DEBUGFS=y
export CONFIG_CARL9170_WPC=y
endif #CONFIG_COMPAT_KERNEL_2_6_29

# This activates a threading fix for usb urb.
# this is mainline commit: b3e670443b7fb8a2d29831b62b44a039c283e351
# This fix will be included in some stable releases.
export CONFIG_COMPAT_USB_URB_THREAD_FIX=y

export CONFIG_ATH9K_HTC=m
# export CONFIG_ATH9K_HTC_DEBUGFS=y

export CONFIG_ATH6KL_USB=m

export CONFIG_AR5523=m

export CONFIG_BRCMFMAC_USB=y

# RT2500USB does not require firmware
export CONFIG_RT2500USB=m
ifdef CONFIG_CRC_CCITT
export CONFIG_RT2800USB=m
export CONFIG_RT2800USB_RT33XX=y
export CONFIG_RT2800USB_RT35XX=y
export CONFIG_RT2800USB_RT53XX=y
export CONFIG_RT2800USB_RT55XX=y
export CONFIG_RT2800USB_UNKNOWN=y
endif #CONFIG_CRC_CCITT
export CONFIG_RT2X00_LIB_USB=m
NEED_RT2X00=y
# RT73USB requires firmware
ifdef CONFIG_CRC_ITU_T
export CONFIG_RT73USB=m
endif #CONFIG_CRC_ITU_T

ifdef CONFIG_COMPAT_KERNEL_2_6_27
export CONFIG_LIBERTAS_THINFIRM_USB=n
export CONFIG_LIBERTAS_USB=n
NEED_LIBERTAS=n
else #CONFIG_COMPAT_KERNEL_2_6_27
export CONFIG_LIBERTAS_THINFIRM_USB=m
export CONFIG_LIBERTAS_USB=m
NEED_LIBERTAS=y
endif #CONFIG_COMPAT_KERNEL_2_6_27

export CONFIG_ORINOCO_USB=m

export CONFIG_BT_HCIBTUSB=m
export CONFIG_BT_HCIBCM203X=m
export CONFIG_BT_HCIBPA10X=m
export CONFIG_BT_HCIBFUSB=m
export CONFIG_BT_ATH3K=m

export CONFIG_RTL8192CU=m

export CONFIG_MWIFIEX_USB=m

endif #CONFIG_USB end of USB driver list

ifdef CONFIG_SPI_MASTER
ifndef CONFIG_COMPAT_KERNEL_2_6_25

ifdef CONFIG_CRC7
ifndef CONFIG_COMPAT_KERNEL_2_6_37
export CONFIG_COMPAT_WL1251_SPI=m
endif #CONFIG_COMPAT_KERNEL_2_6_37
export CONFIG_WLCORE_SPI=m
endif #CONFIG_CRC7
export CONFIG_P54_SPI=m

ifdef CONFIG_COMPAT_KERNEL_2_6_27
export CONFIG_LIBERTAS_SPI=n
NEED_LIBERTAS=n
else #CONFIG_COMPAT_KERNEL_2_6_27
export CONFIG_LIBERTAS_SPI=m
NEED_LIBERTAS=y
endif #CONFIG_COMPAT_KERNEL_2_6_27

endif #CONFIG_COMPAT_KERNEL_2_6_25
endif #CONFIG_SPI_MASTER end of SPI driver list

ifdef CONFIG_MMC

export CONFIG_SSB_SDIOHOST=y
export CONFIG_B43_SDIO=y

ifdef CONFIG_CRC7
ifndef CONFIG_COMPAT_KERNEL_2_6_37
export CONFIG_COMPAT_WL1251_SDIO=m
endif #CONFIG_COMPAT_KERNEL_2_6_37
ifndef CONFIG_COMPAT_KERNEL_2_6_38
export CONFIG_WLCORE_SDIO=m
endif #CONFIG_COMPAT_KERNEL_2_6_38
endif #CONFIG_CRC7

export CONFIG_MWIFIEX_SDIO=m

ifndef CONFIG_COMPAT_KERNEL_2_6_32
export CONFIG_COMPAT_LIBERTAS_SDIO=m
NEED_LIBERTAS=y
endif #CONFIG_COMPAT_KERNEL_2_6_32

export CONFIG_BT_HCIBTSDIO=m
export CONFIG_BT_MRVL_SDIO=m

export CONFIG_ATH6KL_SDIO=m

export CONFIG_BRCMFMAC_SDIO=y

endif #CONFIG_MMC

export CONFIG_RTLWIFI=m
# export CONFIG_RTLWIFI_DEBUG=y
export CONFIG_RTL8192C_COMMON=m

# Common rt2x00 requirements
ifeq ($(NEED_RT2X00),y)
export CONFIG_RT2X00=y
export CONFIG_RT2X00_LIB=m
export CONFIG_RT2800_LIB=m
export CONFIG_RT2X00_LIB_FIRMWARE=y
export CONFIG_RT2X00_LIB_CRYPTO=y
# export CONFIG_RT2X00_LIB_SOC=y
ifdef CONFIG_COMPAT_KERNEL_2_6_25
export CONFIG_RT2X00_LIB_LEDS=n
else #CONFIG_COMPAT_KERNEL_2_6_25
ifdef CONFIG_LEDS_CLASS
export CONFIG_RT2X00_LIB_LEDS=y
endif #CONFIG_LEDS_CLASS
endif #CONFIG_COMPAT_KERNEL_2_6_25
# export CONFIG_RT2X00_DEBUG=y
# export CONFIG_RT2X00_LIB_DEBUGFS=y
endif

# p54
export CONFIG_P54_COMMON=m
ifdef CONFIG_MAC80211_LEDS
export CONFIG_P54_LEDS=y
endif #CONFIG_MAC80211_LEDS

# Atheros
export CONFIG_ATH_COMMON=m
export CONFIG_ATH_CARDS=m
# export CONFIG_ATH_DEBUG=y

export CONFIG_BRCMUTIL=m
# export CONFIG_BRCMDBG=y

ifndef CONFIG_COMPAT_KERNEL_2_6_29
export CONFIG_BRCMFMAC=m
endif #CONFIG_COMPAT_KERNEL_2_6_29

ifndef CONFIG_COMPAT_KERNEL_2_6_30

export CONFIG_WL_TI=y
# export CONFIG_WILINK_PLATFORM_DATA=y
export CONFIG_WLCORE=m

ifdef CONFIG_CRC7
export CONFIG_WL1251=m
export CONFIG_WL12XX=m
export CONFIG_WL18XX=m
endif #CONFIG_CRC7

endif #CONFIG_COMPAT_KERNEL_2_6_30

ifndef CONFIG_COMPAT_KERNEL_2_6_27
export CONFIG_COMPAT_MWIFIEX=m
endif #CONFIG_COMPAT_KERNEL_2_6_27

ifndef CONFIG_CORDIC
export CONFIG_COMPAT_CORDIC=y
endif #CONFIG_CORDIC

ifndef CONFIG_CRC8
export CONFIG_COMPAT_CRC8=y
endif #CONFIG_CRC8

ifdef CONFIG_COMPAT_KERNEL_2_6_27
export CONFIG_LIBERTAS=n
else #CONFIG_COMPAT_KERNEL_2_6_27
ifeq ($(NEED_LIBERTAS),y)
export CONFIG_LIBERTAS_THINFIRM=m
export CONFIG_LIBERTAS=m
export CONFIG_LIBERTAS_MESH=y
# export CONFIG_LIBERTAS_DEBUG=y
endif
endif #CONFIG_COMPAT_KERNEL_2_6_27

# We need the backported rfkill module on kernel < 2.6.31.
# In more recent kernel versions use the in kernel rfkill module.
ifdef CONFIG_COMPAT_KERNEL_2_6_31
export CONFIG_RFKILL_BACKPORT=m
ifdef CONFIG_LEDS_TRIGGERS
export CONFIG_RFKILL_BACKPORT_LEDS=y
endif #CONFIG_LEDS_TRIGGERS
export CONFIG_RFKILL_BACKPORT_INPUT=y
endif #CONFIG_COMPAT_KERNEL_2_6_31

# compilation has been tested down to 3.0 but run time
# tests have only started on 3.2.
ifndef CONFIG_COMPAT_KERNEL_3_2
# Basic DRM support
export CONFIG_COMPAT_VIDEO_MODULES=y
export CONFIG_COMPAT_DRM=m
export CONFIG_COMPAT_DRM_TTM=m
export CONFIG_COMPAT_DRM_KMS_HELPER=m
export CONFIG_COMPAT_DRM_LOAD_EDID_FIRMWARE=y
# Intel i915
export CONFIG_COMPAT_DRM_I915=m
# ATI/AMD Radeon
export CONFIG_COMPAT_DRM_RADEON=m
export CONFIG_COMPAT_DRM_RADEON_KMS=y
ifdef CONFIG_MEDIA_CONTROLLER
export CONFIG_COMPAT_USB_VIDEO_CLASS=m
endif #CONFIG_MEDIA_CONTROLLER
export CONFIG_USB_VIDEO_CLASS=y
endif #CONFIG_COMPAT_KERNEL_3_2

# Enable nouveau on >= 3.3
ifndef CONFIG_COMPAT_KERNEL_3_3
export CONFIG_COMPAT_DRM_NOUVEAU=m
export CONFIG_COMPAT_DRM_NOUVEAU_BACKLIGHT=y
export CONFIG_COMPAT_NOUVEAU_DEBUG=5
export CONFIG_COMPAT_NOUVEAU_DEBUG_DEFAULT=3
endif #CONFIG_COMPAT_KERNEL_3_3

ifndef CONFIG_COMPAT_KERNEL_3_2
export CONFIG_COMPAT_MEDIA_MODULES=y
export CONFIG_COMPAT_VIDEO_V4L2=m
export CONFIG_COMPAT_VIDEOBUF2_CORE=m
export CONFIG_COMPAT_VIDEOBUF2_VMALLOC=m
export CONFIG_COMPAT_VIDEOBUF2_MEMOPS=m
endif #CONFIG_COMPAT_KERNEL_3_2
