# List the minimum kernel version required for each
# of the listed Kconfig symbols

# platform_get_device_id()
ATH9K_AHB 2.6.30
BT 2.6.27
BT_RFCOMM_TTY 2.6.33
BT_HIDP 2.6.28
BT_WILINK 2.6.39

MAC80211_HWSIM 2.6.31

ATH6KL 2.6.27

WIL6210 2.6.31
ATH10K 2.6.30

ATL1C 3.5
ATL1E 2.6.26
ALX 2.6.31

LIBERTAS 2.6.27
LIBERTAS_THINFIRM 2.6.27
LIBERTAS_SDIO 2.6.32

ZD1211RW 2.6.29

USB_NET_RNDIS_WLAN 2.6.29

CARL9170 2.6.29

WL1251_SPI 2.6.37

WL1251_SDIO 2.6.37
WLCORE_SDIO 2.6.38

CW1200_WLAN_SDIO 2.6.32
CW1200_WLAN_SPI 2.6.35

BRCMFMAC 2.6.29

# b44 depends on mdio_bus
B44 2.6.28

IGB 3.0

WL_TI 2.6.30
WLCORE 2.6.30
# requires irq_modify_status() which was only exported in 3.0
WL1251 3.0

MWIFIEX 2.6.27

# Regulator
# Because of -EPROBE_DEFER see commit d1c3414c and note that
# we can't backport the core regulator as its part of the core
# vmlinux.
REGULATOR 3.4
# requires some work
REGULATOR_88PM800 3.12
REGULATOR_88PM8607 3.10
REGULATOR_AAT2870 3.6
REGULATOR_ACT8865 3.12
REGULATOR_AD5398 3.5
REGULATOR_ARIZONA 3.12
REGULATOR_AS3711 3.12
REGULATOR_DA903X 3.12
REGULATOR_DA9052 3.9
REGULATOR_DA9055 3.8
REGULATOR_DA9210 3.5
REGULATOR_FAN53555 3.5
REGULATOR_FIXED_VOLTAGE 3.13
REGULATOR_GPIO 3.6
REGULATOR_ISL6271A 3.5
REGULATOR_LP3971 3.6
REGULATOR_LP3972 3.6
REGULATOR_LP872X 3.6
REGULATOR_LP8755 3.6
REGULATOR_MAX1586 3.6
REGULATOR_MAX77686 3.7
REGULATOR_MAX77693 3.11
REGULATOR_MAX8649 3.10
REGULATOR_MAX8660 3.5
REGULATOR_MAX8925 3.5
REGULATOR_MAX8952 3.6
REGULATOR_MAX8973 3.6
REGULATOR_MAX8997 3.8
REGULATOR_MAX8998 3.11
REGULATOR_MC13783 3.6
REGULATOR_MC13892 3.6
REGULATOR_MC13XXX_CORE 3.6
REGULATOR_PALMAS 3.12
REGULATOR_PCAP 3.6
REGULATOR_PCF50633 3.8
REGULATOR_PFUZE100 3.6
REGULATOR_RC5T583 3.6
REGULATOR_S2MPS11 3.13
REGULATOR_S5M8767 3.15
REGULATOR_TPS51632 3.8
REGULATOR_TPS6105X 3.6
REGULATOR_TPS62360 3.6
REGULATOR_TPS62360 3.6
REGULATOR_TPS65023 3.9
REGULATOR_TPS6507X 3.6
REGULATOR_TPS65090 3.9
REGULATOR_TPS65217 3.12
REGULATOR_TPS6524X 3.6
REGULATOR_TPS6586X 3.14
REGULATOR_TPS65910 3.14
REGULATOR_TPS65912 3.12
REGULATOR_TWL4030 3.11
REGULATOR_WM831X 3.12
REGULATOR_WM8350 3.12
REGULATOR_WM8400 3.12
REGULATOR_WM8994 3.8

