]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/commitdiff
kernel: updated omap and rpi kernel to 2.6.42.19 (aka 3.2.19).
authorArne Fitzenreiter <arne_f@ipfire.org>
Sun, 10 Jun 2012 09:13:59 +0000 (11:13 +0200)
committerArne Fitzenreiter <arne_f@ipfire.org>
Sun, 10 Jun 2012 09:13:59 +0000 (11:13 +0200)
19 files changed:
config/kernel/kernel.config.armv5tel-ipfire-omap
config/kernel/kernel.config.armv5tel-ipfire-rpi
config/rootfiles/common/armv5tel/linux-omap
config/rootfiles/common/armv5tel/linux-rpi
lfs/linux-rpi [deleted file]
lfs/linux3
make.sh
src/patches/linux-2.6.40-pandaboard-dvi720p.patch [deleted file]
src/patches/linux-2.6.40-pandaboard-i2c-fix.patch [deleted file]
src/patches/linux-2.6.40-pandaboard-memcpy.patch [deleted file]
src/patches/linux-2.6.40-pandaboard-rtc-twl-irq.patch [deleted file]
src/patches/linux-2.6.40-pandaboard-wlan-fix.patch [deleted file]
src/patches/linux-2.x-smsc95xx-add_mac_addr_param.patch [changed mode: 0755->0644]
src/patches/linux-3.2-0001-panda-wlan-fix.patch [new file with mode: 0644]
src/patches/linux-3.2-0002-panda-i2c.patch [new file with mode: 0644]
src/patches/linux-3.2-bcm2835-alsamixer.patch [new file with mode: 0644]
src/patches/linux-3.2-bcm2835-limit_volume.patch [new file with mode: 0644]
src/patches/linux-3.2-imq.patch [new file with mode: 0644]
src/patches/linux-3.2-panda-reboot.patch [moved from src/patches/linux-2.6.40-pandaboard-reboot.patch with 100% similarity]

index 5680114751ad251a1bec7289d2787ae9caad2fbb..eb8c18a1242fdd216fb953da77fefef44ab4d2d3 100644 (file)
@@ -1,6 +1,6 @@
 #
-# Automatically generated make config: don't edit
-# Linux/arm 2.6.40.26-ipfire-omap Kernel Configuration
+# Automatically generated file; DO NOT EDIT.
+# Linux/arm 2.6.42.19-ipfire-omap Kernel Configuration
 #
 CONFIG_ARM=y
 CONFIG_HAVE_PWM=y
@@ -25,6 +25,7 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y
 CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_VECTORS_BASE=0xffff0000
 CONFIG_ARM_PATCH_PHYS_VIRT=y
+CONFIG_GENERIC_BUG=y
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 CONFIG_HAVE_IRQ_WORK=y
 
@@ -62,6 +63,7 @@ CONFIG_GENERIC_HARDIRQS=y
 CONFIG_HAVE_SPARSE_IRQ=y
 CONFIG_GENERIC_IRQ_SHOW=y
 CONFIG_GENERIC_IRQ_CHIP=y
+CONFIG_IRQ_DOMAIN=y
 CONFIG_SPARSE_IRQ=y
 
 #
@@ -94,7 +96,7 @@ CONFIG_RD_BZIP2=y
 CONFIG_RD_LZMA=y
 CONFIG_RD_XZ=y
 CONFIG_RD_LZO=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
 CONFIG_EXPERT=y
@@ -156,6 +158,7 @@ CONFIG_STOP_MACHINE=y
 CONFIG_BLOCK=y
 CONFIG_LBDAF=y
 CONFIG_BLK_DEV_BSG=y
+CONFIG_BLK_DEV_BSGLIB=y
 # CONFIG_BLK_DEV_INTEGRITY is not set
 
 #
@@ -210,9 +213,11 @@ CONFIG_MMU=y
 # CONFIG_ARCH_VEXPRESS is not set
 # CONFIG_ARCH_AT91 is not set
 # CONFIG_ARCH_BCMRING is not set
+# CONFIG_ARCH_HIGHBANK is not set
 # CONFIG_ARCH_CLPS711X is not set
 # CONFIG_ARCH_CNS3XXX is not set
 # CONFIG_ARCH_GEMINI is not set
+# CONFIG_ARCH_PRIMA2 is not set
 # CONFIG_ARCH_EBSA110 is not set
 # CONFIG_ARCH_EP93XX is not set
 # CONFIG_ARCH_FOOTBRIDGE is not set
@@ -228,15 +233,14 @@ CONFIG_MMU=y
 # CONFIG_ARCH_IXP4XX is not set
 # CONFIG_ARCH_DOVE is not set
 # CONFIG_ARCH_KIRKWOOD is not set
-# CONFIG_ARCH_LOKI is not set
 # CONFIG_ARCH_LPC32XX is not set
 # CONFIG_ARCH_MV78XX0 is not set
 # CONFIG_ARCH_ORION5X is not set
 # CONFIG_ARCH_MMP is not set
 # CONFIG_ARCH_KS8695 is not set
 # CONFIG_ARCH_W90X900 is not set
-# CONFIG_ARCH_NUC93X is not set
 # CONFIG_ARCH_TEGRA is not set
+# CONFIG_ARCH_PICOXCELL is not set
 # CONFIG_ARCH_PNX4008 is not set
 # CONFIG_ARCH_PXA is not set
 # CONFIG_ARCH_MSM is not set
@@ -248,7 +252,7 @@ CONFIG_MMU=y
 # CONFIG_ARCH_S5P64X0 is not set
 # CONFIG_ARCH_S5PC100 is not set
 # CONFIG_ARCH_S5PV210 is not set
-# CONFIG_ARCH_EXYNOS4 is not set
+# CONFIG_ARCH_EXYNOS is not set
 # CONFIG_ARCH_SHARK is not set
 # CONFIG_ARCH_TCC_926 is not set
 # CONFIG_ARCH_U300 is not set
@@ -258,6 +262,7 @@ CONFIG_MMU=y
 CONFIG_ARCH_OMAP=y
 # CONFIG_PLAT_SPEAR is not set
 # CONFIG_ARCH_VT8500 is not set
+# CONFIG_ARCH_ZYNQ is not set
 # CONFIG_GPIO_PCA953X is not set
 # CONFIG_KEYBOARD_GPIO_POLLED is not set
 
@@ -284,7 +289,6 @@ CONFIG_OMAP_32K_TIMER=y
 # CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set
 CONFIG_OMAP_32K_TIMER_HZ=128
 CONFIG_OMAP_DM_TIMER=y
-# CONFIG_OMAP_PM_NONE is not set
 CONFIG_OMAP_PM_NOOP=y
 CONFIG_MACH_OMAP_GENERIC=y
 
@@ -336,6 +340,7 @@ CONFIG_MACH_OMAP_ZOOM2=y
 CONFIG_MACH_OMAP_ZOOM3=y
 CONFIG_MACH_CM_T35=y
 CONFIG_MACH_CM_T3517=y
+CONFIG_MACH_CM_T3730=y
 CONFIG_MACH_IGEP0020=y
 CONFIG_MACH_IGEP0030=y
 CONFIG_MACH_SBC3530=y
@@ -386,6 +391,7 @@ CONFIG_OUTER_CACHE_SYNC=y
 CONFIG_CACHE_L2X0=y
 CONFIG_ARM_L1_CACHE_SHIFT=5
 CONFIG_ARM_DMA_MEM_BUFFERABLE=y
+# CONFIG_ARM_ERRATA_326103 is not set
 CONFIG_ARM_ERRATA_411920=y
 CONFIG_ARM_ERRATA_430973=y
 CONFIG_ARM_ERRATA_458693=y
@@ -399,6 +405,8 @@ CONFIG_ARM_ERRATA_743622=y
 # CONFIG_ARM_ERRATA_751472 is not set
 CONFIG_ARM_ERRATA_754322=y
 CONFIG_ARM_ERRATA_754327=y
+CONFIG_ARM_ERRATA_764369=y
+CONFIG_PL310_ERRATA_769419=y
 CONFIG_ARM_GIC=y
 
 #
@@ -407,8 +415,6 @@ CONFIG_ARM_GIC=y
 # CONFIG_PCI_SYSCALL is not set
 # CONFIG_ARCH_SUPPORTS_MSI is not set
 # CONFIG_PCCARD is not set
-CONFIG_ARM_ERRATA_764369=y
-CONFIG_PL310_ERRATA_769419=y
 
 #
 # Kernel Features
@@ -419,6 +425,9 @@ CONFIG_HIGH_RES_TIMERS=y
 CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
 CONFIG_SMP=y
 CONFIG_SMP_ON_UP=y
+CONFIG_ARM_CPU_TOPOLOGY=y
+CONFIG_SCHED_MC=y
+CONFIG_SCHED_SMT=y
 CONFIG_HAVE_ARM_SCU=y
 CONFIG_HAVE_ARM_TWD=y
 CONFIG_VMSPLIT_3G=y
@@ -469,6 +478,7 @@ CONFIG_UACCESS_WITH_MEMCPY=y
 CONFIG_USE_OF=y
 CONFIG_ZBOOT_ROM_TEXT=0x0
 CONFIG_ZBOOT_ROM_BSS=0x0
+# CONFIG_ARM_APPENDED_DTB is not set
 CONFIG_CMDLINE=""
 # CONFIG_XIP_KERNEL is not set
 # CONFIG_KEXEC is not set
@@ -520,8 +530,10 @@ CONFIG_PM=y
 # CONFIG_APM_EMULATION is not set
 CONFIG_ARCH_HAS_OPP=y
 CONFIG_PM_OPP=y
-CONFIG_PM_RUNTIME_CLK=y
+CONFIG_PM_CLK=y
+CONFIG_CPU_PM=y
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARM_CPU_SUSPEND=y
 CONFIG_NET=y
 
 #
@@ -727,6 +739,7 @@ CONFIG_IP_SET_HASH_IPPORTIP=m
 CONFIG_IP_SET_HASH_IPPORTNET=m
 CONFIG_IP_SET_HASH_NET=m
 CONFIG_IP_SET_HASH_NETPORT=m
+CONFIG_IP_SET_HASH_NETIFACE=m
 CONFIG_IP_SET_LIST_SET=m
 CONFIG_IP_VS=m
 CONFIG_IP_VS_IPV6=y
@@ -887,6 +900,7 @@ CONFIG_LLC=m
 # CONFIG_WAN_ROUTER is not set
 # CONFIG_PHONET is not set
 CONFIG_IEEE802154=m
+CONFIG_IEEE802154_6LOWPAN=m
 CONFIG_NET_SCHED=y
 
 #
@@ -1067,6 +1081,8 @@ CONFIG_CAIF=m
 CONFIG_CAIF_NETDEV=m
 CONFIG_CEPH_LIB=m
 # CONFIG_CEPH_LIB_PRETTYDEBUG is not set
+# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set
+# CONFIG_NFC is not set
 
 #
 # Device Drivers
@@ -1085,13 +1101,14 @@ CONFIG_EXTRA_FIRMWARE=""
 # CONFIG_DEBUG_DRIVER is not set
 # CONFIG_DEBUG_DEVRES is not set
 # CONFIG_SYS_HYPERVISOR is not set
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=m
 CONFIG_CONNECTOR=m
 CONFIG_MTD=m
-# CONFIG_MTD_DEBUG is not set
 CONFIG_MTD_TESTS=m
 # CONFIG_MTD_REDBOOT_PARTS is not set
 # CONFIG_MTD_AFS_PARTS is not set
-CONFIG_MTD_OF_PARTS=y
+CONFIG_MTD_OF_PARTS=m
 CONFIG_MTD_AR7_PARTS=m
 
 #
@@ -1151,6 +1168,7 @@ CONFIG_MTD_PHYSMAP=m
 # CONFIG_MTD_DOC2000 is not set
 # CONFIG_MTD_DOC2001 is not set
 # CONFIG_MTD_DOC2001PLUS is not set
+# CONFIG_MTD_DOCG3 is not set
 CONFIG_MTD_NAND_ECC=m
 # CONFIG_MTD_NAND_ECC_SMC is not set
 # CONFIG_MTD_NAND is not set
@@ -1191,6 +1209,7 @@ CONFIG_PARPORT_NOT_PC=y
 CONFIG_BLK_DEV=y
 # CONFIG_BLK_DEV_COW_COMMON is not set
 CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
 CONFIG_BLK_DEV_CRYPTOLOOP=m
 # CONFIG_BLK_DEV_DRBD is not set
 CONFIG_BLK_DEV_NBD=m
@@ -1207,7 +1226,7 @@ CONFIG_MG_DISK_RES=0
 # CONFIG_SENSORS_LIS3LV02D is not set
 CONFIG_MISC_DEVICES=y
 # CONFIG_AD525X_DPOT is not set
-# CONFIG_INTEL_MID_PTI is not set
+# CONFIG_ATMEL_PWM is not set
 CONFIG_ICS932S401=m
 CONFIG_ENCLOSURE_SERVICES=m
 # CONFIG_APDS9802ALS is not set
@@ -1220,6 +1239,7 @@ CONFIG_SENSORS_TSL2550=m
 # CONFIG_HMC6352 is not set
 CONFIG_DS1682=m
 # CONFIG_BMP085 is not set
+# CONFIG_USB_SWITCH_FSA9480 is not set
 CONFIG_C2PORT=m
 
 #
@@ -1238,8 +1258,11 @@ CONFIG_IWMC3200TOP=m
 #
 CONFIG_TI_ST=m
 # CONFIG_SENSORS_LIS3_I2C is not set
-CONFIG_HAVE_IDE=y
-# CONFIG_IDE is not set
+
+#
+# Altera FPGA firmware download module
+#
+# CONFIG_ALTERA_STAPL is not set
 
 #
 # SCSI device support
@@ -1322,6 +1345,7 @@ CONFIG_PATA_ARASAN_CF=m
 # PIO-only SFF controllers
 #
 CONFIG_PATA_PLATFORM=m
+CONFIG_PATA_OF_PLATFORM=m
 
 #
 # Generic fallback / legacy drivers
@@ -1338,8 +1362,13 @@ CONFIG_MD_MULTIPATH=m
 # CONFIG_MD_FAULTY is not set
 CONFIG_BLK_DEV_DM=m
 # CONFIG_DM_DEBUG is not set
+CONFIG_DM_BUFIO=m
+CONFIG_DM_PERSISTENT_DATA=m
 CONFIG_DM_CRYPT=m
 CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_THIN_PROVISIONING=m
+# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
+# CONFIG_DM_DEBUG_SPACE_MAPS is not set
 CONFIG_DM_MIRROR=m
 CONFIG_DM_RAID=m
 CONFIG_DM_LOG_USERSPACE=m
@@ -1352,11 +1381,9 @@ CONFIG_DM_UEVENT=y
 CONFIG_DM_FLAKEY=m
 # CONFIG_TARGET_CORE is not set
 CONFIG_NETDEVICES=y
-CONFIG_IFB=m
-CONFIG_DUMMY=m
+CONFIG_NET_CORE=y
 CONFIG_BONDING=m
-CONFIG_MACVLAN=m
-CONFIG_MACVTAP=m
+CONFIG_DUMMY=m
 CONFIG_EQUALIZER=m
 CONFIG_IMQ=m
 # CONFIG_IMQ_BEHAVIOR_AA is not set
@@ -1364,9 +1391,68 @@ CONFIG_IMQ_BEHAVIOR_AB=y
 # CONFIG_IMQ_BEHAVIOR_BA is not set
 # CONFIG_IMQ_BEHAVIOR_BB is not set
 CONFIG_IMQ_NUM_DEVS=2
+CONFIG_MII=m
+CONFIG_IEEE802154_DRIVERS=m
+CONFIG_IEEE802154_FAKEHARD=m
+CONFIG_IFB=m
+CONFIG_MACVLAN=m
+CONFIG_MACVTAP=m
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
 CONFIG_TUN=m
 CONFIG_VETH=m
-CONFIG_MII=m
+CONFIG_ATM_DRIVERS=y
+# CONFIG_ATM_DUMMY is not set
+CONFIG_ATM_TCP=m
+
+#
+# CAIF transport drivers
+#
+CONFIG_CAIF_TTY=m
+CONFIG_CAIF_SPI_SLAVE=m
+# CONFIG_CAIF_SPI_SYNC is not set
+CONFIG_CAIF_HSI=m
+CONFIG_ETHERNET=y
+CONFIG_NET_VENDOR_BROADCOM=y
+CONFIG_B44=m
+CONFIG_NET_VENDOR_CHELSIO=y
+CONFIG_DM9000=m
+# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
+CONFIG_DNET=m
+CONFIG_NET_VENDOR_DLINK=y
+CONFIG_DE600=m
+CONFIG_DE620=m
+CONFIG_NET_VENDOR_FARADAY=y
+# CONFIG_FTMAC100 is not set
+# CONFIG_FTGMAC100 is not set
+CONFIG_NET_VENDOR_INTEL=y
+CONFIG_NET_VENDOR_I825XX=y
+CONFIG_NET_VENDOR_MARVELL=y
+CONFIG_NET_VENDOR_MICREL=y
+CONFIG_KS8842=m
+CONFIG_KS8851_MLL=m
+CONFIG_NET_VENDOR_NATSEMI=y
+CONFIG_NET_VENDOR_8390=y
+CONFIG_AX88796=m
+# CONFIG_AX88796_93CX6 is not set
+CONFIG_ETHOC=m
+CONFIG_NET_VENDOR_SEEQ=y
+CONFIG_SEEQ8005=m
+CONFIG_NET_VENDOR_SMSC=y
+CONFIG_SMC91X=m
+CONFIG_SMC911X=m
+CONFIG_SMSC911X=m
+# CONFIG_SMSC911X_ARCH_HOOKS is not set
+CONFIG_NET_VENDOR_STMICRO=y
+CONFIG_STMMAC_ETH=m
+# CONFIG_STMMAC_DA is not set
+CONFIG_STMMAC_RING=y
+# CONFIG_STMMAC_CHAINED is not set
+CONFIG_NET_VENDOR_TI=y
+# CONFIG_TI_DAVINCI_EMAC is not set
+# CONFIG_TI_DAVINCI_MDIO is not set
+# CONFIG_TI_DAVINCI_CPDMA is not set
 CONFIG_PHYLIB=y
 
 #
@@ -1389,40 +1475,60 @@ CONFIG_MICREL_PHY=m
 # CONFIG_FIXED_PHY is not set
 CONFIG_MDIO_BITBANG=m
 CONFIG_MDIO_GPIO=m
-CONFIG_NET_ETHERNET=y
-CONFIG_AX88796=m
-# CONFIG_AX88796_93CX6 is not set
-CONFIG_SMC91X=m
-# CONFIG_TI_DAVINCI_EMAC is not set
-# CONFIG_TI_DAVINCI_MDIO is not set
-# CONFIG_TI_DAVINCI_CPDMA is not set
-CONFIG_DM9000=m
-CONFIG_DM9000_DEBUGLEVEL=4
-# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
-CONFIG_ETHOC=m
-CONFIG_SMC911X=m
-CONFIG_SMSC911X=m
-# CONFIG_SMSC911X_ARCH_HOOKS is not set
-CONFIG_DNET=m
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
-# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
-# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
-CONFIG_B44=m
-CONFIG_KS8842=m
-CONFIG_KS8851_MLL=m
-CONFIG_NET_POCKET=y
-CONFIG_DE600=m
-CONFIG_DE620=m
-CONFIG_FTMAC100=m
-CONFIG_NETDEV_1000=y
-CONFIG_STMMAC_ETH=m
-# CONFIG_STMMAC_DA is not set
-# CONFIG_STMMAC_DUAL_MAC is not set
-CONFIG_NETDEV_10000=y
+# CONFIG_PLIP is not set
+CONFIG_PPP=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_MPPE=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPPOATM=m
+CONFIG_PPPOE=m
+CONFIG_PPTP=m
+CONFIG_PPPOL2TP=m
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_SLIP=m
+CONFIG_SLHC=m
+CONFIG_SLIP_COMPRESSED=y
+CONFIG_SLIP_SMART=y
+CONFIG_SLIP_MODE_SLIP6=y
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_CDC_EEM=m
+CONFIG_USB_NET_CDC_NCM=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_SMSC75XX=m
+CONFIG_USB_NET_SMSC95XX=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=y
+CONFIG_USB_KC2190=y
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_USB_NET_CX82310_ETH=m
+CONFIG_USB_NET_KALMIA=m
+CONFIG_USB_HSO=m
+CONFIG_USB_NET_INT51X1=m
+# CONFIG_USB_IPHETH is not set
+CONFIG_USB_SIERRA_NET=m
+CONFIG_USB_VL600=m
 CONFIG_WLAN=y
 CONFIG_LIBERTAS_THINFIRM=m
 # CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
@@ -1444,11 +1550,18 @@ CONFIG_ATH9K_HTC=m
 CONFIG_CARL9170=m
 CONFIG_CARL9170_LEDS=y
 CONFIG_CARL9170_WPC=y
+CONFIG_CARL9170_HWRNG=y
+CONFIG_ATH6KL=m
+# CONFIG_ATH6KL_DEBUG is not set
 CONFIG_B43=m
+CONFIG_B43_BCMA=y
+CONFIG_B43_SSB=y
 CONFIG_B43_SDIO=y
+CONFIG_B43_BCMA_PIO=y
 CONFIG_B43_PIO=y
 CONFIG_B43_PHY_N=y
 CONFIG_B43_PHY_LP=y
+CONFIG_B43_PHY_HT=y
 CONFIG_B43_LEDS=y
 CONFIG_B43_HWRNG=y
 # CONFIG_B43_DEBUG is not set
@@ -1461,6 +1574,9 @@ CONFIG_B43LEGACY_PIO=y
 CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
 # CONFIG_B43LEGACY_DMA_MODE is not set
 # CONFIG_B43LEGACY_PIO_MODE is not set
+CONFIG_BRCMUTIL=m
+CONFIG_BRCMFMAC=m
+# CONFIG_BRCMDBG is not set
 CONFIG_HOSTAP=m
 CONFIG_HOSTAP_FIRMWARE=y
 # CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
@@ -1488,7 +1604,6 @@ CONFIG_RT2X00_LIB_FIRMWARE=y
 CONFIG_RT2X00_LIB_CRYPTO=y
 CONFIG_RT2X00_LIB_LEDS=y
 # CONFIG_RT2X00_DEBUG is not set
-CONFIG_RTL8192SE=m
 CONFIG_RTL8192CU=m
 CONFIG_RTLWIFI=m
 CONFIG_RTL8192C_COMMON=m
@@ -1496,7 +1611,6 @@ CONFIG_WL1251=m
 CONFIG_WL1251_SDIO=m
 CONFIG_WL12XX_MENU=m
 CONFIG_WL12XX=m
-# CONFIG_WL12XX_HT is not set
 CONFIG_WL12XX_SDIO=m
 # CONFIG_WL12XX_SDIO_TEST is not set
 CONFIG_WL12XX_PLATFORM_DATA=y
@@ -1508,42 +1622,6 @@ CONFIG_MWIFIEX_SDIO=m
 #
 # Enable WiMAX (Networking options) to see the WiMAX drivers
 #
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-CONFIG_USB_NET_CDC_EEM=m
-CONFIG_USB_NET_CDC_NCM=m
-CONFIG_USB_NET_DM9601=m
-CONFIG_USB_NET_SMSC75XX=m
-CONFIG_USB_NET_SMSC95XX=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
-CONFIG_USB_NET_RNDIS_HOST=m
-CONFIG_USB_NET_CDC_SUBSET=m
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_KC2190=y
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_USB_NET_CX82310_ETH=m
-CONFIG_USB_NET_KALMIA=m
-CONFIG_USB_HSO=m
-CONFIG_USB_NET_INT51X1=m
-# CONFIG_USB_IPHETH is not set
-CONFIG_USB_SIERRA_NET=m
-CONFIG_USB_VL600=m
 CONFIG_WAN=y
 CONFIG_HDLC=m
 CONFIG_HDLC_RAW=m
@@ -1557,39 +1635,6 @@ CONFIG_HDLC_PPP=m
 #
 CONFIG_DLCI=m
 CONFIG_DLCI_MAX=8
-CONFIG_ATM_DRIVERS=y
-# CONFIG_ATM_DUMMY is not set
-CONFIG_ATM_TCP=m
-CONFIG_IEEE802154_DRIVERS=m
-CONFIG_IEEE802154_FAKEHARD=m
-
-#
-# CAIF transport drivers
-#
-CONFIG_CAIF_TTY=m
-CONFIG_CAIF_SPI_SLAVE=m
-# CONFIG_CAIF_SPI_SYNC is not set
-# CONFIG_PLIP is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-CONFIG_PPPOE=m
-CONFIG_PPTP=m
-CONFIG_PPPOATM=m
-CONFIG_PPPOL2TP=m
-CONFIG_SLIP=m
-CONFIG_SLIP_COMPRESSED=y
-CONFIG_SLHC=m
-CONFIG_SLIP_SMART=y
-CONFIG_SLIP_MODE_SLIP6=y
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
 CONFIG_ISDN=y
 CONFIG_ISDN_I4L=m
 CONFIG_ISDN_PPP=y
@@ -1736,14 +1781,18 @@ CONFIG_KEYBOARD_XTKBD=m
 # CONFIG_INPUT_TOUCHSCREEN is not set
 CONFIG_INPUT_MISC=y
 # CONFIG_INPUT_AD714X is not set
-CONFIG_INPUT_ATI_REMOTE=m
+# CONFIG_INPUT_BMA150 is not set
+# CONFIG_INPUT_MMA8450 is not set
+# CONFIG_INPUT_MPU3050 is not set
 CONFIG_INPUT_ATI_REMOTE2=m
 CONFIG_INPUT_KEYSPAN_REMOTE=m
+# CONFIG_INPUT_KXTJ9 is not set
 CONFIG_INPUT_POWERMATE=m
 CONFIG_INPUT_YEALINK=m
 CONFIG_INPUT_CM109=m
 CONFIG_INPUT_TWL4030_PWRBUTTON=m
 CONFIG_INPUT_TWL4030_VIBRA=m
+CONFIG_INPUT_TWL6040_VIBRA=m
 # CONFIG_INPUT_UINPUT is not set
 CONFIG_INPUT_PCF50633_PMU=m
 CONFIG_INPUT_PCF8574=m
@@ -1770,6 +1819,7 @@ CONFIG_SERIO_PS2MULT=m
 CONFIG_VT=y
 CONFIG_CONSOLE_TRANSLATIONS=y
 CONFIG_VT_CONSOLE=y
+CONFIG_VT_CONSOLE_SLEEP=y
 CONFIG_HW_CONSOLE=y
 # CONFIG_VT_HW_CONSOLE_BINDING is not set
 CONFIG_UNIX98_PTYS=y
@@ -1793,6 +1843,7 @@ CONFIG_SERIAL_8250_MANY_PORTS=y
 CONFIG_SERIAL_8250_SHARE_IRQ=y
 CONFIG_SERIAL_8250_DETECT_IRQ=y
 CONFIG_SERIAL_8250_RSA=y
+CONFIG_SERIAL_8250_DW=m
 
 #
 # Non-8250 serial port support
@@ -1851,7 +1902,7 @@ CONFIG_I2C_ALGOPCA=m
 #
 # I2C system bus drivers (mostly embedded / system-on-chip)
 #
-CONFIG_I2C_DESIGNWARE=m
+# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
 CONFIG_I2C_GPIO=m
 CONFIG_I2C_OCORES=m
 CONFIG_I2C_OMAP=y
@@ -1890,6 +1941,7 @@ CONFIG_PPS=m
 CONFIG_PPS_CLIENT_KTIMER=m
 CONFIG_PPS_CLIENT_LDISC=m
 CONFIG_PPS_CLIENT_PARPORT=m
+CONFIG_PPS_CLIENT_GPIO=m
 
 #
 # PPS generators support
@@ -1904,13 +1956,13 @@ CONFIG_ARCH_REQUIRE_GPIOLIB=y
 CONFIG_GPIOLIB=y
 # CONFIG_DEBUG_GPIO is not set
 # CONFIG_GPIO_SYSFS is not set
+CONFIG_GPIO_GENERIC=m
 CONFIG_GPIO_MAX730X=m
 
 #
 # Memory mapped GPIO drivers:
 #
-CONFIG_GPIO_BASIC_MMIO_CORE=m
-CONFIG_GPIO_BASIC_MMIO=m
+CONFIG_GPIO_GENERIC_PLATFORM=m
 CONFIG_GPIO_IT8761E=m
 
 #
@@ -1930,6 +1982,7 @@ CONFIG_GPIO_ADP5588=m
 #
 # SPI GPIO expanders:
 #
+CONFIG_GPIO_MCP23S08=m
 
 #
 # AC97 GPIO expanders:
@@ -2033,22 +2086,28 @@ CONFIG_SENSORS_LTC4215=m
 CONFIG_SENSORS_LTC4245=m
 CONFIG_SENSORS_LTC4261=m
 CONFIG_SENSORS_LM95241=m
+CONFIG_SENSORS_LM95245=m
 CONFIG_SENSORS_MAX16065=m
 CONFIG_SENSORS_MAX1619=m
+CONFIG_SENSORS_MAX1668=m
 CONFIG_SENSORS_MAX6639=m
 CONFIG_SENSORS_MAX6642=m
 CONFIG_SENSORS_MAX6650=m
+CONFIG_SENSORS_NTC_THERMISTOR=m
 CONFIG_SENSORS_PC87360=m
 CONFIG_SENSORS_PC87427=m
 CONFIG_SENSORS_PCF8591=m
 CONFIG_PMBUS=m
 CONFIG_SENSORS_PMBUS=m
 CONFIG_SENSORS_ADM1275=m
+CONFIG_SENSORS_LM25066=m
+CONFIG_SENSORS_LTC2978=m
 CONFIG_SENSORS_MAX16064=m
 CONFIG_SENSORS_MAX34440=m
 CONFIG_SENSORS_MAX8688=m
 CONFIG_SENSORS_UCD9000=m
 CONFIG_SENSORS_UCD9200=m
+CONFIG_SENSORS_ZL6100=m
 CONFIG_SENSORS_SHT15=m
 CONFIG_SENSORS_SHT21=m
 CONFIG_SENSORS_SMM665=m
@@ -2059,7 +2118,9 @@ CONFIG_SENSORS_EMC6W201=m
 CONFIG_SENSORS_SMSC47M1=m
 CONFIG_SENSORS_SMSC47M192=m
 CONFIG_SENSORS_SMSC47B397=m
+CONFIG_SENSORS_SCH56XX_COMMON=m
 CONFIG_SENSORS_SCH5627=m
+CONFIG_SENSORS_SCH5636=m
 CONFIG_SENSORS_ADS1015=m
 CONFIG_SENSORS_ADS7828=m
 CONFIG_SENSORS_AMC6821=m
@@ -2081,12 +2142,14 @@ CONFIG_SENSORS_W83627HF=m
 CONFIG_SENSORS_W83627EHF=m
 CONFIG_THERMAL=y
 CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
 # CONFIG_WATCHDOG_NOWAYOUT is not set
 
 #
 # Watchdog Device Drivers
 #
 CONFIG_SOFT_WATCHDOG=m
+# CONFIG_DW_WATCHDOG is not set
 CONFIG_MPCORE_WATCHDOG=m
 CONFIG_OMAP_WATCHDOG=m
 CONFIG_TWL4030_WATCHDOG=m
@@ -2113,8 +2176,12 @@ CONFIG_BCMA_POSSIBLE=y
 # Broadcom specific AMBA
 #
 CONFIG_BCMA=m
+CONFIG_BCMA_BLOCKIO=y
 # CONFIG_BCMA_DEBUG is not set
-CONFIG_MFD_SUPPORT=y
+
+#
+# Multifunction device drivers
+#
 CONFIG_MFD_CORE=y
 # CONFIG_MFD_88PM860X is not set
 CONFIG_MFD_SM501=m
@@ -2127,12 +2194,15 @@ CONFIG_HTC_PASIC3=m
 CONFIG_TPS65010=m
 # CONFIG_TPS6507X is not set
 # CONFIG_MFD_TPS6586X is not set
+# CONFIG_MFD_TPS65910 is not set
+# CONFIG_MFD_TPS65912_I2C is not set
 CONFIG_MENELAUS=y
 CONFIG_TWL4030_CORE=y
 CONFIG_TWL4030_MADC=m
 CONFIG_TWL4030_POWER=y
-CONFIG_TWL4030_CODEC=y
+CONFIG_MFD_TWL4030_AUDIO=y
 CONFIG_TWL6030_PWM=m
+CONFIG_TWL6040_CORE=y
 # CONFIG_MFD_STMPE is not set
 # CONFIG_MFD_TC3589X is not set
 # CONFIG_MFD_TMIO is not set
@@ -2154,13 +2224,14 @@ CONFIG_PCF50633_GPIO=m
 # CONFIG_ABX500_CORE is not set
 CONFIG_MFD_WL1273_CORE=m
 CONFIG_MFD_OMAP_USB_HOST=y
-# CONFIG_MFD_TPS65910 is not set
+# CONFIG_MFD_AAT2870_CORE is not set
 CONFIG_REGULATOR=y
 # CONFIG_REGULATOR_DEBUG is not set
 # CONFIG_REGULATOR_DUMMY is not set
 CONFIG_REGULATOR_FIXED_VOLTAGE=y
 # CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
 # CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
+# CONFIG_REGULATOR_GPIO is not set
 # CONFIG_REGULATOR_BQ24022 is not set
 # CONFIG_REGULATOR_MAX1586 is not set
 # CONFIG_REGULATOR_MAX8649 is not set
@@ -2184,6 +2255,7 @@ CONFIG_MEDIA_SUPPORT=m
 CONFIG_VIDEO_DEV=m
 CONFIG_VIDEO_V4L2_COMMON=m
 CONFIG_DVB_CORE=m
+CONFIG_DVB_NET=y
 CONFIG_VIDEO_MEDIA=m
 
 #
@@ -2198,7 +2270,9 @@ CONFIG_IR_RC6_DECODER=m
 CONFIG_IR_JVC_DECODER=m
 CONFIG_IR_SONY_DECODER=m
 CONFIG_IR_RC5_SZ_DECODER=m
+CONFIG_IR_MCE_KBD_DECODER=m
 CONFIG_IR_LIRC_CODEC=m
+CONFIG_RC_ATI_REMOTE=m
 # CONFIG_IR_IMON is not set
 # CONFIG_IR_MCEUSB is not set
 # CONFIG_IR_REDRAT3 is not set
@@ -2220,6 +2294,7 @@ CONFIG_MEDIA_TUNER_MT2266=m
 CONFIG_MEDIA_TUNER_QT1010=m
 CONFIG_MEDIA_TUNER_XC2028=m
 CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_MEDIA_TUNER_XC4000=m
 CONFIG_MEDIA_TUNER_MXL5005S=m
 CONFIG_MEDIA_TUNER_MXL5007T=m
 CONFIG_MEDIA_TUNER_MC44S803=m
@@ -2236,6 +2311,7 @@ CONFIG_VIDEO_TUNER=m
 CONFIG_VIDEOBUF2_CORE=m
 CONFIG_VIDEOBUF2_MEMOPS=m
 CONFIG_VIDEOBUF2_DMA_CONTIG=m
+CONFIG_VIDEOBUF2_VMALLOC=m
 CONFIG_VIDEO_CAPTURE_DRIVERS=y
 # CONFIG_VIDEO_ADV_DEBUG is not set
 # CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
@@ -2310,6 +2386,11 @@ CONFIG_VIDEO_CX2341X=m
 # CONFIG_VIDEO_OV7670 is not set
 # CONFIG_VIDEO_MT9V011 is not set
 # CONFIG_VIDEO_TCM825X is not set
+CONFIG_VIDEO_SR030PC30=m
+
+#
+# Flash devices
+#
 
 #
 # Video improvement chips
@@ -2331,8 +2412,6 @@ CONFIG_VIDEO_W9966=m
 CONFIG_VIDEO_CPIA2=m
 CONFIG_VIDEO_TIMBERDALE=m
 CONFIG_VIDEO_AU0828=m
-CONFIG_VIDEO_SR030PC30=m
-CONFIG_VIDEO_NOON010PC30=m
 CONFIG_SOC_CAMERA=m
 CONFIG_SOC_CAMERA_IMX074=m
 CONFIG_SOC_CAMERA_MT9M001=m
@@ -2344,6 +2423,7 @@ CONFIG_SOC_CAMERA_RJ54N1=m
 CONFIG_SOC_CAMERA_TW9910=m
 CONFIG_SOC_CAMERA_PLATFORM=m
 CONFIG_SOC_CAMERA_OV2640=m
+CONFIG_SOC_CAMERA_OV5642=m
 CONFIG_SOC_CAMERA_OV6650=m
 CONFIG_SOC_CAMERA_OV772X=m
 CONFIG_SOC_CAMERA_OV9640=m
@@ -2355,49 +2435,51 @@ CONFIG_V4L_USB_DRIVERS=y
 # CONFIG_USB_VIDEO_CLASS is not set
 CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
 CONFIG_USB_GSPCA=m
-# CONFIG_USB_M5602 is not set
-# CONFIG_USB_STV06XX is not set
-# CONFIG_USB_GL860 is not set
-# CONFIG_USB_GSPCA_BENQ is not set
-# CONFIG_USB_GSPCA_CONEX is not set
-# CONFIG_USB_GSPCA_CPIA1 is not set
-# CONFIG_USB_GSPCA_ETOMS is not set
-# CONFIG_USB_GSPCA_FINEPIX is not set
-# CONFIG_USB_GSPCA_JEILINJ is not set
-# CONFIG_USB_GSPCA_KINECT is not set
-# CONFIG_USB_GSPCA_KONICA is not set
-# CONFIG_USB_GSPCA_MARS is not set
-# CONFIG_USB_GSPCA_MR97310A is not set
-# CONFIG_USB_GSPCA_NW80X is not set
-# CONFIG_USB_GSPCA_OV519 is not set
-# CONFIG_USB_GSPCA_OV534 is not set
-# CONFIG_USB_GSPCA_OV534_9 is not set
-# CONFIG_USB_GSPCA_PAC207 is not set
-# CONFIG_USB_GSPCA_PAC7302 is not set
-# CONFIG_USB_GSPCA_PAC7311 is not set
-# CONFIG_USB_GSPCA_SN9C2028 is not set
-# CONFIG_USB_GSPCA_SN9C20X is not set
-# CONFIG_USB_GSPCA_SONIXB is not set
-# CONFIG_USB_GSPCA_SONIXJ is not set
-# CONFIG_USB_GSPCA_SPCA500 is not set
-# CONFIG_USB_GSPCA_SPCA501 is not set
-# CONFIG_USB_GSPCA_SPCA505 is not set
-# CONFIG_USB_GSPCA_SPCA506 is not set
-# CONFIG_USB_GSPCA_SPCA508 is not set
-# CONFIG_USB_GSPCA_SPCA561 is not set
-# CONFIG_USB_GSPCA_SPCA1528 is not set
-# CONFIG_USB_GSPCA_SQ905 is not set
-# CONFIG_USB_GSPCA_SQ905C is not set
-# CONFIG_USB_GSPCA_SQ930X is not set
-# CONFIG_USB_GSPCA_STK014 is not set
-# CONFIG_USB_GSPCA_STV0680 is not set
-# CONFIG_USB_GSPCA_SUNPLUS is not set
-# CONFIG_USB_GSPCA_T613 is not set
-# CONFIG_USB_GSPCA_TV8532 is not set
-# CONFIG_USB_GSPCA_VC032X is not set
-# CONFIG_USB_GSPCA_VICAM is not set
-# CONFIG_USB_GSPCA_XIRLINK_CIT is not set
-# CONFIG_USB_GSPCA_ZC3XX is not set
+CONFIG_USB_M5602=m
+CONFIG_USB_STV06XX=m
+CONFIG_USB_GL860=m
+CONFIG_USB_GSPCA_BENQ=m
+CONFIG_USB_GSPCA_CONEX=m
+CONFIG_USB_GSPCA_CPIA1=m
+CONFIG_USB_GSPCA_ETOMS=m
+CONFIG_USB_GSPCA_FINEPIX=m
+CONFIG_USB_GSPCA_JEILINJ=m
+CONFIG_USB_GSPCA_KINECT=m
+CONFIG_USB_GSPCA_KONICA=m
+CONFIG_USB_GSPCA_MARS=m
+CONFIG_USB_GSPCA_MR97310A=m
+CONFIG_USB_GSPCA_NW80X=m
+CONFIG_USB_GSPCA_OV519=m
+CONFIG_USB_GSPCA_OV534=m
+CONFIG_USB_GSPCA_OV534_9=m
+CONFIG_USB_GSPCA_PAC207=m
+CONFIG_USB_GSPCA_PAC7302=m
+CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SE401=m
+CONFIG_USB_GSPCA_SN9C2028=m
+CONFIG_USB_GSPCA_SN9C20X=m
+CONFIG_USB_GSPCA_SONIXB=m
+CONFIG_USB_GSPCA_SONIXJ=m
+CONFIG_USB_GSPCA_SPCA500=m
+CONFIG_USB_GSPCA_SPCA501=m
+CONFIG_USB_GSPCA_SPCA505=m
+CONFIG_USB_GSPCA_SPCA506=m
+CONFIG_USB_GSPCA_SPCA508=m
+CONFIG_USB_GSPCA_SPCA561=m
+CONFIG_USB_GSPCA_SPCA1528=m
+CONFIG_USB_GSPCA_SQ905=m
+CONFIG_USB_GSPCA_SQ905C=m
+CONFIG_USB_GSPCA_SQ930X=m
+CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_STV0680=m
+CONFIG_USB_GSPCA_SUNPLUS=m
+CONFIG_USB_GSPCA_T613=m
+CONFIG_USB_GSPCA_TOPRO=m
+CONFIG_USB_GSPCA_TV8532=m
+CONFIG_USB_GSPCA_VC032X=m
+CONFIG_USB_GSPCA_VICAM=m
+CONFIG_USB_GSPCA_XIRLINK_CIT=m
+CONFIG_USB_GSPCA_ZC3XX=m
 CONFIG_VIDEO_PVRUSB2=m
 CONFIG_VIDEO_PVRUSB2_SYSFS=y
 CONFIG_VIDEO_PVRUSB2_DVB=y
@@ -2406,11 +2488,13 @@ CONFIG_VIDEO_HDPVR=m
 CONFIG_VIDEO_EM28XX=m
 # CONFIG_VIDEO_EM28XX_ALSA is not set
 CONFIG_VIDEO_EM28XX_DVB=m
+CONFIG_VIDEO_EM28XX_RC=y
 CONFIG_VIDEO_TLG2300=m
 CONFIG_VIDEO_CX231XX=m
 CONFIG_VIDEO_CX231XX_RC=y
 CONFIG_VIDEO_CX231XX_ALSA=m
 CONFIG_VIDEO_CX231XX_DVB=m
+# CONFIG_VIDEO_TM6000 is not set
 CONFIG_VIDEO_USBVISION=m
 CONFIG_USB_ET61X251=m
 CONFIG_USB_SN9C102=m
@@ -2439,7 +2523,7 @@ CONFIG_RADIO_WL128X=m
 CONFIG_DVB_MAX_ADAPTERS=8
 # CONFIG_DVB_DYNAMIC_MINORS is not set
 CONFIG_DVB_CAPTURE_DRIVERS=y
-# CONFIG_TTPCI_EEPROM is not set
+CONFIG_TTPCI_EEPROM=m
 
 #
 # Supported USB Adapters
@@ -2466,6 +2550,7 @@ CONFIG_DVB_USB_DTT200U=m
 CONFIG_DVB_USB_OPERA1=m
 CONFIG_DVB_USB_AF9005=m
 CONFIG_DVB_USB_AF9005_REMOTE=m
+CONFIG_DVB_USB_PCTV452E=m
 CONFIG_DVB_USB_DW2102=m
 CONFIG_DVB_USB_CINERGY_T2=m
 CONFIG_DVB_USB_ANYSEE=m
@@ -2477,6 +2562,8 @@ CONFIG_DVB_USB_EC168=m
 CONFIG_DVB_USB_AZ6027=m
 CONFIG_DVB_USB_LME2510=m
 CONFIG_DVB_USB_TECHNISAT_USB2=m
+CONFIG_DVB_USB_IT913X=m
+CONFIG_DVB_USB_MXL111SF=m
 CONFIG_SMS_SIANO_MDTV=m
 
 #
@@ -2503,6 +2590,12 @@ CONFIG_DVB_STB6100=m
 CONFIG_DVB_STV090x=m
 CONFIG_DVB_STV6110x=m
 
+#
+# Multistandard (cable + terrestrial) frontends
+#
+CONFIG_DVB_DRXK=m
+CONFIG_DVB_TDA18271C2DD=m
+
 #
 # DVB-S (satellite) frontends
 #
@@ -2518,6 +2611,7 @@ CONFIG_DVB_TDA826X=m
 CONFIG_DVB_CX24116=m
 CONFIG_DVB_SI21XX=m
 CONFIG_DVB_DS3000=m
+CONFIG_DVB_TDA10071=m
 
 #
 # DVB-T (terrestrial) frontends
@@ -2569,10 +2663,13 @@ CONFIG_DVB_TUNER_DIB0090=m
 # SEC control devices for DVB-S
 #
 CONFIG_DVB_LNBP21=m
+CONFIG_DVB_LNBP22=m
 CONFIG_DVB_ISL6423=m
+CONFIG_DVB_A8293=m
 CONFIG_DVB_LGS8GXX=m
 CONFIG_DVB_ATBM8830=m
 CONFIG_DVB_IX2505V=m
+CONFIG_DVB_IT913X_FE=m
 
 #
 # Tools to develop new frontends
@@ -2582,24 +2679,23 @@ CONFIG_DVB_IX2505V=m
 #
 # Graphics support
 #
-CONFIG_DRM=m
+# CONFIG_DRM is not set
 # CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
 CONFIG_FB=y
-CONFIG_FIRMWARE_EDID=y
+# CONFIG_FIRMWARE_EDID is not set
 # CONFIG_FB_DDC is not set
 # CONFIG_FB_BOOT_VESA_SUPPORT is not set
-CONFIG_FB_CFB_FILLRECT=m
-CONFIG_FB_CFB_COPYAREA=m
-CONFIG_FB_CFB_IMAGEBLIT=m
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
 # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
-CONFIG_FB_SYS_FILLRECT=m
-CONFIG_FB_SYS_COPYAREA=m
-CONFIG_FB_SYS_IMAGEBLIT=m
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
 # CONFIG_FB_FOREIGN_ENDIAN is not set
-CONFIG_FB_SYS_FOPS=m
+# CONFIG_FB_SYS_FOPS is not set
 # CONFIG_FB_WMT_GE_ROPS is not set
-CONFIG_FB_DEFERRED_IO=y
 # CONFIG_FB_SVGALIB is not set
 # CONFIG_FB_MACMODES is not set
 # CONFIG_FB_BACKLIGHT is not set
@@ -2609,32 +2705,57 @@ CONFIG_FB_TILEBLITTING=y
 #
 # Frame buffer hardware drivers
 #
-CONFIG_FB_UVESA=m
+# CONFIG_FB_UVESA is not set
 # CONFIG_FB_S1D13XXX is not set
-CONFIG_FB_TMIO=m
-CONFIG_FB_TMIO_ACCELL=y
-CONFIG_FB_SM501=m
+# CONFIG_FB_TMIO is not set
+# CONFIG_FB_SM501 is not set
+# CONFIG_FB_SMSCUFX is not set
 # CONFIG_FB_UDL is not set
 # CONFIG_FB_VIRTUAL is not set
-CONFIG_FB_METRONOME=m
+# CONFIG_FB_METRONOME is not set
 # CONFIG_FB_BROADSHEET is not set
-# CONFIG_FB_OMAP is not set
-# CONFIG_FB_OMAP_LCD_VGA is not set
-# CONFIG_OMAP2_DSS is not set
+# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
+CONFIG_OMAP2_VRAM=y
+CONFIG_OMAP2_VRFB=y
+CONFIG_OMAP2_DSS=y
+CONFIG_OMAP2_VRAM_SIZE=32
+CONFIG_OMAP2_DSS_DEBUG_SUPPORT=y
+# CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS is not set
+CONFIG_OMAP2_DSS_DPI=y
+# CONFIG_OMAP2_DSS_RFBI is not set
+# CONFIG_OMAP2_DSS_VENC is not set
+CONFIG_OMAP4_DSS_HDMI=y
+# CONFIG_OMAP2_DSS_SDI is not set
+CONFIG_OMAP2_DSS_DSI=y
+# CONFIG_OMAP2_DSS_FAKE_VSYNC is not set
+CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0
+CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y
+CONFIG_FB_OMAP2=y
+CONFIG_FB_OMAP2_DEBUG_SUPPORT=y
+CONFIG_FB_OMAP2_NUM_FBS=3
+
+#
+# OMAP2/3 Display Device Drivers
+#
+CONFIG_PANEL_GENERIC_DPI=y
+CONFIG_PANEL_DVI=y
+CONFIG_PANEL_SHARP_LS037V7DW01=y
+# CONFIG_PANEL_PICODLP is not set
+CONFIG_PANEL_TAAL=y
 CONFIG_BACKLIGHT_LCD_SUPPORT=y
 CONFIG_LCD_CLASS_DEVICE=m
 CONFIG_LCD_PLATFORM=m
 CONFIG_BACKLIGHT_CLASS_DEVICE=y
-CONFIG_BACKLIGHT_GENERIC=m
-# CONFIG_BACKLIGHT_PWM is not set
-# CONFIG_BACKLIGHT_ADP8860 is not set
-# CONFIG_BACKLIGHT_ADP8870 is not set
-# CONFIG_BACKLIGHT_PCF50633 is not set
+CONFIG_BACKLIGHT_GENERIC=y
+CONFIG_BACKLIGHT_PWM=m
+CONFIG_BACKLIGHT_ADP8860=m
+CONFIG_BACKLIGHT_ADP8870=m
+CONFIG_BACKLIGHT_PCF50633=m
 
 #
 # Display device support
 #
-CONFIG_DISPLAY_SUPPORT=m
+CONFIG_DISPLAY_SUPPORT=y
 
 #
 # Display hardware drivers
@@ -2645,11 +2766,19 @@ CONFIG_DISPLAY_SUPPORT=m
 #
 CONFIG_DUMMY_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
 # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-# CONFIG_FONTS is not set
+CONFIG_FONTS=y
 CONFIG_FONT_8x8=y
 CONFIG_FONT_8x16=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
 CONFIG_LOGO=y
 CONFIG_LOGO_LINUX_MONO=y
 CONFIG_LOGO_LINUX_VGA16=y
@@ -2709,6 +2838,7 @@ CONFIG_SND_OMAP_SOC_OMAP3EVM=m
 CONFIG_SND_OMAP_SOC_AM3517EVM=m
 CONFIG_SND_OMAP_SOC_SDP3430=m
 CONFIG_SND_OMAP_SOC_SDP4430=m
+# CONFIG_SND_OMAP_SOC_OMAP4_HDMI is not set
 CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m
 CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE=m
 CONFIG_SND_OMAP_SOC_ZOOM2=m
@@ -2718,6 +2848,8 @@ CONFIG_SND_SOC_ALL_CODECS=m
 CONFIG_SND_SOC_WM_HUBS=m
 CONFIG_SND_SOC_AD193X=m
 CONFIG_SND_SOC_AD73311=m
+CONFIG_SND_SOC_ADAU1373=m
+CONFIG_SND_SOC_ADAV80X=m
 CONFIG_SND_SOC_ADS117X=m
 CONFIG_SND_SOC_AK4535=m
 CONFIG_SND_SOC_AK4641=m
@@ -2728,6 +2860,7 @@ CONFIG_SND_SOC_CS42L51=m
 CONFIG_SND_SOC_CS4270=m
 CONFIG_SND_SOC_CS4271=m
 CONFIG_SND_SOC_CX20442=m
+CONFIG_SND_SOC_JZ4740_CODEC=m
 CONFIG_SND_SOC_L3=m
 CONFIG_SND_SOC_DA7210=m
 CONFIG_SND_SOC_DFBMCS320=m
@@ -2735,11 +2868,13 @@ CONFIG_SND_SOC_MAX98088=m
 CONFIG_SND_SOC_MAX98095=m
 CONFIG_SND_SOC_MAX9850=m
 CONFIG_SND_SOC_PCM3008=m
+CONFIG_SND_SOC_RT5631=m
 CONFIG_SND_SOC_SGTL5000=m
 CONFIG_SND_SOC_SPDIF=m
 CONFIG_SND_SOC_SSM2602=m
+CONFIG_SND_SOC_STA32X=m
 CONFIG_SND_SOC_TLV320AIC23=m