# Media
MEDIA_SUPPORT 3.2
# There's something wrong with backporting this/dma-buf to 3.2,
# so disable it for now until Luis figures it out
MEDIA_SUPPORT 3.3
# Some media drivers however depend on module deferral mechanism
# Lets not enable those unless that's available.
VIDEO_S3C_CAMIF 3.4
VIDEO_SAMSUNG_S5P_FIMC 3.4
IR_GPIO_CIR 3.4
# Some media drivers depend on the CONFIG_REGULATOR which
# we only support on >= 3.4 give that reguatory itself depends
# on -EPROBE_DEFER.
SOC_CAMERA 3.4
SOC_CAMERA_IMX074 3.4
SOC_CAMERA_MT9M001 3.4
SOC_CAMERA_MT9M111 3.4
SOC_CAMERA_MT9T031 3.4
SOC_CAMERA_MT9T112 3.4
SOC_CAMERA_MT9V022 3.4
SOC_CAMERA_OV2640 3.4
SOC_CAMERA_OV5642 3.4
SOC_CAMERA_OV6650 3.4
SOC_CAMERA_OV772X 3.4
SOC_CAMERA_OV9640 3.4
SOC_CAMERA_OV9740 3.4
SOC_CAMERA_RJ54N1 3.4
SOC_CAMERA_TW9910 3.4
# There are some odd comile errors here I don't want
# to bother with right now
VIDEO_MEM2MEM_DEINTERLACE DISABLE
# 49920bc6 and 1003cab8 and while it seems there is a
# one to one map DMA_FROM_DEVICE to DMA_DEV_TO_MEM
# I can't verify this fully yet.
VIDEO_TIMBERDALE 3.4
# Can't figure this out yet either
DVB_DDBRIDGE DISABLE
# These require I2C_CLIENT_SCCB which can't be backported
# since the core I2C code has to know about it
VIDEO_OV7640 3.6
VIDEO_EM28XX 3.6
# someone has to backport "firewire: introduce fw_driver.probe and .remove methods"
DVB_FIREDTV 3.11
# I give up on these guys for now
RADIO_MAXIRADIO DISABLE
RADIO_SHARK DISABLE
VIDEO_IVTV DISABLE
VIDEO_MEYE DISABLE
DVB_NGENE DISABLE
DVB_USB_PCTV452E DISABLE
USB_GSPCA DISABLE
VIDEO_MXB DISABLE
VIDEO_RENESAS_VSP1 3.6

# struct gpio_chip only got the required members in 2.6.28
BCMA_DRIVER_GPIO 2.6.28
SSB_DRIVER_GPIO 2.6.28

# shash was only added in 2.6.29
BT 2.6.29

# GPIOF_OUT_INIT_HIGH definitions were only moved
# out of #ifdef in kernel 3.0. These are required
# by some users of BCMA_DRIVER_GPIO. We'd better
# just backport the definitions, but right now
# this is easier.
BCMA_DRIVER_GPIO 3.0

BCMA_DRIVER_MIPS 3.3
SSB_DRIVER_MIPS 3.3

# the irq handler in the gpio driver uses 
# irq_set_chip_and_handler_name() which gets exported starting with 
# kernel 3.7. This code is only compiled if BCMA_DRIVER_GPIO and
# BCMA_HOST_SOC are set.
BCMA_HOST_SOC 3.7

# rfkill-regulator uses a kernel header file
# (rfkill-regulator.h) that we don't backport
# right now, so make it depend on 3.0
RFKILL_REGULATOR 3.0
# drivers/regulator/ab3100.c and drivers/mfd/ab3100-core.c
# both depend on include/linux/mfd/ab3100.h and we should
# only backport REGULATOR_AB3100 if the mfd driver is
# backported as well.
REGULATOR_AB3100 3.9

# This is a fun one ... the implementation of this
# uses subdir-ccflags-$(CONFIG_BRCMDBG) which was
# only introduced in kernel 2.6.30.
BRCMDBG 2.6.30

# HID_QUIRK_NO_INIT_REPORTS was only introduced in
# kernel 2.6.33, so depend on that. We could instead
# backport it, but I can't test that and this is a
# lot easier right now.
BT_HIDP 2.6.33

# NFC core needs PF_NFC defined in socket.h which was
# only introduced in kernel 3.1
NFC 3.1

INTEL_IPS 3.2

NFC_MEI_PHY 3.10

IEEE802154_MRF24J40 3.5
IEEE802154 2.6.38