-CONFIG_SND_SOC_TVL320AIC32X4=m
+CONFIG_SND_SOC_TLV320AIC32X4=m
 CONFIG_SND_SOC_TLV320AIC3X=m
 CONFIG_SND_SOC_TLV320DAC33=m
 CONFIG_SND_SOC_TWL4030=m
@@ -2748,6 +2883,7 @@ CONFIG_SND_SOC_UDA134X=m
 CONFIG_SND_SOC_UDA1380=m
 CONFIG_SND_SOC_WL1273=m
 CONFIG_SND_SOC_WM1250_EV1=m
+CONFIG_SND_SOC_WM5100=m
 CONFIG_SND_SOC_WM8400=m
 CONFIG_SND_SOC_WM8510=m
 CONFIG_SND_SOC_WM8523=m
@@ -2761,11 +2897,11 @@ CONFIG_SND_SOC_WM8741=m
 CONFIG_SND_SOC_WM8750=m
 CONFIG_SND_SOC_WM8753=m
 CONFIG_SND_SOC_WM8776=m
+CONFIG_SND_SOC_WM8782=m
 CONFIG_SND_SOC_WM8804=m
 CONFIG_SND_SOC_WM8900=m
 CONFIG_SND_SOC_WM8903=m
 CONFIG_SND_SOC_WM8904=m
-CONFIG_SND_SOC_WM8915=m
 CONFIG_SND_SOC_WM8940=m
 CONFIG_SND_SOC_WM8955=m
 CONFIG_SND_SOC_WM8960=m
@@ -2774,12 +2910,14 @@ CONFIG_SND_SOC_WM8962=m
 CONFIG_SND_SOC_WM8971=m
 CONFIG_SND_SOC_WM8974=m
 CONFIG_SND_SOC_WM8978=m
+CONFIG_SND_SOC_WM8983=m
 CONFIG_SND_SOC_WM8985=m
 CONFIG_SND_SOC_WM8988=m
 CONFIG_SND_SOC_WM8990=m
 CONFIG_SND_SOC_WM8991=m
 CONFIG_SND_SOC_WM8993=m
 CONFIG_SND_SOC_WM8995=m
+CONFIG_SND_SOC_WM8996=m
 CONFIG_SND_SOC_WM9081=m
 CONFIG_SND_SOC_LM4857=m
 CONFIG_SND_SOC_MAX9877=m
@@ -2819,6 +2957,7 @@ CONFIG_HID_DRAGONRISE=m
 CONFIG_DRAGONRISE_FF=y
 # CONFIG_HID_EMS_FF is not set
 CONFIG_HID_EZKEY=m
+# CONFIG_HID_HOLTEK is not set
 # CONFIG_HID_KEYTOUCH is not set
 CONFIG_HID_KYE=m
 # CONFIG_HID_UCLOGIC is not set
@@ -2828,10 +2967,11 @@ CONFIG_HID_TWINHAN=m
 CONFIG_HID_KENSINGTON=m
 # CONFIG_HID_LCPOWER is not set
 CONFIG_HID_LOGITECH=m
+CONFIG_HID_LOGITECH_DJ=m
 CONFIG_LOGITECH_FF=y
 CONFIG_LOGIRUMBLEPAD2_FF=y
 # CONFIG_LOGIG940_FF is not set
-# CONFIG_LOGIWII_FF is not set
+CONFIG_LOGIWHEELS_FF=y
 CONFIG_HID_MICROSOFT=m
 CONFIG_HID_MONTEREY=m
 # CONFIG_HID_MULTITOUCH is not set
@@ -2841,15 +2981,12 @@ CONFIG_HID_PANTHERLORD=m
 CONFIG_PANTHERLORD_FF=y
 CONFIG_HID_PETALYNX=m
 # CONFIG_HID_PICOLCD is not set
+CONFIG_HID_PRIMAX=m
 # CONFIG_HID_QUANTA is not set
 # CONFIG_HID_ROCCAT is not set
-# CONFIG_HID_ROCCAT_ARVO is not set
-# CONFIG_HID_ROCCAT_KONE is not set
-# CONFIG_HID_ROCCAT_KONEPLUS is not set
-# CONFIG_HID_ROCCAT_KOVAPLUS is not set
-# CONFIG_HID_ROCCAT_PYRA is not set
 CONFIG_HID_SAMSUNG=m
 CONFIG_HID_SONY=m
+CONFIG_HID_SPEEDLINK=m
 CONFIG_HID_SUNPLUS=m
 CONFIG_HID_GREENASIA=m
 CONFIG_GREENASIA_FF=y
@@ -2862,9 +2999,11 @@ CONFIG_HID_ZEROPLUS=m
 CONFIG_ZEROPLUS_FF=y
 # CONFIG_HID_ZYDACRON is not set
 CONFIG_USB_SUPPORT=y
+CONFIG_USB_COMMON=y
 CONFIG_USB_ARCH_HAS_HCD=y
 CONFIG_USB_ARCH_HAS_OHCI=y
 CONFIG_USB_ARCH_HAS_EHCI=y
+# CONFIG_USB_ARCH_HAS_XHCI is not set
 CONFIG_USB=y
 # CONFIG_USB_DEBUG is not set
 CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
@@ -2879,6 +3018,7 @@ CONFIG_USB_SUSPEND=y
 # CONFIG_USB_OTG is not set
 # CONFIG_USB_OTG_WHITELIST is not set
 # CONFIG_USB_OTG_BLACKLIST_HUB is not set
+# CONFIG_USB_DWC3 is not set
 # CONFIG_USB_MON is not set
 # CONFIG_USB_WUSB is not set
 # CONFIG_USB_WUSB_CBAF is not set
@@ -2891,8 +3031,8 @@ CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_ROOT_HUB_TT=y
 CONFIG_USB_EHCI_TT_NEWSCHED=y
 CONFIG_USB_EHCI_HCD_OMAP=y
-CONFIG_USB_OXU210HP_HCD=m
-CONFIG_USB_ISP116X_HCD=m
+# CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
 # CONFIG_USB_ISP1760_HCD is not set
 # CONFIG_USB_ISP1362_HCD is not set
 CONFIG_USB_OHCI_HCD=y
@@ -2901,12 +3041,10 @@ CONFIG_USB_OHCI_HCD_OMAP3=y
 # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
 # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
 CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-CONFIG_USB_U132_HCD=m
-CONFIG_USB_SL811_HCD=m
-# CONFIG_USB_SL811_HCD_ISO is not set
-CONFIG_USB_R8A66597_HCD=m
+# CONFIG_USB_U132_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
 # CONFIG_USB_HWA_HCD is not set
-# CONFIG_USB_MUSB_HDRC is not set
 
 #
 # USB Device Class drivers
@@ -2926,6 +3064,7 @@ CONFIG_USB_TMC=m
 CONFIG_USB_STORAGE=m
 # CONFIG_USB_STORAGE_DEBUG is not set
 CONFIG_USB_STORAGE_REALTEK=m
+CONFIG_REALTEK_AUTOPM=y
 # CONFIG_USB_STORAGE_DATAFAB is not set
 CONFIG_USB_STORAGE_FREECOM=m
 CONFIG_USB_STORAGE_ISD200=m
@@ -3046,7 +3185,7 @@ CONFIG_USB_GPIO_VBUS=m
 # CONFIG_USB_ULPI is not set
 CONFIG_TWL4030_USB=m
 CONFIG_TWL6030_USB=m
-CONFIG_NOP_USB_XCEIV=m
+# CONFIG_NOP_USB_XCEIV is not set
 CONFIG_MMC=y
 # CONFIG_MMC_DEBUG is not set
 # CONFIG_MMC_UNSAFE_RESUME is not set
@@ -3065,12 +3204,12 @@ CONFIG_MMC_TEST=m
 # MMC/SD/SDIO Host Controller Drivers
 #
 CONFIG_MMC_SDHCI=m
-CONFIG_MMC_SDHCI_OF=m
 CONFIG_MMC_SDHCI_PLTFM=m
+# CONFIG_MMC_SDHCI_PXAV3 is not set
+# CONFIG_MMC_SDHCI_PXAV2 is not set
 CONFIG_MMC_OMAP=y
 CONFIG_MMC_OMAP_HS=y
-CONFIG_MMC_DW=m
-# CONFIG_MMC_DW_IDMAC is not set
+# CONFIG_MMC_DW is not set
 CONFIG_MMC_VUB300=m
 CONFIG_MMC_USHC=m
 CONFIG_MEMSTICK=m
@@ -3095,8 +3234,6 @@ CONFIG_LEDS_CLASS=y
 CONFIG_LEDS_PCA9532=m
 # CONFIG_LEDS_PCA9532_GPIO is not set
 CONFIG_LEDS_GPIO=m
-CONFIG_LEDS_GPIO_PLATFORM=y
-CONFIG_LEDS_GPIO_OF=y
 CONFIG_LEDS_LP3944=m
 # CONFIG_LEDS_LP5521 is not set
 # CONFIG_LEDS_LP5523 is not set
@@ -3105,6 +3242,7 @@ CONFIG_LEDS_PCA955X=m
 # CONFIG_LEDS_REGULATOR is not set
 CONFIG_LEDS_BD2802=m
 # CONFIG_LEDS_LT3593 is not set
+# CONFIG_LEDS_RENESAS_TPU is not set
 CONFIG_LEDS_TRIGGERS=y
 
 #
@@ -3119,7 +3257,6 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
 #
 # iptables trigger is under Netfilter config (LED target)
 #
-# CONFIG_NFC_DEVICES is not set
 # CONFIG_ACCESSIBILITY is not set
 CONFIG_RTC_LIB=y
 CONFIG_RTC_CLASS=y
@@ -3206,17 +3343,22 @@ CONFIG_ASYNC_TX_DMA=y
 CONFIG_UIO=m
 CONFIG_UIO_PDRV=m
 CONFIG_UIO_PDRV_GENIRQ=m
+
+#
+# Virtio drivers
+#
+# CONFIG_VIRTIO_BALLOON is not set
+# CONFIG_VIRTIO_MMIO is not set
 CONFIG_STAGING=y
-# CONFIG_VIDEO_TM6000 is not set
 # CONFIG_USBIP_CORE is not set
 # CONFIG_W35UND is not set
 # CONFIG_PRISM2_USB is not set
 # CONFIG_ECHO is not set
-# CONFIG_BRCMUTIL is not set
 # CONFIG_ASUS_OLED is not set
 # CONFIG_PANEL is not set
 CONFIG_R8712U=m
-CONFIG_R8712_AP=y
+CONFIG_RTS5139=m
+# CONFIG_RTS5139_DEBUG is not set
 # CONFIG_TRANZPORT is not set
 # CONFIG_POHMELFS is not set
 # CONFIG_LINE6_USB is not set
@@ -3227,28 +3369,7 @@ CONFIG_R8712_AP=y
 # CONFIG_XVMALLOC is not set
 # CONFIG_ZRAM is not set
 # CONFIG_FB_SM7XX is not set
-# CONFIG_LIRC_STAGING is not set
-# CONFIG_EASYCAP is not set
 # CONFIG_TIDSPBRIDGE is not set
-# CONFIG_MACH_OMAP3_WESTBRIDGE_AST_PNAND_HAL is not set
-CONFIG_MACH_NO_WESTBRIDGE=y
-CONFIG_ATH6K_LEGACY=m
-CONFIG_AR600x_SD31_XXX=y
-# CONFIG_AR600x_WB31_XXX is not set
-# CONFIG_AR600x_SD32_XXX is not set
-# CONFIG_AR600x_CUSTOM_XXX is not set
-CONFIG_ATH6KL_ENABLE_COEXISTENCE=y
-CONFIG_AR600x_DUAL_ANTENNA=y
-# CONFIG_AR600x_SINGLE_ANTENNA is not set
-# CONFIG_AR600x_BT_QCOM is not set
-# CONFIG_AR600x_BT_CSR is not set
-CONFIG_AR600x_BT_AR3001=y
-CONFIG_ATH6KL_HCI_BRIDGE=y
-# CONFIG_ATH6KL_CONFIG_GPIO_BT_RESET is not set
-CONFIG_ATH6KL_HTC_RAW_INTERFACE=y
-# CONFIG_ATH6KL_VIRTUAL_SCATTER_GATHER is not set
-# CONFIG_ATH6KL_SKIP_ABI_VERSION_CHECK is not set
-# CONFIG_ATH6KL_DEBUG is not set
 CONFIG_USB_ENESTORAGE=m
 # CONFIG_BCM_WIMAX is not set
 # CONFIG_FT1000 is not set
@@ -3259,13 +3380,18 @@ CONFIG_USB_ENESTORAGE=m
 # CONFIG_SPEAKUP is not set
 # CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set
 # CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set
+# CONFIG_STAGING_MEDIA is not set
+CONFIG_CLKDEV_LOOKUP=y
+CONFIG_HWSPINLOCK=m
 
 #
-# Altera FPGA firmware download module
+# Hardware Spinlock drivers
 #
-# CONFIG_ALTERA_STAPL is not set
-CONFIG_CLKDEV_LOOKUP=y
-# CONFIG_HWSPINLOCK is not set
+CONFIG_HWSPINLOCK_OMAP=m
+CONFIG_CLKSRC_MMIO=y
+# CONFIG_IOMMU_SUPPORT is not set
+# CONFIG_VIRT_DRIVERS is not set
+# CONFIG_PM_DEVFREQ is not set
 
 #
 # File systems
@@ -3419,7 +3545,6 @@ CONFIG_NFS_V4=y
 CONFIG_NFS_USE_KERNEL_DNS=y
 # CONFIG_NFS_USE_NEW_IDMAPPER is not set
 CONFIG_NFSD=m
-CONFIG_NFSD_DEPRECATED=y
 CONFIG_NFSD_V2_ACL=y
 CONFIG_NFSD_V3=y
 CONFIG_NFSD_V3_ACL=y
@@ -3547,7 +3672,7 @@ CONFIG_TIMER_STATS=y
 # CONFIG_PROVE_LOCKING is not set
 # CONFIG_SPARSE_RCU_POINTER is not set
 # CONFIG_LOCK_STAT is not set
-# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
 # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
 # CONFIG_DEBUG_STACK_USAGE is not set
 # CONFIG_DEBUG_KOBJECT is not set
@@ -3592,12 +3717,12 @@ CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_ARM_UNWIND is not set
 # CONFIG_DEBUG_USER is not set
 # CONFIG_DEBUG_LL is not set
-# CONFIG_OC_ETM is not set
 
 #
 # Security options
 #
 CONFIG_KEYS=y
+# CONFIG_ENCRYPTED_KEYS is not set
 # CONFIG_KEYS_DEBUG_PROC_KEYS is not set
 # CONFIG_SECURITY_DMESG_RESTRICT is not set
 # CONFIG_SECURITY is not set
@@ -3629,6 +3754,7 @@ CONFIG_CRYPTO_PCOMP=m
 CONFIG_CRYPTO_PCOMP2=y
 CONFIG_CRYPTO_MANAGER=y
 CONFIG_CRYPTO_MANAGER2=y
+CONFIG_CRYPTO_USER=m
 CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
 CONFIG_CRYPTO_GF128MUL=m
 # CONFIG_CRYPTO_NULL is not set
@@ -3688,6 +3814,7 @@ CONFIG_CRYPTO_AES=m
 CONFIG_CRYPTO_ANUBIS=m
 CONFIG_CRYPTO_ARC4=m
 CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_BLOWFISH_COMMON=m
 CONFIG_CRYPTO_CAMELLIA=m
 CONFIG_CRYPTO_CAST5=m
 CONFIG_CRYPTO_CAST6=m
@@ -3732,10 +3859,11 @@ CONFIG_CRC_ITU_T=m
 CONFIG_CRC32=y
 CONFIG_CRC7=m
 CONFIG_LIBCRC32C=m
+CONFIG_CRC8=m
 CONFIG_AUDIT_GENERIC=y
 CONFIG_ZLIB_INFLATE=y
 CONFIG_ZLIB_DEFLATE=y
-CONFIG_LZO_COMPRESS=m
+CONFIG_LZO_COMPRESS=y
 CONFIG_LZO_DECOMPRESS=y
 CONFIG_XZ_DEC=y
 CONFIG_XZ_DEC_X86=y
@@ -3762,3 +3890,4 @@ CONFIG_CPU_RMAP=y
 CONFIG_NLATTR=y
 CONFIG_GENERIC_ATOMIC64=y
 CONFIG_AVERAGE=y
+CONFIG_CORDIC=m
index b8bf4fcb5edab46fa971182445cd852a00496bc4..c5a9062cb2a7a6c6bc7f5c7ef05b7ac8d2bcc23e 100644 (file)
@@ -1,9 +1,10 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm 2.6.41.10 Kernel Configuration
+# Linux/arm 2.6.42.18 Kernel Configuration
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_HAVE_SCHED_CLOCK=y
 CONFIG_GENERIC_GPIO=y
 # CONFIG_ARCH_USES_GETTIMEOFFSET is not set
 CONFIG_GENERIC_CLOCKEVENTS=y
@@ -21,7 +22,9 @@ CONFIG_GENERIC_HWEIGHT=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
 CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_VECTORS_BASE=0xffff0000
-# CONFIG_ARM_PATCH_PHYS_VIRT is not set
+CONFIG_ARM_PATCH_PHYS_VIRT=y
+CONFIG_NEED_MACH_MEMORY_H=y
+CONFIG_GENERIC_BUG=y
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 CONFIG_HAVE_IRQ_WORK=y
 
@@ -89,7 +92,7 @@ CONFIG_RD_BZIP2=y
 CONFIG_RD_LZMA=y
 CONFIG_RD_XZ=y
 CONFIG_RD_LZO=y
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
 CONFIG_EXPERT=y
@@ -149,7 +152,7 @@ CONFIG_MODULE_FORCE_UNLOAD=y
 CONFIG_BLOCK=y
 CONFIG_LBDAF=y
 CONFIG_BLK_DEV_BSG=y
-# CONFIG_BLK_DEV_BSGLIB is not set
+CONFIG_BLK_DEV_BSGLIB=y
 # CONFIG_BLK_DEV_INTEGRITY is not set
 
 #
@@ -203,6 +206,7 @@ CONFIG_MMU=y
 # CONFIG_ARCH_VEXPRESS is not set
 # CONFIG_ARCH_AT91 is not set
 # CONFIG_ARCH_BCMRING is not set
+# CONFIG_ARCH_HIGHBANK is not set
 # CONFIG_ARCH_CLPS711X is not set
 # CONFIG_ARCH_CNS3XXX is not set
 # CONFIG_ARCH_GEMINI is not set
@@ -228,8 +232,8 @@ CONFIG_MMU=y
 # CONFIG_ARCH_MMP is not set
 # CONFIG_ARCH_KS8695 is not set
 # CONFIG_ARCH_W90X900 is not set
-# CONFIG_ARCH_NUC93X is not set
 # CONFIG_ARCH_TEGRA is not set
+# CONFIG_ARCH_PICOXCELL is not set
 # CONFIG_ARCH_PNX4008 is not set
 # CONFIG_ARCH_PXA is not set
 # CONFIG_ARCH_MSM is not set
@@ -241,7 +245,7 @@ CONFIG_MMU=y
 # CONFIG_ARCH_S5P64X0 is not set
 # CONFIG_ARCH_S5PC100 is not set
 # CONFIG_ARCH_S5PV210 is not set
-# CONFIG_ARCH_EXYNOS4 is not set
+# CONFIG_ARCH_EXYNOS is not set
 # CONFIG_ARCH_SHARK is not set
 # CONFIG_ARCH_TCC_926 is not set
 # CONFIG_ARCH_U300 is not set
@@ -293,8 +297,10 @@ CONFIG_ARM_THUMB=y
 CONFIG_ARM_L1_CACHE_SHIFT=5
 CONFIG_ARM_DMA_MEM_BUFFERABLE=y
 CONFIG_CPU_HAS_PMU=y
+# CONFIG_ARM_ERRATA_326103 is not set
 CONFIG_ARM_ERRATA_411920=y
 # CONFIG_ARM_ERRATA_364296 is not set
+CONFIG_PL330=y
 
 #
 # Bus support
@@ -353,6 +359,7 @@ CONFIG_UACCESS_WITH_MEMCPY=y
 CONFIG_USE_OF=y
 CONFIG_ZBOOT_ROM_TEXT=0x0
 CONFIG_ZBOOT_ROM_BSS=0x0
+# CONFIG_ARM_APPENDED_DTB is not set
 CONFIG_CMDLINE="dwc_otg.lpm_enable=0 console=tty1 kgdboc=ttyAMA0,115200 root=/dev/mmcblk0p3 rootwait ro"
 CONFIG_CMDLINE_FROM_BOOTLOADER=y
 # CONFIG_CMDLINE_EXTEND is not set
@@ -398,7 +405,9 @@ CONFIG_PM=y
 # CONFIG_PM_DEBUG is not set
 # CONFIG_APM_EMULATION is not set
 CONFIG_PM_CLK=y
+CONFIG_CPU_PM=y
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARM_CPU_SUSPEND=y
 CONFIG_NET=y
 
 #
@@ -765,6 +774,7 @@ CONFIG_LLC=m
 # CONFIG_WAN_ROUTER is not set
 # CONFIG_PHONET is not set
 CONFIG_IEEE802154=m
+CONFIG_IEEE802154_6LOWPAN=m
 CONFIG_NET_SCHED=y
 
 #
@@ -941,6 +951,7 @@ CONFIG_CAIF=m
 CONFIG_CAIF_NETDEV=m
 CONFIG_CEPH_LIB=m
 # CONFIG_CEPH_LIB_PRETTYDEBUG is not set
+# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set
 # CONFIG_NFC is not set
 
 #
@@ -962,11 +973,10 @@ CONFIG_EXTRA_FIRMWARE=""
 # CONFIG_SYS_HYPERVISOR is not set
 CONFIG_CONNECTOR=m
 CONFIG_MTD=m
-# CONFIG_MTD_DEBUG is not set
-CONFIG_MTD_TESTS=m
+# CONFIG_MTD_TESTS is not set
 # CONFIG_MTD_REDBOOT_PARTS is not set
 # CONFIG_MTD_AFS_PARTS is not set
-CONFIG_MTD_OF_PARTS=y
+CONFIG_MTD_OF_PARTS=m
 CONFIG_MTD_AR7_PARTS=m
 
 #
@@ -1029,6 +1039,7 @@ CONFIG_MTD_PHYSMAP=m
 # CONFIG_MTD_DOC2000 is not set
 # CONFIG_MTD_DOC2001 is not set
 # CONFIG_MTD_DOC2001PLUS is not set
+# CONFIG_MTD_DOCG3 is not set
 CONFIG_MTD_NAND_ECC=m
 # CONFIG_MTD_NAND_ECC_SMC is not set
 # CONFIG_MTD_NAND is not set
@@ -1082,6 +1093,7 @@ CONFIG_MG_DISK_RES=0
 # CONFIG_SENSORS_LIS3LV02D is not set
 CONFIG_MISC_DEVICES=y
 # CONFIG_AD525X_DPOT is not set
+# CONFIG_ATMEL_PWM is not set
 # CONFIG_ICS932S401 is not set
 CONFIG_ENCLOSURE_SERVICES=m
 # CONFIG_APDS9802ALS is not set
@@ -1117,9 +1129,12 @@ CONFIG_IWMC3200TOP=m
 CONFIG_TI_ST=m
 # CONFIG_SENSORS_LIS3_SPI is not set
 # CONFIG_SENSORS_LIS3_I2C is not set
+
+#
+# Altera FPGA firmware download module
+#
+# CONFIG_ALTERA_STAPL is not set
 CONFIG_BCM2708_VCHIQ=y
-CONFIG_HAVE_IDE=y
-# CONFIG_IDE is not set
 
 #
 # SCSI device support
@@ -1202,6 +1217,7 @@ CONFIG_SATA_MV=m
 # PIO-only SFF controllers
 #
 CONFIG_PATA_PLATFORM=m
+CONFIG_PATA_OF_PLATFORM=m
 
 #
 # Generic fallback / legacy drivers
@@ -1217,8 +1233,13 @@ CONFIG_MD_MULTIPATH=m
 # CONFIG_MD_FAULTY is not set
 CONFIG_BLK_DEV_DM=m
 # CONFIG_DM_DEBUG is not set
+CONFIG_DM_BUFIO=m
+CONFIG_DM_PERSISTENT_DATA=m
 CONFIG_DM_CRYPT=m
 CONFIG_DM_SNAPSHOT=m
+CONFIG_DM_THIN_PROVISIONING=m
+# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
+# CONFIG_DM_DEBUG_SPACE_MAPS is not set
 CONFIG_DM_MIRROR=m
 CONFIG_DM_RAID=m
 CONFIG_DM_LOG_USERSPACE=m
@@ -1231,11 +1252,9 @@ CONFIG_DM_UEVENT=y
 CONFIG_DM_FLAKEY=m
 # CONFIG_TARGET_CORE is not set
 CONFIG_NETDEVICES=y
-CONFIG_IFB=m
-CONFIG_DUMMY=m
+CONFIG_NET_CORE=y
 CONFIG_BONDING=m
-CONFIG_MACVLAN=m
-CONFIG_MACVTAP=m
+CONFIG_DUMMY=m
 CONFIG_EQUALIZER=m
 CONFIG_IMQ=m
 # CONFIG_IMQ_BEHAVIOR_AA is not set
@@ -1243,9 +1262,62 @@ CONFIG_IMQ_BEHAVIOR_AB=y
 # CONFIG_IMQ_BEHAVIOR_BA is not set
 # CONFIG_IMQ_BEHAVIOR_BB is not set
 CONFIG_IMQ_NUM_DEVS=2
+CONFIG_MII=m
+# CONFIG_IEEE802154_DRIVERS is not set
+CONFIG_IFB=m
+CONFIG_MACVLAN=m
+CONFIG_MACVTAP=m
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
 CONFIG_TUN=m
 CONFIG_VETH=m
-CONFIG_MII=m
+CONFIG_ATM_DRIVERS=y
+# CONFIG_ATM_DUMMY is not set
+CONFIG_ATM_TCP=m
+
+#
+# CAIF transport drivers
+#
+# CONFIG_CAIF_TTY is not set
+# CONFIG_CAIF_SPI_SLAVE is not set
+# CONFIG_CAIF_HSI is not set
+CONFIG_ETHERNET=y
+CONFIG_NET_VENDOR_BROADCOM=y
+CONFIG_B44=m
+CONFIG_NET_VENDOR_CHELSIO=y
+CONFIG_DM9000=m
+# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
+CONFIG_DNET=m
+CONFIG_NET_VENDOR_FARADAY=y
+# CONFIG_FTMAC100 is not set
+# CONFIG_FTGMAC100 is not set
+CONFIG_NET_VENDOR_INTEL=y
+CONFIG_NET_VENDOR_I825XX=y
+CONFIG_NET_VENDOR_MARVELL=y
+CONFIG_NET_VENDOR_MICREL=y
+# CONFIG_KS8842 is not set
+# CONFIG_KS8851 is not set
+CONFIG_KS8851_MLL=m
+CONFIG_NET_VENDOR_MICROCHIP=y
+# CONFIG_ENC28J60 is not set
+CONFIG_NET_VENDOR_NATSEMI=y
+CONFIG_NET_VENDOR_8390=y
+CONFIG_AX88796=m
+# CONFIG_AX88796_93CX6 is not set
+CONFIG_ETHOC=m
+CONFIG_NET_VENDOR_SEEQ=y
+CONFIG_SEEQ8005=m
+CONFIG_NET_VENDOR_SMSC=y
+CONFIG_SMC91X=m
+CONFIG_SMC911X=m
+CONFIG_SMSC911X=m
+# CONFIG_SMSC911X_ARCH_HOOKS is not set
+CONFIG_NET_VENDOR_STMICRO=y
+CONFIG_STMMAC_ETH=m
+# CONFIG_STMMAC_DA is not set
+CONFIG_STMMAC_RING=y
+# CONFIG_STMMAC_CHAINED is not set
 CONFIG_PHYLIB=y
 
 #
@@ -1268,37 +1340,59 @@ CONFIG_MICREL_PHY=m
 # CONFIG_FIXED_PHY is not set
 CONFIG_MDIO_BITBANG=m
 # CONFIG_MDIO_GPIO is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_AX88796=m
-# CONFIG_AX88796_93CX6 is not set
-CONFIG_SMC91X=m
-CONFIG_DM9000=m
-CONFIG_DM9000_DEBUGLEVEL=4
-# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
-# CONFIG_ENC28J60 is not set
-CONFIG_ETHOC=m
-CONFIG_SMC911X=m
-CONFIG_SMSC911X=m
-# CONFIG_SMSC911X_ARCH_HOOKS is not set
-CONFIG_DNET=m
-# CONFIG_IBM_NEW_EMAC_ZMII is not set
-# CONFIG_IBM_NEW_EMAC_RGMII is not set
-# CONFIG_IBM_NEW_EMAC_TAH is not set
-# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
-# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
-# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
-# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
-CONFIG_B44=m
-# CONFIG_KS8842 is not set
-# CONFIG_KS8851 is not set
-CONFIG_KS8851_MLL=m
-# CONFIG_FTMAC100 is not set
-CONFIG_NETDEV_1000=y
-CONFIG_STMMAC_ETH=m
-# CONFIG_STMMAC_DA is not set
-# CONFIG_STMMAC_DUAL_MAC is not set
-# CONFIG_FTGMAC100 is not set
-CONFIG_NETDEV_10000=y
+CONFIG_PPP=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_MPPE=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPPOATM=m
+CONFIG_PPPOE=m
+CONFIG_PPTP=m
+CONFIG_PPPOL2TP=m
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_SLIP=m
+CONFIG_SLHC=m
+CONFIG_SLIP_COMPRESSED=y
+CONFIG_SLIP_SMART=y
+CONFIG_SLIP_MODE_SLIP6=y
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_CDCETHER=m
+CONFIG_USB_NET_CDC_EEM=m
+CONFIG_USB_NET_CDC_NCM=m
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_SMSC75XX=m
+CONFIG_USB_NET_SMSC95XX=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+# CONFIG_USB_EPSON2888 is not set
+CONFIG_USB_KC2190=y
+CONFIG_USB_NET_ZAURUS=m
+CONFIG_USB_NET_CX82310_ETH=m
+CONFIG_USB_NET_KALMIA=m
+CONFIG_USB_HSO=m
+CONFIG_USB_NET_INT51X1=m
+CONFIG_USB_IPHETH=m
+CONFIG_USB_SIERRA_NET=m
+CONFIG_USB_VL600=m
 CONFIG_WLAN=y
 CONFIG_LIBERTAS_THINFIRM=m
 # CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
@@ -1320,6 +1414,9 @@ CONFIG_ATH9K_HTC=m
 CONFIG_CARL9170=m
 CONFIG_CARL9170_LEDS=y
 CONFIG_CARL9170_WPC=y
+CONFIG_CARL9170_HWRNG=y
+CONFIG_ATH6KL=m
+# CONFIG_ATH6KL_DEBUG is not set
 CONFIG_B43=m
 CONFIG_B43_BCMA=y
 CONFIG_B43_SSB=y
@@ -1328,6 +1425,7 @@ CONFIG_B43_BCMA_PIO=y
 CONFIG_B43_PIO=y
 CONFIG_B43_PHY_N=y
 CONFIG_B43_PHY_LP=y
+CONFIG_B43_PHY_HT=y
 CONFIG_B43_LEDS=y
 CONFIG_B43_HWRNG=y
 # CONFIG_B43_DEBUG is not set
@@ -1340,6 +1438,9 @@ CONFIG_B43LEGACY_PIO=y
 CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
 # CONFIG_B43LEGACY_DMA_MODE is not set
 # CONFIG_B43LEGACY_PIO_MODE is not set
+CONFIG_BRCMUTIL=m
+CONFIG_BRCMFMAC=m
+# CONFIG_BRCMDBG is not set
 CONFIG_HOSTAP=m
 CONFIG_HOSTAP_FIRMWARE=y
 # CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
@@ -1369,8 +1470,6 @@ CONFIG_RT2X00_LIB_FIRMWARE=y
 CONFIG_RT2X00_LIB_CRYPTO=y
 CONFIG_RT2X00_LIB_LEDS=y
 # CONFIG_RT2X00_DEBUG is not set
-CONFIG_RTL8192SE=m
-CONFIG_RTL8192DE=m
 CONFIG_RTL8192CU=m
 CONFIG_RTLWIFI=m
 CONFIG_RTL8192C_COMMON=m
@@ -1379,7 +1478,6 @@ CONFIG_WL1251=m
 CONFIG_WL1251_SDIO=m
 CONFIG_WL12XX_MENU=m
 CONFIG_WL12XX=m
-# CONFIG_WL12XX_HT is not set
 # CONFIG_WL12XX_SPI is not set
 CONFIG_WL12XX_SDIO=m
 CONFIG_WL12XX_SDIO_TEST=m
@@ -1392,42 +1490,6 @@ CONFIG_MWIFIEX_SDIO=m
 #
 # Enable WiMAX (Networking options) to see the WiMAX drivers
 #
-
-#
-# USB Network Adapters
-#
-CONFIG_USB_CATC=m
-CONFIG_USB_KAWETH=m
-CONFIG_USB_PEGASUS=m
-CONFIG_USB_RTL8150=m
-CONFIG_USB_USBNET=m
-CONFIG_USB_NET_AX8817X=m
-CONFIG_USB_NET_CDCETHER=m
-CONFIG_USB_NET_CDC_EEM=m
-CONFIG_USB_NET_CDC_NCM=m
-CONFIG_USB_NET_DM9601=m
-CONFIG_USB_NET_SMSC75XX=m
-CONFIG_USB_NET_SMSC95XX=m
-CONFIG_USB_NET_GL620A=m
-CONFIG_USB_NET_NET1080=m
-CONFIG_USB_NET_PLUSB=m
-CONFIG_USB_NET_MCS7830=m
-CONFIG_USB_NET_RNDIS_HOST=m
-CONFIG_USB_NET_CDC_SUBSET=m
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-# CONFIG_USB_EPSON2888 is not set
-CONFIG_USB_KC2190=y
-CONFIG_USB_NET_ZAURUS=m
-CONFIG_USB_NET_CX82310_ETH=m
-CONFIG_USB_NET_KALMIA=m
-CONFIG_USB_HSO=m
-CONFIG_USB_NET_INT51X1=m
-CONFIG_USB_IPHETH=m
-CONFIG_USB_SIERRA_NET=m
-CONFIG_USB_VL600=m
 CONFIG_WAN=y
 CONFIG_HDLC=m
 CONFIG_HDLC_RAW=m
@@ -1441,37 +1503,6 @@ CONFIG_HDLC_PPP=m
 #
 CONFIG_DLCI=m
 CONFIG_DLCI_MAX=8
-CONFIG_ATM_DRIVERS=y
-# CONFIG_ATM_DUMMY is not set
-CONFIG_ATM_TCP=m
-# CONFIG_IEEE802154_DRIVERS is not set
-
-#
-# CAIF transport drivers
-#
-# CONFIG_CAIF_TTY is not set
-# CONFIG_CAIF_SPI_SLAVE is not set
-# CONFIG_CAIF_HSI is not set
-CONFIG_PPP=m
-CONFIG_PPP_MULTILINK=y
-CONFIG_PPP_FILTER=y
-CONFIG_PPP_ASYNC=m
-CONFIG_PPP_SYNC_TTY=m
-CONFIG_PPP_DEFLATE=m
-CONFIG_PPP_BSDCOMP=m
-CONFIG_PPP_MPPE=m
-CONFIG_PPPOE=m
-CONFIG_PPTP=m
-CONFIG_PPPOATM=m
-CONFIG_PPPOL2TP=m
-CONFIG_SLIP=m
-CONFIG_SLIP_COMPRESSED=y
-CONFIG_SLHC=m
-CONFIG_SLIP_SMART=y
-CONFIG_SLIP_MODE_SLIP6=y
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
 CONFIG_ISDN=y
 # CONFIG_ISDN_I4L is not set
 # CONFIG_ISDN_CAPI is not set
@@ -1519,12 +1550,10 @@ CONFIG_INPUT_EVDEV=m
 # CONFIG_INPUT_TABLET is not set
 # CONFIG_INPUT_TOUCHSCREEN is not set
 CONFIG_INPUT_MISC=y
-CONFIG_INPUT_AD714X=m
-CONFIG_INPUT_AD714X_I2C=m
-CONFIG_INPUT_AD714X_SPI=m
+# CONFIG_INPUT_AD714X is not set
+# CONFIG_INPUT_BMA150 is not set
 # CONFIG_INPUT_MMA8450 is not set
 # CONFIG_INPUT_MPU3050 is not set
-CONFIG_INPUT_ATI_REMOTE=m
 CONFIG_INPUT_ATI_REMOTE2=m
 CONFIG_INPUT_KEYSPAN_REMOTE=m
 # CONFIG_INPUT_KXTJ9 is not set
@@ -1533,12 +1562,9 @@ CONFIG_INPUT_YEALINK=m
 CONFIG_INPUT_CM109=m
 CONFIG_INPUT_UINPUT=m
 # CONFIG_INPUT_PCF8574 is not set
-CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
-CONFIG_INPUT_ADXL34X=m
-CONFIG_INPUT_ADXL34X_I2C=m
-CONFIG_INPUT_ADXL34X_SPI=m
-CONFIG_INPUT_CMA3000=m
-# CONFIG_INPUT_CMA3000_I2C is not set
+# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
+# CONFIG_INPUT_ADXL34X is not set
+# CONFIG_INPUT_CMA3000 is not set
 
 #
 # Hardware I/O ports
@@ -1560,6 +1586,7 @@ CONFIG_GAMEPORT_L4=m
 CONFIG_VT=y
 CONFIG_CONSOLE_TRANSLATIONS=y
 CONFIG_VT_CONSOLE=y
+CONFIG_VT_CONSOLE_SLEEP=y
 CONFIG_HW_CONSOLE=y
 CONFIG_VT_HW_CONSOLE_BINDING=y
 CONFIG_UNIX98_PTYS=y
@@ -1624,7 +1651,8 @@ CONFIG_I2C_ALGOPCA=m
 #
 # I2C system bus drivers (mostly embedded / system-on-chip)
 #
-CONFIG_I2C_DESIGNWARE=m
+CONFIG_I2C_BCM2708=m
+# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
 CONFIG_I2C_GPIO=m
 CONFIG_I2C_OCORES=m
 CONFIG_I2C_PCA_PLATFORM=m
@@ -1654,21 +1682,21 @@ CONFIG_SPI_MASTER=y
 #
 # SPI Master Controller Drivers
 #
-CONFIG_SPI_ALTERA=m
+# CONFIG_SPI_ALTERA is not set
+CONFIG_SPI_BCM2708=m
 CONFIG_SPI_BITBANG=m
 CONFIG_SPI_GPIO=m
-CONFIG_SPI_OC_TINY=m
-CONFIG_SPI_PL022=m
+# CONFIG_SPI_OC_TINY is not set
+# CONFIG_SPI_PL022 is not set
 # CONFIG_SPI_PXA2XX_PCI is not set
 # CONFIG_SPI_XILINX is not set
-CONFIG_SPI_DESIGNWARE=m
-CONFIG_SPI_DW_MMIO=m
+# CONFIG_SPI_DESIGNWARE is not set
 
 #
 # SPI Protocol Masters
 #
 CONFIG_SPI_SPIDEV=m
-CONFIG_SPI_TLE62X0=m
+# CONFIG_SPI_TLE62X0 is not set
 
 #
 # PPS support
@@ -1733,7 +1761,7 @@ CONFIG_W1_CON=y
 #
 CONFIG_W1_MASTER_DS2490=m
 CONFIG_W1_MASTER_DS2482=m
-CONFIG_W1_MASTER_DS1WM=m
+# CONFIG_W1_MASTER_DS1WM is not set
 CONFIG_W1_MASTER_GPIO=m
 
 #
@@ -1757,6 +1785,7 @@ CONFIG_HWMON_VID=m
 #
 # Native drivers
 #
+CONFIG_SENSORS_AD7314=m
 CONFIG_SENSORS_AD7414=m
 CONFIG_SENSORS_AD7418=m
 CONFIG_SENSORS_ADCXX=m
@@ -1818,11 +1847,13 @@ CONFIG_PMBUS=m
 CONFIG_SENSORS_PMBUS=m
 CONFIG_SENSORS_ADM1275=m
 CONFIG_SENSORS_LM25066=m
+CONFIG_SENSORS_LTC2978=m
 CONFIG_SENSORS_MAX16064=m
 CONFIG_SENSORS_MAX34440=m
 CONFIG_SENSORS_MAX8688=m
 CONFIG_SENSORS_UCD9000=m
 CONFIG_SENSORS_UCD9200=m
+CONFIG_SENSORS_ZL6100=m
 CONFIG_SENSORS_SHT15=m
 CONFIG_SENSORS_SHT21=m
 CONFIG_SENSORS_SMM665=m
@@ -1864,7 +1895,7 @@ CONFIG_WATCHDOG=y
 #
 # Watchdog Device Drivers
 #
-# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_SOFT_WATCHDOG=m
 # CONFIG_ARM_SP805_WATCHDOG is not set
 # CONFIG_DW_WATCHDOG is not set
 # CONFIG_MAX63XX_WATCHDOG is not set
@@ -1873,7 +1904,7 @@ CONFIG_BCM2708_WDT=m
 #
 # USB-based Watchdog Cards
 #
-# CONFIG_USBPCWATCHDOG is not set
+CONFIG_USBPCWATCHDOG=m
 CONFIG_SSB_POSSIBLE=y
 
 #
@@ -1893,13 +1924,15 @@ CONFIG_BCMA_POSSIBLE=y
 CONFIG_BCMA=m
 CONFIG_BCMA_BLOCKIO=y
 # CONFIG_BCMA_DEBUG is not set
-CONFIG_MFD_SUPPORT=y
+
+#
+# Multifunction device drivers
+#
 # CONFIG_MFD_CORE is not set
 # CONFIG_MFD_SM501 is not set
 # CONFIG_MFD_ASIC3 is not set
 # CONFIG_HTC_EGPIO is not set
 # CONFIG_HTC_PASIC3 is not set
-# CONFIG_UCB1400_CORE is not set
 # CONFIG_TPS6105X is not set
 # CONFIG_TPS65010 is not set
 # CONFIG_TPS6507X is not set
@@ -1942,6 +1975,7 @@ CONFIG_IR_SONY_DECODER=m
 CONFIG_IR_RC5_SZ_DECODER=m
 CONFIG_IR_MCE_KBD_DECODER=m
 CONFIG_IR_LIRC_CODEC=m
+CONFIG_RC_ATI_REMOTE=m
 CONFIG_IR_IMON=m
 CONFIG_IR_MCEUSB=m
 CONFIG_IR_REDRAT3=m
@@ -1973,6 +2007,7 @@ CONFIG_MEDIA_TUNER_TDA18212=m
 CONFIG_VIDEO_V4L2=m
 CONFIG_VIDEOBUF_GEN=m
 CONFIG_VIDEOBUF_VMALLOC=m
+CONFIG_VIDEOBUF_DMA_CONTIG=m
 CONFIG_VIDEOBUF_DVB=m
 CONFIG_VIDEO_TVEEPROM=m
 CONFIG_VIDEO_TUNER=m
@@ -2014,7 +2049,7 @@ CONFIG_VIDEO_WM8775=m
 #
 # Video decoders
 #
-# CONFIG_VIDEO_ADV7180 is not set
+CONFIG_VIDEO_ADV7180=m
 # CONFIG_VIDEO_BT819 is not set
 # CONFIG_VIDEO_BT856 is not set
 # CONFIG_VIDEO_BT866 is not set
@@ -2054,6 +2089,7 @@ CONFIG_VIDEO_CX2341X=m
 # CONFIG_VIDEO_OV7670 is not set
 # CONFIG_VIDEO_MT9V011 is not set
 # CONFIG_VIDEO_TCM825X is not set
+CONFIG_VIDEO_SR030PC30=m
 
 #
 # Flash devices
@@ -2072,10 +2108,8 @@ CONFIG_VIDEO_CX2341X=m
 # CONFIG_VIDEO_M52790 is not set
 # CONFIG_VIDEO_VIVI is not set
 CONFIG_VIDEO_CPIA2=m
-# CONFIG_VIDEO_TIMBERDALE is not set
+CONFIG_VIDEO_TIMBERDALE=m
 CONFIG_VIDEO_AU0828=m
-CONFIG_VIDEO_SR030PC30=m
-CONFIG_VIDEO_NOON010PC30=m
 CONFIG_SOC_CAMERA=m
 CONFIG_SOC_CAMERA_IMX074=m
 CONFIG_SOC_CAMERA_MT9M001=m
@@ -2098,50 +2132,51 @@ CONFIG_V4L_USB_DRIVERS=y
 CONFIG_USB_VIDEO_CLASS=m
 CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
 CONFIG_USB_GSPCA=m
-# CONFIG_USB_M5602 is not set
-# CONFIG_USB_STV06XX is not set
-# CONFIG_USB_GL860 is not set
-# CONFIG_USB_GSPCA_BENQ is not set
-# CONFIG_USB_GSPCA_CONEX is not set
-# CONFIG_USB_GSPCA_CPIA1 is not set
-# CONFIG_USB_GSPCA_ETOMS is not set
-# CONFIG_USB_GSPCA_FINEPIX is not set
-# CONFIG_USB_GSPCA_JEILINJ is not set
-# CONFIG_USB_GSPCA_KINECT is not set
-# CONFIG_USB_GSPCA_KONICA is not set
-# CONFIG_USB_GSPCA_MARS is not set
-# CONFIG_USB_GSPCA_MR97310A is not set
-# CONFIG_USB_GSPCA_NW80X is not set
-# CONFIG_USB_GSPCA_OV519 is not set
-# CONFIG_USB_GSPCA_OV534 is not set
-# CONFIG_USB_GSPCA_OV534_9 is not set
-# CONFIG_USB_GSPCA_PAC207 is not set
-# CONFIG_USB_GSPCA_PAC7302 is not set
-# CONFIG_USB_GSPCA_PAC7311 is not set
-# CONFIG_USB_GSPCA_SE401 is not set
-# CONFIG_USB_GSPCA_SN9C2028 is not set
-# CONFIG_USB_GSPCA_SN9C20X is not set
-# CONFIG_USB_GSPCA_SONIXB is not set
-# CONFIG_USB_GSPCA_SONIXJ is not set
-# CONFIG_USB_GSPCA_SPCA500 is not set
-# CONFIG_USB_GSPCA_SPCA501 is not set
-# CONFIG_USB_GSPCA_SPCA505 is not set
-# CONFIG_USB_GSPCA_SPCA506 is not set
-# CONFIG_USB_GSPCA_SPCA508 is not set
-# CONFIG_USB_GSPCA_SPCA561 is not set
-# CONFIG_USB_GSPCA_SPCA1528 is not set
-# CONFIG_USB_GSPCA_SQ905 is not set
-# CONFIG_USB_GSPCA_SQ905C is not set
-# CONFIG_USB_GSPCA_SQ930X is not set
-# CONFIG_USB_GSPCA_STK014 is not set
-# CONFIG_USB_GSPCA_STV0680 is not set
-# CONFIG_USB_GSPCA_SUNPLUS is not set
-# CONFIG_USB_GSPCA_T613 is not set
-# CONFIG_USB_GSPCA_TV8532 is not set
-# CONFIG_USB_GSPCA_VC032X is not set
-# CONFIG_USB_GSPCA_VICAM is not set
-# CONFIG_USB_GSPCA_XIRLINK_CIT is not set
-# CONFIG_USB_GSPCA_ZC3XX is not set
+CONFIG_USB_M5602=m
+CONFIG_USB_STV06XX=m
+CONFIG_USB_GL860=m
+CONFIG_USB_GSPCA_BENQ=m
+CONFIG_USB_GSPCA_CONEX=m
+CONFIG_USB_GSPCA_CPIA1=m
+CONFIG_USB_GSPCA_ETOMS=m
+CONFIG_USB_GSPCA_FINEPIX=m
+CONFIG_USB_GSPCA_JEILINJ=m
+CONFIG_USB_GSPCA_KINECT=m
+CONFIG_USB_GSPCA_KONICA=m
+CONFIG_USB_GSPCA_MARS=m
+CONFIG_USB_GSPCA_MR97310A=m
+CONFIG_USB_GSPCA_NW80X=m
+CONFIG_USB_GSPCA_OV519=m
+CONFIG_USB_GSPCA_OV534=m
+CONFIG_USB_GSPCA_OV534_9=m
+CONFIG_USB_GSPCA_PAC207=m
+CONFIG_USB_GSPCA_PAC7302=m
+CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SE401=m
+CONFIG_USB_GSPCA_SN9C2028=m
+CONFIG_USB_GSPCA_SN9C20X=m
+CONFIG_USB_GSPCA_SONIXB=m
+CONFIG_USB_GSPCA_SONIXJ=m
+CONFIG_USB_GSPCA_SPCA500=m
+CONFIG_USB_GSPCA_SPCA501=m
+CONFIG_USB_GSPCA_SPCA505=m
+CONFIG_USB_GSPCA_SPCA506=m
+CONFIG_USB_GSPCA_SPCA508=m
+CONFIG_USB_GSPCA_SPCA561=m
+CONFIG_USB_GSPCA_SPCA1528=m
+CONFIG_USB_GSPCA_SQ905=m
+CONFIG_USB_GSPCA_SQ905C=m
+CONFIG_USB_GSPCA_SQ930X=m
+CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_STV0680=m
+CONFIG_USB_GSPCA_SUNPLUS=m
+CONFIG_USB_GSPCA_T613=m
+CONFIG_USB_GSPCA_TOPRO=m
+CONFIG_USB_GSPCA_TV8532=m
+CONFIG_USB_GSPCA_VC032X=m
+CONFIG_USB_GSPCA_VICAM=m
+CONFIG_USB_GSPCA_XIRLINK_CIT=m
+CONFIG_USB_GSPCA_ZC3XX=m
 CONFIG_VIDEO_PVRUSB2=m
 CONFIG_VIDEO_PVRUSB2_SYSFS=y
 CONFIG_VIDEO_PVRUSB2_DVB=y
@@ -2156,6 +2191,9 @@ CONFIG_VIDEO_CX231XX=m
 CONFIG_VIDEO_CX231XX_RC=y
 CONFIG_VIDEO_CX231XX_ALSA=m
 CONFIG_VIDEO_CX231XX_DVB=m
+CONFIG_VIDEO_TM6000=m
+CONFIG_VIDEO_TM6000_ALSA=m
+CONFIG_VIDEO_TM6000_DVB=m
 CONFIG_VIDEO_USBVISION=m
 CONFIG_USB_ET61X251=m
 CONFIG_USB_SN9C102=m
@@ -2170,7 +2208,7 @@ CONFIG_USB_S2255=m
 CONFIG_DVB_MAX_ADAPTERS=8
 # CONFIG_DVB_DYNAMIC_MINORS is not set
 CONFIG_DVB_CAPTURE_DRIVERS=y
-# CONFIG_TTPCI_EEPROM is not set
+CONFIG_TTPCI_EEPROM=m
 
 #
 # Supported USB Adapters
@@ -2197,6 +2235,7 @@ CONFIG_DVB_USB_DTT200U=m
 CONFIG_DVB_USB_OPERA1=m
 CONFIG_DVB_USB_AF9005=m
 CONFIG_DVB_USB_AF9005_REMOTE=m
+CONFIG_DVB_USB_PCTV452E=m
 CONFIG_DVB_USB_DW2102=m
 CONFIG_DVB_USB_CINERGY_T2=m
 CONFIG_DVB_USB_ANYSEE=m
@@ -2208,6 +2247,8 @@ CONFIG_DVB_USB_EC168=m
 CONFIG_DVB_USB_AZ6027=m
 CONFIG_DVB_USB_LME2510=m
 CONFIG_DVB_USB_TECHNISAT_USB2=m
+CONFIG_DVB_USB_IT913X=m
+CONFIG_DVB_USB_MXL111SF=m
 CONFIG_SMS_SIANO_MDTV=m
 
 #
@@ -2261,6 +2302,7 @@ CONFIG_DVB_TDA826X=m
 CONFIG_DVB_CX24116=m
 CONFIG_DVB_SI21XX=m
 CONFIG_DVB_DS3000=m
+CONFIG_DVB_TDA10071=m
 
 #
 # DVB-T (terrestrial) frontends
@@ -2315,11 +2357,14 @@ CONFIG_DVB_TUNER_DIB0090=m
 # SEC control devices for DVB-S
 #
 CONFIG_DVB_LNBP21=m
+CONFIG_DVB_LNBP22=m
 CONFIG_DVB_ISL6421=m
 CONFIG_DVB_ISL6423=m
+CONFIG_DVB_A8293=m
 CONFIG_DVB_LGS8GXX=m
 CONFIG_DVB_ATBM8830=m
 CONFIG_DVB_IX2505V=m
+CONFIG_DVB_IT913X_FE=m
 
 #
 # Tools to develop new frontends
@@ -2359,6 +2404,7 @@ CONFIG_FB_BCM2708=y
 # CONFIG_FB_ARMCLCD is not set
 # CONFIG_FB_UVESA is not set
 # CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_SMSCUFX is not set
 # CONFIG_FB_UDL is not set
 # CONFIG_FB_VIRTUAL is not set
 # CONFIG_FB_METRONOME is not set
@@ -2420,14 +2466,12 @@ CONFIG_SND_SUPPORT_OLD_API=y
 CONFIG_SND_VERBOSE_PROCFS=y
 # CONFIG_SND_VERBOSE_PRINTK is not set
 # CONFIG_SND_DEBUG is not set
-CONFIG_SND_VMASTER=y
 CONFIG_SND_RAWMIDI_SEQ=m
 # CONFIG_SND_OPL3_LIB_SEQ is not set
 # CONFIG_SND_OPL4_LIB_SEQ is not set
 # CONFIG_SND_SBAWE_SEQ is not set
 # CONFIG_SND_EMU10K1_SEQ is not set
 CONFIG_SND_MPU401_UART=m
-CONFIG_SND_AC97_CODEC=m
 CONFIG_SND_DRIVERS=y
 CONFIG_SND_DUMMY=m
 CONFIG_SND_ALOOP=m
@@ -2435,9 +2479,8 @@ CONFIG_SND_VIRMIDI=m
 CONFIG_SND_MTPAV=m
 CONFIG_SND_SERIAL_U16550=m
 CONFIG_SND_MPU401=m
-# CONFIG_SND_AC97_POWER_SAVE is not set
 CONFIG_SND_ARM=y
-CONFIG_SND_ARMAACI=m
+# CONFIG_SND_ARMAACI is not set
 CONFIG_SND_BCM2835=m
 CONFIG_SND_SPI=y
 CONFIG_SND_USB=y
@@ -2448,7 +2491,6 @@ CONFIG_SND_USB_CAIAQ=m
 CONFIG_SND_USB_6FIRE=m
 # CONFIG_SND_SOC is not set
 # CONFIG_SOUND_PRIME is not set
-CONFIG_AC97_BUS=m
 CONFIG_HID_SUPPORT=y
 CONFIG_HID=y
 # CONFIG_HIDRAW is not set
@@ -2487,10 +2529,11 @@ CONFIG_HID_TWINHAN=m
 CONFIG_HID_KENSINGTON=m
 CONFIG_HID_LCPOWER=m
 CONFIG_HID_LOGITECH=m
+CONFIG_HID_LOGITECH_DJ=m
 # CONFIG_LOGITECH_FF is not set
 # CONFIG_LOGIRUMBLEPAD2_FF is not set
 # CONFIG_LOGIG940_FF is not set
-# CONFIG_LOGIWII_FF is not set
+# CONFIG_LOGIWHEELS_FF is not set
 CONFIG_HID_MICROSOFT=m
 CONFIG_HID_MONTEREY=m
 CONFIG_HID_MULTITOUCH=m
@@ -2504,6 +2547,7 @@ CONFIG_HID_PICOLCD=m
 # CONFIG_HID_PICOLCD_BACKLIGHT is not set
 # CONFIG_HID_PICOLCD_LCD is not set
 # CONFIG_HID_PICOLCD_LEDS is not set
+CONFIG_HID_PRIMAX=m
 CONFIG_HID_QUANTA=m
 CONFIG_HID_ROCCAT=m
 CONFIG_HID_ROCCAT_COMMON=m
@@ -2527,9 +2571,11 @@ CONFIG_HID_ZEROPLUS=m
 # CONFIG_ZEROPLUS_FF is not set
 CONFIG_HID_ZYDACRON=m
 CONFIG_USB_SUPPORT=y
+CONFIG_USB_COMMON=y
 CONFIG_USB_ARCH_HAS_HCD=y
 # CONFIG_USB_ARCH_HAS_OHCI is not set
 # CONFIG_USB_ARCH_HAS_EHCI is not set
+# CONFIG_USB_ARCH_HAS_XHCI is not set
 CONFIG_USB=y
 # CONFIG_USB_DEBUG is not set
 CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
@@ -2544,6 +2590,7 @@ CONFIG_USB_SUSPEND=y
 # CONFIG_USB_OTG is not set
 # CONFIG_USB_OTG_WHITELIST is not set
 # CONFIG_USB_OTG_BLACKLIST_HUB is not set
+# CONFIG_USB_DWC3 is not set
 # CONFIG_USB_MON is not set
 # CONFIG_USB_WUSB is not set
 # CONFIG_USB_WUSB_CBAF is not set
@@ -2566,7 +2613,7 @@ CONFIG_USB_DWCOTG=y
 # USB Device Class drivers
 #
 CONFIG_USB_ACM=m
-# CONFIG_USB_PRINTER is not set
+CONFIG_USB_PRINTER=m
 # CONFIG_USB_WDM is not set
 # CONFIG_USB_TMC is not set
 
@@ -2687,6 +2734,28 @@ CONFIG_USB_CXACRU=m
 CONFIG_USB_UEAGLEATM=m
 CONFIG_USB_XUSBATM=m
 # CONFIG_USB_GADGET is not set
+# CONFIG_USB_FUSB300 is not set
+# CONFIG_USB_R8A66597 is not set
+# CONFIG_USB_M66592 is not set
+# CONFIG_USB_NET2272 is not set
+# CONFIG_USB_DUMMY_HCD is not set
+# CONFIG_USB_ZERO is not set
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_ETH is not set
+# CONFIG_USB_G_NCM is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FUNCTIONFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_MASS_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_PRINTER is not set
+# CONFIG_USB_CDC_COMPOSITE is not set
+# CONFIG_USB_G_ACM_MS is not set
+# CONFIG_USB_G_MULTI is not set
+# CONFIG_USB_G_HID is not set
+# CONFIG_USB_G_DBGP is not set
+# CONFIG_USB_G_WEBCAM is not set
 
 #
 # OTG and related infrastructure
@@ -2741,6 +2810,7 @@ CONFIG_LEDS_GPIO=y
 # CONFIG_LEDS_DAC124S085 is not set
 # CONFIG_LEDS_BD2802 is not set
 # CONFIG_LEDS_LT3593 is not set
+# CONFIG_LEDS_RENESAS_TPU is not set
 CONFIG_LEDS_TRIGGERS=y
 
 #
@@ -2758,8 +2828,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
 # CONFIG_ACCESSIBILITY is not set
 CONFIG_RTC_LIB=y
 CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_HCTOSYS is not set
 # CONFIG_RTC_DEBUG is not set
 
 #
@@ -2786,7 +2855,7 @@ CONFIG_RTC_DRV_X1205=m
 CONFIG_RTC_DRV_PCF8563=m
 CONFIG_RTC_DRV_PCF8583=m
 CONFIG_RTC_DRV_M41T80=m
-# CONFIG_RTC_DRV_M41T80_WDT is not set
+CONFIG_RTC_DRV_M41T80_WDT=y
 CONFIG_RTC_DRV_BQ32K=m
 CONFIG_RTC_DRV_S35390A=m
 CONFIG_RTC_DRV_FM3130=m
@@ -2839,6 +2908,7 @@ CONFIG_DMADEVICES=y
 CONFIG_AMBA_PL08X=y
 CONFIG_DW_DMAC=m
 CONFIG_TIMB_DMA=m
+CONFIG_PL330_DMA=m
 CONFIG_DMA_ENGINE=y
 
 #
@@ -2856,10 +2926,16 @@ CONFIG_UIO_PDRV_GENIRQ=m
 # Virtio drivers
 #
 # CONFIG_VIRTIO_BALLOON is not set
+# CONFIG_VIRTIO_MMIO is not set
 # CONFIG_STAGING is not set
 CONFIG_CLKDEV_LOOKUP=y
+
+#
+# Hardware Spinlock drivers
+#
 # CONFIG_IOMMU_SUPPORT is not set
 # CONFIG_VIRT_DRIVERS is not set
+# CONFIG_PM_DEVFREQ is not set
 
 #
 # File systems
@@ -3188,6 +3264,7 @@ CONFIG_HAVE_ARCH_KGDB=y
 # Security options
 #
 CONFIG_KEYS=y
+# CONFIG_ENCRYPTED_KEYS is not set
 # CONFIG_KEYS_DEBUG_PROC_KEYS is not set
 # CONFIG_SECURITY_DMESG_RESTRICT is not set
 # CONFIG_SECURITY is not set
@@ -3219,6 +3296,7 @@ CONFIG_CRYPTO_PCOMP=m
 CONFIG_CRYPTO_PCOMP2=y
 CONFIG_CRYPTO_MANAGER=y
 CONFIG_CRYPTO_MANAGER2=y
+CONFIG_CRYPTO_USER=m
 CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
 CONFIG_CRYPTO_GF128MUL=m
 # CONFIG_CRYPTO_NULL is not set
@@ -3277,6 +3355,7 @@ CONFIG_CRYPTO_AES=m
 CONFIG_CRYPTO_ANUBIS=m
 CONFIG_CRYPTO_ARC4=m
 CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_BLOWFISH_COMMON=m
 CONFIG_CRYPTO_CAMELLIA=m
 CONFIG_CRYPTO_CAST5=m
 CONFIG_CRYPTO_CAST6=m
index d5e7cf030b8a8af32a76c77c2a40dce66dab0339..43f7aa0cf91e1a32fbfbe2ff9213f262a9e6795e 100644 (file)
@@ -1,5 +1,5 @@
 boot/uInit-ipfire-omap
 boot/uImage-ipfire-omap
-boot/System.map-2.6.40.32-ipfire-omap
-boot/config-2.6.40.32-ipfire-omap
-lib/modules/2.6.40.32-ipfire-omap
+boot/System.map-2.6.42.19-ipfire-omap
+boot/config-2.6.42.19-ipfire-omap
+lib/modules/2.6.42.19-ipfire-omap
index 5a14b2ff43c770bcbe74376562ff5d8b3c925e7e..7c18d4bb2a4fc345e8e5dbfb29233c9e8ff5da12 100644 (file)
@@ -1,4 +1,4 @@
 boot/kernel.img
-boot/System.map-2.6.41.10-ipfire-rpi
-boot/config-2.6.41.10-ipfire-rpi
-lib/modules/2.6.41.10-ipfire-rpi
+boot/System.map-2.6.42.19-ipfire-rpi
+boot/config-2.6.42.19-ipfire-rpi
+lib/modules/2.6.42.19-ipfire-rpi
diff --git a/lfs/linux-rpi b/lfs/linux-rpi
deleted file mode 100644 (file)
index c8f5fc8..0000000
+++ /dev/null
@@ -1,264 +0,0 @@
-###############################################################################
-#                                                                             #
-# IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2011  IPFire Team <info@ipfire.org>                      #
-#                                                                             #
-# This program is free software: you can redistribute it and/or modify        #
-# it under the terms of the GNU General Public License as published by        #
-# the Free Software Foundation, either version 3 of the License, or           #
-# (at your option) any later version.                                         #
-#                                                                             #
-# This program is distributed in the hope that it will be useful,             #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
-# GNU General Public License for more details.                                #
-#                                                                             #
-# You should have received a copy of the GNU General Public License           #
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
-#                                                                             #
-###############################################################################
-
-###############################################################################
-# Definitions
-###############################################################################
-
-include Config
-
-PATCHLEVEL = .10
-VER           = 2.6.41.10
-
-XVERS         = 3.1.10
-XVERSION      = 2
-XPATCHLEVEL   = 6
-XSUBLEVEL     = 41
-XEXTRAVERSION = .10
-
-THISAPP    = linux-$(VER)
-DL_FILE    = linux-$(XVERS).tar.bz2
-DL_FROM    = $(URL_IPFIRE)
-DIR_APP    = $(DIR_SRC)/$(THISAPP)
-CFLAGS     =
-CXXFLAGS   =
-
-PAK_VER    = 20
-DEPS      = ""
-
-VERSUFIX=ipfire$(KCFG)
-
-ifeq "$(HEADERS)" "1"
-ifeq "$(TOOLS)" "1"
-       TARGET = $(DIR_INFO)/linux-libc-headers-$(VER)-$(VERSUFIX)-tools
-       HEADERS_PREFIX = /tools
-else
-       TARGET = $(DIR_INFO)/linux-libc-headers-$(VER)-$(VERSUFIX)
-       HEADERS_PREFIX = /usr
-endif
-else
-       TARGET = $(DIR_INFO)/linux-$(VER)-$(VERSUFIX)
-endif
-
-ifeq "$(MACHINE_TYPE)" "arm"
-       HEADERS_ARCH=arm
-else
-       HEADERS_ARCH=x86
-endif
-
-ifeq "$(KCFG)" ""
-LASTKERNEL=1
-endif
-ifeq "$(KCFG)" "-kirkwood"
-LASTKERNEL=1
-endif
-
-###############################################################################
-# Top-level Rules
-###############################################################################
-objects =$(DL_FILE) \
-       patch-2.6.16-nath323-1.3.bz2 \
-       rpi-patches-9efb470.patch.xz
-
-
-$(DL_FILE)                             = $(URL_IPFIRE)/$(DL_FILE)
-patch-2.6.16-nath323-1.3.bz2           = $(URL_IPFIRE)/patch-2.6.16-nath323-1.3.bz2
-rpi-patches-9efb470.patch.xz           = $(URL_IPFIRE)/rpi-patches-9efb470.patch.xz
-
-$(DL_FILE)_MD5                         = 3649bdaa50ffd9114cc16486ec54d83a
-patch-2.6.16-nath323-1.3.bz2_MD5       = f926409ff703a307baf54b57ab75d138
-rpi-patches-9efb470.patch.xz_MD5       = 833274ba420078d22f7f7b7f56debe1d
-
-install : $(TARGET)
-
-check : $(patsubst %,$(DIR_CHK)/%,$(objects))
-
-download :$(patsubst %,$(DIR_DL)/%,$(objects))
-
-md5 : $(subst %,%_MD5,$(objects))
-
-dist:
-       @$(PAK)
-###############################################################################
-# Downloading, checking, md5sum
-###############################################################################
-
-$(patsubst %,$(DIR_CHK)/%,$(objects)) :
-       @$(CHECK)
-
-$(patsubst %,$(DIR_DL)/%,$(objects)) :
-       @$(LOAD)
-
-$(subst %,%_MD5,$(objects)) :
-       @$(MD5)
-
-###############################################################################
-# Installation Details
-###############################################################################
-
-$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
-       @$(PREBUILD)
-       @rm -rf $(DIR_APP) $(DIR_SRC)/linux && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
-
-       # Change version from 3.x to 2.6.4x
-       cd $(DIR_SRC)/linux-$(XVERS) && sed -i -e "s/^VERSION =.*$$/VERSION = $(XVERSION)/g" Makefile
-       cd $(DIR_SRC)/linux-$(XVERS) && sed -i -e "s/^PATCHLEVEL =.*$$/PATCHLEVEL = $(XPATCHLEVEL)/g" Makefile
-       cd $(DIR_SRC)/linux-$(XVERS) && sed -i -e "s/^SUBLEVEL =.*$$/SUBLEVEL = $(XSUBLEVEL)/g" Makefile
-       cd $(DIR_SRC)/linux-$(XVERS) && sed -i -e "s/^EXTRAVERSION =.*$$/EXTRAVERSION = $(XEXTRAVERSION)/g" Makefile
-       mv $(DIR_SRC)/linux-$(XVERS) $(DIR_SRC)/linux-$(VER)
-
-       ln -svf linux-$(VER) $(DIR_SRC)/linux
-
-       # Linux Intermediate Queueing Device
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.1-imq.patch
-
-       # Not report deprecated syscall 1.23 (for kudzu)
-#      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.25.18-not_report_sysctl_1.23.patch
-
-
-       # ipp2p 0.8.2-ipfire
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.0-ipp2p-0.8.2-ipfire.patch
-
-       # Layer7-patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/netfilter_layer7_2.22_kernel3.0.patch
-
-       # Add some more LED triggers
-#      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.11-netdev-1.patch
-
-       # Huawei Android Phones (Vodafone V845, T-Mobile Pulse/mini ...)
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.15-option_add_huawei_android.patch
-
-       # Fix uevent PHYSDEVDRIVER
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.27_ipg-fix-driver-name.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.27_mcs7830-fix-driver-name.patch
-
-ifeq "$(KCFG)" "-kirkwood"
-       # Add dreamplug,guruplug and icy 62x0  support on ARM-kirkwood
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.45-arm_kirkwood_setups.patch
-endif
-
-ifeq "$(MACHINE_TYPE)" "arm"
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.45_align_ssb_modtable_32bit_boundary.patch
-
-       # Reverse some asm optimizations that are incompatible with older gcc
-       cd $(DIR_APP) && patch -p1 -R < $(DIR_SRC)/src/patches/linux-2.6-arm-asm-constraint.patch
-endif
-
-ifeq "$(KCFG)" "-omap"
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.40-pandaboard-wlan-fix.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.40-pandaboard-dvi720p.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.40-pandaboard-i2c-fix.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.40-pandaboard-reboot.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.40-pandaboard-rtc-twl-irq.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.40-pandaboard-memcpy.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.x-smsc95xx-add_mac_addr_param.patch
-endif
-
-ifeq "$(KCFG)" "-rpi"
-       # Apply Raspberry Pi kernel patches. (only avail for 3.1.x kernel yet)
-       -cd $(DIR_APP) && xzcat $(DIR_DL)/rpi-patches-9efb470.patch.xz | patch -Np1
-endif
-
-ifeq "$(HEADERS)" "1"
-       # Install the header files
-       cd $(DIR_APP) && make ARCH=$(HEADERS_ARCH) INSTALL_HDR_PATH=dest headers_install
-       -mkdir -pv $(BUILDROOT)/$(HEADERS_PREFIX)/include
-       cd $(DIR_APP) && find dest/include \( -name .install -o -name ..install.cmd \) -delete
-       cd $(DIR_APP) && cp -rv dest/include/* $(BUILDROOT)/$(HEADERS_PREFIX)/include
-else
-
-       # Install ipfire logo
-       cd $(DIR_APP) && cp -vf $(DIR_SRC)/config/kernel/ipfire_logo.ppm \
-               drivers/video/logo/logo_linux_clut224.ppm
-
-       # Cleanup kernel source
-       cp $(DIR_SRC)/config/kernel/kernel.config.$(MACHINE)-$(VERSUFIX) $(DIR_APP)/.config
-       cd $(DIR_APP) && make CC="$(KGCC)" oldconfig
-       cd $(DIR_APP) && make CC="$(KGCC)" clean
-       cd $(DIR_APP) && sed -i -e 's/EXTRAVERSION\ =.*/EXTRAVERSION\ =\ $(PATCHLEVEL)-$(VERSUFIX)/' Makefile
-
-ifeq "$(KCFG)" "-kirkwood"
-       cd $(DIR_APP) && make $(MAKETUNING) CC="$(KGCC)" uImage
-       cd $(DIR_APP) && cp -v arch/arm/boot/uImage /boot/vmlinuz-$(VER)-$(VERSUFIX)
-       cd $(DIR_APP) && cp -v arch/arm/boot/uImage /boot/uImage-$(VERSUFIX)
-else
-ifeq "$(KCFG)" "-omap"
-       cd $(DIR_APP) && make $(MAKETUNING) CC="$(KGCC)" uImage
-       cd $(DIR_APP) && cp -v arch/arm/boot/uImage /boot/vmlinuz-$(VER)-$(VERSUFIX)
-       cd $(DIR_APP) && cp -v arch/arm/boot/uImage /boot/uImage-$(VERSUFIX)
-else
-ifeq "$(KCFG)" "-rpi"
-       cd $(DIR_APP) && make $(MAKETUNING) CC="$(KGCC)" zImage
-       cd /boot  && cat first32k.bin $(DIR_APP)/arch/arm/boot/Image > kernel.img
-       cd $(DIR_APP) && cp -v /boot/kernel.img /boot/vmlinuz-$(VER)-$(VERSUFIX)
-else
-ifeq "$(KCFG)" "-versatile"
-       cd $(DIR_APP) && make $(MAKETUNING) CC="$(KGCC)" zImage
-       cd $(DIR_APP) && cp -v arch/arm/boot/zImage /boot/vmlinuz-$(VER)-$(VERSUFIX)
-else
-       cd $(DIR_APP) && make $(MAKETUNING) CC="$(KGCC)" bzImage
-       cd $(DIR_APP) && cp -v arch/i386/boot/bzImage /boot/vmlinuz-$(VER)-$(VERSUFIX)
-endif
-endif
-endif
-endif
-       cd $(DIR_APP) && cp -v System.map /boot/System.map-$(VER)-$(VERSUFIX)
-       cd $(DIR_APP) && cp -v .config /boot/config-$(VER)-$(VERSUFIX)
-       ln -sf vmlinuz-$(VER)-$(VERSUFIX) /boot/vmlinuz-$(VERSUFIX)
-       ln -sf System.map-$(VER)-$(VERSUFIX) /boot/System.map-$(VERSUFIX)
-       cd $(DIR_APP) && make CC="$(KGCC)" $(MAKETUNING) modules
-       cd $(DIR_APP) && make CC="$(KGCC)" $(MAKETUNING) modules_install
-       cd $(DIR_APP) && make CC="$(KGCC)" $(MAKETUNING) firmware_install
-
-ifeq "$(LASTKERNEL)" "1"
-       # Only do this once
-       cd $(DIR_APP) && install -m 755 usr/gen_init_cpio /sbin/
-
-       # Blacklist matroxfb_base
-       echo "blacklist matroxfb_base" >> /etc/modprobe.d/framebuffer
-       # Blacklist old framebuffer modules
-       for f in $$(find /lib/modules/$(VER)-$(VERSUFIX)/kernel/drivers/video -name *fb.ko); do \
-               echo "blacklist $$(basename $$f)" >> /etc/modprobe.d/framebuffer ; \
-       done
-       # Blacklist new drm framebuffer modules
-       for f in $$(ls -1 /lib/modules/$(VER)-$(VERSUFIX)/kernel/drivers/gpu/drm/*/*.ko); do \
-               echo "blacklist $$(basename $$f)" >> /etc/modprobe.d/framebuffer ; \
-       done
-       sed -i -e "s|.ko||g" /etc/modprobe.d/framebuffer
-
-       # Blacklist isdn modules
-       for f in $$(find /lib/modules/$(VER)-$(VERSUFIX)/kernel/drivers/isdn -name *.ko); do \
-               echo "blacklist $$(basename $$f)" >> /etc/modprobe.d/isdn ; \
-       done
-       sed -i -e "s|.ko||g" /etc/modprobe.d/isdn
-
-       # Disable ipv6 at runtime
-       echo "options ipv6 disable_ipv6=1" > /etc/modprobe.d/ipv6
-endif
-
-ifneq "$(MACHINE_TYPE)" "arm"
-       # Disable geode_aes modul
-       mv /lib/modules/$(VER)-$(VERSUFIX)/kernel/drivers/crypto/geode-aes.ko \
-           /lib/modules/$(VER)-$(VERSUFIX)/kernel/drivers/crypto/geode-aes.ko.off
-endif
-endif
-
-       @rm -rf $(DIR_SRC)/patch-o-matic* $(DIR_SRC)/iptables* $(DIR_SRC)/squashfs* $(DIR_SRC)/netfilter-layer7-*
-       @$(POSTBUILD)
index b7d5e264279e1648ca8a52d1a390af00039ecd53..e049be0f288b1ed9b77f931cec2c8a9ee967cd9b 100644 (file)
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2011  IPFire Team <info@ipfire.org>                      #
+# Copyright (C) 2007-2012  IPFire Team <info@ipfire.org>                      #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
 
 include Config
 
-PATCHLEVEL = .32
-VER           = 2.6.40.32
+PATCHLEVEL = .19
 
-XVERS         = 3.0.32
+VER           = 2.6.42.19
+
+XVERS         = 3.2.19
 XVERSION      = 2
 XPATCHLEVEL   = 6
-XSUBLEVEL     = 40
-XEXTRAVERSION = .32
+XSUBLEVEL     = 42
+XEXTRAVERSION = .19
+
+RPI_PATCHES = linux-3.2-bootc-5b84c25
 
 THISAPP    = linux-$(VER)
 DL_FILE    = linux-$(XVERS).tar.bz2
@@ -74,13 +77,15 @@ endif
 # Top-level Rules
 ###############################################################################
 objects =$(DL_FILE) \
-       patch-2.6.16-nath323-1.3.bz2
+       rpi-patches-$(RPI_PATCHES).patch.xz
+
 
 $(DL_FILE)                             = $(URL_IPFIRE)/$(DL_FILE)
-patch-2.6.16-nath323-1.3.bz2           = $(URL_IPFIRE)/patch-2.6.16-nath323-1.3.bz2
+rpi-patches-$(RPI_PATCHES).patch.xz    = $(URL_IPFIRE)/rpi-patches-$(RPI_PATCHES).patch.xz
+
+$(DL_FILE)_MD5                         = 64c732cb425eb8787b841d11309bb335
+rpi-patches-$(RPI_PATCHES).patch.xz_MD5        = 0b2fac563b093465f5c6b3d571e57399
 
-$(DL_FILE)_MD5                         = 67ae0ca4e87fb22cecfce94cb90eaee9
-patch-2.6.16-nath323-1.3.bz2_MD5       = f926409ff703a307baf54b57ab75d138
 
 install : $(TARGET)
 
@@ -123,11 +128,12 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        ln -svf linux-$(VER) $(DIR_SRC)/linux
 
        # Linux Intermediate Queueing Device
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.1-imq.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2-imq.patch
 
        # Not report deprecated syscall 1.23 (for kudzu)
 #      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.25.18-not_report_sysctl_1.23.patch
 
+
        # ipp2p 0.8.2-ipfire
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.0-ipp2p-0.8.2-ipfire.patch
 
@@ -141,7 +147,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.15-option_add_huawei_android.patch
 
        # Fix uevent PHYSDEVDRIVER
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.27_ipg-fix-driver-name.patch
+#      cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.27_ipg-fix-driver-name.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.27_mcs7830-fix-driver-name.patch
 
 ifeq "$(KCFG)" "-kirkwood"
@@ -157,15 +163,19 @@ ifeq "$(MACHINE_TYPE)" "arm"
 endif
 
 ifeq "$(KCFG)" "-omap"
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.40-pandaboard-wlan-fix.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.40-pandaboard-dvi720p.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.40-pandaboard-i2c-fix.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.40-pandaboard-reboot.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.40-pandaboard-rtc-twl-irq.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.40-pandaboard-memcpy.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2-0001-panda-wlan-fix.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2-0002-panda-i2c.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2-panda-reboot.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.x-smsc95xx-add_mac_addr_param.patch
 endif
 
+ifeq "$(KCFG)" "-rpi"
+       # Apply Raspberry Pi kernel patches. (only avail for 3.1.x kernel yet)
+       cd $(DIR_APP) && xzcat $(DIR_DL)/rpi-patches-$(RPI_PATCHES).patch.xz | patch -Np1
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2-bcm2835-alsamixer.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2-bcm2835-limit_volume.patch
+endif
+
 ifeq "$(HEADERS)" "1"
        # Install the header files
        cd $(DIR_APP) && make ARCH=$(HEADERS_ARCH) INSTALL_HDR_PATH=dest headers_install
@@ -194,6 +204,11 @@ ifeq "$(KCFG)" "-omap"
        cd $(DIR_APP) && cp -v arch/arm/boot/uImage /boot/vmlinuz-$(VER)-$(VERSUFIX)
        cd $(DIR_APP) && cp -v arch/arm/boot/uImage /boot/uImage-$(VERSUFIX)
 else
+ifeq "$(KCFG)" "-rpi"
+       cd $(DIR_APP) && make $(MAKETUNING) CC="$(KGCC)" zImage
+       cd /boot  && cat first32k.bin $(DIR_APP)/arch/arm/boot/Image > kernel.img
+       cd $(DIR_APP) && cp -v /boot/kernel.img /boot/vmlinuz-$(VER)-$(VERSUFIX)
+else
 ifeq "$(KCFG)" "-versatile"
        cd $(DIR_APP) && make $(MAKETUNING) CC="$(KGCC)" zImage
        cd $(DIR_APP) && cp -v arch/arm/boot/zImage /boot/vmlinuz-$(VER)-$(VERSUFIX)
@@ -202,6 +217,7 @@ else
        cd $(DIR_APP) && cp -v arch/i386/boot/bzImage /boot/vmlinuz-$(VER)-$(VERSUFIX)
 endif
 endif
+endif
 endif
        cd $(DIR_APP) && cp -v System.map /boot/System.map-$(VER)-$(VERSUFIX)
        cd $(DIR_APP) && cp -v .config /boot/config-$(VER)-$(VERSUFIX)
@@ -237,10 +253,6 @@ ifeq "$(LASTKERNEL)" "1"
        echo "options ipv6 disable_ipv6=1" > /etc/modprobe.d/ipv6
 endif
 
-       # Remove mISDN modules
-       rm -rvf /lib/modules/$(VER)-$(VERSUFIX)/kernel/drivers/isdn/mISDN
-       rm -rvf /lib/modules/$(VER)-$(VERSUFIX)/kernel/drivers/isdn/hardware/mISDN
-
 ifneq "$(MACHINE_TYPE)" "arm"
        # Disable geode_aes modul
        mv /lib/modules/$(VER)-$(VERSUFIX)/kernel/drivers/crypto/geode-aes.ko \
diff --git a/make.sh b/make.sh
index f724a3540d495654034de1dcd3845210ce84a91f..2c52ad16128cb78120f30067c6533504d43e17ca 100755 (executable)
--- a/make.sh
+++ b/make.sh
@@ -438,7 +438,7 @@ buildipfire() {
     ipfiremake igb                     KCFG=""
   else
     # arm-omap kernel build
-    ipfiremake linux-rpi               KCFG="-rpi"
+    ipfiremake linux3                  KCFG="-rpi"
 
     ipfiremake linux3                  KCFG="-omap"
 
diff --git a/src/patches/linux-2.6.40-pandaboard-dvi720p.patch b/src/patches/linux-2.6.40-pandaboard-dvi720p.patch
deleted file mode 100755 (executable)
index 8ec3586..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
-index 90485fc..7a92185 100644
---- a/arch/arm/mach-omap2/board-omap4panda.c
-+++ b/arch/arm/mach-omap2/board-omap4panda.c
-@@ -583,7 +583,7 @@ static void omap4_panda_disable_dvi(struct omap_dss_device *dssdev)
- /* Using generic display panel */
- static struct panel_generic_dpi_data omap4_dvi_panel = {
--      .name                   = "generic",
-+      .name                   = "dvi_720p",
-       .platform_enable        = omap4_panda_enable_dvi,
-       .platform_disable       = omap4_panda_disable_dvi,
- };
-diff --git a/drivers/video/omap2/displays/panel-generic-dpi.c b/drivers/video/omap2/displays/panel-generic-dpi.c
-index 9c90f75..af8352f 100644
---- a/drivers/video/omap2/displays/panel-generic-dpi.c
-+++ b/drivers/video/omap2/displays/panel-generic-dpi.c
-@@ -232,7 +232,32 @@ static struct panel_config generic_dpi_panels[] = {
-               .power_off_delay        = 0,
-               .name                   = "powertip_ph480272t",
-       },
--};
-+
-+      /* Vesa 720p 1280x768 */
-+      {
-+              {
-+                      .x_res          = 1280,
-+                      .y_res          = 768,
-+
-+                      .pixel_clock    = 71000,
-+
-+                      .hfp            = 128,
-+                      .hsw            = 64,
-+                      .hbp            = 192,
-+
-+                      .vfp            = 3,
-+                      .vsw            = 7,
-+                      .vbp            = 20,
-+              },
-+              .acbi                   = 0x0,
-+              .acb                    = 0x0,
-+              .config                 = OMAP_DSS_LCD_TFT,
-+              .power_on_delay         = 0,
-+              .power_off_delay        = 0,
-+              .name                   = "dvi_720p",
-+      },
-+ };
-+
- struct panel_drv_data {
diff --git a/src/patches/linux-2.6.40-pandaboard-i2c-fix.patch b/src/patches/linux-2.6.40-pandaboard-i2c-fix.patch
deleted file mode 100755 (executable)
index ea847be..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
-index 58a58c7..bba0441 100644
---- a/drivers/i2c/busses/i2c-omap.c
-+++ b/drivers/i2c/busses/i2c-omap.c
-@@ -276,7 +276,7 @@ static void omap_i2c_unidle(struct omap_i2c_dev *dev)
-       pm_runtime_get_sync(&pdev->dev);
--      if (cpu_is_omap34xx()) {
-+      if (cpu_is_omap34xx() || cpu_is_omap44xx()) {
-               omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, 0);
-               omap_i2c_write_reg(dev, OMAP_I2C_PSC_REG, dev->pscstate);
-               omap_i2c_write_reg(dev, OMAP_I2C_SCLL_REG, dev->scllstate);
-@@ -493,7 +493,7 @@ static int omap_i2c_init(struct omap_i2c_dev *dev)
-                       OMAP_I2C_IE_AL)  | ((dev->fifo_size) ?
-                               (OMAP_I2C_IE_RDR | OMAP_I2C_IE_XDR) : 0);
-       omap_i2c_write_reg(dev, OMAP_I2C_IE_REG, dev->iestate);
--      if (cpu_is_omap34xx()) {
-+      if (cpu_is_omap34xx() || cpu_is_omap44xx()) {
-               dev->pscstate = psc;
-               dev->scllstate = scll;
-               dev->sclhstate = sclh;
diff --git a/src/patches/linux-2.6.40-pandaboard-memcpy.patch b/src/patches/linux-2.6.40-pandaboard-memcpy.patch
deleted file mode 100644 (file)
index 69e5e6e..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-arch/arm/lib/uaccess_with_memcpy.c: In function 'pin_page_for_write':
-arch/arm/lib/uaccess_with_memcpy.c:45: error: implicit declaration of function 'kmap_atomic'
-arch/arm/lib/uaccess_with_memcpy.c:48: error: implicit declaration of function 'kunmap_atomic'
-make[2]: *** [arch/arm/lib/uaccess_with_memcpy.o] Error 1
-
-Signed-off-by: Paul Gortmaker <paul.gortmaker at windriver.com>
-
-diff --git a/arch/arm/lib/uaccess_with_memcpy.c b/arch/arm/lib/uaccess_with_memcpy.c
-index 8b9b136..66945a6 100644
---- a/arch/arm/lib/uaccess_with_memcpy.c
-+++ b/arch/arm/lib/uaccess_with_memcpy.c
-@@ -12,6 +12,7 @@
- #include <linux/kernel.h>
- #include <linux/ctype.h>
- #include <linux/uaccess.h>
-+#include <linux/highmem.h>
- #include <linux/rwsem.h>
- #include <linux/mm.h>
- #include <linux/sched.h>
--- 
-1.7.6
diff --git a/src/patches/linux-2.6.40-pandaboard-rtc-twl-irq.patch b/src/patches/linux-2.6.40-pandaboard-rtc-twl-irq.patch
deleted file mode 100644 (file)
index dc1182d..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-diff -Naur linux-3.0.24.org/drivers/rtc/rtc-twl.c linux-3.0.24/drivers/rtc/rtc-twl.c
---- linux-3.0.24.org/drivers/rtc/rtc-twl.c     2012-03-12 18:58:19.000000000 +0100
-+++ linux-3.0.24/drivers/rtc/rtc-twl.c 2012-03-20 23:24:52.213578926 +0100
-@@ -362,14 +362,6 @@
-       int res;
-       u8 rd_reg;
--#ifdef CONFIG_LOCKDEP
--      /* WORKAROUND for lockdep forcing IRQF_DISABLED on us, which
--       * we don't want and can't tolerate.  Although it might be
--       * friendlier not to borrow this thread context...
--       */
--      local_irq_enable();
--#endif
--
-       res = twl_rtc_read_u8(&rd_reg, REG_RTC_STATUS_REG);
-       if (res)
-               goto out;
-@@ -462,7 +454,7 @@
-       if (ret < 0)
-               goto out1;
--      ret = request_irq(irq, twl_rtc_interrupt,
-+      ret = request_threaded_irq(irq, NULL, twl_rtc_interrupt,
-                               IRQF_TRIGGER_RISING,
-                               dev_name(&rtc->dev), rtc);
-       if (ret < 0) {
diff --git a/src/patches/linux-2.6.40-pandaboard-wlan-fix.patch b/src/patches/linux-2.6.40-pandaboard-wlan-fix.patch
deleted file mode 100755 (executable)
index 1b6b5c4..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
-index 1269658..8ec6330 100644
---- a/arch/arm/mach-omap2/board-omap4panda.c
-+++ b/arch/arm/mach-omap2/board-omap4panda.c
-@@ -377,6 +377,7 @@ static struct regulator_init_data omap4_panda_vusb = {
- static struct regulator_init_data omap4_panda_clk32kg = {
-       .constraints = {
-               .valid_ops_mask         = REGULATOR_CHANGE_STATUS,
-+              .always_on              = true,
-       },
- };
diff --git a/src/patches/linux-3.2-0001-panda-wlan-fix.patch b/src/patches/linux-3.2-0001-panda-wlan-fix.patch
new file mode 100644 (file)
index 0000000..a2aaf20
--- /dev/null
@@ -0,0 +1,12 @@
+diff --git a/arch/arm/mach-omap2/twl-common.c b/arch/arm/mach-omap2/twl-common.c
+index daa056e..fe03b09 100644
+--- a/arch/arm/mach-omap2/twl-common.c
++++ b/arch/arm/mach-omap2/twl-common.c
+@@ -261,6 +261,7 @@ static struct regulator_init_data omap4_vusb_idata = {
+ static struct regulator_init_data omap4_clk32kg_idata = {
+       .constraints = {
+               .valid_ops_mask         = REGULATOR_CHANGE_STATUS,
++              .always_on              = true,
+       },
+ };
diff --git a/src/patches/linux-3.2-0002-panda-i2c.patch b/src/patches/linux-3.2-0002-panda-i2c.patch
new file mode 100644 (file)
index 0000000..fa3f6cc
--- /dev/null
@@ -0,0 +1,51 @@
+diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c
+index 7f47092..2a05d3d 100644
+--- a/arch/arm/mach-omap2/id.c
++++ b/arch/arm/mach-omap2/id.c
+@@ -389,8 +389,10 @@ static void __init omap4_check_revision(void)
+                       omap_revision = OMAP4430_REV_ES2_1;
+                       break;
+               case 4:
+-              default:
+                       omap_revision = OMAP4430_REV_ES2_2;
++              case 6:
++              default:
++                      omap_revision = OMAP4430_REV_ES2_3;
+               }
+               break;
+       case 0xb94e:
+@@ -403,7 +405,7 @@ static void __init omap4_check_revision(void)
+               break;
+       default:
+               /* Unknown default to latest silicon rev as default */
+-              omap_revision = OMAP4430_REV_ES2_2;
++              omap_revision = OMAP4430_REV_ES2_3;
+       }
+       pr_info("OMAP%04x ES%d.%d\n", omap_rev() >> 16,
+diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+index 7695e5d..71d3e36 100644
+--- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
++++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+@@ -2257,7 +2257,8 @@ static struct omap_hwmod_class omap44xx_i2c_hwmod_class = {
+ };
+ static struct omap_i2c_dev_attr i2c_dev_attr = {
+-      .flags  = OMAP_I2C_FLAG_BUS_SHIFT_NONE,
++      .flags  = OMAP_I2C_FLAG_BUS_SHIFT_NONE |
++                      OMAP_I2C_FLAG_RESET_REGS_POSTIDLE,
+ };
+ /* i2c1 */
+diff --git a/arch/arm/plat-omap/include/plat/cpu.h b/arch/arm/plat-omap/include/plat/cpu.h
+index 408a12f..e279395 100644
+--- a/arch/arm/plat-omap/include/plat/cpu.h
++++ b/arch/arm/plat-omap/include/plat/cpu.h
+@@ -391,6 +391,7 @@ IS_OMAP_TYPE(3517, 0x3517)
+ #define OMAP4430_REV_ES2_0    (OMAP443X_CLASS | (0x20 << 8))
+ #define OMAP4430_REV_ES2_1    (OMAP443X_CLASS | (0x21 << 8))
+ #define OMAP4430_REV_ES2_2    (OMAP443X_CLASS | (0x22 << 8))
++#define OMAP4430_REV_ES2_3    (OMAP443X_CLASS | (0x23 << 8))
+ #define OMAP446X_CLASS                0x44600044
+ #define OMAP4460_REV_ES1_0    (OMAP446X_CLASS | (0x10 << 8))
diff --git a/src/patches/linux-3.2-bcm2835-alsamixer.patch b/src/patches/linux-3.2-bcm2835-alsamixer.patch
new file mode 100644 (file)
index 0000000..bfe3d02
--- /dev/null
@@ -0,0 +1,48 @@
+diff -Naur linux-3.2.19.org/sound/arm/bcm2835-ctl.c linux-3.2.19/sound/arm/bcm2835-ctl.c
+--- linux-3.2.19.org/sound/arm/bcm2835-ctl.c   2012-06-04 21:11:15.000000000 +0200
++++ linux-3.2.19/sound/arm/bcm2835-ctl.c       2012-06-04 21:32:37.969298501 +0200
+@@ -33,6 +33,19 @@
+ #include "bcm2835.h"
++
++/* functions to convert alsa to chip volume and back. */
++int alsa2chip(int vol)
++{
++      return -((vol << 8) / 100);
++}
++
++int chip2alsa(int vol)
++{
++      return -((vol * 100) >> 8);
++}
++
++
+ static int snd_bcm2835_ctl_info(struct snd_kcontrol *kcontrol,
+                               struct snd_ctl_elem_info *uinfo)
+ {
+@@ -64,7 +77,7 @@
+       BUG_ON(!chip && !(chip->avail_substreams & AVAIL_SUBSTREAMS_MASK));
+       if (kcontrol->private_value == PCM_PLAYBACK_VOLUME)
+-              ucontrol->value.integer.value[0] = chip->volume;
++              ucontrol->value.integer.value[0] = chip2alsa(chip->volume);
+       else if (kcontrol->private_value == PCM_PLAYBACK_MUTE)
+               ucontrol->value.integer.value[0] = chip->mute;
+       else if (kcontrol->private_value == PCM_PLAYBACK_DEVICE)
+@@ -85,13 +98,10 @@
+                       changed = 1;
+               }
+               if (changed
+-                  || (ucontrol->value.integer.value[0] != chip->volume)) {
+-                      int atten;
++                  || (ucontrol->value.integer.value[0] != chip2alsa(chip->volume))) {
+-                      chip->volume = ucontrol->value.integer.value[0];
++                      chip->volume = alsa2chip(ucontrol->value.integer.value[0]);
+                       changed = 1;
+-                      atten = -((chip->volume << 8) / 100);
+-                      chip->volume = atten;
+               }
+       } else if (kcontrol->private_value == PCM_PLAYBACK_MUTE) {
diff --git a/src/patches/linux-3.2-bcm2835-limit_volume.patch b/src/patches/linux-3.2-bcm2835-limit_volume.patch
new file mode 100644 (file)
index 0000000..930033b
--- /dev/null
@@ -0,0 +1,12 @@
+diff -Naur linux-3.2.19.org/sound/arm/bcm2835-ctl.c linux-3.2.19/sound/arm/bcm2835-ctl.c
+--- linux-3.2.19.org/sound/arm/bcm2835-ctl.c   2012-06-04 22:38:54.000000000 +0200
++++ linux-3.2.19/sound/arm/bcm2835-ctl.c       2012-06-05 22:37:46.343725845 +0200
+@@ -53,7 +53,7 @@
+               uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
+               uinfo->count = 1;
+               uinfo->value.integer.min = -10240;
+-              uinfo->value.integer.max = 2303;
++              uinfo->value.integer.max = 400;      /* 2303 */
+       } else if (kcontrol->private_value == PCM_PLAYBACK_MUTE) {
+               uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
+               uinfo->count = 1;
diff --git a/src/patches/linux-3.2-imq.patch b/src/patches/linux-3.2-imq.patch
new file mode 100644 (file)
index 0000000..8e8685d
--- /dev/null
@@ -0,0 +1,1603 @@
+diff -uNr linux-3.2/drivers/net/imq.c linux-3.2-imq/drivers/net/imq.c
+--- linux-3.2/drivers/net/imq.c        1970-01-01 02:00:00.000000000 +0200
++++ linux-3.2-imq/drivers/net/imq.c    2011-11-04 12:16:10.454992642 +0200
+@@ -0,0 +1,850 @@
++/*
++ *             Pseudo-driver for the intermediate queue device.
++ *
++ *             This program is free software; you can redistribute it and/or
++ *             modify it under the terms of the GNU General Public License
++ *             as published by the Free Software Foundation; either version
++ *             2 of the License, or (at your option) any later version.
++ *
++ * Authors:    Patrick McHardy, <kaber@trash.net>
++ *
++ *            The first version was written by Martin Devera, <devik@cdi.cz>
++ *
++ * Credits:    Jan Rafaj <imq2t@cedric.vabo.cz>
++ *              - Update patch to 2.4.21
++ *             Sebastian Strollo <sstrollo@nortelnetworks.com>
++ *              - Fix "Dead-loop on netdevice imq"-issue
++ *             Marcel Sebek <sebek64@post.cz>
++ *              - Update to 2.6.2-rc1
++ *
++ *           After some time of inactivity there is a group taking care
++ *           of IMQ again: http://www.linuximq.net
++ *
++ *
++ *           2004/06/30 - New version of IMQ patch to kernels <=2.6.7
++ *             including the following changes:
++ *
++ *           - Correction of ipv6 support "+"s issue (Hasso Tepper)
++ *           - Correction of imq_init_devs() issue that resulted in
++ *           kernel OOPS unloading IMQ as module (Norbert Buchmuller)
++ *           - Addition of functionality to choose number of IMQ devices
++ *           during kernel config (Andre Correa)
++ *           - Addition of functionality to choose how IMQ hooks on
++ *           PRE and POSTROUTING (after or before NAT) (Andre Correa)
++ *           - Cosmetic corrections (Norbert Buchmuller) (Andre Correa)
++ *
++ *
++ *             2005/12/16 - IMQ versions between 2.6.7 and 2.6.13 were
++ *             released with almost no problems. 2.6.14-x was released
++ *             with some important changes: nfcache was removed; After
++ *             some weeks of trouble we figured out that some IMQ fields
++ *             in skb were missing in skbuff.c - skb_clone and copy_skb_header.
++ *             These functions are correctly patched by this new patch version.
++ *
++ *             Thanks for all who helped to figure out all the problems with
++ *             2.6.14.x: Patrick McHardy, Rune Kock, VeNoMouS, Max CtRiX,
++ *             Kevin Shanahan, Richard Lucassen, Valery Dachev (hopefully
++ *             I didn't forget anybody). I apologize again for my lack of time.
++ *
++ *
++ *             2008/06/17 - 2.6.25 - Changed imq.c to use qdisc_run() instead
++ *             of qdisc_restart() and moved qdisc_run() to tasklet to avoid
++ *             recursive locking. New initialization routines to fix 'rmmod' not
++ *             working anymore. Used code from ifb.c. (Jussi Kivilinna)
++ *
++ *             2008/08/06 - 2.6.26 - (JK)
++ *              - Replaced tasklet with 'netif_schedule()'.
++ *              - Cleaned up and added comments for imq_nf_queue().
++ *
++ *             2009/04/12
++ *              - Add skb_save_cb/skb_restore_cb helper functions for backuping
++ *                control buffer. This is needed because qdisc-layer on kernels
++ *                2.6.27 and newer overwrite control buffer. (Jussi Kivilinna)
++ *              - Add better locking for IMQ device. Hopefully this will solve
++ *                SMP issues. (Jussi Kivilinna)
++ *              - Port to 2.6.27
++ *              - Port to 2.6.28
++ *              - Port to 2.6.29 + fix rmmod not working
++ *
++ *             2009/04/20 - (Jussi Kivilinna)
++ *              - Use netdevice feature flags to avoid extra packet handling
++ *                by core networking layer and possibly increase performance.
++ *
++ *             2009/09/26 - (Jussi Kivilinna)
++ *              - Add imq_nf_reinject_lockless to fix deadlock with
++ *                imq_nf_queue/imq_nf_reinject.
++ *
++ *             2009/12/08 - (Jussi Kivilinna)
++ *              - Port to 2.6.32
++ *              - Add check for skb->nf_queue_entry==NULL in imq_dev_xmit()
++ *              - Also add better error checking for skb->nf_queue_entry usage
++ *
++ *             2010/02/25 - (Jussi Kivilinna)
++ *              - Port to 2.6.33
++ *
++ *             2010/08/15 - (Jussi Kivilinna)
++ *              - Port to 2.6.35
++ *              - Simplify hook registration by using nf_register_hooks.
++ *              - nf_reinject doesn't need spinlock around it, therefore remove
++ *                imq_nf_reinject function. Other nf_reinject users protect
++ *                their own data with spinlock. With IMQ however all data is
++ *                needed is stored per skbuff, so no locking is needed.
++ *              - Changed IMQ to use 'separate' NF_IMQ_QUEUE instead of
++ *                NF_QUEUE, this allows working coexistance of IMQ and other
++ *                NF_QUEUE users.
++ *              - Make IMQ multi-queue. Number of IMQ device queues can be
++ *                increased with 'numqueues' module parameters. Default number
++ *                of queues is 1, in other words by default IMQ works as
++ *                single-queue device. Multi-queue selection is based on
++ *                IFB multi-queue patch by Changli Gao <xiaosuo@gmail.com>.
++ *
++ *             2011/03/18 - (Jussi Kivilinna)
++ *              - Port to 2.6.38
++ *
++ *             2011/07/12 - (syoder89@gmail.com)
++ *              - Crash fix that happens when the receiving interface has more
++ *                than one queue (add missing skb_set_queue_mapping in
++ *                imq_select_queue).
++ *
++ *             2011/07/26 - (Jussi Kivilinna)
++ *              - Add queue mapping checks for packets exiting IMQ.
++ *              - Port to 3.0
++ *
++ *             2011/08/16 - (Jussi Kivilinna)
++ *              - Clear IFF_TX_SKB_SHARING flag that was added for linux 3.0.2
++ *
++ *             2011/11/03 - Germano Michel <germanomichel@gmail.com>
++ *              - Fix IMQ for net namespaces
++ *
++ *             2011/11/04 - Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
++ *              - Port to 3.1
++ *              - Clean-up, move 'get imq device pointer by imqX name' to
++ *                separate function from imq_nf_queue().
++ *
++ *           Also, many thanks to pablo Sebastian Greco for making the initial
++ *           patch and to those who helped the testing.
++ *
++ *             More info at: http://www.linuximq.net/ (Andre Correa)
++ */
++
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/moduleparam.h>
++#include <linux/list.h>
++#include <linux/skbuff.h>
++#include <linux/netdevice.h>
++#include <linux/etherdevice.h>
++#include <linux/rtnetlink.h>
++#include <linux/if_arp.h>
++#include <linux/netfilter.h>
++#include <linux/netfilter_ipv4.h>
++#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
++      #include <linux/netfilter_ipv6.h>
++#endif
++#include <linux/imq.h>
++#include <net/pkt_sched.h>
++#include <net/netfilter/nf_queue.h>
++#include <net/sock.h>
++#include <linux/ip.h>
++#include <linux/ipv6.h>
++#include <linux/if_vlan.h>
++#include <linux/if_pppox.h>
++#include <net/ip.h>
++#include <net/ipv6.h>
++
++static int imq_nf_queue(struct nf_queue_entry *entry, unsigned queue_num);
++
++static nf_hookfn imq_nf_hook;
++
++static struct nf_hook_ops imq_ops[] = {
++      {
++      /* imq_ingress_ipv4 */
++              .hook           = imq_nf_hook,
++              .owner          = THIS_MODULE,
++              .pf             = PF_INET,
++              .hooknum        = NF_INET_PRE_ROUTING,
++#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB)
++              .priority       = NF_IP_PRI_MANGLE + 1,
++#else
++              .priority       = NF_IP_PRI_NAT_DST + 1,
++#endif
++      },
++      {
++      /* imq_egress_ipv4 */
++              .hook           = imq_nf_hook,
++              .owner          = THIS_MODULE,
++              .pf             = PF_INET,
++              .hooknum        = NF_INET_POST_ROUTING,
++#if defined(CONFIG_IMQ_BEHAVIOR_AA) || defined(CONFIG_IMQ_BEHAVIOR_BA)
++              .priority       = NF_IP_PRI_LAST,
++#else
++              .priority       = NF_IP_PRI_NAT_SRC - 1,
++#endif
++      },
++#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
++      {
++      /* imq_ingress_ipv6 */
++              .hook           = imq_nf_hook,
++              .owner          = THIS_MODULE,
++              .pf             = PF_INET6,
++              .hooknum        = NF_INET_PRE_ROUTING,
++#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB)
++              .priority       = NF_IP6_PRI_MANGLE + 1,
++#else
++              .priority       = NF_IP6_PRI_NAT_DST + 1,
++#endif
++      },
++      {
++      /* imq_egress_ipv6 */
++              .hook           = imq_nf_hook,
++              .owner          = THIS_MODULE,
++              .pf             = PF_INET6,
++              .hooknum        = NF_INET_POST_ROUTING,
++#if defined(CONFIG_IMQ_BEHAVIOR_AA) || defined(CONFIG_IMQ_BEHAVIOR_BA)
++              .priority       = NF_IP6_PRI_LAST,
++#else
++              .priority       = NF_IP6_PRI_NAT_SRC - 1,
++#endif
++      },
++#endif
++};
++
++#if defined(CONFIG_IMQ_NUM_DEVS)
++static int numdevs = CONFIG_IMQ_NUM_DEVS;
++#else
++static int numdevs = IMQ_MAX_DEVS;
++#endif
++
++static struct net_device *imq_devs_cache[IMQ_MAX_DEVS];
++
++#define IMQ_MAX_QUEUES 32
++static int numqueues = 1;
++static u32 imq_hashrnd;
++
++static inline __be16 pppoe_proto(const struct sk_buff *skb)
++{
++      return *((__be16 *)(skb_mac_header(skb) + ETH_HLEN +
++                      sizeof(struct pppoe_hdr)));
++}
++
++static u16 imq_hash(struct net_device *dev, struct sk_buff *skb)
++{
++      unsigned int pull_len;
++      u16 protocol = skb->protocol;
++      u32 addr1, addr2;
++      u32 hash, ihl = 0;
++      union {
++              u16 in16[2];
++              u32 in32;
++      } ports;
++      u8 ip_proto;
++
++      pull_len = 0;
++
++recheck:
++      switch (protocol) {
++      case htons(ETH_P_8021Q): {
++              if (unlikely(skb_pull(skb, VLAN_HLEN) == NULL))
++                      goto other;
++
++              pull_len += VLAN_HLEN;
++              skb->network_header += VLAN_HLEN;
++
++              protocol = vlan_eth_hdr(skb)->h_vlan_encapsulated_proto;
++              goto recheck;
++      }
++
++      case htons(ETH_P_PPP_SES): {
++              if (unlikely(skb_pull(skb, PPPOE_SES_HLEN) == NULL))
++                      goto other;
++
++              pull_len += PPPOE_SES_HLEN;
++              skb->network_header += PPPOE_SES_HLEN;
++
++              protocol = pppoe_proto(skb);
++              goto recheck;
++      }
++
++      case htons(ETH_P_IP): {
++              const struct iphdr *iph = ip_hdr(skb);
++
++              if (unlikely(!pskb_may_pull(skb, sizeof(struct iphdr))))
++                      goto other;
++
++              addr1 = iph->daddr;
++              addr2 = iph->saddr;
++
++              ip_proto = !(ip_hdr(skb)->frag_off & htons(IP_MF | IP_OFFSET)) ?
++                               iph->protocol : 0;
++              ihl = ip_hdrlen(skb);
++
++              break;
++      }
++#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
++      case htons(ETH_P_IPV6): {
++              const struct ipv6hdr *iph = ipv6_hdr(skb);
++
++              if (unlikely(!pskb_may_pull(skb, sizeof(struct ipv6hdr))))
++                      goto other;
++
++              addr1 = iph->daddr.s6_addr32[3];
++              addr2 = iph->saddr.s6_addr32[3];
++              ihl = ipv6_skip_exthdr(skb, sizeof(struct ipv6hdr), &ip_proto);
++              if (unlikely(ihl < 0))
++                      goto other;
++
++              break;
++      }
++#endif
++      default:
++other:
++              if (pull_len != 0) {
++                      skb_push(skb, pull_len);
++                      skb->network_header -= pull_len;
++              }
++
++              return (u16)(ntohs(protocol) % dev->real_num_tx_queues);
++      }
++
++      if (addr1 > addr2)
++              swap(addr1, addr2);
++
++      switch (ip_proto) {
++      case IPPROTO_TCP:
++      case IPPROTO_UDP:
++      case IPPROTO_DCCP:
++      case IPPROTO_ESP:
++      case IPPROTO_AH:
++      case IPPROTO_SCTP:
++      case IPPROTO_UDPLITE: {
++              if (likely(skb_copy_bits(skb, ihl, &ports.in32, 4) >= 0)) {
++                      if (ports.in16[0] > ports.in16[1])
++                              swap(ports.in16[0], ports.in16[1]);
++                      break;
++              }
++              /* fall-through */
++      }
++      default:
++              ports.in32 = 0;
++              break;
++      }
++
++      if (pull_len != 0) {
++              skb_push(skb, pull_len);
++              skb->network_header -= pull_len;
++      }
++
++      hash = jhash_3words(addr1, addr2, ports.in32, imq_hashrnd ^ ip_proto);
++
++      return (u16)(((u64)hash * dev->real_num_tx_queues) >> 32);
++}
++
++static inline bool sk_tx_queue_recorded(struct sock *sk)
++{
++      return (sk_tx_queue_get(sk) >= 0);
++}
++
++static struct netdev_queue *imq_select_queue(struct net_device *dev,
++                                              struct sk_buff *skb)
++{
++      u16 queue_index = 0;
++      u32 hash;
++
++      if (likely(dev->real_num_tx_queues == 1))
++              goto out;
++
++      /* IMQ can be receiving ingress or engress packets. */
++
++      /* Check first for if rx_queue is set */
++      if (skb_rx_queue_recorded(skb)) {
++              queue_index = skb_get_rx_queue(skb);
++              goto out;
++      }
++
++      /* Check if socket has tx_queue set */
++      if (sk_tx_queue_recorded(skb->sk)) {
++              queue_index = sk_tx_queue_get(skb->sk);
++              goto out;
++      }
++
++      /* Try use socket hash */
++      if (skb->sk && skb->sk->sk_hash) {
++              hash = skb->sk->sk_hash;
++              queue_index =
++                      (u16)(((u64)hash * dev->real_num_tx_queues) >> 32);
++              goto out;
++      }
++
++      /* Generate hash from packet data */
++      queue_index = imq_hash(dev, skb);
++
++out:
++      if (unlikely(queue_index >= dev->real_num_tx_queues))
++              queue_index = (u16)((u32)queue_index % dev->real_num_tx_queues);
++
++      skb_set_queue_mapping(skb, queue_index);
++      return netdev_get_tx_queue(dev, queue_index);
++}
++
++static struct net_device_stats *imq_get_stats(struct net_device *dev)
++{
++      return &dev->stats;
++}
++
++/* called for packets kfree'd in qdiscs at places other than enqueue */
++static void imq_skb_destructor(struct sk_buff *skb)
++{
++      struct nf_queue_entry *entry = skb->nf_queue_entry;
++
++      skb->nf_queue_entry = NULL;
++
++      if (entry) {
++              nf_queue_entry_release_refs(entry);
++              kfree(entry);
++      }
++
++      skb_restore_cb(skb); /* kfree backup */
++}
++
++static void imq_done_check_queue_mapping(struct sk_buff *skb,
++                                       struct net_device *dev)
++{
++      unsigned int queue_index;
++
++      /* Don't let queue_mapping be left too large after exiting IMQ */
++      if (likely(skb->dev != dev && skb->dev != NULL)) {
++              queue_index = skb_get_queue_mapping(skb);
++              if (unlikely(queue_index >= skb->dev->real_num_tx_queues)) {
++                      queue_index = (u16)((u32)queue_index %
++                                              skb->dev->real_num_tx_queues);
++                      skb_set_queue_mapping(skb, queue_index);
++              }
++      } else {
++              /* skb->dev was IMQ device itself or NULL, be on safe side and
++               * just clear queue mapping.
++               */
++              skb_set_queue_mapping(skb, 0);
++      }
++}
++
++static netdev_tx_t imq_dev_xmit(struct sk_buff *skb, struct net_device *dev)
++{
++      struct nf_queue_entry *entry = skb->nf_queue_entry;
++
++      skb->nf_queue_entry = NULL;
++      dev->trans_start = jiffies;
++
++      dev->stats.tx_bytes += skb->len;
++      dev->stats.tx_packets++;
++
++      if (unlikely(entry == NULL)) {
++              /* We don't know what is going on here.. packet is queued for
++               * imq device, but (probably) not by us.
++               *
++               * If this packet was not send here by imq_nf_queue(), then
++               * skb_save_cb() was not used and skb_free() should not show:
++               *   WARNING: IMQ: kfree_skb: skb->cb_next:..
++               * and/or
++               *   WARNING: IMQ: kfree_skb: skb->nf_queue_entry...
++               *
++               * However if this message is shown, then IMQ is somehow broken
++               * and you should report this to linuximq.net.
++               */
++
++              /* imq_dev_xmit is black hole that eats all packets, report that
++               * we eat this packet happily and increase dropped counters.
++               */
++
++              dev->stats.tx_dropped++;
++              dev_kfree_skb(skb);
++
++              return NETDEV_TX_OK;
++      }
++
++      skb_restore_cb(skb); /* restore skb->cb */
++
++      skb->imq_flags = 0;
++      skb->destructor = NULL;
++
++      imq_done_check_queue_mapping(skb, dev);
++
++      nf_reinject(entry, NF_ACCEPT);
++
++      return NETDEV_TX_OK;
++}
++
++static struct net_device *get_imq_device_by_index(int index)
++{
++      struct net_device *dev = NULL;
++      struct net *net;
++      char buf[8];
++
++      /* get device by name and cache result */
++      snprintf(buf, sizeof(buf), "imq%d", index);
++
++      /* Search device from all namespaces. */
++      for_each_net(net) {
++              dev = dev_get_by_name(net, buf);
++              if (dev)
++                      break;
++      }
++
++      if (WARN_ON_ONCE(dev == NULL)) {
++              /* IMQ device not found. Exotic config? */
++              return ERR_PTR(-ENODEV);
++      }
++
++      imq_devs_cache[index] = dev;
++      dev_put(dev);
++
++      return dev;
++}
++
++static int imq_nf_queue(struct nf_queue_entry *entry, unsigned queue_num)
++{
++      struct net_device *dev;
++      struct sk_buff *skb_orig, *skb, *skb_shared;
++      struct Qdisc *q;
++      struct netdev_queue *txq;
++      spinlock_t *root_lock;
++      int users, index;
++      int retval = -EINVAL;
++      unsigned int orig_queue_index;
++
++      index = entry->skb->imq_flags & IMQ_F_IFMASK;
++      if (unlikely(index > numdevs - 1)) {
++              if (net_ratelimit())
++                      printk(KERN_WARNING
++                             "IMQ: invalid device specified, highest is %u\n",
++                             numdevs - 1);
++              retval = -EINVAL;
++              goto out;
++      }
++
++      /* check for imq device by index from cache */
++      dev = imq_devs_cache[index];
++      if (unlikely(!dev)) {
++              dev = get_imq_device_by_index(index);
++              if (IS_ERR(dev)) {
++                      retval = PTR_ERR(dev);
++                      goto out;
++              }
++      }
++
++      if (unlikely(!(dev->flags & IFF_UP))) {
++              entry->skb->imq_flags = 0;
++              nf_reinject(entry, NF_ACCEPT);
++              retval = 0;
++              goto out;
++      }
++      dev->last_rx = jiffies;
++
++      skb = entry->skb;
++      skb_orig = NULL;
++
++      /* skb has owner? => make clone */
++      if (unlikely(skb->destructor)) {
++              skb_orig = skb;
++              skb = skb_clone(skb, GFP_ATOMIC);
++              if (unlikely(!skb)) {
++                      retval = -ENOMEM;
++                      goto out;
++              }
++              entry->skb = skb;
++      }
++
++      skb->nf_queue_entry = entry;
++
++      dev->stats.rx_bytes += skb->len;
++      dev->stats.rx_packets++;
++
++      if (!skb->dev) {
++              /* skb->dev == NULL causes problems, try the find cause. */
++              if (net_ratelimit()) {
++                      dev_warn(&dev->dev,
++                               "received packet with skb->dev == NULL\n");
++                      dump_stack();
++              }
++
++              skb->dev = dev;
++      }
++
++      /* Disables softirqs for lock below */
++      rcu_read_lock_bh();
++
++      /* Multi-queue selection */
++      orig_queue_index = skb_get_queue_mapping(skb);
++      txq = imq_select_queue(dev, skb);
++
++      q = rcu_dereference(txq->qdisc);
++      if (unlikely(!q->enqueue))
++              goto packet_not_eaten_by_imq_dev;
++
++      root_lock = qdisc_lock(q);
++      spin_lock(root_lock);
++
++      users = atomic_read(&skb->users);
++
++      skb_shared = skb_get(skb); /* increase reference count by one */
++      skb_save_cb(skb_shared); /* backup skb->cb, as qdisc layer will
++                                      overwrite it */
++      qdisc_enqueue_root(skb_shared, q); /* might kfree_skb */
++
++      if (likely(atomic_read(&skb_shared->users) == users + 1)) {
++              kfree_skb(skb_shared); /* decrease reference count by one */
++
++              skb->destructor = &imq_skb_destructor;
++
++              /* cloned? */
++              if (unlikely(skb_orig))
++                      kfree_skb(skb_orig); /* free original */
++
++              spin_unlock(root_lock);
++              rcu_read_unlock_bh();
++
++              /* schedule qdisc dequeue */
++              __netif_schedule(q);
++
++              retval = 0;
++              goto out;
++      } else {
++              skb_restore_cb(skb_shared); /* restore skb->cb */
++              skb->nf_queue_entry = NULL;
++              /* qdisc dropped packet and decreased skb reference count of
++               * skb, so we don't really want to and try refree as that would
++               * actually destroy the skb. */
++              spin_unlock(root_lock);
++              goto packet_not_eaten_by_imq_dev;
++      }
++
++packet_not_eaten_by_imq_dev:
++      skb_set_queue_mapping(skb, orig_queue_index);
++      rcu_read_unlock_bh();
++
++      /* cloned? restore original */
++      if (unlikely(skb_orig)) {
++              kfree_skb(skb);
++              entry->skb = skb_orig;
++      }
++      retval = -1;
++out:
++      return retval;
++}
++
++static unsigned int imq_nf_hook(unsigned int hook, struct sk_buff *pskb,
++                              const struct net_device *indev,
++                              const struct net_device *outdev,
++                              int (*okfn)(struct sk_buff *))
++{
++      return (pskb->imq_flags & IMQ_F_ENQUEUE) ? NF_IMQ_QUEUE : NF_ACCEPT;
++}
++
++static int imq_close(struct net_device *dev)
++{
++      netif_stop_queue(dev);
++      return 0;
++}
++
++static int imq_open(struct net_device *dev)
++{
++      netif_start_queue(dev);
++      return 0;
++}
++
++static const struct net_device_ops imq_netdev_ops = {
++      .ndo_open               = imq_open,
++      .ndo_stop               = imq_close,
++      .ndo_start_xmit         = imq_dev_xmit,
++      .ndo_get_stats          = imq_get_stats,
++};
++
++static void imq_setup(struct net_device *dev)
++{
++      dev->netdev_ops         = &imq_netdev_ops;
++      dev->type               = ARPHRD_VOID;
++      dev->mtu                = 16000; /* too small? */
++      dev->tx_queue_len       = 11000; /* too big? */
++      dev->flags              = IFF_NOARP;
++      dev->features           = NETIF_F_SG | NETIF_F_FRAGLIST |
++                                NETIF_F_GSO | NETIF_F_HW_CSUM |
++                                NETIF_F_HIGHDMA;
++      dev->priv_flags         &= ~(IFF_XMIT_DST_RELEASE |
++                                   IFF_TX_SKB_SHARING);
++}
++
++static int imq_validate(struct nlattr *tb[], struct nlattr *data[])
++{
++      int ret = 0;
++
++      if (tb[IFLA_ADDRESS]) {
++              if (nla_len(tb[IFLA_ADDRESS]) != ETH_ALEN) {
++                      ret = -EINVAL;
++                      goto end;
++              }
++              if (!is_valid_ether_addr(nla_data(tb[IFLA_ADDRESS]))) {
++                      ret = -EADDRNOTAVAIL;
++                      goto end;
++              }
++      }
++      return 0;
++end:
++      printk(KERN_WARNING "IMQ: imq_validate failed (%d)\n", ret);
++      return ret;
++}
++
++static struct rtnl_link_ops imq_link_ops __read_mostly = {
++      .kind           = "imq",
++      .priv_size      = 0,
++      .setup          = imq_setup,
++      .validate       = imq_validate,
++};
++
++static const struct nf_queue_handler imq_nfqh = {
++      .name  = "imq",
++      .outfn = imq_nf_queue,
++};
++
++static int __init imq_init_hooks(void)
++{
++      int ret;
++
++      nf_register_queue_imq_handler(&imq_nfqh);
++
++      ret = nf_register_hooks(imq_ops, ARRAY_SIZE(imq_ops));
++      if (ret < 0)
++              nf_unregister_queue_imq_handler();
++
++      return ret;
++}
++
++static int __init imq_init_one(int index)
++{
++      struct net_device *dev;
++      int ret;
++
++      dev = alloc_netdev_mq(0, "imq%d", imq_setup, numqueues);
++      if (!dev)
++              return -ENOMEM;
++
++      ret = dev_alloc_name(dev, dev->name);
++      if (ret < 0)
++              goto fail;
++
++      dev->rtnl_link_ops = &imq_link_ops;
++      ret = register_netdevice(dev);
++      if (ret < 0)
++              goto fail;
++
++      return 0;
++fail:
++      free_netdev(dev);
++      return ret;
++}
++
++static int __init imq_init_devs(void)
++{
++      int err, i;
++
++      if (numdevs < 1 || numdevs > IMQ_MAX_DEVS) {
++              printk(KERN_ERR "IMQ: numdevs has to be betweed 1 and %u\n",
++                     IMQ_MAX_DEVS);
++              return -EINVAL;
++      }
++
++      if (numqueues < 1 || numqueues > IMQ_MAX_QUEUES) {
++              printk(KERN_ERR "IMQ: numqueues has to be betweed 1 and %u\n",
++                     IMQ_MAX_QUEUES);
++              return -EINVAL;
++      }
++
++      get_random_bytes(&imq_hashrnd, sizeof(imq_hashrnd));
++
++      rtnl_lock();
++      err = __rtnl_link_register(&imq_link_ops);
++
++      for (i = 0; i < numdevs && !err; i++)
++              err = imq_init_one(i);
++
++      if (err) {
++              __rtnl_link_unregister(&imq_link_ops);
++              memset(imq_devs_cache, 0, sizeof(imq_devs_cache));
++      }
++      rtnl_unlock();
++
++      return err;
++}
++
++static int __init imq_init_module(void)
++{
++      int err;
++
++#if defined(CONFIG_IMQ_NUM_DEVS)
++      BUILD_BUG_ON(CONFIG_IMQ_NUM_DEVS > 16);
++      BUILD_BUG_ON(CONFIG_IMQ_NUM_DEVS < 2);
++      BUILD_BUG_ON(CONFIG_IMQ_NUM_DEVS - 1 > IMQ_F_IFMASK);
++#endif
++
++      err = imq_init_devs();
++      if (err) {
++              printk(KERN_ERR "IMQ: Error trying imq_init_devs(net)\n");
++              return err;
++      }
++
++      err = imq_init_hooks();
++      if (err) {
++              printk(KERN_ERR "IMQ: Error trying imq_init_hooks()\n");
++              rtnl_link_unregister(&imq_link_ops);
++              memset(imq_devs_cache, 0, sizeof(imq_devs_cache));
++              return err;
++      }
++
++      printk(KERN_INFO "IMQ driver loaded successfully. "
++              "(numdevs = %d, numqueues = %d)\n", numdevs, numqueues);
++
++#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB)
++      printk(KERN_INFO "\tHooking IMQ before NAT on PREROUTING.\n");
++#else
++      printk(KERN_INFO "\tHooking IMQ after NAT on PREROUTING.\n");
++#endif
++#if defined(CONFIG_IMQ_BEHAVIOR_AB) || defined(CONFIG_IMQ_BEHAVIOR_BB)
++      printk(KERN_INFO "\tHooking IMQ before NAT on POSTROUTING.\n");
++#else
++      printk(KERN_INFO "\tHooking IMQ after NAT on POSTROUTING.\n");
++#endif
++
++      return 0;
++}
++
++static void __exit imq_unhook(void)
++{
++      nf_unregister_hooks(imq_ops, ARRAY_SIZE(imq_ops));
++      nf_unregister_queue_imq_handler();
++}
++
++static void __exit imq_cleanup_devs(void)
++{
++      rtnl_link_unregister(&imq_link_ops);
++      memset(imq_devs_cache, 0, sizeof(imq_devs_cache));
++}
++
++static void __exit imq_exit_module(void)
++{
++      imq_unhook();
++      imq_cleanup_devs();
++      printk(KERN_INFO "IMQ driver unloaded successfully.\n");
++}
++
++module_init(imq_init_module);
++module_exit(imq_exit_module);
++
++module_param(numdevs, int, 0);
++module_param(numqueues, int, 0);
++MODULE_PARM_DESC(numdevs, "number of IMQ devices (how many imq* devices will "
++                      "be created)");
++MODULE_PARM_DESC(numqueues, "number of queues per IMQ device");
++MODULE_AUTHOR("http://www.linuximq.net");
++MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. See "
++                      "http://www.linuximq.net/ for more information.");
++MODULE_LICENSE("GPL");
++MODULE_ALIAS_RTNL_LINK("imq");
++
+diff -uNr linux-3.2/drivers/net/Kconfig linux-3.2-imq/drivers/net/Kconfig
+--- linux-3.2/drivers/net/Kconfig      2011-10-24 10:10:05.000000000 +0300
++++ linux-3.2-imq/drivers/net/Kconfig  2011-11-04 11:12:52.106390309 +0200
+@@ -90,6 +90,125 @@
+         To compile this driver as a module, choose M here: the module
+         will be called eql.  If unsure, say N.
++config IMQ
++      tristate "IMQ (intermediate queueing device) support"
++      depends on NETDEVICES && NETFILTER
++      ---help---
++        The IMQ device(s) is used as placeholder for QoS queueing
++        disciplines. Every packet entering/leaving the IP stack can be
++        directed through the IMQ device where it's enqueued/dequeued to the
++        attached qdisc. This allows you to treat network devices as classes
++        and distribute bandwidth among them. Iptables is used to specify
++        through which IMQ device, if any, packets travel.
++
++        More information at: http://www.linuximq.net/
++
++        To compile this driver as a module, choose M here: the module
++        will be called imq.  If unsure, say N.
++
++choice
++      prompt "IMQ behavior (PRE/POSTROUTING)"
++      depends on IMQ
++      default IMQ_BEHAVIOR_AB
++      help
++        This setting defines how IMQ behaves in respect to its
++        hooking in PREROUTING and POSTROUTING.
++
++        IMQ can work in any of the following ways:
++
++            PREROUTING   |      POSTROUTING
++        -----------------|-------------------
++        #1  After NAT    |      After NAT
++        #2  After NAT    |      Before NAT
++        #3  Before NAT   |      After NAT
++        #4  Before NAT   |      Before NAT
++
++        The default behavior is to hook before NAT on PREROUTING
++        and after NAT on POSTROUTING (#3).
++
++        This settings are specially usefull when trying to use IMQ
++        to shape NATed clients.
++
++        More information can be found at: www.linuximq.net
++
++        If not sure leave the default settings alone.
++
++config IMQ_BEHAVIOR_AA
++      bool "IMQ AA"
++      help
++        This setting defines how IMQ behaves in respect to its
++        hooking in PREROUTING and POSTROUTING.
++
++        Choosing this option will make IMQ hook like this:
++
++        PREROUTING:   After NAT
++        POSTROUTING:  After NAT
++
++        More information can be found at: www.linuximq.net
++
++        If not sure leave the default settings alone.
++
++config IMQ_BEHAVIOR_AB
++      bool "IMQ AB"
++      help
++        This setting defines how IMQ behaves in respect to its
++        hooking in PREROUTING and POSTROUTING.
++
++        Choosing this option will make IMQ hook like this:
++
++        PREROUTING:   After NAT
++        POSTROUTING:  Before NAT
++
++        More information can be found at: www.linuximq.net
++
++        If not sure leave the default settings alone.
++
++config IMQ_BEHAVIOR_BA
++      bool "IMQ BA"
++      help
++        This setting defines how IMQ behaves in respect to its
++        hooking in PREROUTING and POSTROUTING.
++
++        Choosing this option will make IMQ hook like this:
++
++        PREROUTING:   Before NAT
++        POSTROUTING:  After NAT
++
++        More information can be found at: www.linuximq.net
++
++        If not sure leave the default settings alone.
++
++config IMQ_BEHAVIOR_BB
++      bool "IMQ BB"
++      help
++        This setting defines how IMQ behaves in respect to its
++        hooking in PREROUTING and POSTROUTING.
++
++        Choosing this option will make IMQ hook like this:
++
++        PREROUTING:   Before NAT
++        POSTROUTING:  Before NAT
++
++        More information can be found at: www.linuximq.net
++
++        If not sure leave the default settings alone.
++
++endchoice
++
++config IMQ_NUM_DEVS
++      int "Number of IMQ devices"
++      range 2 16
++      depends on IMQ
++      default "16"
++      help
++        This setting defines how many IMQ devices will be created.
++
++        The default value is 16.
++
++        More information can be found at: www.linuximq.net
++
++        If not sure leave the default settings alone.
++
+ config NET_FC
+       bool "Fibre Channel driver support"
+       depends on SCSI && PCI
+diff -uNr linux-3.2/drivers/net/Makefile linux-3.2-imq/drivers/net/Makefile
+--- linux-3.2/drivers/net/Makefile     2011-10-24 10:10:05.000000000 +0300
++++ linux-3.2-imq/drivers/net/Makefile 2011-11-04 11:12:52.106390309 +0200
+@@ -8,6 +8,7 @@ 
+ obj-$(CONFIG_BONDING) += bonding/
+ obj-$(CONFIG_DUMMY) += dummy.o
+ obj-$(CONFIG_EQUALIZER) += eql.o
++obj-$(CONFIG_IMQ) += imq.o
+ obj-$(CONFIG_IFB) += ifb.o
+ obj-$(CONFIG_MACVLAN) += macvlan.o
+ obj-$(CONFIG_MACVTAP) += macvtap.o
+diff -uNr linux-3.2/include/linux/imq.h linux-3.2-imq/include/linux/imq.h
+--- linux-3.2/include/linux/imq.h      1970-01-01 02:00:00.000000000 +0200
++++ linux-3.2-imq/include/linux/imq.h  2011-11-04 11:12:52.109723710 +0200
+@@ -0,0 +1,13 @@
++#ifndef _IMQ_H
++#define _IMQ_H
++
++/* IFMASK (16 device indexes, 0 to 15) and flag(s) fit in 5 bits */
++#define IMQ_F_BITS    5
++
++#define IMQ_F_IFMASK  0x0f
++#define IMQ_F_ENQUEUE 0x10
++
++#define IMQ_MAX_DEVS  (IMQ_F_IFMASK + 1)
++
++#endif /* _IMQ_H */
++
+diff -uNr linux-3.2/include/linux/netfilter/xt_IMQ.h linux-3.2-imq/include/linux/netfilter/xt_IMQ.h
+--- linux-3.2/include/linux/netfilter/xt_IMQ.h 1970-01-01 02:00:00.000000000 +0200
++++ linux-3.2-imq/include/linux/netfilter/xt_IMQ.h     2011-11-04 11:12:52.109723710 +0200
+@@ -0,0 +1,9 @@
++#ifndef _XT_IMQ_H
++#define _XT_IMQ_H
++
++struct xt_imq_info {
++      unsigned int todev;     /* target imq device */
++};
++
++#endif /* _XT_IMQ_H */
++
+diff -uNr linux-3.2/include/linux/netfilter.h linux-3.2-imq/include/linux/netfilter.h
+--- linux-3.2/include/linux/netfilter.h        2011-10-24 10:10:05.000000000 +0300
++++ linux-3.2-imq/include/linux/netfilter.h    2011-11-04 11:12:52.109723710 +0200
+@@ -22,7 +22,8 @@
+ #define NF_QUEUE 3
+ #define NF_REPEAT 4
+ #define NF_STOP 5
+-#define NF_MAX_VERDICT NF_STOP
++#define NF_IMQ_QUEUE 6
++#define NF_MAX_VERDICT NF_IMQ_QUEUE
+ /* we overload the higher bits for encoding auxiliary data such as the queue
+  * number or errno values. Not nice, but better than additional function
+diff -uNr linux-3.2/include/linux/netfilter_ipv4/ipt_IMQ.h linux-3.2-imq/include/linux/netfilter_ipv4/ipt_IMQ.h
+--- linux-3.2/include/linux/netfilter_ipv4/ipt_IMQ.h   1970-01-01 02:00:00.000000000 +0200
++++ linux-3.2-imq/include/linux/netfilter_ipv4/ipt_IMQ.h       2011-11-04 11:12:52.109723710 +0200
+@@ -0,0 +1,10 @@
++#ifndef _IPT_IMQ_H
++#define _IPT_IMQ_H
++
++/* Backwards compatibility for old userspace */
++#include <linux/netfilter/xt_IMQ.h>
++
++#define ipt_imq_info xt_imq_info
++
++#endif /* _IPT_IMQ_H */
++
+diff -uNr linux-3.2/include/linux/netfilter_ipv6/ip6t_IMQ.h linux-3.2-imq/include/linux/netfilter_ipv6/ip6t_IMQ.h
+--- linux-3.2/include/linux/netfilter_ipv6/ip6t_IMQ.h  1970-01-01 02:00:00.000000000 +0200
++++ linux-3.2-imq/include/linux/netfilter_ipv6/ip6t_IMQ.h      2011-11-04 11:12:52.113057113 +0200
+@@ -0,0 +1,10 @@
++#ifndef _IP6T_IMQ_H
++#define _IP6T_IMQ_H
++
++/* Backwards compatibility for old userspace */
++#include <linux/netfilter/xt_IMQ.h>
++
++#define ip6t_imq_info xt_imq_info
++
++#endif /* _IP6T_IMQ_H */
++
+diff -uNr linux-3.2/include/linux/skbuff.h linux-3.2-imq/include/linux/skbuff.h
+--- linux-3.2/include/linux/skbuff.h   2011-10-24 10:10:05.000000000 +0300
++++ linux-3.2-imq/include/linux/skbuff.h       2011-11-04 11:12:52.116390515 +0200
+@@ -30,6 +30,9 @@
+ #include <linux/dmaengine.h>
+ #include <linux/hrtimer.h>
+ #include <linux/dma-mapping.h>
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++#include <linux/imq.h>
++#endif
+ /* Don't change this without changing skb_csum_unnecessary! */
+ #define CHECKSUM_NONE 0
+@@ -386,6 +389,9 @@
+        * first. This is owned by whoever has the skb queued ATM.
+        */
+       char                    cb[48] __aligned(8);
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++      void                    *cb_next;
++#endif
+       unsigned long           _skb_refdst;
+ #ifdef CONFIG_XFRM
+@@ -424,6 +430,9 @@
+ #ifdef NET_SKBUFF_NF_DEFRAG_NEEDED
+       struct sk_buff          *nfct_reasm;
+ #endif
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++      struct nf_queue_entry   *nf_queue_entry;
++#endif
+ #ifdef CONFIG_BRIDGE_NETFILTER
+       struct nf_bridge_info   *nf_bridge;
+ #endif
+@@ -449,6 +458,10 @@
+       /* 0/13 bit hole */
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++      __u8                    imq_flags:IMQ_F_BITS;
++#endif
++
+ #ifdef CONFIG_NET_DMA
+       dma_cookie_t            dma_cookie;
+ #endif
+@@ -535,6 +548,12 @@
+       return (struct rtable *)skb_dst(skb);
+ }
++
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++extern int skb_save_cb(struct sk_buff *skb);
++extern int skb_restore_cb(struct sk_buff *skb);
++#endif
++
+ extern void kfree_skb(struct sk_buff *skb);
+ extern void consume_skb(struct sk_buff *skb);
+ extern void          __kfree_skb(struct sk_buff *skb);
+@@ -2368,6 +2387,10 @@
+       dst->nfct_reasm = src->nfct_reasm;
+       nf_conntrack_get_reasm(src->nfct_reasm);
+ #endif
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++      dst->imq_flags = src->imq_flags;
++      dst->nf_queue_entry = src->nf_queue_entry;
++#endif
+ #ifdef CONFIG_BRIDGE_NETFILTER
+       dst->nf_bridge  = src->nf_bridge;
+       nf_bridge_get(src->nf_bridge);
+diff -uNr linux-3.2/include/net/netfilter/nf_queue.h linux-3.2-imq/include/net/netfilter/nf_queue.h
+--- linux-3.2/include/net/netfilter/nf_queue.h 2011-10-24 10:10:05.000000000 +0300
++++ linux-3.2-imq/include/net/netfilter/nf_queue.h     2011-11-04 11:12:52.116390515 +0200
+@@ -30,5 +30,11 @@
+                                      const struct nf_queue_handler *qh);
+ extern void nf_unregister_queue_handlers(const struct nf_queue_handler *qh);
+ extern void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict);
++extern void nf_queue_entry_release_refs(struct nf_queue_entry *entry);
++
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++extern void nf_register_queue_imq_handler(const struct nf_queue_handler *qh);
++extern void nf_unregister_queue_imq_handler(void);
++#endif
+ #endif /* _NF_QUEUE_H */
+diff -uNr linux-3.2/net/core/dev.c linux-3.2-imq/net/core/dev.c
+--- linux-3.2/net/core/dev.c   2011-10-24 10:10:05.000000000 +0300
++++ linux-3.2-imq/net/core/dev.c       2011-11-04 11:12:52.119723915 +0200
+@@ -98,6 +98,9 @@
+ #include <net/net_namespace.h>
+ #include <net/sock.h>
+ #include <linux/rtnetlink.h>
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++#include <linux/imq.h>
++#endif
+ #include <linux/proc_fs.h>
+ #include <linux/seq_file.h>
+ #include <linux/stat.h>
+@@ -2185,7 +2188,12 @@
+               if (dev->priv_flags & IFF_XMIT_DST_RELEASE)
+                       skb_dst_drop(skb);
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++              if (!list_empty(&ptype_all) &&
++                                      !(skb->imq_flags & IMQ_F_ENQUEUE))
++#else
+               if (!list_empty(&ptype_all))
++#endif
+                       dev_queue_xmit_nit(skb, dev);
+               skb_orphan_try(skb);
+diff -uNr linux-3.2/net/core/skbuff.c linux-3.2-imq/net/core/skbuff.c
+--- linux-3.2/net/core/skbuff.c        2011-10-24 10:10:05.000000000 +0300
++++ linux-3.2-imq/net/core/skbuff.c    2011-11-04 11:12:52.123057315 +0200
+@@ -73,6 +73,9 @@
+ static struct kmem_cache *skbuff_head_cache __read_mostly;
+ static struct kmem_cache *skbuff_fclone_cache __read_mostly;
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++static struct kmem_cache *skbuff_cb_store_cache __read_mostly;
++#endif
+ static void sock_pipe_buf_release(struct pipe_inode_info *pipe,
+                                 struct pipe_buffer *buf)
+@@ -92,6 +95,82 @@
+       return 1;
+ }
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++/* Control buffer save/restore for IMQ devices */
++struct skb_cb_table {
++      char                    cb[48] __aligned(8);
++      void                    *cb_next;
++      atomic_t                refcnt;
++};
++
++static DEFINE_SPINLOCK(skb_cb_store_lock);
++
++int skb_save_cb(struct sk_buff *skb)
++{
++      struct skb_cb_table *next;
++
++      next = kmem_cache_alloc(skbuff_cb_store_cache, GFP_ATOMIC);
++      if (!next)
++              return -ENOMEM;
++
++      BUILD_BUG_ON(sizeof(skb->cb) != sizeof(next->cb));
++
++      memcpy(next->cb, skb->cb, sizeof(skb->cb));
++      next->cb_next = skb->cb_next;
++
++      atomic_set(&next->refcnt, 1);
++
++      skb->cb_next = next;
++      return 0;
++}
++EXPORT_SYMBOL(skb_save_cb);
++
++int skb_restore_cb(struct sk_buff *skb)
++{
++      struct skb_cb_table *next;
++
++      if (!skb->cb_next)
++              return 0;
++
++      next = skb->cb_next;
++
++      BUILD_BUG_ON(sizeof(skb->cb) != sizeof(next->cb));
++
++      memcpy(skb->cb, next->cb, sizeof(skb->cb));
++      skb->cb_next = next->cb_next;
++
++      spin_lock(&skb_cb_store_lock);
++
++      if (atomic_dec_and_test(&next->refcnt))
++              kmem_cache_free(skbuff_cb_store_cache, next);
++
++      spin_unlock(&skb_cb_store_lock);
++
++      return 0;
++}
++EXPORT_SYMBOL(skb_restore_cb);
++
++static void skb_copy_stored_cb(struct sk_buff *new, const struct sk_buff *__old)
++{
++      struct skb_cb_table *next;
++      struct sk_buff *old;
++
++      if (!__old->cb_next) {
++              new->cb_next = NULL;
++              return;
++      }
++
++      spin_lock(&skb_cb_store_lock);
++
++      old = (struct sk_buff *)__old;
++
++      next = old->cb_next;
++      atomic_inc(&next->refcnt);
++      new->cb_next = next;
++
++      spin_unlock(&skb_cb_store_lock);
++}
++#endif
+ /* Pipe buffer operations for a socket. */
+ static const struct pipe_buf_operations sock_pipe_buf_ops = {
+@@ -403,6 +482,26 @@
+               WARN_ON(in_irq());
+               skb->destructor(skb);
+       }
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++      /* This should not happen. When it does, avoid memleak by restoring
++      the chain of cb-backups. */
++      while (skb->cb_next != NULL) {
++              if (net_ratelimit())
++                      printk(KERN_WARNING "IMQ: kfree_skb: skb->cb_next: "
++                              "%08x\n", (unsigned int)skb->cb_next);
++
++              skb_restore_cb(skb);
++      }
++      /* This should not happen either, nf_queue_entry is nullified in
++       * imq_dev_xmit(). If we have non-NULL nf_queue_entry then we are
++       * leaking entry pointers, maybe memory. We don't know if this is
++       * pointer to already freed memory, or should this be freed.
++       * If this happens we need to add refcounting, etc for nf_queue_entry.
++       */
++      if (skb->nf_queue_entry && net_ratelimit())
++              printk(KERN_WARNING
++                              "IMQ: kfree_skb: skb->nf_queue_entry != NULL");
++#endif
+ #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
+       nf_conntrack_put(skb->nfct);
+ #endif
+@@ -547,6 +646,9 @@
+       new->sp                 = secpath_get(old->sp);
+ #endif
+       memcpy(new->cb, old->cb, sizeof(old->cb));
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++      skb_copy_stored_cb(new, old);
++#endif
+       new->csum               = old->csum;
+       new->local_df           = old->local_df;
+       new->pkt_type           = old->pkt_type;
+@@ -2907,6 +3009,13 @@
+                                               0,
+                                               SLAB_HWCACHE_ALIGN|SLAB_PANIC,
+                                               NULL);
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++      skbuff_cb_store_cache = kmem_cache_create("skbuff_cb_store_cache",
++                                                sizeof(struct skb_cb_table),
++                                                0,
++                                                SLAB_HWCACHE_ALIGN|SLAB_PANIC,
++                                                NULL);
++#endif
+ }
+ /**
+diff -uNr linux-3.2/net/ipv6/ip6_output.c linux-3.2-imq/net/ipv6/ip6_output.c
+--- linux-3.2/net/ipv6/ip6_output.c    2011-10-24 10:10:05.000000000 +0300
++++ linux-3.2-imq/net/ipv6/ip6_output.c        2011-11-04 11:12:52.123057315 +0200
+@@ -102,9 +102,6 @@
+       struct net_device *dev = dst->dev;
+       struct neighbour *neigh;
+-      skb->protocol = htons(ETH_P_IPV6);
+-      skb->dev = dev;
+-
+       if (ipv6_addr_is_multicast(&ipv6_hdr(skb)->daddr)) {
+               struct inet6_dev *idev = ip6_dst_idev(skb_dst(skb));
+@@ -170,6 +167,11 @@
+               return 0;
+       }
++      /* IMQ-patch: moved setting skb->dev and skb->protocol from
++       * ip6_finish_output2 to fix crashing at netif_skb_features(). */
++      skb->protocol = htons(ETH_P_IPV6);
++      skb->dev = dev;
++
+       return NF_HOOK_COND(NFPROTO_IPV6, NF_INET_POST_ROUTING, skb, NULL, dev,
+                           ip6_finish_output,
+                           !(IP6CB(skb)->flags & IP6SKB_REROUTED));
+diff -uNr linux-3.2/net/netfilter/core.c linux-3.2-imq/net/netfilter/core.c
+--- linux-3.2/net/netfilter/core.c     2011-10-24 10:10:05.000000000 +0300
++++ linux-3.2-imq/net/netfilter/core.c 2011-11-04 11:12:52.123057315 +0200
+@@ -179,9 +179,11 @@
+               ret = NF_DROP_GETERR(verdict);
+               if (ret == 0)
+                       ret = -EPERM;
+-      } else if ((verdict & NF_VERDICT_MASK) == NF_QUEUE) {
++      } else if ((verdict & NF_VERDICT_MASK) == NF_QUEUE ||
++                 (verdict & NF_VERDICT_MASK) == NF_IMQ_QUEUE) {
+               int err = nf_queue(skb, elem, pf, hook, indev, outdev, okfn,
+-                                              verdict >> NF_VERDICT_QBITS);
++                                              verdict >> NF_VERDICT_QBITS,
++                                              verdict & NF_VERDICT_MASK);
+               if (err < 0) {
+                       if (err == -ECANCELED)
+                               goto next_hook;
+diff -uNr linux-3.2/net/netfilter/Kconfig linux-3.2-imq/net/netfilter/Kconfig
+--- linux-3.2/net/netfilter/Kconfig    2011-10-24 10:10:05.000000000 +0300
++++ linux-3.2-imq/net/netfilter/Kconfig        2011-11-04 11:12:52.123057315 +0200
+@@ -506,6 +506,18 @@
+         For more information on the LEDs available on your system, see
+         Documentation/leds/leds-class.txt
++config NETFILTER_XT_TARGET_IMQ
++        tristate '"IMQ" target support'
++      depends on NETFILTER_XTABLES
++      depends on IP_NF_MANGLE || IP6_NF_MANGLE
++      select IMQ
++      default m if NETFILTER_ADVANCED=n
++        help
++          This option adds a `IMQ' target which is used to specify if and
++          to which imq device packets should get enqueued/dequeued.
++
++          To compile it as a module, choose M here.  If unsure, say N.
++
+ config NETFILTER_XT_TARGET_MARK
+       tristate '"MARK" target support'
+       depends on NETFILTER_ADVANCED
+diff -uNr linux-3.2/net/netfilter/Makefile linux-3.2-imq/net/netfilter/Makefile
+--- linux-3.2/net/netfilter/Makefile   2011-10-24 10:10:05.000000000 +0300
++++ linux-3.2-imq/net/netfilter/Makefile       2011-11-04 11:12:52.123057315 +0200
+@@ -56,6 +56,7 @@
+ obj-$(CONFIG_NETFILTER_XT_TARGET_CT) += xt_CT.o
+ obj-$(CONFIG_NETFILTER_XT_TARGET_DSCP) += xt_DSCP.o
+ obj-$(CONFIG_NETFILTER_XT_TARGET_HL) += xt_HL.o
++obj-$(CONFIG_NETFILTER_XT_TARGET_IMQ) += xt_IMQ.o
+ obj-$(CONFIG_NETFILTER_XT_TARGET_LED) += xt_LED.o
+ obj-$(CONFIG_NETFILTER_XT_TARGET_NFLOG) += xt_NFLOG.o
+ obj-$(CONFIG_NETFILTER_XT_TARGET_NFQUEUE) += xt_NFQUEUE.o
+diff -uNr linux-3.2/net/netfilter/nf_internals.h linux-3.2-imq/net/netfilter/nf_internals.h
+--- linux-3.2/net/netfilter/nf_internals.h     2011-10-24 10:10:05.000000000 +0300
++++ linux-3.2-imq/net/netfilter/nf_internals.h 2011-11-04 11:12:52.123057315 +0200
+@@ -29,7 +29,7 @@
+                   struct net_device *indev,
+                   struct net_device *outdev,
+                   int (*okfn)(struct sk_buff *),
+-                  unsigned int queuenum);
++                  unsigned int queuenum, unsigned int queuetype);
+ extern int __init netfilter_queue_init(void);
+ /* nf_log.c */
+diff -uNr linux-3.2/net/netfilter/nf_queue.c linux-3.2-imq/net/netfilter/nf_queue.c
+--- linux-3.2/net/netfilter/nf_queue.c 2011-10-24 10:10:05.000000000 +0300
++++ linux-3.2-imq/net/netfilter/nf_queue.c     2011-11-04 11:12:52.123057315 +0200
+@@ -22,6 +22,26 @@
+ static DEFINE_MUTEX(queue_handler_mutex);
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++static const struct nf_queue_handler *queue_imq_handler;
++
++void nf_register_queue_imq_handler(const struct nf_queue_handler *qh)
++{
++      mutex_lock(&queue_handler_mutex);
++      rcu_assign_pointer(queue_imq_handler, qh);
++      mutex_unlock(&queue_handler_mutex);
++}
++EXPORT_SYMBOL_GPL(nf_register_queue_imq_handler);
++
++void nf_unregister_queue_imq_handler(void)
++{
++      mutex_lock(&queue_handler_mutex);
++      rcu_assign_pointer(queue_imq_handler, NULL);
++      mutex_unlock(&queue_handler_mutex);
++}
++EXPORT_SYMBOL_GPL(nf_unregister_queue_imq_handler);
++#endif
++
+ /* return EBUSY when somebody else is registered, return EEXIST if the
+  * same handler is registered, return 0 in case of success. */
+ int nf_register_queue_handler(u_int8_t pf, const struct nf_queue_handler *qh)
+@@ -92,7 +112,7 @@
+ }
+ EXPORT_SYMBOL_GPL(nf_unregister_queue_handlers);
+-static void nf_queue_entry_release_refs(struct nf_queue_entry *entry)
++void nf_queue_entry_release_refs(struct nf_queue_entry *entry)
+ {
+       /* Release those devices we held, or Alexey will kill me. */
+       if (entry->indev)
+@@ -112,6 +132,7 @@
+       /* Drop reference to owner of hook which queued us. */
+       module_put(entry->elem->owner);
+ }
++EXPORT_SYMBOL_GPL(nf_queue_entry_release_refs);
+ /*
+  * Any packet that leaves via this function must come back
+@@ -123,7 +144,8 @@
+                     struct net_device *indev,
+                     struct net_device *outdev,
+                     int (*okfn)(struct sk_buff *),
+-                    unsigned int queuenum)
++                    unsigned int queuenum,
++                    unsigned int queuetype)
+ {
+       int status = -ENOENT;
+       struct nf_queue_entry *entry = NULL;
+@@ -137,7 +159,17 @@
+       /* QUEUE == DROP if no one is waiting, to be safe. */
+       rcu_read_lock();
+-      qh = rcu_dereference(queue_handler[pf]);
++      if (queuetype == NF_IMQ_QUEUE) {
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++              qh = rcu_dereference(queue_imq_handler);
++#else
++              BUG();
++              goto err_unlock;
++#endif
++      } else {
++              qh = rcu_dereference(queue_handler[pf]);
++      }
++
+       if (!qh) {
+               status = -ESRCH;
+               goto err_unlock;
+@@ -209,7 +241,8 @@
+            struct net_device *indev,
+            struct net_device *outdev,
+            int (*okfn)(struct sk_buff *),
+-           unsigned int queuenum)
++           unsigned int queuenum,
++           unsigned int queuetype)
+ {
+       struct sk_buff *segs;
+       int err;
+@@ -217,7 +250,7 @@
+       if (!skb_is_gso(skb))
+               return __nf_queue(skb, elem, pf, hook, indev, outdev, okfn,
+-                                queuenum);
++                                queuenum, queuetype);
+       switch (pf) {
+       case NFPROTO_IPV4:
+@@ -244,7 +277,7 @@
+               segs->next = NULL;
+               if (err == 0)
+                       err = __nf_queue(segs, elem, pf, hook, indev,
+-                                         outdev, okfn, queuenum);
++                                       outdev, okfn, queuenum, queuetype);
+               if (err == 0)
+                       queued++;
+               else
+@@ -299,9 +332,11 @@
+               local_bh_enable();
+               break;
+       case NF_QUEUE:
++      case NF_IMQ_QUEUE:
+               err = __nf_queue(skb, elem, entry->pf, entry->hook,
+                                entry->indev, entry->outdev, entry->okfn,
+-                               verdict >> NF_VERDICT_QBITS);
++                               verdict >> NF_VERDICT_QBITS,
++                               verdict & NF_VERDICT_MASK);
+               if (err < 0) {
+                       if (err == -ECANCELED)
+                               goto next_hook;
+diff -uNr linux-3.2/net/netfilter/xt_IMQ.c linux-3.2-imq/net/netfilter/xt_IMQ.c
+--- linux-3.2/net/netfilter/xt_IMQ.c   1970-01-01 02:00:00.000000000 +0200
++++ linux-3.2-imq/net/netfilter/xt_IMQ.c       2011-11-04 11:12:52.123057315 +0200
+@@ -0,0 +1,74 @@
++/*
++ * This target marks packets to be enqueued to an imq device
++ */
++#include <linux/module.h>
++#include <linux/skbuff.h>
++#include <linux/netfilter/x_tables.h>
++#include <linux/netfilter/xt_IMQ.h>
++#include <linux/imq.h>
++
++static unsigned int imq_target(struct sk_buff *pskb,
++                              const struct xt_action_param *par)
++{
++      const struct xt_imq_info *mr = par->targinfo;
++
++      pskb->imq_flags = (mr->todev & IMQ_F_IFMASK) | IMQ_F_ENQUEUE;
++
++      return XT_CONTINUE;
++}
++
++static int imq_checkentry(const struct xt_tgchk_param *par)
++{
++      struct xt_imq_info *mr = par->targinfo;
++
++      if (mr->todev > IMQ_MAX_DEVS - 1) {
++              printk(KERN_WARNING
++                     "IMQ: invalid device specified, highest is %u\n",
++                     IMQ_MAX_DEVS - 1);
++              return -EINVAL;
++      }
++
++      return 0;
++}
++
++static struct xt_target xt_imq_reg[] __read_mostly = {
++      {
++              .name           = "IMQ",
++              .family         = AF_INET,
++              .checkentry     = imq_checkentry,
++              .target         = imq_target,
++              .targetsize     = sizeof(struct xt_imq_info),
++              .table          = "mangle",
++              .me             = THIS_MODULE
++      },
++      {
++              .name           = "IMQ",
++              .family         = AF_INET6,
++              .checkentry     = imq_checkentry,
++              .target         = imq_target,
++              .targetsize     = sizeof(struct xt_imq_info),
++              .table          = "mangle",
++              .me             = THIS_MODULE
++      },
++};
++
++static int __init imq_init(void)
++{
++      return xt_register_targets(xt_imq_reg, ARRAY_SIZE(xt_imq_reg));
++}
++
++static void __exit imq_fini(void)
++{
++      xt_unregister_targets(xt_imq_reg, ARRAY_SIZE(xt_imq_reg));
++}
++
++module_init(imq_init);
++module_exit(imq_fini);
++
++MODULE_AUTHOR("http://www.linuximq.net");
++MODULE_DESCRIPTION("Pseudo-driver for the intermediate queue device. "
++                 "See http://www.linuximq.net/ for more information.");
++MODULE_LICENSE("GPL");
++MODULE_ALIAS("ipt_IMQ");
++MODULE_ALIAS("ip6t_IMQ");
++