]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
Merge remote-tracking branch 'origin/seventeen' into seventeen
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 3 Nov 2014 17:36:31 +0000 (18:36 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 3 Nov 2014 17:36:31 +0000 (18:36 +0100)
25 files changed:
config/kernel/kernel.config.armv5tel-ipfire-kirkwood
config/kernel/kernel.config.armv5tel-ipfire-multi
config/kernel/kernel.config.armv5tel-ipfire-rpi
config/kernel/kernel.config.i586-ipfire
config/kernel/kernel.config.i586-ipfire-pae
config/rootfiles/common/i586/glibc
config/rootfiles/common/i586/linux
config/rootfiles/common/i586/linux-headers
config/rootfiles/common/i586/linux-initrd [new file with mode: 0644]
config/rootfiles/common/i586/linux-initrd-pae [new file with mode: 0644]
config/rootfiles/packages/linux-pae
lfs/cryptodev
lfs/e1000e
lfs/flash-images
lfs/igb
lfs/ixgbe [new file with mode: 0644]
lfs/linux
lfs/linux-initrd [new file with mode: 0644]
make.sh
src/patches/linux-3.10.55-rt2800usb-change_queue_warn_to_debug.patch [new file with mode: 0644]
src/patches/linux-3.10.57-mmc_add_eMMC_5.x.patch [new file with mode: 0644]
src/patches/linux-3.14-layer7-filter.patch [new file with mode: 0644]
src/patches/linux-3.14.22-dvbsky.patch [new file with mode: 0644]
src/patches/linux-3.14.22-imq.patch [new file with mode: 0644]
src/patches/linux-3.14.22-iwlwifi-noibss_only_on_radar_chan.patch [new file with mode: 0644]

index 9bc1d43aff4d09da2c1c4da52951d9c3bca1386a..67d0d04e243ff7a75b852d4a9de9ea37afa2d590 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm 3.10.27-ipfire-kirkwood Kernel Configuration
+# Linux/arm 3.14.22 Kernel Configuration
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -10,8 +10,10 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
 CONFIG_LOCKDEP_SUPPORT=y
 CONFIG_TRACE_IRQFLAGS_SUPPORT=y
 CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_ARCH_HAS_CPUFREQ=y
 CONFIG_GENERIC_HWEIGHT=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
 CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_VECTORS_BASE=0xffff0000
 CONFIG_ARM_PATCH_PHYS_VIRT=y
@@ -26,16 +28,19 @@ CONFIG_BUILDTIME_EXTABLE_SORT=y
 CONFIG_BROKEN_ON_SMP=y
 CONFIG_INIT_ENV_ARG_LIMIT=32
 CONFIG_CROSS_COMPILE=""
+# CONFIG_COMPILE_TEST is not set
 CONFIG_LOCALVERSION=""
 # CONFIG_LOCALVERSION_AUTO is not set
 CONFIG_HAVE_KERNEL_GZIP=y
 CONFIG_HAVE_KERNEL_LZMA=y
 CONFIG_HAVE_KERNEL_XZ=y
 CONFIG_HAVE_KERNEL_LZO=y
+CONFIG_HAVE_KERNEL_LZ4=y
 # CONFIG_KERNEL_GZIP is not set
 # CONFIG_KERNEL_LZMA is not set
 CONFIG_KERNEL_XZ=y
 # CONFIG_KERNEL_LZO is not set
+# CONFIG_KERNEL_LZ4 is not set
 CONFIG_DEFAULT_HOSTNAME="(none)"
 CONFIG_SWAP=y
 CONFIG_SYSVIPC=y
@@ -47,19 +52,17 @@ CONFIG_AUDIT=y
 CONFIG_AUDITSYSCALL=y
 CONFIG_AUDIT_WATCH=y
 CONFIG_AUDIT_TREE=y
-CONFIG_AUDIT_LOGINUID_IMMUTABLE=y
-CONFIG_HAVE_GENERIC_HARDIRQS=y
 
 #
 # IRQ subsystem
 #
-CONFIG_GENERIC_HARDIRQS=y
 CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_GENERIC_IRQ_SHOW=y
 CONFIG_HARDIRQS_SW_RESEND=y
 CONFIG_GENERIC_IRQ_CHIP=y
 CONFIG_IRQ_DOMAIN=y
 # CONFIG_IRQ_DOMAIN_DEBUG is not set
+CONFIG_IRQ_FORCED_THREADING=y
 CONFIG_KTIME_SCALAR=y
 CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
@@ -78,6 +81,7 @@ CONFIG_HIGH_RES_TIMERS=y
 # CPU/Task time and stats accounting
 #
 CONFIG_TICK_CPU_ACCOUNTING=y
+# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set
 # CONFIG_IRQ_TIME_ACCOUNTING is not set
 CONFIG_BSD_PROCESS_ACCT=y
 # CONFIG_BSD_PROCESS_ACCT_V3 is not set
@@ -95,6 +99,7 @@ CONFIG_TINY_RCU=y
 # CONFIG_TREE_RCU_TRACE is not set
 # CONFIG_IKCONFIG is not set
 CONFIG_LOG_BUF_SHIFT=18
+CONFIG_GENERIC_SCHED_CLOCK=y
 CONFIG_CGROUPS=y
 # CONFIG_CGROUP_DEBUG is not set
 CONFIG_CGROUP_FREEZER=y
@@ -114,6 +119,7 @@ CONFIG_BLK_CGROUP=y
 CONFIG_NAMESPACES=y
 CONFIG_UTS_NS=y
 CONFIG_IPC_NS=y
+CONFIG_USER_NS=y
 CONFIG_PID_NS=y
 CONFIG_NET_NS=y
 CONFIG_SCHED_AUTOGROUP=y
@@ -126,11 +132,11 @@ CONFIG_RD_BZIP2=y
 CONFIG_RD_LZMA=y
 CONFIG_RD_XZ=y
 CONFIG_RD_LZO=y
+CONFIG_RD_LZ4=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
 CONFIG_HAVE_UID16=y
-CONFIG_HOTPLUG=y
 CONFIG_EXPERT=y
 CONFIG_UID16=y
 # CONFIG_SYSCTL_SYSCALL is not set
@@ -163,12 +169,14 @@ CONFIG_SLUB_DEBUG=y
 # CONFIG_SLAB is not set
 CONFIG_SLUB=y
 # CONFIG_SLOB is not set
+# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
 # CONFIG_PROFILING is not set
 CONFIG_TRACEPOINTS=y
 CONFIG_HAVE_OPROFILE=y
 # CONFIG_KPROBES is not set
 CONFIG_JUMP_LABEL=y
 # CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
+CONFIG_ARCH_USE_BUILTIN_BSWAP=y
 CONFIG_HAVE_KPROBES=y
 CONFIG_HAVE_KRETPROBES=y
 CONFIG_HAVE_ARCH_TRACEHOOK=y
@@ -179,11 +187,19 @@ CONFIG_GENERIC_IDLE_POLL_SETUP=y
 CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
 CONFIG_HAVE_CLK=y
 CONFIG_HAVE_DMA_API_DEBUG=y
+CONFIG_HAVE_PERF_REGS=y
+CONFIG_HAVE_PERF_USER_STACK_DUMP=y
 CONFIG_HAVE_ARCH_JUMP_LABEL=y
 CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
 CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
 CONFIG_SECCOMP_FILTER=y
+CONFIG_HAVE_CC_STACKPROTECTOR=y
+CONFIG_CC_STACKPROTECTOR=y
+# CONFIG_CC_STACKPROTECTOR_NONE is not set
+CONFIG_CC_STACKPROTECTOR_REGULAR=y
+# CONFIG_CC_STACKPROTECTOR_STRONG is not set
 CONFIG_HAVE_CONTEXT_TRACKING=y
+CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
 CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
 CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
 CONFIG_MODULES_USE_ELF_REL=y
@@ -203,7 +219,7 @@ CONFIG_MODULES=y
 # CONFIG_MODULE_FORCE_LOAD is not set
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_MODULE_FORCE_UNLOAD is not set
-# CONFIG_MODVERSIONS is not set
+CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_MODULE_SIG is not set
 CONFIG_STOP_MACHINE=y
@@ -213,12 +229,14 @@ CONFIG_BLK_DEV_BSG=y
 CONFIG_BLK_DEV_BSGLIB=y
 CONFIG_BLK_DEV_INTEGRITY=y
 CONFIG_BLK_DEV_THROTTLING=y
+# CONFIG_BLK_CMDLINE_PARSER is not set
 
 #
 # Partition Types
 #
 CONFIG_PARTITION_ADVANCED=y
 # CONFIG_ACORN_PARTITION is not set
+# CONFIG_AIX_PARTITION is not set
 # CONFIG_OSF_PARTITION is not set
 # CONFIG_AMIGA_PARTITION is not set
 # CONFIG_ATARI_PARTITION is not set
@@ -236,6 +254,7 @@ CONFIG_LDM_PARTITION=y
 # CONFIG_KARMA_PARTITION is not set
 CONFIG_EFI_PARTITION=y
 # CONFIG_SYSV68_PARTITION is not set
+# CONFIG_CMDLINE_PARTITION is not set
 
 #
 # IO Schedulers
@@ -254,6 +273,7 @@ CONFIG_INLINE_READ_UNLOCK=y
 CONFIG_INLINE_READ_UNLOCK_IRQ=y
 CONFIG_INLINE_WRITE_UNLOCK=y
 CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
 CONFIG_FREEZER=y
 
 #
@@ -284,8 +304,8 @@ CONFIG_ARCH_KIRKWOOD=y
 # CONFIG_ARCH_W90X900 is not set
 # CONFIG_ARCH_LPC32XX is not set
 # CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_MSM is not set
-# CONFIG_ARCH_SHMOBILE is not set
+# CONFIG_ARCH_MSM_NODT is not set
+# CONFIG_ARCH_SHMOBILE_LEGACY is not set
 # CONFIG_ARCH_RPC is not set
 # CONFIG_ARCH_SA1100 is not set
 # CONFIG_ARCH_S3C24XX is not set
@@ -294,8 +314,6 @@ CONFIG_ARCH_KIRKWOOD=y
 # CONFIG_ARCH_S5PC100 is not set
 # CONFIG_ARCH_S5PV210 is not set
 # CONFIG_ARCH_EXYNOS is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_U300 is not set
 # CONFIG_ARCH_DAVINCI is not set
 # CONFIG_ARCH_OMAP1 is not set
 # CONFIG_GPIO_PCA953X is not set
@@ -304,26 +322,17 @@ CONFIG_KEYBOARD_GPIO_POLLED=y
 #
 # Marvell Kirkwood Implementations
 #
+CONFIG_KIRKWOOD_LEGACY=y
 CONFIG_MACH_D2NET_V2=y
-CONFIG_MACH_DB88F6281_BP=y
-CONFIG_MACH_DOCKSTAR=y
-CONFIG_MACH_ESATA_SHEEVAPLUG=y
-CONFIG_MACH_GURUPLUG=y
-CONFIG_MACH_INETSPACE_V2=y
-CONFIG_MACH_MV88F6281GTW_GE=y
 CONFIG_MACH_NET2BIG_V2=y
 CONFIG_MACH_NET5BIG_V2=y
-CONFIG_MACH_NETSPACE_MAX_V2=y
-CONFIG_MACH_NETSPACE_V2=y
 CONFIG_MACH_OPENRD=y
 CONFIG_MACH_OPENRD_BASE=y
 CONFIG_MACH_OPENRD_CLIENT=y
 CONFIG_MACH_OPENRD_ULTIMATE=y
 CONFIG_MACH_RD88F6192_NAS=y
 CONFIG_MACH_RD88F6281=y
-CONFIG_MACH_SHEEVAPLUG=y
 CONFIG_MACH_T5325=y
-CONFIG_MACH_DREAMPLUG=y
 CONFIG_MACH_TS219=y
 CONFIG_MACH_TS41X=y
 
@@ -331,30 +340,7 @@ CONFIG_MACH_TS41X=y
 # Device tree entries
 #
 CONFIG_ARCH_KIRKWOOD_DT=y
-CONFIG_MACH_CLOUDBOX_DT=y
-CONFIG_MACH_DLINK_KIRKWOOD_DT=y
-CONFIG_MACH_DOCKSTAR_DT=y
-CONFIG_MACH_DREAMPLUG_DT=y
-CONFIG_MACH_GOFLEXNET_DT=y
-CONFIG_MACH_GURUPLUG_DT=y
-CONFIG_MACH_IB62X0_DT=y
-CONFIG_MACH_ICONNECT_DT=y
-CONFIG_MACH_INETSPACE_V2_DT=y
-CONFIG_MACH_IOMEGA_IX2_200_DT=y
-CONFIG_MACH_KM_KIRKWOOD_DT=y
-CONFIG_MACH_LSXL_DT=y
-CONFIG_MACH_MPLCEC4_DT=y
-CONFIG_MACH_NETSPACE_LITE_V2_DT=y
-CONFIG_MACH_NETSPACE_MAX_V2_DT=y
-CONFIG_MACH_NETSPACE_MINI_V2_DT=y
-CONFIG_MACH_NETSPACE_V2_DT=y
-CONFIG_MACH_NSA310_DT=y
-CONFIG_MACH_OPENBLOCKS_A6_DT=y
-CONFIG_MACH_READYNAS_DT=y
-CONFIG_MACH_TOPKICK_DT=y
-CONFIG_MACH_TS219_DT=y
-CONFIG_MACH_ICONNECT=y
-CONFIG_MACH_NAS6210=y
+CONFIG_MACH_MV88F6281GTW_GE_DT=y
 # CONFIG_PLAT_SPEAR is not set
 CONFIG_PLAT_ORION=y
 CONFIG_PLAT_ORION_LEGACY=y
@@ -389,12 +375,14 @@ CONFIG_CACHE_FEROCEON_L2=y
 # CONFIG_CACHE_L2X0 is not set
 CONFIG_ARM_L1_CACHE_SHIFT=5
 CONFIG_ARM_NR_BANKS=8
+CONFIG_MULTI_IRQ_HANDLER=y
 
 #
 # Bus support
 #
 CONFIG_PCI=y
 CONFIG_PCI_SYSCALL=y
+CONFIG_PCI_MSI=y
 # CONFIG_PCI_DEBUG is not set
 # CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
 CONFIG_PCI_STUB=y
@@ -402,6 +390,21 @@ CONFIG_PCI_ATS=y
 CONFIG_PCI_IOV=y
 # CONFIG_PCI_PRI is not set
 # CONFIG_PCI_PASID is not set
+
+#
+# PCI host controller drivers
+#
+CONFIG_PCI_MVEBU=y
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCIEAER=y
+# CONFIG_PCIE_ECRC is not set
+# CONFIG_PCIEAER_INJECT is not set
+CONFIG_PCIEASPM=y
+# CONFIG_PCIEASPM_DEBUG is not set
+CONFIG_PCIEASPM_DEFAULT=y
+# CONFIG_PCIEASPM_POWERSAVE is not set
+# CONFIG_PCIEASPM_PERFORMANCE is not set
+CONFIG_PCIE_PME=y
 CONFIG_PCCARD=m
 # CONFIG_PCMCIA is not set
 CONFIG_CARDBUS=y
@@ -427,6 +430,13 @@ CONFIG_ARCH_NR_GPIO=0
 CONFIG_PREEMPT_NONE=y
 # CONFIG_PREEMPT_VOLUNTARY is not set
 # CONFIG_PREEMPT is not set
+CONFIG_HZ_FIXED=0
+CONFIG_HZ_100=y
+# CONFIG_HZ_200 is not set
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_500 is not set
+# CONFIG_HZ_1000 is not set
 CONFIG_HZ=100
 CONFIG_SCHED_HRTICK=y
 CONFIG_AEABI=y
@@ -437,16 +447,18 @@ CONFIG_HAVE_ARCH_PFN_VALID=y
 CONFIG_HIGHMEM=y
 # CONFIG_HIGHPTE is not set
 CONFIG_HW_PERF_EVENTS=y
+CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
 CONFIG_FLATMEM=y
 CONFIG_FLAT_NODE_MEM_MAP=y
 CONFIG_HAVE_MEMBLOCK=y
+CONFIG_NO_BOOTMEM=y
 # CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
 CONFIG_PAGEFLAGS_EXTENDED=y
 CONFIG_SPLIT_PTLOCK_CPUS=999999
 CONFIG_COMPACTION=y
 CONFIG_MIGRATION=y
 # CONFIG_PHYS_ADDR_T_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=0
+CONFIG_ZONE_DMA_FLAG=1
 CONFIG_BOUNCE=y
 CONFIG_KSM=y
 CONFIG_DEFAULT_MMAP_MIN_ADDR=32768
@@ -454,11 +466,15 @@ CONFIG_CROSS_MEMORY_ATTACH=y
 CONFIG_NEED_PER_CPU_KM=y
 CONFIG_CLEANCACHE=y
 # CONFIG_FRONTSWAP is not set
+# CONFIG_CMA is not set
+# CONFIG_ZBUD is not set
+# CONFIG_ZSMALLOC is not set
 CONFIG_FORCE_MAX_ZONEORDER=11
 CONFIG_ALIGNMENT_TRAP=y
 # CONFIG_UACCESS_WITH_MEMCPY is not set
 CONFIG_SECCOMP=y
-CONFIG_CC_STACKPROTECTOR=y
+CONFIG_SWIOTLB=y
+CONFIG_IOMMU_HELPER=y
 
 #
 # Boot options
@@ -485,6 +501,34 @@ CONFIG_AUTO_ZRELADDR=y
 #
 # CPU Power Management
 #
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_GOV_COMMON=y
+CONFIG_CPU_FREQ_STAT=y
+# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=m
+CONFIG_CPU_FREQ_GOV_USERSPACE=m
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
+# CONFIG_GENERIC_CPUFREQ_CPU0 is not set
+
+#
+# ARM CPU frequency scaling drivers
+#
+CONFIG_ARM_KIRKWOOD_CPUFREQ=y
+
+#
+# CPU Idle
+#
 # CONFIG_CPU_IDLE is not set
 # CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
 
@@ -511,12 +555,20 @@ CONFIG_COREDUMP=y
 #
 # Power management options
 #
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+CONFIG_PM_SLEEP=y
+# CONFIG_PM_AUTOSLEEP is not set
+# CONFIG_PM_WAKELOCKS is not set
 CONFIG_PM_RUNTIME=y
 CONFIG_PM=y
 # CONFIG_PM_DEBUG is not set
 CONFIG_APM_EMULATION=y
 CONFIG_PM_CLK=y
-# CONFIG_ARM_CPU_SUSPEND is not set
+# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
+CONFIG_CPU_PM=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARM_CPU_SUSPEND=y
 CONFIG_NET=y
 
 #
@@ -553,7 +605,6 @@ CONFIG_IP_MROUTE=y
 CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
 CONFIG_IP_PIMSM_V1=y
 CONFIG_IP_PIMSM_V2=y
-# CONFIG_ARPD is not set
 CONFIG_SYN_COOKIES=y
 CONFIG_NET_IPVTI=m
 CONFIG_INET_AH=m
@@ -586,7 +637,6 @@ CONFIG_DEFAULT_CUBIC=y
 CONFIG_DEFAULT_TCP_CONG="cubic"
 CONFIG_TCP_MD5SIG=y
 CONFIG_IPV6=y
-CONFIG_IPV6_PRIVACY=y
 CONFIG_IPV6_ROUTER_PREF=y
 CONFIG_IPV6_ROUTE_INFO=y
 CONFIG_IPV6_OPTIMISTIC_DAD=y
@@ -600,6 +650,7 @@ CONFIG_INET6_XFRM_MODE_TRANSPORT=m
 CONFIG_INET6_XFRM_MODE_TUNNEL=m
 CONFIG_INET6_XFRM_MODE_BEET=m
 CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
+CONFIG_IPV6_VTI=m
 CONFIG_IPV6_SIT=m
 CONFIG_IPV6_SIT_6RD=y
 CONFIG_IPV6_NDISC_NODETYPE=y
@@ -663,7 +714,22 @@ CONFIG_NF_NAT_FTP=m
 CONFIG_NF_NAT_IRC=m
 CONFIG_NF_NAT_SIP=m
 CONFIG_NF_NAT_TFTP=m
-CONFIG_NETFILTER_TPROXY=m
+CONFIG_NETFILTER_SYNPROXY=m
+CONFIG_NF_TABLES=m
+CONFIG_NF_TABLES_INET=m
+CONFIG_NFT_EXTHDR=m
+CONFIG_NFT_META=m
+CONFIG_NFT_CT=m
+CONFIG_NFT_RBTREE=m
+CONFIG_NFT_HASH=m
+CONFIG_NFT_COUNTER=m
+CONFIG_NFT_LOG=m
+CONFIG_NFT_LIMIT=m
+CONFIG_NFT_NAT=m
+CONFIG_NFT_QUEUE=m
+CONFIG_NFT_REJECT=m
+CONFIG_NFT_REJECT_INET=m
+CONFIG_NFT_COMPAT=m
 CONFIG_NETFILTER_XTABLES=y
 
 #
@@ -708,6 +774,7 @@ CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
 #
 CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
 CONFIG_NETFILTER_XT_MATCH_BPF=m
+CONFIG_NETFILTER_XT_MATCH_CGROUP=m
 CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
 CONFIG_NETFILTER_XT_MATCH_COMMENT=m
 CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
@@ -724,8 +791,12 @@ CONFIG_NETFILTER_XT_MATCH_ESP=m
 CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
 CONFIG_NETFILTER_XT_MATCH_HELPER=m
 CONFIG_NETFILTER_XT_MATCH_HL=m
+CONFIG_NETFILTER_XT_MATCH_IPCOMP=m
 CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
 # CONFIG_NETFILTER_XT_MATCH_IPVS is not set
+CONFIG_NETFILTER_XT_MATCH_L2TP=m
+CONFIG_NETFILTER_XT_MATCH_LAYER7=m
+# CONFIG_NETFILTER_XT_MATCH_LAYER7_DEBUG is not set
 CONFIG_NETFILTER_XT_MATCH_LENGTH=m
 CONFIG_NETFILTER_XT_MATCH_LIMIT=m
 CONFIG_NETFILTER_XT_MATCH_MAC=m
@@ -744,8 +815,6 @@ CONFIG_NETFILTER_XT_MATCH_RECENT=m
 CONFIG_NETFILTER_XT_MATCH_SCTP=m
 CONFIG_NETFILTER_XT_MATCH_SOCKET=m
 CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_LAYER7=m
-# CONFIG_NETFILTER_XT_MATCH_LAYER7_DEBUG is not set
 CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
 CONFIG_NETFILTER_XT_MATCH_STRING=m
 CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
@@ -760,7 +829,9 @@ CONFIG_IP_SET_HASH_IP=m
 CONFIG_IP_SET_HASH_IPPORT=m
 CONFIG_IP_SET_HASH_IPPORTIP=m
 CONFIG_IP_SET_HASH_IPPORTNET=m
+CONFIG_IP_SET_HASH_NETPORTNET=m
 CONFIG_IP_SET_HASH_NET=m
+CONFIG_IP_SET_HASH_NETNET=m
 CONFIG_IP_SET_HASH_NETPORT=m
 CONFIG_IP_SET_HASH_NETIFACE=m
 CONFIG_IP_SET_LIST_SET=m
@@ -811,6 +882,11 @@ CONFIG_IP_VS_PE_SIP=m
 CONFIG_NF_DEFRAG_IPV4=y
 CONFIG_NF_CONNTRACK_IPV4=y
 # CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
+CONFIG_NF_TABLES_IPV4=m
+CONFIG_NFT_CHAIN_ROUTE_IPV4=m
+CONFIG_NFT_CHAIN_NAT_IPV4=m
+CONFIG_NFT_REJECT_IPV4=m
+CONFIG_NF_TABLES_ARP=m
 CONFIG_IP_NF_IPTABLES=y
 CONFIG_IP_NF_MATCH_AH=m
 CONFIG_IP_NF_MATCH_ECN=m
@@ -818,6 +894,7 @@ CONFIG_IP_NF_MATCH_RPFILTER=m
 CONFIG_IP_NF_MATCH_TTL=m
 CONFIG_IP_NF_FILTER=m
 CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_SYNPROXY=m
 # CONFIG_IP_NF_TARGET_ULOG is not set
 CONFIG_NF_NAT_IPV4=m
 CONFIG_IP_NF_TARGET_MASQUERADE=m
@@ -843,6 +920,10 @@ CONFIG_IP_NF_MATCH_IPP2P=m
 #
 CONFIG_NF_DEFRAG_IPV6=y
 CONFIG_NF_CONNTRACK_IPV6=y
+CONFIG_NF_TABLES_IPV6=m
+CONFIG_NFT_CHAIN_ROUTE_IPV6=m
+CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NFT_REJECT_IPV6=m
 CONFIG_IP6_NF_IPTABLES=y
 CONFIG_IP6_NF_MATCH_AH=m
 CONFIG_IP6_NF_MATCH_EUI64=m
@@ -856,12 +937,14 @@ CONFIG_IP6_NF_MATCH_RT=m
 CONFIG_IP6_NF_TARGET_HL=m
 CONFIG_IP6_NF_FILTER=m
 CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_TARGET_SYNPROXY=m
 CONFIG_IP6_NF_MANGLE=m
 CONFIG_IP6_NF_RAW=m
 CONFIG_IP6_NF_SECURITY=m
 CONFIG_NF_NAT_IPV6=m
 CONFIG_IP6_NF_TARGET_MASQUERADE=m
 CONFIG_IP6_NF_TARGET_NPT=m
+CONFIG_NF_TABLES_BRIDGE=m
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
@@ -886,7 +969,6 @@ CONFIG_BRIDGE_EBT_LOG=m
 CONFIG_BRIDGE_EBT_NFLOG=m
 # CONFIG_IP_DCCP is not set
 CONFIG_IP_SCTP=m
-# CONFIG_SCTP_DBG_MSG is not set
 # CONFIG_SCTP_DBG_OBJCNT is not set
 # CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 is not set
 CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y
@@ -928,6 +1010,7 @@ CONFIG_LLC=y
 # CONFIG_LAPB is not set
 # CONFIG_PHONET is not set
 # CONFIG_IEEE802154 is not set
+CONFIG_6LOWPAN_IPHC=m
 CONFIG_NET_SCHED=y
 
 #
@@ -953,6 +1036,8 @@ CONFIG_NET_SCH_CHOKE=m
 CONFIG_NET_SCH_QFQ=m
 CONFIG_NET_SCH_CODEL=m
 CONFIG_NET_SCH_FQ_CODEL=m
+CONFIG_NET_SCH_FQ=m
+CONFIG_NET_SCH_HHF=m
 CONFIG_NET_SCH_PIE=m
 CONFIG_NET_SCH_INGRESS=m
 CONFIG_NET_SCH_PLUG=m
@@ -972,6 +1057,7 @@ CONFIG_NET_CLS_RSVP=m
 CONFIG_NET_CLS_RSVP6=m
 CONFIG_NET_CLS_FLOW=m
 CONFIG_NET_CLS_CGROUP=m
+CONFIG_NET_CLS_BPF=m
 CONFIG_NET_EMATCH=y
 CONFIG_NET_EMATCH_STACK=32
 CONFIG_NET_EMATCH_CMP=m
@@ -1001,10 +1087,16 @@ CONFIG_BATMAN_ADV_DAT=y
 CONFIG_BATMAN_ADV_NC=y
 # CONFIG_BATMAN_ADV_DEBUG is not set
 CONFIG_OPENVSWITCH=m
+CONFIG_OPENVSWITCH_GRE=y
+CONFIG_OPENVSWITCH_VXLAN=y
 CONFIG_VSOCKETS=m
 CONFIG_NETLINK_MMAP=y
 CONFIG_NETLINK_DIAG=m
-CONFIG_NETPRIO_CGROUP=m
+CONFIG_NET_MPLS_GSO=m
+CONFIG_HSR=m
+CONFIG_CGROUP_NET_PRIO=m
+CONFIG_CGROUP_NET_CLASSID=y
+CONFIG_NET_RX_BUSY_POLL=y
 CONFIG_BQL=y
 CONFIG_BPF_JIT=y
 
@@ -1114,12 +1206,12 @@ CONFIG_REGMAP=y
 CONFIG_REGMAP_I2C=y
 CONFIG_REGMAP_IRQ=y
 CONFIG_DMA_SHARED_BUFFER=y
-# CONFIG_CMA is not set
 
 #
 # Bus devices
 #
 CONFIG_MVEBU_MBUS=y
+# CONFIG_ARM_CCI is not set
 CONFIG_CONNECTOR=y
 CONFIG_PROC_EVENTS=y
 CONFIG_MTD=y
@@ -1133,7 +1225,6 @@ CONFIG_MTD_OF_PARTS=y
 #
 # User Modules And Translation Layers
 #
-# CONFIG_MTD_BLKDEVS is not set
 # CONFIG_MTD_BLOCK is not set
 # CONFIG_MTD_BLOCK_RO is not set
 # CONFIG_FTL is not set
@@ -1196,9 +1287,9 @@ CONFIG_MTD_NAND_IDS=y
 # CONFIG_MTD_NAND_DISKONCHIP is not set
 # CONFIG_MTD_NAND_DOCG4 is not set
 # CONFIG_MTD_NAND_CAFE is not set
+# CONFIG_MTD_NAND_PXA3xx is not set
 # CONFIG_MTD_NAND_NANDSIM is not set
 # CONFIG_MTD_NAND_PLATFORM is not set
-# CONFIG_MTD_ALAUDA is not set
 CONFIG_MTD_NAND_ORION=y
 # CONFIG_MTD_ONENAND is not set
 
@@ -1223,13 +1314,12 @@ CONFIG_OF_FLATTREE=y
 CONFIG_OF_EARLY_FLATTREE=y
 CONFIG_OF_ADDRESS=y
 CONFIG_OF_IRQ=y
-CONFIG_OF_DEVICE=y
-CONFIG_OF_I2C=y
 CONFIG_OF_NET=y
 CONFIG_OF_MDIO=y
 CONFIG_OF_PCI=y
 CONFIG_OF_PCI_IRQ=y
 CONFIG_OF_MTD=y
+CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
 CONFIG_PARPORT=m
 CONFIG_PARPORT_PC=m
 CONFIG_PARPORT_SERIAL=m
@@ -1240,6 +1330,7 @@ CONFIG_PARPORT_SERIAL=m
 CONFIG_PARPORT_1284=y
 CONFIG_PARPORT_NOT_PC=y
 CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_NULL_BLK is not set
 # CONFIG_PARIDE is not set
 # CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
 CONFIG_BLK_CPQ_CISS_DA=m
@@ -1273,7 +1364,6 @@ CONFIG_BLK_DEV_RSXX=m
 # CONFIG_ATMEL_PWM is not set
 CONFIG_DUMMY_IRQ=m
 # CONFIG_PHANTOM is not set
-# CONFIG_INTEL_MID_PTI is not set
 # CONFIG_SGI_IOC4 is not set
 CONFIG_TIFM_CORE=m
 CONFIG_TIFM_7XX1=m
@@ -1318,6 +1408,14 @@ CONFIG_TI_ST=m
 # Altera FPGA firmware download module
 #
 CONFIG_ALTERA_STAPL=m
+
+#
+# Intel MIC Host Driver
+#
+
+#
+# Intel MIC Card Driver
+#
 CONFIG_HAVE_IDE=y
 # CONFIG_IDE is not set
 
@@ -1381,7 +1479,6 @@ CONFIG_AIC7XXX_RESET_DELAY_MS=5000
 CONFIG_AIC7XXX_DEBUG_ENABLE=y
 CONFIG_AIC7XXX_DEBUG_MASK=0
 CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
-# CONFIG_SCSI_AIC7XXX_OLD is not set
 CONFIG_SCSI_AIC79XX=m
 CONFIG_AIC79XX_CMDS_PER_DEVICE=32
 CONFIG_AIC79XX_RESET_DELAY_MS=4000
@@ -1395,6 +1492,7 @@ CONFIG_SCSI_MVSAS=m
 CONFIG_SCSI_MVSAS_TASKLET=y
 # CONFIG_SCSI_MVUMI is not set
 CONFIG_SCSI_ARCMSR=m
+CONFIG_SCSI_ESAS2R=m
 CONFIG_MEGARAID_NEWGEN=y
 CONFIG_MEGARAID_MM=m
 CONFIG_MEGARAID_MAILBOX=m
@@ -1443,7 +1541,7 @@ CONFIG_SCSI_DC390T=m
 CONFIG_SCSI_PMCRAID=m
 CONFIG_SCSI_PM8001=m
 # CONFIG_SCSI_SRP is not set
-CONFIG_SCSI_BFA_FC=m
+# CONFIG_SCSI_BFA_FC is not set
 CONFIG_SCSI_CHELSIO_FCOE=m
 CONFIG_SCSI_DH=y
 CONFIG_SCSI_DH_RDAC=m
@@ -1485,6 +1583,7 @@ CONFIG_SATA_HIGHBANK=m
 CONFIG_SATA_MV=m
 CONFIG_SATA_NV=m
 CONFIG_SATA_PROMISE=m
+CONFIG_SATA_RCAR=m
 CONFIG_SATA_SIL=m
 CONFIG_SATA_SIS=m
 CONFIG_SATA_SVW=m
@@ -1562,13 +1661,14 @@ CONFIG_MD_MULTIPATH=m
 CONFIG_MD_FAULTY=m
 CONFIG_BCACHE=m
 # CONFIG_BCACHE_DEBUG is not set
-# CONFIG_BCACHE_EDEBUG is not set
 # CONFIG_BCACHE_CLOSURES_DEBUG is not set
+CONFIG_BLK_DEV_DM_BUILTIN=y
 CONFIG_BLK_DEV_DM=y
 # CONFIG_DM_DEBUG is not set
-CONFIG_DM_BUFIO=m
+CONFIG_DM_BUFIO=y
 CONFIG_DM_BIO_PRISON=m
 CONFIG_DM_PERSISTENT_DATA=m
+# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
 CONFIG_DM_CRYPT=m
 CONFIG_DM_SNAPSHOT=y
 # CONFIG_DM_THIN_PROVISIONING is not set
@@ -1576,8 +1676,8 @@ CONFIG_DM_CACHE=m
 CONFIG_DM_CACHE_MQ=m
 CONFIG_DM_CACHE_CLEANER=m
 CONFIG_DM_MIRROR=y
-CONFIG_DM_RAID=m
 CONFIG_DM_LOG_USERSPACE=m
+CONFIG_DM_RAID=m
 CONFIG_DM_ZERO=y
 CONFIG_DM_MULTIPATH=m
 CONFIG_DM_MULTIPATH_QL=m
@@ -1586,6 +1686,7 @@ CONFIG_DM_MULTIPATH_ST=m
 CONFIG_DM_UEVENT=y
 # CONFIG_DM_FLAKEY is not set
 CONFIG_DM_VERITY=m
+CONFIG_DM_SWITCH=m
 # CONFIG_TARGET_CORE is not set
 CONFIG_FUSION=y
 CONFIG_FUSION_SPI=m
@@ -1611,12 +1712,12 @@ CONFIG_I2O_BLOCK=m
 CONFIG_I2O_SCSI=m
 CONFIG_I2O_PROC=m
 CONFIG_NETDEVICES=y
+CONFIG_MII=m
 CONFIG_NET_CORE=y
 CONFIG_BONDING=m
 CONFIG_DUMMY=m
 # CONFIG_EQUALIZER is not set
 # CONFIG_NET_FC is not set
-CONFIG_MII=m
 CONFIG_IFB=m
 # CONFIG_NET_TEAM is not set
 CONFIG_MACVLAN=m
@@ -1635,6 +1736,7 @@ CONFIG_IMQ_BEHAVIOR_AB=y
 CONFIG_IMQ_NUM_DEVS=2
 CONFIG_TUN=m
 CONFIG_VETH=m
+CONFIG_NLMON=m
 # CONFIG_ARCNET is not set
 CONFIG_ATM_DRIVERS=y
 # CONFIG_ATM_DUMMY is not set
@@ -1680,6 +1782,8 @@ CONFIG_ACENIC=m
 CONFIG_NET_VENDOR_AMD=y
 CONFIG_AMD8111_ETH=m
 CONFIG_PCNET32=m
+CONFIG_NET_VENDOR_ARC=y
+CONFIG_ARC_EMAC=m
 CONFIG_NET_VENDOR_ATHEROS=y
 CONFIG_ATL2=m
 CONFIG_ATL1=m
@@ -1754,12 +1858,17 @@ CONFIG_IGBVF=m
 CONFIG_IXGB=m
 CONFIG_IXGBE=m
 CONFIG_IXGBE_HWMON=y
+CONFIG_IXGBEVF=m
+CONFIG_I40E=m
+CONFIG_I40E_VXLAN=y
+CONFIG_I40EVF=m
 CONFIG_NET_VENDOR_I825XX=y
 CONFIG_IP1000=m
 CONFIG_JME=m
 CONFIG_NET_VENDOR_MARVELL=y
 CONFIG_MV643XX_ETH=m
 CONFIG_MVMDIO=m
+CONFIG_MVNETA=m
 CONFIG_SKGE=m
 # CONFIG_SKGE_DEBUG is not set
 CONFIG_SKGE_GENESIS=y
@@ -1768,6 +1877,7 @@ CONFIG_SKY2=m
 CONFIG_NET_VENDOR_MELLANOX=y
 # CONFIG_MLX4_EN is not set
 # CONFIG_MLX4_CORE is not set
+# CONFIG_MLX5_CORE is not set
 CONFIG_NET_VENDOR_MICREL=y
 # CONFIG_KS8842 is not set
 # CONFIG_KS8851_MLL is not set
@@ -1785,7 +1895,6 @@ CONFIG_NE2K_PCI=m
 CONFIG_NET_VENDOR_NVIDIA=y
 CONFIG_FORCEDETH=m
 CONFIG_NET_VENDOR_OKI=y
-CONFIG_PCH_GBE=m
 CONFIG_ETHOC=m
 # CONFIG_NET_PACKET_ENGINE is not set
 CONFIG_NET_VENDOR_QLOGIC=y
@@ -1802,6 +1911,7 @@ CONFIG_8139TOO=m
 CONFIG_8139TOO_8129=y
 # CONFIG_8139_OLD_RX_RESET is not set
 CONFIG_R8169=m
+CONFIG_SH_ETH=m
 CONFIG_NET_VENDOR_RDC=y
 CONFIG_R6040=m
 CONFIG_NET_VENDOR_SEEQ=y
@@ -1906,8 +2016,11 @@ CONFIG_USB_NET_AX88179_178A=m
 CONFIG_USB_NET_CDCETHER=m
 CONFIG_USB_NET_CDC_EEM=m
 CONFIG_USB_NET_CDC_NCM=m
+CONFIG_USB_NET_HUAWEI_CDC_NCM=m
 CONFIG_USB_NET_CDC_MBIM=m
 CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_SR9700=m
+CONFIG_USB_NET_SR9800=m
 CONFIG_USB_NET_SMSC75XX=m
 CONFIG_USB_NET_SMSC95XX=m
 CONFIG_USB_NET_GL620A=m
@@ -1962,7 +2075,9 @@ CONFIG_ATH9K=m
 CONFIG_ATH9K_PCI=y
 CONFIG_ATH9K_AHB=y
 # CONFIG_ATH9K_DEBUGFS is not set
+# CONFIG_ATH9K_WOW is not set
 # CONFIG_ATH9K_LEGACY_RATE_CONTROL is not set
+CONFIG_ATH9K_RFKILL=y
 CONFIG_ATH9K_HTC=m
 # CONFIG_ATH9K_HTC_DEBUGFS is not set
 CONFIG_CARL9170=m
@@ -1973,14 +2088,25 @@ CONFIG_CARL9170_WPC=y
 CONFIG_AR5523=m
 CONFIG_WIL6210=m
 CONFIG_WIL6210_ISR_COR=y
+# CONFIG_WIL6210_TRACING is not set
+CONFIG_ATH10K=m
+CONFIG_ATH10K_PCI=m
+# CONFIG_ATH10K_DEBUG is not set
+# CONFIG_ATH10K_DEBUGFS is not set
+# CONFIG_ATH10K_TRACING is not set
+CONFIG_WCN36XX=m
+# CONFIG_WCN36XX_DEBUGFS is not set
 CONFIG_B43=m
+CONFIG_B43_BCMA=y
 CONFIG_B43_SSB=y
 CONFIG_B43_PCI_AUTOSELECT=y
 CONFIG_B43_PCICORE_AUTOSELECT=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
@@ -1995,7 +2121,11 @@ 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_BRCMSMAC=m
 # CONFIG_BRCMFMAC is not set
+# CONFIG_BRCM_TRACING is not set
+# CONFIG_BRCMDBG is not set
 CONFIG_HOSTAP=m
 CONFIG_HOSTAP_FIRMWARE=y
 CONFIG_HOSTAP_FIRMWARE_NVRAM=y
@@ -2051,10 +2181,12 @@ CONFIG_RT73USB=m
 CONFIG_RT2800USB=m
 CONFIG_RT2800USB_RT33XX=y
 CONFIG_RT2800USB_RT35XX=y
+CONFIG_RT2800USB_RT3573=y
 CONFIG_RT2800USB_RT53XX=y
 CONFIG_RT2800USB_RT55XX=y
 CONFIG_RT2800USB_UNKNOWN=y
 CONFIG_RT2800_LIB=m
+CONFIG_RT2800_LIB_MMIO=m
 CONFIG_RT2X00_LIB_MMIO=m
 CONFIG_RT2X00_LIB_PCI=m
 CONFIG_RT2X00_LIB_USB=m
@@ -2063,14 +2195,17 @@ CONFIG_RT2X00_LIB_FIRMWARE=y
 CONFIG_RT2X00_LIB_CRYPTO=y
 CONFIG_RT2X00_LIB_LEDS=y
 # CONFIG_RT2X00_DEBUG is not set
-CONFIG_RTLWIFI=m
-# CONFIG_RTLWIFI_DEBUG is not set
+CONFIG_RTL_CARDS=m
 CONFIG_RTL8192CE=m
 CONFIG_RTL8192SE=m
 CONFIG_RTL8192DE=m
 CONFIG_RTL8723AE=m
 CONFIG_RTL8188EE=m
 CONFIG_RTL8192CU=m
+CONFIG_RTLWIFI=m
+CONFIG_RTLWIFI_PCI=m
+CONFIG_RTLWIFI_USB=m
+# CONFIG_RTLWIFI_DEBUG is not set
 CONFIG_RTL8192C_COMMON=m
 CONFIG_WL_TI=y
 CONFIG_WL1251=m
@@ -2086,6 +2221,8 @@ CONFIG_MWIFIEX=m
 CONFIG_MWIFIEX_SDIO=m
 # CONFIG_MWIFIEX_PCIE is not set
 CONFIG_MWIFIEX_USB=m
+CONFIG_CW1200=m
+CONFIG_CW1200_WLAN_SDIO=m
 
 #
 # Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -2167,8 +2304,8 @@ CONFIG_HISAX_FRITZ_PCIPNP=m
 CONFIG_ISDN_CAPI=m
 CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
 CONFIG_CAPI_TRACE=y
-CONFIG_ISDN_CAPI_MIDDLEWARE=y
 CONFIG_ISDN_CAPI_CAPI20=m
+CONFIG_ISDN_CAPI_MIDDLEWARE=y
 CONFIG_ISDN_CAPI_CAPIDRV=m
 
 #
@@ -2267,6 +2404,7 @@ CONFIG_INPUT_MISC=y
 # CONFIG_INPUT_MMA8450 is not set
 # CONFIG_INPUT_MPU3050 is not set
 # CONFIG_INPUT_GP2A is not set
+# CONFIG_INPUT_GPIO_BEEPER is not set
 # CONFIG_INPUT_GPIO_TILT_POLLED is not set
 CONFIG_INPUT_ATI_REMOTE2=m
 CONFIG_INPUT_KEYSPAN_REMOTE=m
@@ -2277,7 +2415,6 @@ CONFIG_INPUT_CM109=m
 CONFIG_INPUT_RETU_PWRBUTTON=m
 CONFIG_INPUT_UINPUT=m
 # CONFIG_INPUT_PCF8574 is not set
-CONFIG_INPUT_PWM_BEEPER=m
 CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
 # CONFIG_INPUT_ADXL34X is not set
 # CONFIG_INPUT_IMS_PCU is not set
@@ -2296,6 +2433,7 @@ CONFIG_SERIO_ALTERA_PS2=m
 # CONFIG_SERIO_PS2MULT is not set
 CONFIG_SERIO_ARC_PS2=m
 CONFIG_SERIO_APBPS2=m
+# CONFIG_SERIO_OLPC_APSP is not set
 # CONFIG_GAMEPORT is not set
 
 #
@@ -2305,6 +2443,7 @@ CONFIG_TTY=y
 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
@@ -2324,7 +2463,6 @@ CONFIG_N_HDLC=m
 CONFIG_N_GSM=m
 # CONFIG_TRACE_SINK is not set
 # CONFIG_DEVKMEM is not set
-# CONFIG_STALDRV is not set
 
 #
 # Serial drivers
@@ -2348,6 +2486,7 @@ CONFIG_SERIAL_8250_RSA=y
 # Non-8250 serial port support
 #
 # CONFIG_SERIAL_MFD_HSU is not set
+# CONFIG_SERIAL_SH_SCI is not set
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
 CONFIG_SERIAL_JSM=m
@@ -2362,6 +2501,8 @@ CONFIG_SERIAL_ARC=m
 CONFIG_SERIAL_ARC_NR_PORTS=1
 CONFIG_SERIAL_RP2=m
 CONFIG_SERIAL_RP2_NR_UARTS=32
+# CONFIG_SERIAL_FSL_LPUART is not set
+# CONFIG_SERIAL_ST_ASC is not set
 # CONFIG_TTY_PRINTK is not set
 CONFIG_PRINTER=m
 CONFIG_LP_CONSOLE=y
@@ -2388,7 +2529,16 @@ CONFIG_I2C=y
 CONFIG_I2C_BOARDINFO=y
 CONFIG_I2C_COMPAT=y
 CONFIG_I2C_CHARDEV=m
-# CONFIG_I2C_MUX is not set
+CONFIG_I2C_MUX=y
+
+#
+# Multiplexer I2C Chip support
+#
+# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set
+# CONFIG_I2C_MUX_GPIO is not set
+# CONFIG_I2C_MUX_PCA9541 is not set
+# CONFIG_I2C_MUX_PCA954x is not set
+# CONFIG_I2C_MUX_PINCTRL is not set
 CONFIG_I2C_HELPER_AUTO=y
 CONFIG_I2C_SMBUS=m
 CONFIG_I2C_ALGOBIT=m
@@ -2424,7 +2574,6 @@ CONFIG_I2C_CBUS_GPIO=m
 # CONFIG_I2C_DESIGNWARE_PCI is not set
 # CONFIG_I2C_EG20T is not set
 CONFIG_I2C_GPIO=m
-# CONFIG_I2C_INTEL_MID is not set
 CONFIG_I2C_MV64XXX=y
 # CONFIG_I2C_OCORES is not set
 CONFIG_I2C_PCA_PLATFORM=m
@@ -2438,6 +2587,7 @@ CONFIG_I2C_SIMTEC=m
 CONFIG_I2C_DIOLAN_U2C=m
 CONFIG_I2C_PARPORT=m
 CONFIG_I2C_PARPORT_LIGHT=m
+CONFIG_I2C_ROBOTFUZZ_OSIF=m
 # CONFIG_I2C_TAOS_EVM is not set
 CONFIG_I2C_TINY_USB=m
 CONFIG_I2C_VIPERBOARD=m
@@ -2450,11 +2600,6 @@ CONFIG_I2C_STUB=m
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_BUS is not set
 # CONFIG_SPI is not set
-
-#
-# Qualcomm MSM SSBI bus support
-#
-# CONFIG_SSBI is not set
 CONFIG_HSI=m
 CONFIG_HSI_BOARDINFO=y
 
@@ -2489,7 +2634,6 @@ CONFIG_PTP_1588_CLOCK=m
 #
 # Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
 #
-CONFIG_PTP_1588_CLOCK_PCH=m
 CONFIG_PINCTRL=y
 
 #
@@ -2499,15 +2643,15 @@ CONFIG_PINMUX=y
 CONFIG_PINCONF=y
 CONFIG_GENERIC_PINCONF=y
 # CONFIG_DEBUG_PINCTRL is not set
+# CONFIG_PINCTRL_CAPRI is not set
+# CONFIG_PINCTRL_MSM8X74 is not set
 CONFIG_PINCTRL_SINGLE=m
-# CONFIG_PINCTRL_EXYNOS is not set
-# CONFIG_PINCTRL_EXYNOS5440 is not set
 CONFIG_PINCTRL_MVEBU=y
 CONFIG_PINCTRL_KIRKWOOD=y
 CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
 CONFIG_ARCH_REQUIRE_GPIOLIB=y
-CONFIG_GPIO_DEVRES=y
 CONFIG_GPIOLIB=y
+CONFIG_GPIO_DEVRES=y
 CONFIG_OF_GPIO=y
 # CONFIG_DEBUG_GPIO is not set
 CONFIG_GPIO_SYSFS=y
@@ -2520,6 +2664,7 @@ CONFIG_GPIO_GENERIC_PLATFORM=y
 # CONFIG_GPIO_EM is not set
 CONFIG_GPIO_MVEBU=y
 # CONFIG_GPIO_RCAR is not set
+# CONFIG_GPIO_SCH311X is not set
 CONFIG_GPIO_TS5500=m
 # CONFIG_GPIO_VX855 is not set
 # CONFIG_GPIO_GRGPIO is not set
@@ -2550,9 +2695,14 @@ CONFIG_GPIO_MCP23S08=m
 # AC97 GPIO expanders:
 #
 
+#
+# LPC GPIO expanders:
+#
+
 #
 # MODULbus GPIO expanders:
 #
+# CONFIG_GPIO_BCM_KONA is not set
 
 #
 # USB GPIO expanders:
@@ -2608,8 +2758,9 @@ CONFIG_CHARGER_88PM860X=m
 # CONFIG_CHARGER_GPIO is not set
 # CONFIG_CHARGER_MANAGER is not set
 # CONFIG_CHARGER_BQ2415X is not set
+# CONFIG_CHARGER_BQ24190 is not set
+# CONFIG_CHARGER_BQ24735 is not set
 # CONFIG_CHARGER_SMB347 is not set
-# CONFIG_BATTERY_GOLDFISH is not set
 CONFIG_POWER_RESET=y
 CONFIG_POWER_RESET_GPIO=y
 CONFIG_POWER_RESET_QNAP=y
@@ -2645,10 +2796,12 @@ CONFIG_SENSORS_F71805F=m
 CONFIG_SENSORS_F71882FG=m
 CONFIG_SENSORS_F75375S=m
 CONFIG_SENSORS_G760A=m
+CONFIG_SENSORS_G762=m
 CONFIG_SENSORS_GL518SM=m
 CONFIG_SENSORS_GL520SM=m
 # CONFIG_SENSORS_GPIO_FAN is not set
 CONFIG_SENSORS_HIH6130=m
+CONFIG_SENSORS_HTU21=m
 CONFIG_SENSORS_IBMAEM=m
 CONFIG_SENSORS_IBMPEX=m
 # CONFIG_SENSORS_IIO_HWMON is not set
@@ -2737,14 +2890,20 @@ CONFIG_SENSORS_W83627HF=m
 CONFIG_SENSORS_W83627EHF=m
 CONFIG_THERMAL=y
 CONFIG_THERMAL_HWMON=y
+CONFIG_THERMAL_OF=y
 CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
 # CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
 # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
 CONFIG_THERMAL_GOV_FAIR_SHARE=y
 CONFIG_THERMAL_GOV_STEP_WISE=y
 CONFIG_THERMAL_GOV_USER_SPACE=y
+CONFIG_CPU_THERMAL=y
 CONFIG_THERMAL_EMULATION=y
 CONFIG_KIRKWOOD_THERMAL=m
+
+#
+# Texas Instruments thermal drivers
+#
 CONFIG_WATCHDOG=y
 CONFIG_WATCHDOG_CORE=y
 CONFIG_WATCHDOG_NOWAYOUT=y
@@ -2753,12 +2912,14 @@ CONFIG_WATCHDOG_NOWAYOUT=y
 # Watchdog Device Drivers
 #
 CONFIG_SOFT_WATCHDOG=m
+CONFIG_GPIO_WATCHDOG=m
 # CONFIG_DW_WATCHDOG is not set
 CONFIG_ORION_WATCHDOG=m
 # CONFIG_MAX63XX_WATCHDOG is not set
 CONFIG_RETU_WATCHDOG=m
 CONFIG_ALIM7101_WDT=m
 CONFIG_I6300ESB_WDT=m
+CONFIG_MEN_A21_WDT=m
 
 #
 # PCI-based Watchdog Cards
@@ -2793,13 +2954,21 @@ CONFIG_BCMA_POSSIBLE=y
 #
 # Broadcom specific AMBA
 #
-# CONFIG_BCMA is not set
+CONFIG_BCMA=m
+CONFIG_BCMA_BLOCKIO=y
+CONFIG_BCMA_HOST_PCI_POSSIBLE=y
+CONFIG_BCMA_HOST_PCI=y
+# CONFIG_BCMA_HOST_SOC is not set
+# CONFIG_BCMA_DRIVER_GMAC_CMN is not set
+# CONFIG_BCMA_DRIVER_GPIO is not set
+# CONFIG_BCMA_DEBUG is not set
 
 #
 # Multifunction device drivers
 #
 CONFIG_MFD_CORE=y
 # CONFIG_MFD_AS3711 is not set
+# CONFIG_MFD_AS3722 is not set
 # CONFIG_PMIC_ADP5520 is not set
 # CONFIG_MFD_AAT2870_CORE is not set
 # CONFIG_MFD_CROS_EC is not set
@@ -2807,6 +2976,7 @@ CONFIG_MFD_CORE=y
 # CONFIG_PMIC_DA903X is not set
 # CONFIG_MFD_DA9052_I2C is not set
 # CONFIG_MFD_DA9055 is not set
+# CONFIG_MFD_DA9063 is not set
 # CONFIG_MFD_MC13XXX_I2C is not set
 # CONFIG_HTC_EGPIO is not set
 # CONFIG_HTC_PASIC3 is not set
@@ -2814,9 +2984,11 @@ CONFIG_MFD_CORE=y
 CONFIG_LPC_ICH=m
 CONFIG_LPC_SCH=m
 # CONFIG_MFD_JANZ_CMODIO is not set
+# CONFIG_MFD_KEMPLD is not set
 CONFIG_MFD_88PM800=y
 CONFIG_MFD_88PM805=y
 CONFIG_MFD_88PM860X=y
+# CONFIG_MFD_MAX14577 is not set
 # CONFIG_MFD_MAX77686 is not set
 # CONFIG_MFD_MAX77693 is not set
 # CONFIG_MFD_MAX8907 is not set
@@ -2839,6 +3011,7 @@ CONFIG_MFD_SM501_GPIO=y
 # CONFIG_MFD_STMPE is not set
 # CONFIG_MFD_SYSCON is not set
 # CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_MFD_LP3943 is not set
 # CONFIG_MFD_LP8788 is not set
 # CONFIG_MFD_PALMAS is not set
 # CONFIG_TPS6105X is not set
@@ -2867,26 +3040,30 @@ CONFIG_MFD_VX855=m
 # CONFIG_MFD_WM831X_I2C is not set
 # CONFIG_MFD_WM8350_I2C is not set
 # CONFIG_MFD_WM8994 is not set
+# CONFIG_VEXPRESS_CONFIG 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_88PM800 is not set
+CONFIG_REGULATOR_88PM8607=y
+# CONFIG_REGULATOR_ACT8865 is not set
 # CONFIG_REGULATOR_AD5398 is not set
+# CONFIG_REGULATOR_DA9210 is not set
 # CONFIG_REGULATOR_FAN53555 is not set
+# CONFIG_REGULATOR_GPIO is not set
 # CONFIG_REGULATOR_ISL6271A is not set
-CONFIG_REGULATOR_88PM8607=y
+# CONFIG_REGULATOR_LP3971 is not set
+# CONFIG_REGULATOR_LP3972 is not set
+# CONFIG_REGULATOR_LP872X is not set
+CONFIG_REGULATOR_LP8755=m
 # CONFIG_REGULATOR_MAX1586 is not set
 # CONFIG_REGULATOR_MAX8649 is not set
 # CONFIG_REGULATOR_MAX8660 is not set
 # CONFIG_REGULATOR_MAX8952 is not set
 # CONFIG_REGULATOR_MAX8973 is not set
-# CONFIG_REGULATOR_LP3971 is not set
-# CONFIG_REGULATOR_LP3972 is not set
-# CONFIG_REGULATOR_LP872X is not set
-CONFIG_REGULATOR_LP8755=m
+# CONFIG_REGULATOR_PFUZE100 is not set
 # CONFIG_REGULATOR_TPS51632 is not set
 # CONFIG_REGULATOR_TPS62360 is not set
 # CONFIG_REGULATOR_TPS65023 is not set
@@ -2918,7 +3095,6 @@ CONFIG_VIDEOBUF2_CORE=m
 CONFIG_VIDEOBUF2_MEMOPS=m
 CONFIG_VIDEOBUF2_DMA_CONTIG=m
 CONFIG_VIDEOBUF2_VMALLOC=m
-CONFIG_VIDEO_V4L2_INT_DEVICE=m
 CONFIG_DVB_CORE=y
 CONFIG_DVB_NET=y
 CONFIG_TTPCI_EEPROM=m
@@ -2996,6 +3172,7 @@ CONFIG_USB_GSPCA_SQ905=m
 CONFIG_USB_GSPCA_SQ905C=m
 CONFIG_USB_GSPCA_SQ930X=m
 CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_STK1135=m
 CONFIG_USB_GSPCA_STV0680=m
 CONFIG_USB_GSPCA_SUNPLUS=m
 CONFIG_USB_GSPCA_T613=m
@@ -3012,7 +3189,7 @@ CONFIG_VIDEO_CPIA2=m
 CONFIG_USB_ZR364XX=m
 CONFIG_USB_STKWEBCAM=m
 CONFIG_USB_S2255=m
-CONFIG_USB_SN9C102=m
+CONFIG_VIDEO_USBTV=m
 
 #
 # Analog TV USB devices
@@ -3024,8 +3201,9 @@ CONFIG_VIDEO_PVRUSB2_DVB=y
 CONFIG_VIDEO_HDPVR=m
 CONFIG_VIDEO_TLG2300=m
 CONFIG_VIDEO_USBVISION=m
-CONFIG_VIDEO_STK1160=m
+CONFIG_VIDEO_STK1160_COMMON=m
 # CONFIG_VIDEO_STK1160_AC97 is not set
+CONFIG_VIDEO_STK1160=m
 
 #
 # Analog/digital TV USB devices
@@ -3094,6 +3272,7 @@ CONFIG_DVB_B2C2_FLEXCOP_USB=m
 # Webcam, TV (analog/digital) USB devices
 #
 CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_EM28XX_V4L2=m
 CONFIG_VIDEO_EM28XX_ALSA=m
 CONFIG_VIDEO_EM28XX_DVB=m
 CONFIG_VIDEO_EM28XX_RC=m
@@ -3126,6 +3305,7 @@ CONFIG_VIDEO_CX88=m
 CONFIG_VIDEO_CX88_ALSA=m
 CONFIG_VIDEO_CX88_BLACKBIRD=m
 CONFIG_VIDEO_CX88_DVB=m
+CONFIG_VIDEO_CX88_ENABLE_VP3054=y
 CONFIG_VIDEO_CX88_VP3054=m
 CONFIG_VIDEO_CX88_MPEG=m
 CONFIG_VIDEO_BT848=m
@@ -3160,12 +3340,15 @@ CONFIG_V4L_PLATFORM_DRIVERS=y
 CONFIG_VIDEO_CAFE_CCIC=m
 CONFIG_VIDEO_TIMBERDALE=m
 CONFIG_SOC_CAMERA=m
+CONFIG_SOC_CAMERA_SCALE_CROP=m
 CONFIG_SOC_CAMERA_PLATFORM=m
+CONFIG_VIDEO_RCAR_VIN=m
 # CONFIG_VIDEO_SH_MOBILE_CSI2 is not set
 # CONFIG_VIDEO_SH_MOBILE_CEU is not set
 CONFIG_V4L_MEM2MEM_DRIVERS=y
 CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
 CONFIG_VIDEO_SH_VEU=m
+CONFIG_VIDEO_RENESAS_VSP1=m
 # CONFIG_V4L_TEST_DRIVERS is not set
 
 #
@@ -3193,7 +3376,6 @@ CONFIG_VIDEO_SAA7146=m
 CONFIG_VIDEO_SAA7146_VV=m
 CONFIG_SMS_SIANO_MDTV=m
 CONFIG_SMS_SIANO_RC=y
-# CONFIG_SMS_SIANO_DEBUGFS is not set
 
 #
 # Media ancillary drivers (tuners, sensors, i2c, frontends)
@@ -3257,7 +3439,12 @@ CONFIG_VIDEO_UPD64031A=m
 CONFIG_VIDEO_UPD64083=m
 
 #
-# Miscelaneous helper chips
+# Audio/Video compression chips
+#
+CONFIG_VIDEO_SAA6752HS=m
+
+#
+# Miscellaneous helper chips
 #
 CONFIG_VIDEO_M52790=m
 
@@ -3308,6 +3495,7 @@ CONFIG_MEDIA_TUNER_FC0013=m
 CONFIG_MEDIA_TUNER_TDA18212=m
 CONFIG_MEDIA_TUNER_E4000=m
 CONFIG_MEDIA_TUNER_FC2580=m
+CONFIG_MEDIA_TUNER_M88TS2022=m
 CONFIG_MEDIA_TUNER_TUA9001=m
 CONFIG_MEDIA_TUNER_IT913X=m
 CONFIG_MEDIA_TUNER_R820T=m
@@ -3319,6 +3507,7 @@ CONFIG_DVB_STB0899=m
 CONFIG_DVB_STB6100=m
 CONFIG_DVB_STV090x=m
 CONFIG_DVB_STV6110x=m
+CONFIG_DVB_M88DS3103=m
 
 #
 # Multistandard (cable + terrestrial) frontends
@@ -3349,8 +3538,7 @@ CONFIG_DVB_TUNER_CX24113=m
 CONFIG_DVB_TDA826X=m
 CONFIG_DVB_TUA6100=m
 CONFIG_DVB_CX24116=m
-CONFIG_DVB_M88DS3103=m
-CONFIG_DVB_M88DC2800=m
+CONFIG_DVB_CX24117=m
 CONFIG_DVB_SI21XX=m
 CONFIG_DVB_TS2020=m
 CONFIG_DVB_DS3000=m
@@ -3432,6 +3620,8 @@ CONFIG_DVB_A8293=m
 CONFIG_DVB_LGS8GXX=m
 CONFIG_DVB_ATBM8830=m
 CONFIG_DVB_TDA665x=m
+CONFIG_DVB_DVBSKY_M88DS3103=m
+CONFIG_DVB_M88DC2800=m
 CONFIG_DVB_IX2505V=m
 CONFIG_DVB_IT913X_FE=m
 CONFIG_DVB_M88RS2000=m
@@ -3450,6 +3640,7 @@ CONFIG_VGA_ARB_MAX_GPUS=16
 CONFIG_DRM=m
 CONFIG_DRM_USB=m
 CONFIG_DRM_KMS_HELPER=m
+CONFIG_DRM_KMS_FB_HELPER=y
 # CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
 
 #
@@ -3470,8 +3661,12 @@ CONFIG_DRM_UDL=m
 # CONFIG_DRM_AST is not set
 # CONFIG_DRM_MGAG200 is not set
 # CONFIG_DRM_CIRRUS_QEMU is not set
+# CONFIG_DRM_ARMADA is not set
+# CONFIG_DRM_RCAR_DU is not set
+# CONFIG_DRM_SHMOBILE is not set
 # CONFIG_DRM_TILCDC is not set
 # CONFIG_DRM_QXL is not set
+# CONFIG_DRM_BOCHS is not set
 # CONFIG_VGASTATE is not set
 # CONFIG_VIDEO_OUTPUT_CONTROL is not set
 CONFIG_HDMI=y
@@ -3504,6 +3699,7 @@ CONFIG_FB_MODE_HELPERS=y
 # CONFIG_FB_ASILIANT is not set
 # CONFIG_FB_IMSTT is not set
 # CONFIG_FB_UVESA is not set
+# CONFIG_FB_OPENCORES is not set
 # CONFIG_FB_S1D13XXX is not set
 # CONFIG_FB_NVIDIA is not set
 # CONFIG_FB_RIVA is not set
@@ -3546,9 +3742,12 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
 # CONFIG_BACKLIGHT_ADP8860 is not set
 # CONFIG_BACKLIGHT_ADP8870 is not set
 # CONFIG_BACKLIGHT_88PM860X is not set
-# CONFIG_BACKLIGHT_LM3630 is not set
+# CONFIG_BACKLIGHT_LM3630A is not set
 # CONFIG_BACKLIGHT_LM3639 is not set
 # CONFIG_BACKLIGHT_LP855X is not set
+# CONFIG_BACKLIGHT_GPIO is not set
+# CONFIG_BACKLIGHT_LV5207LP is not set
+# CONFIG_BACKLIGHT_BD6107 is not set
 
 #
 # Console display driver support
@@ -3557,9 +3756,6 @@ CONFIG_DUMMY_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
 # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
 CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
@@ -3585,6 +3781,7 @@ CONFIG_SND_SEQUENCER_OSS=y
 CONFIG_SND_HRTIMER=m
 CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
 CONFIG_SND_DYNAMIC_MINORS=y
+CONFIG_SND_MAX_CARDS=32
 # CONFIG_SND_SUPPORT_OLD_API is not set
 CONFIG_SND_VERBOSE_PROCFS=y
 CONFIG_SND_VERBOSE_PRINTK=y
@@ -3613,7 +3810,6 @@ CONFIG_SND_MPU401=m
 CONFIG_SND_PORTMAN2X4=m
 CONFIG_SND_AC97_POWER_SAVE=y
 CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
-CONFIG_SND_TEA575X=m
 CONFIG_SND_PCI=y
 CONFIG_SND_AD1889=m
 CONFIG_SND_ALS300=m
@@ -3657,9 +3853,7 @@ CONFIG_SND_ENS1371=m
 CONFIG_SND_ES1938=m
 CONFIG_SND_ES1968=m
 CONFIG_SND_ES1968_INPUT=y
-CONFIG_SND_ES1968_RADIO=y
 CONFIG_SND_FM801=m
-CONFIG_SND_FM801_TEA575X_BOOL=y
 CONFIG_SND_HDA_INTEL=m
 CONFIG_SND_HDA_PREALLOC_SIZE=64
 CONFIG_SND_HDA_HWDEP=y
@@ -3668,19 +3862,19 @@ CONFIG_SND_HDA_INPUT_BEEP=y
 CONFIG_SND_HDA_INPUT_BEEP_MODE=1
 CONFIG_SND_HDA_INPUT_JACK=y
 # CONFIG_SND_HDA_PATCH_LOADER is not set
-CONFIG_SND_HDA_CODEC_REALTEK=y
-CONFIG_SND_HDA_CODEC_ANALOG=y
-CONFIG_SND_HDA_CODEC_SIGMATEL=y
-CONFIG_SND_HDA_CODEC_VIA=y
-CONFIG_SND_HDA_CODEC_HDMI=y
-CONFIG_SND_HDA_CODEC_CIRRUS=y
-CONFIG_SND_HDA_CODEC_CONEXANT=y
-CONFIG_SND_HDA_CODEC_CA0110=y
-CONFIG_SND_HDA_CODEC_CA0132=y
+CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_ANALOG=m
+CONFIG_SND_HDA_CODEC_SIGMATEL=m
+CONFIG_SND_HDA_CODEC_VIA=m
+CONFIG_SND_HDA_CODEC_HDMI=m
+CONFIG_SND_HDA_CODEC_CIRRUS=m
+CONFIG_SND_HDA_CODEC_CONEXANT=m
+CONFIG_SND_HDA_CODEC_CA0110=m
+CONFIG_SND_HDA_CODEC_CA0132=m
 # CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
-CONFIG_SND_HDA_CODEC_CMEDIA=y
-CONFIG_SND_HDA_CODEC_SI3054=y
-CONFIG_SND_HDA_GENERIC=y
+CONFIG_SND_HDA_CODEC_CMEDIA=m
+CONFIG_SND_HDA_CODEC_SI3054=m
+CONFIG_SND_HDA_GENERIC=m
 CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
 CONFIG_SND_HDSP=m
 CONFIG_SND_HDSPM=m
@@ -3714,8 +3908,10 @@ CONFIG_SND_USB_UA101=m
 CONFIG_SND_USB_CAIAQ=m
 CONFIG_SND_USB_CAIAQ_INPUT=y
 CONFIG_SND_USB_6FIRE=m
+CONFIG_SND_USB_HIFACE=m
 CONFIG_SND_FIREWIRE=y
 CONFIG_SND_FIREWIRE_LIB=m
+CONFIG_SND_DICE=m
 CONFIG_SND_FIREWIRE_SPEAKERS=m
 # CONFIG_SND_ISIGHT is not set
 # CONFIG_SND_SCS1X is not set
@@ -3723,11 +3919,9 @@ CONFIG_SND_SOC=m
 CONFIG_SND_ATMEL_SOC=m
 CONFIG_SND_DESIGNWARE_I2S=m
 CONFIG_SND_KIRKWOOD_SOC=m
-CONFIG_SND_KIRKWOOD_SOC_I2S=m
 CONFIG_SND_KIRKWOOD_SOC_OPENRD=m
 CONFIG_SND_KIRKWOOD_SOC_T5325=m
 CONFIG_SND_SOC_I2C_AND_SPI=m
-# CONFIG_SND_SOC_ALL_CODECS is not set
 CONFIG_SND_SOC_ALC5623=m
 CONFIG_SND_SOC_CS42L51=m
 CONFIG_SND_SIMPLE_CARD=m
@@ -3759,8 +3953,10 @@ CONFIG_HID_CYPRESS=y
 # CONFIG_HID_DRAGONRISE is not set
 # CONFIG_HID_EMS_FF is not set
 # CONFIG_HID_ELECOM is not set
+CONFIG_HID_ELO=m
 CONFIG_HID_EZKEY=y
 # CONFIG_HID_HOLTEK is not set
+# CONFIG_HID_HUION is not set
 CONFIG_HID_KEYTOUCH=m
 CONFIG_HID_KYE=y
 # CONFIG_HID_UCLOGIC is not set
@@ -3792,7 +3988,6 @@ CONFIG_HID_PICOLCD_LCD=y
 CONFIG_HID_PICOLCD_LEDS=y
 CONFIG_HID_PICOLCD_CIR=y
 # CONFIG_HID_PRIMAX is not set
-# CONFIG_HID_PS3REMOTE is not set
 CONFIG_HID_ROCCAT=m
 CONFIG_HID_SAITEK=m
 CONFIG_HID_SAMSUNG=m
@@ -3808,6 +4003,7 @@ CONFIG_HID_THINGM=m
 # CONFIG_HID_THRUSTMASTER is not set
 # CONFIG_HID_WACOM is not set
 # CONFIG_HID_WIIMOTE is not set
+# CONFIG_HID_XINMO is not set
 # CONFIG_HID_ZEROPLUS is not set
 CONFIG_HID_ZYDACRON=m
 CONFIG_HID_SENSOR_HUB=m
@@ -3823,9 +4019,7 @@ CONFIG_USB_HIDDEV=y
 # I2C HID support
 #
 CONFIG_I2C_HID=m
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB_ARCH_HAS_XHCI=y
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
 CONFIG_USB_SUPPORT=y
 CONFIG_USB_COMMON=y
 CONFIG_USB_ARCH_HAS_HCD=y
@@ -3852,7 +4046,6 @@ CONFIG_USB_WUSB_CBAF=m
 # CONFIG_USB_C67X00_HCD is not set
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_PLATFORM=m
-# CONFIG_USB_XHCI_HCD_DEBUGGING is not set
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_ROOT_HUB_TT=y
 CONFIG_USB_EHCI_TT_NEWSCHED=y
@@ -3863,11 +4056,11 @@ CONFIG_USB_EHCI_HCD_PLATFORM=y
 # CONFIG_USB_ISP116X_HCD is not set
 # CONFIG_USB_ISP1760_HCD is not set
 CONFIG_USB_ISP1362_HCD=m
+# CONFIG_USB_FUSBH200_HCD is not set
+# CONFIG_USB_FOTG210_HCD is not set
 CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD_PCI=y
 CONFIG_USB_OHCI_HCD_PLATFORM=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_UHCI_HCD=y
 # CONFIG_USB_U132_HCD is not set
 CONFIG_USB_SL811_HCD=m
@@ -3875,7 +4068,9 @@ CONFIG_USB_SL811_HCD_ISO=y
 # CONFIG_USB_R8A66597_HCD is not set
 CONFIG_USB_WHCI_HCD=m
 CONFIG_USB_HWA_HCD=m
+# CONFIG_USB_HCD_BCMA is not set
 CONFIG_USB_HCD_SSB=m
+# CONFIG_USB_HCD_TEST_MODE is not set
 
 #
 # USB Device Class drivers
@@ -3914,9 +4109,22 @@ CONFIG_USB_STORAGE_ENE_UB6250=m
 #
 CONFIG_USB_MDC800=m
 CONFIG_USB_MICROTEK=m
+# CONFIG_USB_MUSB_HDRC is not set
 CONFIG_USB_DWC3=m
 CONFIG_USB_DWC3_HOST=y
+
+#
+# Platform Glue Driver Support
+#
+# CONFIG_USB_DWC3_EXYNOS is not set
+CONFIG_USB_DWC3_PCI=m
+CONFIG_USB_DWC3_KEYSTONE=m
+
+#
+# Debugging features
+#
 # CONFIG_USB_DWC3_DEBUG is not set
+# CONFIG_USB_DWC2 is not set
 CONFIG_USB_CHIPIDEA=m
 # CONFIG_USB_CHIPIDEA_HOST is not set
 # CONFIG_USB_CHIPIDEA_DEBUG is not set
@@ -3927,6 +4135,7 @@ CONFIG_USB_CHIPIDEA=m
 CONFIG_USB_USS720=m
 CONFIG_USB_SERIAL=m
 CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_SIMPLE=m
 CONFIG_USB_SERIAL_AIRCABLE=m
 CONFIG_USB_SERIAL_ARK3116=m
 CONFIG_USB_SERIAL_BELKIN=m
@@ -3937,7 +4146,6 @@ CONFIG_USB_SERIAL_CP210X=m
 CONFIG_USB_SERIAL_CYPRESS_M8=m
 # CONFIG_USB_SERIAL_EMPEG is not set
 CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
 CONFIG_USB_SERIAL_VISOR=m
 CONFIG_USB_SERIAL_IPAQ=m
 CONFIG_USB_SERIAL_IR=m
@@ -3956,16 +4164,14 @@ CONFIG_USB_SERIAL_MCT_U232=m
 CONFIG_USB_SERIAL_MOS7720=m
 CONFIG_USB_SERIAL_MOS7715_PARPORT=y
 CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_MOTOROLA=m
+CONFIG_USB_SERIAL_MXUPORT=m
 # CONFIG_USB_SERIAL_NAVMAN is not set
 CONFIG_USB_SERIAL_PL2303=m
 CONFIG_USB_SERIAL_OTI6858=m
 CONFIG_USB_SERIAL_QCAUX=m
 CONFIG_USB_SERIAL_QUALCOMM=m
 CONFIG_USB_SERIAL_SPCP8X5=m
-# CONFIG_USB_SERIAL_HP4X is not set
 # CONFIG_USB_SERIAL_SAFE is not set
-CONFIG_USB_SERIAL_SIEMENS_MPI=m
 CONFIG_USB_SERIAL_SIERRAWIRELESS=m
 # CONFIG_USB_SERIAL_SYMBOL is not set
 # CONFIG_USB_SERIAL_TI is not set
@@ -3975,9 +4181,7 @@ CONFIG_USB_SERIAL_WWAN=m
 CONFIG_USB_SERIAL_OPTION=m
 # CONFIG_USB_SERIAL_OMNINET is not set
 # CONFIG_USB_SERIAL_OPTICON is not set
-# CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set
 # CONFIG_USB_SERIAL_XSENS_MT is not set
-# CONFIG_USB_SERIAL_ZIO is not set
 # CONFIG_USB_SERIAL_WISHBONE is not set
 CONFIG_USB_SERIAL_ZTE=m
 CONFIG_USB_SERIAL_SSU100=m
@@ -4006,6 +4210,7 @@ CONFIG_USB_SISUSBVGA_CON=y
 # CONFIG_USB_TRANCEVIBRATOR is not set
 CONFIG_USB_IOWARRIOR=m
 # CONFIG_USB_TEST is not set
+# CONFIG_USB_EHSET_TEST_FIXTURE is not set
 # CONFIG_USB_ISIGHTFW is not set
 CONFIG_USB_YUREX=m
 CONFIG_USB_EZUSB_FX2=m
@@ -4015,7 +4220,20 @@ CONFIG_USB_SPEEDTOUCH=m
 CONFIG_USB_CXACRU=m
 CONFIG_USB_UEAGLEATM=m
 CONFIG_USB_XUSBATM=m
+
+#
+# USB Physical Layer drivers
+#
 # CONFIG_USB_PHY is not set
+# CONFIG_USB_OTG_FSM is not set
+# CONFIG_NOP_USB_XCEIV is not set
+# CONFIG_AM335X_PHY_USB is not set
+# CONFIG_SAMSUNG_USB2PHY is not set
+# CONFIG_SAMSUNG_USB3PHY is not set
+# CONFIG_USB_GPIO_VBUS is not set
+# CONFIG_USB_ISP1301 is not set
+# CONFIG_USB_RCAR_PHY is not set
+# CONFIG_USB_ULPI is not set
 # CONFIG_USB_GADGET is not set
 CONFIG_UWB=m
 CONFIG_UWB_HWA=m
@@ -4042,6 +4260,7 @@ CONFIG_MMC_SDHCI=m
 CONFIG_MMC_SDHCI_PCI=m
 CONFIG_MMC_RICOH_MMC=y
 CONFIG_MMC_SDHCI_PLTFM=m
+# CONFIG_MMC_SDHCI_OF_ARASAN is not set
 CONFIG_MMC_SDHCI_PXAV3=m
 CONFIG_MMC_SDHCI_PXAV2=m
 CONFIG_MMC_TIFM_SD=m
@@ -4052,6 +4271,7 @@ CONFIG_MMC_DW=m
 # CONFIG_MMC_DW_IDMAC is not set
 CONFIG_MMC_DW_PLTFM=m
 CONFIG_MMC_DW_EXYNOS=m
+# CONFIG_MMC_DW_K3 is not set
 CONFIG_MMC_DW_PCI=m
 CONFIG_MMC_VUB300=m
 CONFIG_MMC_USHC=m
@@ -4064,6 +4284,7 @@ CONFIG_MEMSTICK=m
 #
 # CONFIG_MEMSTICK_UNSAFE_RESUME is not set
 CONFIG_MSPRO_BLOCK=m
+CONFIG_MS_BLOCK=m
 
 #
 # MemoryStick Host Controller Drivers
@@ -4089,15 +4310,16 @@ CONFIG_LEDS_LP55XX_COMMON=m
 CONFIG_LEDS_LP5521=m
 CONFIG_LEDS_LP5523=m
 CONFIG_LEDS_LP5562=m
+CONFIG_LEDS_LP8501=m
 # CONFIG_LEDS_PCA955X is not set
-CONFIG_LEDS_PCA9633=m
+CONFIG_LEDS_PCA963X=m
+CONFIG_LEDS_PCA9685=m
 CONFIG_LEDS_PWM=m
 CONFIG_LEDS_REGULATOR=m
 # CONFIG_LEDS_BD2802 is not set
 CONFIG_LEDS_LT3593=m
 CONFIG_LEDS_NS2=m
 CONFIG_LEDS_NETXBIG=m
-# CONFIG_LEDS_RENESAS_TPU is not set
 CONFIG_LEDS_TCA6507=m
 CONFIG_LEDS_LM355x=m
 CONFIG_LEDS_OT200=m
@@ -4149,11 +4371,14 @@ CONFIG_RTC_DRV_DS1307=m
 CONFIG_RTC_DRV_DS1374=m
 CONFIG_RTC_DRV_DS1672=m
 CONFIG_RTC_DRV_DS3232=m
+CONFIG_RTC_DRV_HYM8563=m
 CONFIG_RTC_DRV_MAX6900=m
 CONFIG_RTC_DRV_RS5C372=m
 CONFIG_RTC_DRV_ISL1208=m
 CONFIG_RTC_DRV_ISL12022=m
+CONFIG_RTC_DRV_ISL12057=m
 CONFIG_RTC_DRV_X1205=m
+CONFIG_RTC_DRV_PCF2127=m
 CONFIG_RTC_DRV_PCF8523=m
 CONFIG_RTC_DRV_PCF8563=m
 CONFIG_RTC_DRV_PCF8583=m
@@ -4194,6 +4419,7 @@ CONFIG_RTC_DRV_DS2404=m
 #
 CONFIG_RTC_DRV_MV=y
 CONFIG_RTC_DRV_SNVS=m
+CONFIG_RTC_DRV_MOXART=m
 
 #
 # HID Sensor RTC drivers
@@ -4206,7 +4432,9 @@ CONFIG_DMADEVICES=y
 # DMA Devices
 #
 CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y
+# CONFIG_DW_DMAC_CORE is not set
 # CONFIG_DW_DMAC is not set
+# CONFIG_DW_DMAC_PCI is not set
 CONFIG_MV_XOR=y
 CONFIG_TIMB_DMA=m
 CONFIG_DMA_ENGINE=y
@@ -4217,16 +4445,17 @@ CONFIG_DMA_OF=y
 #
 CONFIG_ASYNC_TX_DMA=y
 # CONFIG_DMATEST is not set
+CONFIG_DMA_ENGINE_RAID=y
 # CONFIG_AUXDISPLAY is not set
 CONFIG_UIO=m
 # CONFIG_UIO_CIF is not set
-# CONFIG_UIO_PDRV is not set
 # CONFIG_UIO_PDRV_GENIRQ is not set
 # CONFIG_UIO_DMEM_GENIRQ is not set
 CONFIG_UIO_AEC=m
 CONFIG_UIO_SERCOS3=m
 CONFIG_UIO_PCI_GENERIC=m
 # CONFIG_UIO_NETX is not set
+# CONFIG_UIO_MF624 is not set
 CONFIG_VIRT_DRIVERS=y
 
 #
@@ -4248,14 +4477,16 @@ CONFIG_USBIP_HOST=m
 # CONFIG_PRISM2_USB is not set
 # CONFIG_ECHO is not set
 # CONFIG_COMEDI is not set
-# CONFIG_ASUS_OLED is not set
 # CONFIG_PANEL is not set
 # CONFIG_R8187SE is not set
 # CONFIG_RTL8192U is not set
 # CONFIG_RTLLIB is not set
 # CONFIG_R8712U is not set
+# CONFIG_R8188EU is not set
+# CONFIG_R8821AE is not set
 CONFIG_RTS5139=m
 # CONFIG_RTS5139_DEBUG is not set
+# CONFIG_RTS5208 is not set
 # CONFIG_TRANZPORT is not set
 # CONFIG_IDE_PHISON is not set
 # CONFIG_LINE6_USB is not set
@@ -4330,10 +4561,7 @@ CONFIG_RTS5139=m
 # Triggers - standalone
 #
 # CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set
-# CONFIG_IIO_GPIO_TRIGGER is not set
-# CONFIG_IIO_SYSFS_TRIGGER is not set
 # CONFIG_IIO_SIMPLE_DUMMY is not set
-# CONFIG_ZSMALLOC is not set
 # CONFIG_FB_SM7XX is not set
 # CONFIG_CRYSTALHD is not set
 # CONFIG_FB_XGI is not set
@@ -4355,13 +4583,19 @@ CONFIG_RTS5139=m
 # CONFIG_ANDROID is not set
 # CONFIG_USB_WPAN_HCD is not set
 # CONFIG_WIMAX_GDM72XX is not set
-# CONFIG_CSR_WIFI is not set
+CONFIG_LTE_GDM724X=m
 CONFIG_NET_VENDOR_SILICOM=y
 CONFIG_SBYPASS=m
 CONFIG_BPCTL=m
 CONFIG_CED1401=m
 # CONFIG_DGRP is not set
 CONFIG_FIREWIRE_SERIAL=m
+CONFIG_FWTTY_MAX_TOTAL_PORTS=64
+CONFIG_FWTTY_MAX_CARD_PORTS=32
+# CONFIG_LUSTRE_FS is not set
+# CONFIG_XILLYBUS is not set
+# CONFIG_DGNC is not set
+# CONFIG_DGAP is not set
 CONFIG_CLKDEV_LOOKUP=y
 CONFIG_HAVE_CLK_PREPARE=y
 CONFIG_COMMON_CLK=y
@@ -4369,15 +4603,18 @@ CONFIG_COMMON_CLK=y
 #
 # Common Clock Framework
 #
-# CONFIG_COMMON_CLK_DEBUG is not set
 CONFIG_COMMON_CLK_SI5351=m
-CONFIG_MVEBU_CLK_CORE=y
-CONFIG_MVEBU_CLK_GATING=y
+# CONFIG_COMMON_CLK_SI570 is not set
+# CONFIG_COMMON_CLK_QCOM is not set
+CONFIG_MVEBU_CLK_COMMON=y
+CONFIG_KIRKWOOD_CLK=y
 
 #
 # Hardware Spinlock drivers
 #
+CONFIG_CLKSRC_OF=y
 CONFIG_CLKSRC_MMIO=y
+CONFIG_ORION_TIMER=y
 CONFIG_MAILBOX=y
 CONFIG_IOMMU_SUPPORT=y
 CONFIG_OF_IOMMU=y
@@ -4393,6 +4630,7 @@ CONFIG_OF_IOMMU=y
 # CONFIG_PM_DEVFREQ is not set
 # CONFIG_EXTCON is not set
 CONFIG_MEMORY=y
+# CONFIG_MVEBU_DEVBUS is not set
 CONFIG_IIO=m
 CONFIG_IIO_BUFFER=y
 CONFIG_IIO_BUFFER_CB=y
@@ -4403,6 +4641,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 #
 # Accelerometers
 #
+# CONFIG_BMA180 is not set
 # CONFIG_HID_SENSOR_ACCEL_3D is not set
 # CONFIG_IIO_ST_ACCEL_3AXIS is not set
 
@@ -4411,6 +4650,8 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 #
 # CONFIG_EXYNOS_ADC is not set
 # CONFIG_MAX1363 is not set
+# CONFIG_MCP3422 is not set
+# CONFIG_NAU7802 is not set
 # CONFIG_TI_ADC081C is not set
 # CONFIG_VIPERBOARD_ADC is not set
 
@@ -4423,7 +4664,6 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 #
 CONFIG_HID_SENSOR_IIO_COMMON=m
 CONFIG_HID_SENSOR_IIO_TRIGGER=m
-# CONFIG_HID_SENSOR_ENUM_BASE_QUIRKS is not set
 
 #
 # Digital to analog converters
@@ -4453,6 +4693,11 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=m
 # CONFIG_IIO_ST_GYRO_3AXIS is not set
 # CONFIG_ITG3200 is not set
 
+#
+# Humidity sensors
+#
+CONFIG_DHT11=m
+
 #
 # Inertial measurement units
 #
@@ -4462,22 +4707,65 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=m
 # Light sensors
 #
 # CONFIG_ADJD_S311 is not set
+# CONFIG_APDS9300 is not set
+# CONFIG_CM32181 is not set
+# CONFIG_CM36651 is not set
+# CONFIG_GP2AP020A00F is not set
+# CONFIG_HID_SENSOR_ALS is not set
 # CONFIG_SENSORS_LM3533 is not set
+# CONFIG_TCS3472 is not set
 # CONFIG_SENSORS_TSL2563 is not set
+# CONFIG_TSL4531 is not set
 # CONFIG_VCNL4000 is not set
-# CONFIG_HID_SENSOR_ALS is not set
 
 #
 # Magnetometer sensors
 #
 # CONFIG_AK8975 is not set
+# CONFIG_MAG3110 is not set
 # CONFIG_HID_SENSOR_MAGNETOMETER_3D is not set
 # CONFIG_IIO_ST_MAGN_3AXIS is not set
+
+#
+# Inclinometer sensors
+#
+# CONFIG_HID_SENSOR_INCLINOMETER_3D is not set
+
+#
+# Triggers - standalone
+#
+# CONFIG_IIO_INTERRUPT_TRIGGER is not set
+# CONFIG_IIO_SYSFS_TRIGGER is not set
+
+#
+# Pressure sensors
+#
+# CONFIG_MPL3115 is not set
+# CONFIG_IIO_ST_PRESS is not set
+
+#
+# Temperature sensors
+#
+# CONFIG_TMP006 is not set
 # CONFIG_VME_BUS is not set
 CONFIG_PWM=y
+CONFIG_PWM_SYSFS=y
+# CONFIG_PWM_PCA9685 is not set
 CONFIG_IRQCHIP=y
+CONFIG_ORION_IRQCHIP=y
 # CONFIG_IPACK_BUS is not set
-# CONFIG_RESET_CONTROLLER is not set
+CONFIG_RESET_CONTROLLER=y
+# CONFIG_FMC is not set
+
+#
+# PHY Subsystem
+#
+CONFIG_GENERIC_PHY=y
+# CONFIG_PHY_EXYNOS_MIPI_VIDEO is not set
+CONFIG_PHY_MVEBU_SATA=y
+# CONFIG_PHY_EXYNOS_DP_VIDEO is not set
+# CONFIG_BCM_KONA_USB2_PHY is not set
+# CONFIG_POWERCAP is not set
 
 #
 # File systems
@@ -4512,6 +4800,7 @@ CONFIG_BTRFS_FS_POSIX_ACL=y
 # CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set
 # CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
 # CONFIG_BTRFS_DEBUG is not set
+CONFIG_BTRFS_ASSERT=y
 # CONFIG_NILFS2_FS is not set
 CONFIG_FS_POSIX_ACL=y
 CONFIG_EXPORTFS=y
@@ -4532,7 +4821,6 @@ CONFIG_QUOTACTL=y
 CONFIG_AUTOFS4_FS=y
 CONFIG_FUSE_FS=m
 CONFIG_CUSE=m
-CONFIG_GENERIC_ACL=y
 
 #
 # Caches
@@ -4614,10 +4902,13 @@ CONFIG_NFS_V3_ACL=y
 CONFIG_NFS_V4=m
 # CONFIG_NFS_SWAP is not set
 CONFIG_NFS_V4_1=y
+CONFIG_NFS_V4_2=y
 CONFIG_PNFS_FILE_LAYOUT=m
 CONFIG_PNFS_BLOCK=m
 CONFIG_PNFS_OBJLAYOUT=m
 CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="ipfire.org"
+CONFIG_NFS_V4_1_MIGRATION=y
+CONFIG_NFS_V4_SECURITY_LABEL=y
 CONFIG_NFS_FSCACHE=y
 # CONFIG_NFS_USE_LEGACY_DNS is not set
 CONFIG_NFS_USE_KERNEL_DNS=y
@@ -4626,6 +4917,7 @@ CONFIG_NFSD_V2_ACL=y
 CONFIG_NFSD_V3=y
 CONFIG_NFSD_V3_ACL=y
 CONFIG_NFSD_V4=y
+CONFIG_NFSD_V4_SECURITY_LABEL=y
 # CONFIG_NFSD_FAULT_INJECTION is not set
 CONFIG_LOCKD=m
 CONFIG_LOCKD_V4=y
@@ -4709,59 +5001,83 @@ CONFIG_DLM=m
 #
 # Kernel hacking
 #
+
+#
+# printk and dmesg options
+#
 # CONFIG_PRINTK_TIME is not set
 CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
+# CONFIG_BOOT_PRINTK_DELAY is not set
+CONFIG_DYNAMIC_DEBUG=y
+
+#
+# Compile-time checks and compiler options
+#
+# CONFIG_DEBUG_INFO is not set
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 CONFIG_ENABLE_MUST_CHECK=y
 CONFIG_FRAME_WARN=2048
-# CONFIG_MAGIC_SYSRQ is not set
 CONFIG_STRIP_ASM_SYMS=y
 # CONFIG_READABLE_ASM is not set
 # CONFIG_UNUSED_SYMBOLS is not set
 CONFIG_DEBUG_FS=y
 CONFIG_HEADERS_CHECK=y
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+# CONFIG_MAGIC_SYSRQ is not set
 CONFIG_DEBUG_KERNEL=y
+
+#
+# Memory Debugging
+#
+# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_DEBUG_MEMORY_INIT=y
+# CONFIG_DEBUG_HIGHMEM is not set
 CONFIG_DEBUG_SHIRQ=y
+
+#
+# Debug Lockups and Hangs
+#
 CONFIG_LOCKUP_DETECTOR=y
 # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
 CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+# CONFIG_DETECT_HUNG_TASK is not set
 # CONFIG_PANIC_ON_OOPS is not set
 CONFIG_PANIC_ON_OOPS_VALUE=0
-# CONFIG_DETECT_HUNG_TASK is not set
+CONFIG_PANIC_TIMEOUT=0
 CONFIG_SCHED_DEBUG=y
 CONFIG_SCHEDSTATS=y
 CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_SLUB_DEBUG_ON is not set
-# CONFIG_SLUB_STATS is not set
-CONFIG_HAVE_DEBUG_KMEMLEAK=y
-# CONFIG_DEBUG_KMEMLEAK is not set
+
+#
+# Lock Debugging (spinlocks, mutexes, etc...)
+#
 # CONFIG_DEBUG_RT_MUTEXES is not set
 # CONFIG_RT_MUTEX_TESTER is not set
 # CONFIG_DEBUG_SPINLOCK is not set
 # CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
 # CONFIG_DEBUG_LOCK_ALLOC is not set
 # CONFIG_PROVE_LOCKING is not set
 # CONFIG_LOCK_STAT is not set
 # CONFIG_DEBUG_ATOMIC_SLEEP is not set
 # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
 CONFIG_STACKTRACE=y
-# CONFIG_DEBUG_STACK_USAGE is not set
 # CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_HIGHMEM is not set
 CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
 # CONFIG_DEBUG_WRITECOUNT is not set
-CONFIG_DEBUG_MEMORY_INIT=y
 CONFIG_DEBUG_LIST=y
-# CONFIG_TEST_LIST_SORT is not set
 # CONFIG_DEBUG_SG is not set
 # CONFIG_DEBUG_NOTIFIERS is not set
 # CONFIG_DEBUG_CREDENTIALS is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_BOOT_PRINTK_DELAY is not set
 
 #
 # RCU Debugging
@@ -4769,13 +5085,9 @@ CONFIG_FRAME_POINTER=y
 # CONFIG_SPARSE_RCU_POINTER is not set
 # CONFIG_RCU_TORTURE_TEST is not set
 # CONFIG_RCU_TRACE is not set
-# CONFIG_BACKTRACE_SELF_TEST is not set
 # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
-# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
-# CONFIG_LKDTM is not set
 # CONFIG_NOTIFIER_ERROR_INJECTION is not set
 # CONFIG_FAULT_INJECTION is not set
-# CONFIG_DEBUG_PAGEALLOC is not set
 CONFIG_NOP_TRACER=y
 CONFIG_HAVE_FUNCTION_TRACER=y
 CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
@@ -4811,29 +5123,49 @@ CONFIG_FTRACE_MCOUNT_RECORD=y
 # CONFIG_FTRACE_STARTUP_TEST is not set
 CONFIG_RING_BUFFER_BENCHMARK=m
 # CONFIG_RING_BUFFER_STARTUP_TEST is not set
+
+#
+# Runtime Testing
+#
+# CONFIG_LKDTM is not set
+# CONFIG_TEST_LIST_SORT is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
 CONFIG_RBTREE_TEST=m
 # CONFIG_INTERVAL_TREE_TEST is not set
-# CONFIG_BUILD_DOCSRC is not set
-CONFIG_DYNAMIC_DEBUG=y
-# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_PERCPU_TEST is not set
 # CONFIG_ATOMIC64_SELFTEST is not set
 CONFIG_ASYNC_RAID6_TEST=m
+# CONFIG_TEST_STRING_HELPERS is not set
+# CONFIG_TEST_KSTRTOX is not set
+# CONFIG_BUILD_DOCSRC is not set
+# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_TEST_MODULE is not set
+# CONFIG_TEST_USER_COPY is not set
 # CONFIG_SAMPLES is not set
 CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_KGDB is not set
-# CONFIG_TEST_STRING_HELPERS is not set
-# CONFIG_TEST_KSTRTOX is not set
+# CONFIG_ARM_PTDUMP is not set
 CONFIG_STRICT_DEVMEM=y
 CONFIG_ARM_UNWIND=y
 CONFIG_OLD_MCOUNT=y
 # CONFIG_DEBUG_USER is not set
 CONFIG_DEBUG_LL=y
-CONFIG_DEBUG_LL_UART_NONE=y
+# CONFIG_DEBUG_LL_UART_NONE is not set
 # CONFIG_DEBUG_ICEDCC is not set
 # CONFIG_DEBUG_SEMIHOSTING is not set
-CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
+# CONFIG_DEBUG_LL_UART_8250 is not set
+CONFIG_DEBUG_LL_UART_PL01X=y
+CONFIG_DEBUG_LL_INCLUDE="debug/8250.S"
+# CONFIG_DEBUG_UART_PL01X is not set
+CONFIG_DEBUG_UART_8250=y
+CONFIG_DEBUG_UART_PHYS=0xf1012000
+CONFIG_DEBUG_UART_VIRT=0xfed12000
+CONFIG_DEBUG_UART_8250_SHIFT=2
+# CONFIG_DEBUG_UART_8250_WORD is not set
+# CONFIG_DEBUG_UART_8250_FLOW_CONTROL is not set
 CONFIG_UNCOMPRESS_INCLUDE="mach/uncompress.h"
 CONFIG_EARLY_PRINTK=y
+CONFIG_DEBUG_SET_MODULE_RONX=y
 
 #
 # Security options
@@ -4891,13 +5223,14 @@ CONFIG_PAX_USERCOPY=y
 # Memory Protections
 #
 # CONFIG_GRKERNSEC_KMEM is not set
-CONFIG_GRKERNSEC_JIT_HARDEN=y
 # CONFIG_GRKERNSEC_PERF_HARDEN is not set
 CONFIG_GRKERNSEC_RAND_THREADSTACK=y
 CONFIG_GRKERNSEC_PROC_MEMMAP=y
 CONFIG_GRKERNSEC_BRUTE=y
 CONFIG_GRKERNSEC_MODHARDEN=y
 CONFIG_GRKERNSEC_HIDESYM=y
+CONFIG_GRKERNSEC_RANDSTRUCT=y
+CONFIG_GRKERNSEC_RANDSTRUCT_PERFORMANCE=y
 CONFIG_GRKERNSEC_KERN_LOCKOUT=y
 
 #
@@ -4956,12 +5289,12 @@ CONFIG_GRKERNSEC_DMESG=y
 CONFIG_GRKERNSEC_HARDEN_PTRACE=y
 CONFIG_GRKERNSEC_PTRACE_READEXEC=y
 CONFIG_GRKERNSEC_SETXID=y
+CONFIG_GRKERNSEC_HARDEN_IPC=y
 # CONFIG_GRKERNSEC_TPE is not set
 
 #
 # Network Protections
 #
-CONFIG_GRKERNSEC_RANDNET=y
 CONFIG_GRKERNSEC_BLACKHOLE=y
 CONFIG_GRKERNSEC_NO_SIMULT_CONNECT=y
 # CONFIG_GRKERNSEC_SOCKET is not set
@@ -4982,6 +5315,8 @@ CONFIG_GRKERNSEC_NO_SIMULT_CONNECT=y
 CONFIG_GRKERNSEC_FLOODTIME=10
 CONFIG_GRKERNSEC_FLOODBURST=6
 CONFIG_KEYS=y
+# CONFIG_PERSISTENT_KEYRINGS is not set
+# CONFIG_BIG_KEYS is not set
 # CONFIG_ENCRYPTED_KEYS is not set
 CONFIG_KEYS_DEBUG_PROC_KEYS=y
 CONFIG_SECURITY_DMESG_RESTRICT=y
@@ -5064,6 +5399,7 @@ CONFIG_CRYPTO_VMAC=m
 #
 CONFIG_CRYPTO_CRC32C=y
 CONFIG_CRYPTO_CRC32=y
+CONFIG_CRYPTO_CRCT10DIF=y
 CONFIG_CRYPTO_GHASH=m
 CONFIG_CRYPTO_MD4=m
 CONFIG_CRYPTO_MD5=y
@@ -5108,6 +5444,8 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
 CONFIG_CRYPTO_DEFLATE=m
 CONFIG_CRYPTO_ZLIB=m
 CONFIG_CRYPTO_LZO=m
+CONFIG_CRYPTO_LZ4=m
+CONFIG_CRYPTO_LZ4HC=m
 
 #
 # Random Number Generation
@@ -5116,6 +5454,7 @@ CONFIG_CRYPTO_ANSI_CPRNG=m
 CONFIG_CRYPTO_USER_API=y
 CONFIG_CRYPTO_USER_API_HASH=y
 CONFIG_CRYPTO_USER_API_SKCIPHER=y
+CONFIG_CRYPTO_HASH_INFO=y
 CONFIG_CRYPTO_HW=y
 CONFIG_CRYPTO_DEV_MV_CESA=y
 CONFIG_CRYPTO_DEV_HIFN_795X=m
@@ -5134,8 +5473,10 @@ CONFIG_BITREVERSE=y
 CONFIG_RATIONAL=y
 CONFIG_GENERIC_STRNCPY_FROM_USER=y
 CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_NET_UTILS=y
 CONFIG_GENERIC_PCI_IOMAP=y
 CONFIG_GENERIC_IO=y
+CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
 CONFIG_CRC_CCITT=y
 CONFIG_CRC16=y
 CONFIG_CRC_T10DIF=y
@@ -5150,10 +5491,14 @@ CONFIG_CRC7=m
 CONFIG_LIBCRC32C=m
 CONFIG_CRC8=m
 CONFIG_AUDIT_GENERIC=y
+# CONFIG_RANDOM32_SELFTEST is not set
 CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=m
+CONFIG_ZLIB_DEFLATE=y
 CONFIG_LZO_COMPRESS=y
 CONFIG_LZO_DECOMPRESS=y
+CONFIG_LZ4_COMPRESS=m
+CONFIG_LZ4HC_COMPRESS=m
+CONFIG_LZ4_DECOMPRESS=y
 CONFIG_XZ_DEC=y
 CONFIG_XZ_DEC_X86=y
 CONFIG_XZ_DEC_POWERPC=y
@@ -5168,10 +5513,12 @@ CONFIG_DECOMPRESS_BZIP2=y
 CONFIG_DECOMPRESS_LZMA=y
 CONFIG_DECOMPRESS_XZ=y
 CONFIG_DECOMPRESS_LZO=y
+CONFIG_DECOMPRESS_LZ4=y
 CONFIG_TEXTSEARCH=y
 CONFIG_TEXTSEARCH_KMP=m
 CONFIG_TEXTSEARCH_BM=m
 CONFIG_TEXTSEARCH_FSM=m
+CONFIG_ASSOCIATIVE_ARRAY=y
 CONFIG_HAS_IOMEM=y
 CONFIG_HAS_IOPORT=y
 CONFIG_HAS_DMA=y
@@ -5186,9 +5533,8 @@ CONFIG_CORDIC=m
 # CONFIG_DDR is not set
 CONFIG_MPILIB=m
 CONFIG_OID_REGISTRY=m
+CONFIG_FONT_SUPPORT=y
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
 CONFIG_VIRTUALIZATION=y
-CONFIG_KVM_ARM_MAX_VCPUS=0
-
-#
-# Virtio drivers
-#
index 34045f2a6a6a47f52601b1569148a987533d0239..110c19969e1024a606ced030e7c52728aa739dd1 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm 3.10.32 Kernel Configuration
+# Linux/arm 3.14.22 Kernel Configuration
 #
 CONFIG_ARM=y
 CONFIG_MIGHT_HAVE_PCI=y
@@ -12,6 +12,7 @@ CONFIG_LOCKDEP_SUPPORT=y
 CONFIG_TRACE_IRQFLAGS_SUPPORT=y
 CONFIG_RWSEM_GENERIC_SPINLOCK=y
 CONFIG_ARCH_HAS_CPUFREQ=y
+CONFIG_ARCH_HAS_BANDGAP=y
 CONFIG_GENERIC_HWEIGHT=y
 CONFIG_GENERIC_CALIBRATE_DELAY=y
 CONFIG_ZONE_DMA=y
@@ -28,16 +29,19 @@ CONFIG_BUILDTIME_EXTABLE_SORT=y
 #
 CONFIG_INIT_ENV_ARG_LIMIT=32
 CONFIG_CROSS_COMPILE=""
+# CONFIG_COMPILE_TEST is not set
 CONFIG_LOCALVERSION=""
 # CONFIG_LOCALVERSION_AUTO is not set
 CONFIG_HAVE_KERNEL_GZIP=y
 CONFIG_HAVE_KERNEL_LZMA=y
 CONFIG_HAVE_KERNEL_XZ=y
 CONFIG_HAVE_KERNEL_LZO=y
+CONFIG_HAVE_KERNEL_LZ4=y
 # CONFIG_KERNEL_GZIP is not set
 # CONFIG_KERNEL_LZMA is not set
 CONFIG_KERNEL_XZ=y
 # CONFIG_KERNEL_LZO is not set
+# CONFIG_KERNEL_LZ4 is not set
 CONFIG_DEFAULT_HOSTNAME="(none)"
 CONFIG_SWAP=y
 CONFIG_SYSVIPC=y
@@ -49,19 +53,17 @@ CONFIG_AUDIT=y
 CONFIG_AUDITSYSCALL=y
 CONFIG_AUDIT_WATCH=y
 CONFIG_AUDIT_TREE=y
-CONFIG_AUDIT_LOGINUID_IMMUTABLE=y
-CONFIG_HAVE_GENERIC_HARDIRQS=y
 
 #
 # IRQ subsystem
 #
-CONFIG_GENERIC_HARDIRQS=y
 CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_GENERIC_IRQ_SHOW=y
 CONFIG_HARDIRQS_SW_RESEND=y
 CONFIG_GENERIC_IRQ_CHIP=y
 CONFIG_IRQ_DOMAIN=y
 # CONFIG_IRQ_DOMAIN_DEBUG is not set
+CONFIG_IRQ_FORCED_THREADING=y
 CONFIG_SPARSE_IRQ=y
 CONFIG_KTIME_SCALAR=y
 CONFIG_GENERIC_CLOCKEVENTS=y
@@ -76,6 +78,7 @@ CONFIG_TICK_ONESHOT=y
 CONFIG_NO_HZ_COMMON=y
 # CONFIG_HZ_PERIODIC is not set
 CONFIG_NO_HZ_IDLE=y
+# CONFIG_NO_HZ_FULL is not set
 CONFIG_NO_HZ=y
 CONFIG_HIGH_RES_TIMERS=y
 
@@ -83,6 +86,7 @@ CONFIG_HIGH_RES_TIMERS=y
 # CPU/Task time and stats accounting
 #
 CONFIG_TICK_CPU_ACCOUNTING=y
+# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set
 # CONFIG_IRQ_TIME_ACCOUNTING is not set
 CONFIG_BSD_PROCESS_ACCT=y
 # CONFIG_BSD_PROCESS_ACCT_V3 is not set
@@ -111,6 +115,7 @@ CONFIG_RCU_NOCB_CPU=y
 CONFIG_RCU_NOCB_CPU_ALL=y
 # CONFIG_IKCONFIG is not set
 CONFIG_LOG_BUF_SHIFT=18
+CONFIG_GENERIC_SCHED_CLOCK=y
 CONFIG_CGROUPS=y
 # CONFIG_CGROUP_DEBUG is not set
 CONFIG_CGROUP_FREEZER=y
@@ -133,6 +138,7 @@ CONFIG_BLK_CGROUP=y
 CONFIG_NAMESPACES=y
 CONFIG_UTS_NS=y
 CONFIG_IPC_NS=y
+CONFIG_USER_NS=y
 CONFIG_PID_NS=y
 CONFIG_NET_NS=y
 CONFIG_SCHED_AUTOGROUP=y
@@ -146,11 +152,11 @@ CONFIG_RD_BZIP2=y
 CONFIG_RD_LZMA=y
 CONFIG_RD_XZ=y
 CONFIG_RD_LZO=y
+CONFIG_RD_LZ4=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
 CONFIG_HAVE_UID16=y
-CONFIG_HOTPLUG=y
 CONFIG_EXPERT=y
 CONFIG_UID16=y
 # CONFIG_SYSCTL_SYSCALL is not set
@@ -183,6 +189,8 @@ CONFIG_VM_EVENT_COUNTERS=y
 # CONFIG_SLAB is not set
 CONFIG_SLUB=y
 # CONFIG_SLOB is not set
+CONFIG_SLUB_CPU_PARTIAL=y
+# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
 CONFIG_PROFILING=y
 CONFIG_TRACEPOINTS=y
 CONFIG_OPROFILE=m
@@ -190,22 +198,31 @@ CONFIG_HAVE_OPROFILE=y
 # CONFIG_KPROBES is not set
 CONFIG_JUMP_LABEL=y
 # CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_ARCH_USE_BUILTIN_BSWAP=y
 CONFIG_HAVE_KPROBES=y
 CONFIG_HAVE_KRETPROBES=y
 CONFIG_HAVE_ARCH_TRACEHOOK=y
 CONFIG_HAVE_DMA_ATTRS=y
 CONFIG_HAVE_DMA_CONTIGUOUS=y
-CONFIG_USE_GENERIC_SMP_HELPERS=y
 CONFIG_GENERIC_SMP_IDLE_THREAD=y
 CONFIG_GENERIC_IDLE_POLL_SETUP=y
 CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
 CONFIG_HAVE_CLK=y
 CONFIG_HAVE_DMA_API_DEBUG=y
 CONFIG_HAVE_HW_BREAKPOINT=y
+CONFIG_HAVE_PERF_REGS=y
+CONFIG_HAVE_PERF_USER_STACK_DUMP=y
 CONFIG_HAVE_ARCH_JUMP_LABEL=y
 CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
 CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
+CONFIG_HAVE_CC_STACKPROTECTOR=y
+CONFIG_CC_STACKPROTECTOR=y
+# CONFIG_CC_STACKPROTECTOR_NONE is not set
+CONFIG_CC_STACKPROTECTOR_REGULAR=y
+# CONFIG_CC_STACKPROTECTOR_STRONG is not set
 CONFIG_HAVE_CONTEXT_TRACKING=y
+CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
 CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
 CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
 CONFIG_MODULES_USE_ELF_REL=y
@@ -224,7 +241,7 @@ CONFIG_MODULES=y
 # CONFIG_MODULE_FORCE_LOAD is not set
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_MODULE_FORCE_UNLOAD is not set
-# CONFIG_MODVERSIONS is not set
+CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_MODULE_SIG is not set
 CONFIG_STOP_MACHINE=y
@@ -234,12 +251,14 @@ CONFIG_BLK_DEV_BSG=y
 CONFIG_BLK_DEV_BSGLIB=y
 CONFIG_BLK_DEV_INTEGRITY=y
 CONFIG_BLK_DEV_THROTTLING=y
+# CONFIG_BLK_CMDLINE_PARSER is not set
 
 #
 # Partition Types
 #
 CONFIG_PARTITION_ADVANCED=y
 # CONFIG_ACORN_PARTITION is not set
+# CONFIG_AIX_PARTITION is not set
 # CONFIG_OSF_PARTITION is not set
 # CONFIG_AMIGA_PARTITION is not set
 # CONFIG_ATARI_PARTITION is not set
@@ -257,6 +276,7 @@ CONFIG_LDM_PARTITION=y
 # CONFIG_KARMA_PARTITION is not set
 CONFIG_EFI_PARTITION=y
 # CONFIG_SYSV68_PARTITION is not set
+# CONFIG_CMDLINE_PARTITION is not set
 
 #
 # IO Schedulers
@@ -276,6 +296,7 @@ CONFIG_INLINE_READ_UNLOCK=y
 CONFIG_INLINE_READ_UNLOCK_IRQ=y
 CONFIG_INLINE_WRITE_UNLOCK=y
 CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
 CONFIG_MUTEX_SPIN_ON_OWNER=y
 CONFIG_FREEZER=y
 
@@ -307,8 +328,8 @@ CONFIG_ARCH_MULTIPLATFORM=y
 # CONFIG_ARCH_W90X900 is not set
 # CONFIG_ARCH_LPC32XX is not set
 # CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_MSM is not set
-# CONFIG_ARCH_SHMOBILE is not set
+# CONFIG_ARCH_MSM_NODT is not set
+# CONFIG_ARCH_SHMOBILE_LEGACY is not set
 # CONFIG_ARCH_RPC is not set
 # CONFIG_ARCH_SA1100 is not set
 # CONFIG_ARCH_S3C24XX is not set
@@ -317,8 +338,6 @@ CONFIG_ARCH_MULTIPLATFORM=y
 # CONFIG_ARCH_S5PC100 is not set
 # CONFIG_ARCH_S5PV210 is not set
 # CONFIG_ARCH_EXYNOS is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_U300 is not set
 # CONFIG_ARCH_DAVINCI is not set
 # CONFIG_ARCH_OMAP1 is not set
 
@@ -342,15 +361,18 @@ CONFIG_MACH_ARMADA_370_XP=y
 CONFIG_MACH_ARMADA_370=y
 CONFIG_MACH_ARMADA_XP=y
 # CONFIG_ARCH_BCM is not set
+# CONFIG_ARCH_BERLIN is not set
 # CONFIG_GPIO_PCA953X is not set
 CONFIG_KEYBOARD_GPIO_POLLED=m
 # CONFIG_ARCH_HIGHBANK is not set
+# CONFIG_ARCH_HI3xxx is not set
+# CONFIG_ARCH_KEYSTONE is not set
+# CONFIG_ARCH_MSM_DT is not set
 CONFIG_ARCH_MXC=y
 
 #
 # Freescale i.MX support
 #
-# CONFIG_MXC_IRQ_PRIOR is not set
 CONFIG_MXC_TZIC=y
 # CONFIG_MXC_DEBUG_BOARD is not set
 CONFIG_HAVE_IMX_ANATOP=y
@@ -371,12 +393,14 @@ CONFIG_MACH_IMX51_DT=y
 #
 # Device tree only
 #
+# CONFIG_SOC_IMX50 is not set
 CONFIG_SOC_IMX53=y
 CONFIG_SOC_IMX6Q=y
+CONFIG_SOC_IMX6SL=y
+# CONFIG_SOC_VF610 is not set
 CONFIG_IMX_HAVE_PLATFORM_FEC=y
 CONFIG_IMX_HAVE_PLATFORM_GPIO_KEYS=y
 CONFIG_IMX_HAVE_PLATFORM_IMX2_WDT=y
-CONFIG_WAND_RFKILL=m
 
 #
 # TI OMAP Common Features
@@ -396,6 +420,12 @@ CONFIG_OMAP_DM_TIMER=y
 CONFIG_OMAP_PM_NOOP=y
 CONFIG_MACH_OMAP_GENERIC=y
 CONFIG_ARCH_OMAP=y
+CONFIG_ARCH_OMAP3=y
+CONFIG_ARCH_OMAP4=y
+CONFIG_SOC_OMAP5=y
+CONFIG_SOC_AM33XX=y
+CONFIG_SOC_AM43XX=y
+CONFIG_SOC_DRA7XX=y
 CONFIG_ARCH_OMAP2PLUS=y
 
 #
@@ -404,20 +434,13 @@ CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_ARCH_OMAP2PLUS_TYPICAL=y
 CONFIG_SOC_HAS_OMAP2_SDRC=y
 CONFIG_SOC_HAS_REALTIME_COUNTER=y
-CONFIG_ARCH_OMAP3=y
-CONFIG_ARCH_OMAP4=y
-CONFIG_SOC_OMAP5=y
 CONFIG_SOC_OMAP3430=y
 CONFIG_SOC_TI81XX=y
-CONFIG_SOC_AM33XX=y
 CONFIG_OMAP_PACKAGE_CBB=y
 CONFIG_OMAP_PACKAGE_CUS=y
-CONFIG_OMAP_PACKAGE_CBP=y
-CONFIG_OMAP_PACKAGE_CBL=y
-CONFIG_OMAP_PACKAGE_CBS=y
 
 #
-# OMAP Board Type
+# OMAP Legacy Platform Data Board Type
 #
 CONFIG_MACH_OMAP3_BEAGLE=y
 CONFIG_MACH_DEVKIT8000=y
@@ -425,31 +448,25 @@ CONFIG_MACH_OMAP_LDP=y
 CONFIG_MACH_OMAP3530_LV_SOM=y
 CONFIG_MACH_OMAP3_TORPEDO=y
 CONFIG_MACH_OVERO=y
-CONFIG_MACH_OMAP3EVM=y
 CONFIG_MACH_OMAP3517EVM=y
 # CONFIG_MACH_CRANEBOARD is not set
 CONFIG_MACH_OMAP3_PANDORA=y
 CONFIG_MACH_TOUCHBOOK=y
 CONFIG_MACH_OMAP_3430SDP=y
-CONFIG_MACH_NOKIA_RM680=y
 CONFIG_MACH_NOKIA_RX51=y
-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
-CONFIG_MACH_OMAP_3630SDP=y
 CONFIG_MACH_TI8168EVM=y
 CONFIG_MACH_TI8148EVM=y
-CONFIG_MACH_OMAP_4430SDP=y
-CONFIG_MACH_OMAP4_PANDA=y
 # CONFIG_OMAP3_EMU is not set
 # CONFIG_OMAP3_SDRC_AC_TIMING is not set
+CONFIG_ARCH_ROCKCHIP=y
 # CONFIG_ARCH_SOCFPGA is not set
 # CONFIG_PLAT_SPEAR is not set
+# CONFIG_ARCH_STI is not set
+# CONFIG_ARCH_SHMOBILE_MULTI is not set
 CONFIG_ARCH_SUNXI=y
 # CONFIG_ARCH_SIRF is not set
 # CONFIG_ARCH_TEGRA is not set
@@ -461,6 +478,7 @@ CONFIG_ARCH_VEXPRESS=y
 #
 CONFIG_ARCH_VEXPRESS_CORTEX_A5_A9_ERRATA=y
 CONFIG_ARCH_VEXPRESS_CA9X4=y
+# CONFIG_ARCH_VEXPRESS_SPC is not set
 CONFIG_PLAT_VERSATILE_CLCD=y
 CONFIG_PLAT_VERSATILE_SCHED_CLOCK=y
 CONFIG_ARCH_VIRT=y
@@ -497,6 +515,7 @@ CONFIG_ARM_THUMB=y
 CONFIG_ARM_THUMBEE=y
 CONFIG_ARM_VIRT_EXT=y
 CONFIG_SWP_EMULATE=y
+# CONFIG_CPU_BIG_ENDIAN is not set
 # CONFIG_CPU_ICACHE_DISABLE is not set
 # CONFIG_CPU_DCACHE_DISABLE is not set
 # CONFIG_CPU_BPREDICT_DISABLE is not set
@@ -509,6 +528,7 @@ CONFIG_CACHE_PL310=y
 CONFIG_ARM_L1_CACHE_SHIFT_6=y
 CONFIG_ARM_L1_CACHE_SHIFT=6
 CONFIG_ARM_DMA_MEM_BUFFERABLE=y
+CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
 CONFIG_ARM_NR_BANKS=8
 CONFIG_MULTI_IRQ_HANDLER=y
 CONFIG_PJ4B_ERRATA_4742=y
@@ -523,8 +543,10 @@ CONFIG_ARM_ERRATA_754327=y
 CONFIG_ARM_ERRATA_764369=y
 CONFIG_PL310_ERRATA_769419=y
 CONFIG_ARM_ERRATA_775420=y
-# CONFIG_ARM_ERRATA_798181 is not set
+CONFIG_ARM_ERRATA_798181=y
+CONFIG_ARM_ERRATA_773022=y
 CONFIG_ICST=y
+CONFIG_TI_PRIV_EDMA=y
 
 #
 # Bus support
@@ -533,6 +555,7 @@ CONFIG_ARM_AMBA=y
 CONFIG_PCI=y
 CONFIG_PCI_DOMAINS=y
 CONFIG_PCI_SYSCALL=y
+CONFIG_PCI_MSI=y
 # CONFIG_PCI_DEBUG is not set
 # CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
 # CONFIG_PCI_STUB is not set
@@ -543,8 +566,19 @@ CONFIG_PCI_SYSCALL=y
 #
 # PCI host controller drivers
 #
+CONFIG_PCI_MVEBU=y
 CONFIG_PCIE_DW=y
 CONFIG_PCI_IMX6=y
+CONFIG_PCIEPORTBUS=y
+CONFIG_PCIEAER=y
+# CONFIG_PCIE_ECRC is not set
+# CONFIG_PCIEAER_INJECT is not set
+CONFIG_PCIEASPM=y
+# CONFIG_PCIEASPM_DEBUG is not set
+CONFIG_PCIEASPM_DEFAULT=y
+# CONFIG_PCIEASPM_POWERSAVE is not set
+# CONFIG_PCIEASPM_PERFORMANCE is not set
+CONFIG_PCIE_PME=y
 # CONFIG_PCCARD is not set
 
 #
@@ -560,6 +594,7 @@ CONFIG_HAVE_ARM_SCU=y
 CONFIG_HAVE_ARM_ARCH_TIMER=y
 CONFIG_HAVE_ARM_TWD=y
 # CONFIG_MCPM is not set
+# CONFIG_BIG_LITTLE is not set
 CONFIG_VMSPLIT_3G=y
 # CONFIG_VMSPLIT_2G is not set
 # CONFIG_VMSPLIT_1G is not set
@@ -567,11 +602,17 @@ CONFIG_PAGE_OFFSET=0xC0000000
 CONFIG_NR_CPUS=8
 CONFIG_HOTPLUG_CPU=y
 CONFIG_ARM_PSCI=y
-CONFIG_LOCAL_TIMERS=y
 CONFIG_ARCH_NR_GPIO=512
 CONFIG_PREEMPT_NONE=y
 # CONFIG_PREEMPT_VOLUNTARY is not set
 # CONFIG_PREEMPT is not set
+CONFIG_HZ_FIXED=0
+CONFIG_HZ_100=y
+# CONFIG_HZ_200 is not set
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_500 is not set
+# CONFIG_HZ_1000 is not set
 CONFIG_HZ=100
 CONFIG_SCHED_HRTICK=y
 # CONFIG_THUMB2_KERNEL is not set
@@ -584,9 +625,11 @@ CONFIG_HAVE_ARCH_PFN_VALID=y
 CONFIG_HIGHMEM=y
 CONFIG_HIGHPTE=y
 CONFIG_HW_PERF_EVENTS=y
+CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
 CONFIG_FLATMEM=y
 CONFIG_FLAT_NODE_MEM_MAP=y
 CONFIG_HAVE_MEMBLOCK=y
+CONFIG_NO_BOOTMEM=y
 CONFIG_MEMORY_ISOLATION=y
 # CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
 CONFIG_PAGEFLAGS_EXTENDED=y
@@ -601,10 +644,15 @@ CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
 CONFIG_CROSS_MEMORY_ATTACH=y
 CONFIG_CLEANCACHE=y
 # CONFIG_FRONTSWAP is not set
+CONFIG_CMA=y
+CONFIG_CMA_DEBUG=y
+# CONFIG_ZBUD is not set
+# CONFIG_ZSMALLOC is not set
 CONFIG_FORCE_MAX_ZONEORDER=12
 CONFIG_ALIGNMENT_TRAP=y
 # CONFIG_SECCOMP is not set
-CONFIG_CC_STACKPROTECTOR=y
+CONFIG_SWIOTLB=y
+CONFIG_IOMMU_HELPER=y
 # CONFIG_XEN is not set
 
 #
@@ -635,7 +683,6 @@ CONFIG_AUTO_ZRELADDR=y
 # CPU Frequency scaling
 #
 CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
 CONFIG_CPU_FREQ_GOV_COMMON=y
 CONFIG_CPU_FREQ_STAT=y
 CONFIG_CPU_FREQ_STAT_DETAILS=y
@@ -654,14 +701,13 @@ CONFIG_GENERIC_CPUFREQ_CPU0=y
 #
 # ARM CPU frequency scaling drivers
 #
-# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set
-# CONFIG_ARM_EXYNOS4210_CPUFREQ is not set
-# CONFIG_ARM_EXYNOS4X12_CPUFREQ is not set
-# CONFIG_ARM_EXYNOS5250_CPUFREQ is not set
-# CONFIG_ARM_EXYNOS5440_CPUFREQ is not set
 CONFIG_ARM_IMX6Q_CPUFREQ=m
 # CONFIG_ARM_KIRKWOOD_CPUFREQ is not set
 CONFIG_ARM_OMAP2PLUS_CPUFREQ=y
+
+#
+# CPU Idle
+#
 # CONFIG_CPU_IDLE is not set
 CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED=y
 
@@ -675,6 +721,7 @@ CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED=y
 CONFIG_VFP=y
 CONFIG_VFPv3=y
 CONFIG_NEON=y
+# CONFIG_KERNEL_MODE_NEON is not set
 
 #
 # Userspace binary formats
@@ -703,6 +750,7 @@ CONFIG_APM_EMULATION=y
 CONFIG_ARCH_HAS_OPP=y
 CONFIG_PM_OPP=y
 CONFIG_PM_CLK=y
+# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
 CONFIG_CPU_PM=y
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
 CONFIG_ARM_CPU_SUSPEND=y
@@ -742,7 +790,6 @@ CONFIG_IP_MROUTE=y
 CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
 CONFIG_IP_PIMSM_V1=y
 CONFIG_IP_PIMSM_V2=y
-# CONFIG_ARPD is not set
 CONFIG_SYN_COOKIES=y
 CONFIG_NET_IPVTI=m
 CONFIG_INET_AH=m
@@ -775,7 +822,6 @@ CONFIG_DEFAULT_CUBIC=y
 CONFIG_DEFAULT_TCP_CONG="cubic"
 CONFIG_TCP_MD5SIG=y
 CONFIG_IPV6=y
-CONFIG_IPV6_PRIVACY=y
 CONFIG_IPV6_ROUTER_PREF=y
 CONFIG_IPV6_ROUTE_INFO=y
 CONFIG_IPV6_OPTIMISTIC_DAD=y
@@ -789,6 +835,7 @@ CONFIG_INET6_XFRM_MODE_TRANSPORT=m
 CONFIG_INET6_XFRM_MODE_TUNNEL=m
 CONFIG_INET6_XFRM_MODE_BEET=m
 CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
+CONFIG_IPV6_VTI=m
 CONFIG_IPV6_SIT=m
 CONFIG_IPV6_SIT_6RD=y
 CONFIG_IPV6_NDISC_NODETYPE=y
@@ -852,7 +899,22 @@ CONFIG_NF_NAT_FTP=m
 CONFIG_NF_NAT_IRC=m
 CONFIG_NF_NAT_SIP=m
 CONFIG_NF_NAT_TFTP=m
-CONFIG_NETFILTER_TPROXY=m
+CONFIG_NETFILTER_SYNPROXY=m
+CONFIG_NF_TABLES=m
+CONFIG_NF_TABLES_INET=m
+CONFIG_NFT_EXTHDR=m
+CONFIG_NFT_META=m
+CONFIG_NFT_CT=m
+CONFIG_NFT_RBTREE=m
+CONFIG_NFT_HASH=m
+CONFIG_NFT_COUNTER=m
+CONFIG_NFT_LOG=m
+CONFIG_NFT_LIMIT=m
+CONFIG_NFT_NAT=m
+CONFIG_NFT_QUEUE=m
+CONFIG_NFT_REJECT=m
+CONFIG_NFT_REJECT_INET=m
+CONFIG_NFT_COMPAT=m
 CONFIG_NETFILTER_XTABLES=y
 
 #
@@ -897,6 +959,7 @@ CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
 #
 CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
 CONFIG_NETFILTER_XT_MATCH_BPF=m
+CONFIG_NETFILTER_XT_MATCH_CGROUP=m
 CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
 CONFIG_NETFILTER_XT_MATCH_COMMENT=m
 CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
@@ -913,8 +976,12 @@ CONFIG_NETFILTER_XT_MATCH_ESP=m
 CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
 CONFIG_NETFILTER_XT_MATCH_HELPER=m
 CONFIG_NETFILTER_XT_MATCH_HL=m
+CONFIG_NETFILTER_XT_MATCH_IPCOMP=m
 CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
-# CONFIG_NETFILTER_XT_MATCH_IPVS is not set
+CONFIG_NETFILTER_XT_MATCH_IPVS=m
+CONFIG_NETFILTER_XT_MATCH_L2TP=m
+CONFIG_NETFILTER_XT_MATCH_LAYER7=m
+# CONFIG_NETFILTER_XT_MATCH_LAYER7_DEBUG is not set
 CONFIG_NETFILTER_XT_MATCH_LENGTH=m
 CONFIG_NETFILTER_XT_MATCH_LIMIT=m
 CONFIG_NETFILTER_XT_MATCH_MAC=m
@@ -933,8 +1000,6 @@ CONFIG_NETFILTER_XT_MATCH_RECENT=m
 CONFIG_NETFILTER_XT_MATCH_SCTP=m
 CONFIG_NETFILTER_XT_MATCH_SOCKET=m
 CONFIG_NETFILTER_XT_MATCH_STATE=m
-CONFIG_NETFILTER_XT_MATCH_LAYER7=m
-# CONFIG_NETFILTER_XT_MATCH_LAYER7_DEBUG is not set
 CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
 CONFIG_NETFILTER_XT_MATCH_STRING=m
 CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
@@ -949,7 +1014,9 @@ CONFIG_IP_SET_HASH_IP=m
 CONFIG_IP_SET_HASH_IPPORT=m
 CONFIG_IP_SET_HASH_IPPORTIP=m
 CONFIG_IP_SET_HASH_IPPORTNET=m
+CONFIG_IP_SET_HASH_NETPORTNET=m
 CONFIG_IP_SET_HASH_NET=m
+CONFIG_IP_SET_HASH_NETNET=m
 CONFIG_IP_SET_HASH_NETPORT=m
 CONFIG_IP_SET_HASH_NETIFACE=m
 CONFIG_IP_SET_LIST_SET=m
@@ -1000,6 +1067,11 @@ CONFIG_IP_VS_PE_SIP=m
 CONFIG_NF_DEFRAG_IPV4=y
 CONFIG_NF_CONNTRACK_IPV4=y
 # CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
+CONFIG_NF_TABLES_IPV4=m
+CONFIG_NFT_CHAIN_ROUTE_IPV4=m
+CONFIG_NFT_CHAIN_NAT_IPV4=m
+CONFIG_NFT_REJECT_IPV4=m
+CONFIG_NF_TABLES_ARP=m
 CONFIG_IP_NF_IPTABLES=y
 CONFIG_IP_NF_MATCH_AH=m
 CONFIG_IP_NF_MATCH_ECN=m
@@ -1007,6 +1079,7 @@ CONFIG_IP_NF_MATCH_RPFILTER=m
 CONFIG_IP_NF_MATCH_TTL=m
 CONFIG_IP_NF_FILTER=m
 CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_SYNPROXY=m
 # CONFIG_IP_NF_TARGET_ULOG is not set
 CONFIG_NF_NAT_IPV4=m
 CONFIG_IP_NF_TARGET_MASQUERADE=m
@@ -1032,6 +1105,10 @@ CONFIG_IP_NF_MATCH_IPP2P=m
 #
 CONFIG_NF_DEFRAG_IPV6=y
 CONFIG_NF_CONNTRACK_IPV6=y
+CONFIG_NF_TABLES_IPV6=m
+CONFIG_NFT_CHAIN_ROUTE_IPV6=m
+CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NFT_REJECT_IPV6=m
 CONFIG_IP6_NF_IPTABLES=y
 CONFIG_IP6_NF_MATCH_AH=m
 CONFIG_IP6_NF_MATCH_EUI64=m
@@ -1045,12 +1122,14 @@ CONFIG_IP6_NF_MATCH_RT=m
 CONFIG_IP6_NF_TARGET_HL=m
 CONFIG_IP6_NF_FILTER=m
 CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_TARGET_SYNPROXY=m
 CONFIG_IP6_NF_MANGLE=m
 CONFIG_IP6_NF_RAW=m
 CONFIG_IP6_NF_SECURITY=m
 CONFIG_NF_NAT_IPV6=m
 CONFIG_IP6_NF_TARGET_MASQUERADE=m
 CONFIG_IP6_NF_TARGET_NPT=m
+CONFIG_NF_TABLES_BRIDGE=m
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
@@ -1075,7 +1154,6 @@ CONFIG_BRIDGE_EBT_LOG=m
 CONFIG_BRIDGE_EBT_NFLOG=m
 # CONFIG_IP_DCCP is not set
 CONFIG_IP_SCTP=m
-# CONFIG_SCTP_DBG_MSG is not set
 # CONFIG_SCTP_DBG_OBJCNT is not set
 # CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 is not set
 CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y
@@ -1117,6 +1195,7 @@ CONFIG_LLC=y
 # CONFIG_LAPB is not set
 # CONFIG_PHONET is not set
 # CONFIG_IEEE802154 is not set
+CONFIG_6LOWPAN_IPHC=m
 CONFIG_NET_SCHED=y
 
 #
@@ -1142,6 +1221,8 @@ CONFIG_NET_SCH_CHOKE=m
 CONFIG_NET_SCH_QFQ=m
 CONFIG_NET_SCH_CODEL=m
 CONFIG_NET_SCH_FQ_CODEL=m
+CONFIG_NET_SCH_FQ=m
+CONFIG_NET_SCH_HHF=m
 CONFIG_NET_SCH_PIE=m
 CONFIG_NET_SCH_INGRESS=m
 CONFIG_NET_SCH_PLUG=m
@@ -1161,6 +1242,7 @@ CONFIG_NET_CLS_RSVP=m
 CONFIG_NET_CLS_RSVP6=m
 CONFIG_NET_CLS_FLOW=m
 CONFIG_NET_CLS_CGROUP=m
+CONFIG_NET_CLS_BPF=m
 CONFIG_NET_EMATCH=y
 CONFIG_NET_EMATCH_STACK=32
 CONFIG_NET_EMATCH_CMP=m
@@ -1190,15 +1272,22 @@ CONFIG_BATMAN_ADV_DAT=y
 CONFIG_BATMAN_ADV_NC=y
 # CONFIG_BATMAN_ADV_DEBUG is not set
 CONFIG_OPENVSWITCH=m
+CONFIG_OPENVSWITCH_GRE=y
+CONFIG_OPENVSWITCH_VXLAN=y
 CONFIG_VSOCKETS=m
 CONFIG_NETLINK_MMAP=y
 CONFIG_NETLINK_DIAG=m
+CONFIG_NET_MPLS_GSO=m
+CONFIG_HSR=m
 CONFIG_RPS=y
 CONFIG_RFS_ACCEL=y
 CONFIG_XPS=y
-CONFIG_NETPRIO_CGROUP=m
+CONFIG_CGROUP_NET_PRIO=m
+CONFIG_CGROUP_NET_CLASSID=y
+CONFIG_NET_RX_BUSY_POLL=y
 CONFIG_BQL=y
 CONFIG_BPF_JIT=y
+CONFIG_NET_FLOW_LIMIT=y
 
 #
 # Network testing
@@ -1308,26 +1397,16 @@ CONFIG_REGMAP_I2C=y
 CONFIG_REGMAP_MMIO=y
 CONFIG_REGMAP_IRQ=y
 CONFIG_DMA_SHARED_BUFFER=y
-CONFIG_CMA=y
-CONFIG_CMA_DEBUG=y
-
-#
-# Default contiguous memory area size:
-#
-CONFIG_CMA_SIZE_MBYTES=16
-CONFIG_CMA_SIZE_SEL_MBYTES=y
-# CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
-# CONFIG_CMA_SIZE_SEL_MIN is not set
-# CONFIG_CMA_SIZE_SEL_MAX is not set
-CONFIG_CMA_ALIGNMENT=8
-CONFIG_CMA_AREAS=7
+# CONFIG_DMA_CMA is not set
 
 #
 # Bus devices
 #
+# CONFIG_IMX_WEIM is not set
 CONFIG_MVEBU_MBUS=y
 CONFIG_OMAP_OCP2SCP=y
 CONFIG_OMAP_INTERCONNECT=y
+# CONFIG_ARM_CCI is not set
 CONFIG_CONNECTOR=y
 CONFIG_PROC_EVENTS=y
 CONFIG_MTD=y
@@ -1341,7 +1420,6 @@ CONFIG_MTD_OF_PARTS=y
 #
 # User Modules And Translation Layers
 #
-# CONFIG_MTD_BLKDEVS is not set
 # CONFIG_MTD_BLOCK is not set
 # CONFIG_MTD_BLOCK_RO is not set
 # CONFIG_FTL is not set
@@ -1392,8 +1470,6 @@ CONFIG_MTD_CFI_I2=y
 # Disk-On-Chip Device Drivers
 #
 # CONFIG_MTD_DOCG3 is not set
-CONFIG_BCH_CONST_M=13
-CONFIG_BCH_CONST_T=8
 CONFIG_MTD_NAND_ECC=y
 CONFIG_MTD_NAND_ECC_SMC=y
 CONFIG_MTD_NAND=y
@@ -1403,17 +1479,15 @@ CONFIG_MTD_NAND=y
 # CONFIG_MTD_NAND_GPIO is not set
 CONFIG_MTD_NAND_OMAP2=y
 CONFIG_MTD_NAND_OMAP_BCH=m
-CONFIG_MTD_NAND_OMAP_BCH8=y
-# CONFIG_MTD_NAND_OMAP_BCH4 is not set
 CONFIG_MTD_NAND_IDS=y
 # CONFIG_MTD_NAND_RICOH is not set
 # CONFIG_MTD_NAND_DISKONCHIP is not set
 # CONFIG_MTD_NAND_DOCG4 is not set
 # CONFIG_MTD_NAND_CAFE is not set
+CONFIG_MTD_NAND_PXA3xx=y
 # CONFIG_MTD_NAND_NANDSIM is not set
 CONFIG_MTD_NAND_GPMI_NAND=m
 # CONFIG_MTD_NAND_PLATFORM is not set
-# CONFIG_MTD_ALAUDA is not set
 CONFIG_MTD_NAND_ORION=y
 CONFIG_MTD_NAND_MXC=m
 # CONFIG_MTD_ONENAND is not set
@@ -1439,13 +1513,12 @@ CONFIG_OF_FLATTREE=y
 CONFIG_OF_EARLY_FLATTREE=y
 CONFIG_OF_ADDRESS=y
 CONFIG_OF_IRQ=y
-CONFIG_OF_DEVICE=y
-CONFIG_OF_I2C=y
 CONFIG_OF_NET=y
 CONFIG_OF_MDIO=y
 CONFIG_OF_PCI=y
 CONFIG_OF_PCI_IRQ=y
 CONFIG_OF_MTD=y
+CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
 CONFIG_PARPORT=m
 # CONFIG_PARPORT_PC is not set
 # CONFIG_PARPORT_GSC is not set
@@ -1453,6 +1526,7 @@ CONFIG_PARPORT=m
 CONFIG_PARPORT_1284=y
 CONFIG_PARPORT_NOT_PC=y
 CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_NULL_BLK is not set
 # CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set
 # CONFIG_BLK_CPQ_CISS_DA is not set
 # CONFIG_BLK_DEV_DAC960 is not set
@@ -1484,7 +1558,6 @@ CONFIG_BLK_DEV_RAM_SIZE=16384
 # CONFIG_ATMEL_PWM is not set
 CONFIG_DUMMY_IRQ=m
 # CONFIG_PHANTOM is not set
-# CONFIG_INTEL_MID_PTI is not set
 # CONFIG_SGI_IOC4 is not set
 # CONFIG_TIFM_CORE is not set
 CONFIG_ICS932S401=m
@@ -1515,6 +1588,7 @@ CONFIG_EEPROM_AT24=m
 CONFIG_EEPROM_LEGACY=m
 CONFIG_EEPROM_MAX6875=m
 CONFIG_EEPROM_93CX6=m
+CONFIG_EEPROM_SUNXI_SID=y
 # CONFIG_CB710_CORE is not set
 
 #
@@ -1527,6 +1601,14 @@ CONFIG_TI_ST=m
 # Altera FPGA firmware download module
 #
 CONFIG_ALTERA_STAPL=m
+
+#
+# Intel MIC Host Driver
+#
+
+#
+# Intel MIC Card Driver
+#
 CONFIG_HAVE_IDE=y
 # CONFIG_IDE is not set
 
@@ -1590,7 +1672,6 @@ CONFIG_AIC7XXX_RESET_DELAY_MS=5000
 CONFIG_AIC7XXX_DEBUG_ENABLE=y
 CONFIG_AIC7XXX_DEBUG_MASK=0
 CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
-# CONFIG_SCSI_AIC7XXX_OLD is not set
 CONFIG_SCSI_AIC79XX=m
 CONFIG_AIC79XX_CMDS_PER_DEVICE=32
 CONFIG_AIC79XX_RESET_DELAY_MS=5000
@@ -1604,6 +1685,7 @@ CONFIG_SCSI_MVSAS_DEBUG=y
 # CONFIG_SCSI_MVSAS_TASKLET is not set
 CONFIG_SCSI_MVUMI=m
 CONFIG_SCSI_ARCMSR=m
+CONFIG_SCSI_ESAS2R=m
 CONFIG_MEGARAID_NEWGEN=y
 # CONFIG_MEGARAID_MM is not set
 CONFIG_MEGARAID_LEGACY=m
@@ -1647,7 +1729,7 @@ CONFIG_SCSI_DEBUG=m
 CONFIG_SCSI_PMCRAID=m
 CONFIG_SCSI_PM8001=m
 CONFIG_SCSI_SRP=m
-CONFIG_SCSI_BFA_FC=m
+# CONFIG_SCSI_BFA_FC is not set
 CONFIG_SCSI_CHELSIO_FCOE=m
 CONFIG_SCSI_DH=y
 CONFIG_SCSI_DH_RDAC=m
@@ -1670,6 +1752,7 @@ CONFIG_SATA_PMP=y
 # CONFIG_SATA_AHCI is not set
 CONFIG_SATA_AHCI_PLATFORM=m
 CONFIG_AHCI_IMX=m
+CONFIG_AHCI_SUNXI=m
 # CONFIG_SATA_INIC162X is not set
 # CONFIG_SATA_ACARD_AHCI is not set
 # CONFIG_SATA_SIL24 is not set
@@ -1691,6 +1774,7 @@ CONFIG_SATA_HIGHBANK=m
 CONFIG_SATA_MV=m
 # CONFIG_SATA_NV is not set
 # CONFIG_SATA_PROMISE is not set
+CONFIG_SATA_RCAR=m
 # CONFIG_SATA_SIL is not set
 # CONFIG_SATA_SIS is not set
 # CONFIG_SATA_SVW is not set
@@ -1768,14 +1852,14 @@ CONFIG_MD_MULTIPATH=m
 CONFIG_MD_FAULTY=m
 CONFIG_BCACHE=m
 # CONFIG_BCACHE_DEBUG is not set
-# CONFIG_BCACHE_EDEBUG is not set
 # CONFIG_BCACHE_CLOSURES_DEBUG is not set
 CONFIG_BLK_DEV_DM_BUILTIN=y
 CONFIG_BLK_DEV_DM=y
 # CONFIG_DM_DEBUG is not set
-CONFIG_DM_BUFIO=m
+CONFIG_DM_BUFIO=y
 CONFIG_DM_BIO_PRISON=m
 CONFIG_DM_PERSISTENT_DATA=m
+# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
 CONFIG_DM_CRYPT=m
 CONFIG_DM_SNAPSHOT=y
 # CONFIG_DM_THIN_PROVISIONING is not set
@@ -1783,8 +1867,8 @@ CONFIG_DM_CACHE=m
 CONFIG_DM_CACHE_MQ=m
 CONFIG_DM_CACHE_CLEANER=m
 CONFIG_DM_MIRROR=y
-CONFIG_DM_RAID=m
 CONFIG_DM_LOG_USERSPACE=m
+CONFIG_DM_RAID=m
 CONFIG_DM_ZERO=y
 CONFIG_DM_MULTIPATH=m
 CONFIG_DM_MULTIPATH_QL=m
@@ -1793,6 +1877,7 @@ CONFIG_DM_MULTIPATH_ST=m
 CONFIG_DM_UEVENT=y
 # CONFIG_DM_FLAKEY is not set
 CONFIG_DM_VERITY=m
+CONFIG_DM_SWITCH=m
 # CONFIG_TARGET_CORE is not set
 # CONFIG_FUSION is not set
 
@@ -1806,12 +1891,12 @@ CONFIG_FIREWIRE_SBP2=m
 # CONFIG_FIREWIRE_NOSY is not set
 # CONFIG_I2O is not set
 CONFIG_NETDEVICES=y
+CONFIG_MII=m
 CONFIG_NET_CORE=y
 CONFIG_BONDING=m
 CONFIG_DUMMY=m
 # CONFIG_EQUALIZER is not set
 # CONFIG_NET_FC is not set
-CONFIG_MII=m
 CONFIG_IFB=m
 # CONFIG_NET_TEAM is not set
 CONFIG_MACVLAN=m
@@ -1830,6 +1915,7 @@ CONFIG_IMQ_BEHAVIOR_AB=y
 CONFIG_IMQ_NUM_DEVS=2
 CONFIG_TUN=m
 CONFIG_VETH=m
+CONFIG_NLMON=m
 CONFIG_SUNGEM_PHY=m
 # CONFIG_ARCNET is not set
 CONFIG_ATM_DRIVERS=y
@@ -1874,12 +1960,16 @@ CONFIG_NET_VENDOR_3COM=y
 CONFIG_TYPHOON=m
 CONFIG_NET_VENDOR_ADAPTEC=y
 CONFIG_ADAPTEC_STARFIRE=m
+CONFIG_NET_VENDOR_ALLWINNER=y
+CONFIG_SUN4I_EMAC=m
 CONFIG_NET_VENDOR_ALTEON=y
 CONFIG_ACENIC=m
 # CONFIG_ACENIC_OMIT_TIGON_I is not set
 CONFIG_NET_VENDOR_AMD=y
 CONFIG_AMD8111_ETH=m
 CONFIG_PCNET32=m
+CONFIG_NET_VENDOR_ARC=y
+CONFIG_ARC_EMAC=m
 CONFIG_NET_VENDOR_ATHEROS=y
 CONFIG_ATL2=m
 CONFIG_ATL1=m
@@ -1954,6 +2044,10 @@ CONFIG_IGBVF=m
 CONFIG_IXGB=m
 CONFIG_IXGBE=m
 CONFIG_IXGBE_HWMON=y
+CONFIG_IXGBEVF=m
+CONFIG_I40E=m
+CONFIG_I40E_VXLAN=y
+CONFIG_I40EVF=m
 CONFIG_NET_VENDOR_I825XX=y
 CONFIG_IP1000=m
 CONFIG_JME=m
@@ -1970,6 +2064,7 @@ CONFIG_NET_VENDOR_MELLANOX=y
 CONFIG_MLX4_EN=m
 CONFIG_MLX4_CORE=m
 CONFIG_MLX4_DEBUG=y
+# CONFIG_MLX5_CORE is not set
 CONFIG_NET_VENDOR_MICREL=y
 CONFIG_KS8842=m
 CONFIG_KS8851_MLL=m
@@ -1987,7 +2082,6 @@ CONFIG_NE2K_PCI=m
 CONFIG_NET_VENDOR_NVIDIA=y
 CONFIG_FORCEDETH=m
 CONFIG_NET_VENDOR_OKI=y
-CONFIG_PCH_GBE=m
 CONFIG_ETHOC=m
 CONFIG_NET_PACKET_ENGINE=y
 CONFIG_HAMACHI=m
@@ -2005,6 +2099,7 @@ CONFIG_8139TOO=m
 CONFIG_8139TOO_8129=y
 # CONFIG_8139_OLD_RX_RESET is not set
 CONFIG_R8169=m
+CONFIG_SH_ETH=m
 CONFIG_NET_VENDOR_RDC=y
 CONFIG_R6040=m
 CONFIG_NET_VENDOR_SEEQ=y
@@ -2026,6 +2121,7 @@ CONFIG_SMSC9420=m
 CONFIG_NET_VENDOR_STMICRO=y
 CONFIG_STMMAC_ETH=m
 CONFIG_STMMAC_PLATFORM=y
+CONFIG_DWMAC_SUNXI=y
 # CONFIG_STMMAC_PCI is not set
 # CONFIG_STMMAC_DEBUG_FS is not set
 # CONFIG_STMMAC_DA is not set
@@ -2040,6 +2136,7 @@ CONFIG_NET_VENDOR_TI=y
 CONFIG_TI_DAVINCI_EMAC=m
 CONFIG_TI_DAVINCI_MDIO=m
 CONFIG_TI_DAVINCI_CPDMA=m
+CONFIG_TI_CPSW_PHY_SEL=y
 CONFIG_TI_CPSW=m
 CONFIG_TI_CPTS=y
 CONFIG_TLAN=m
@@ -2053,6 +2150,8 @@ CONFIG_WIZNET_W5300=m
 # CONFIG_WIZNET_BUS_DIRECT is not set
 # CONFIG_WIZNET_BUS_INDIRECT is not set
 CONFIG_WIZNET_BUS_ANY=y
+CONFIG_NET_VENDOR_XILINX=y
+CONFIG_XILINX_EMACLITE=m
 # CONFIG_FDDI is not set
 # CONFIG_HIPPI is not set
 CONFIG_PHYLIB=y
@@ -2080,9 +2179,11 @@ CONFIG_MICREL_PHY=m
 CONFIG_FIXED_PHY=y
 CONFIG_MDIO_BITBANG=m
 # CONFIG_MDIO_GPIO is not set
+CONFIG_MDIO_SUN4I=m
 CONFIG_MDIO_BUS_MUX=m
 CONFIG_MDIO_BUS_MUX_GPIO=m
 CONFIG_MDIO_BUS_MUX_MMIOREG=m
+CONFIG_GATEWORKS_GW16083=m
 # CONFIG_PLIP is not set
 CONFIG_PPP=m
 CONFIG_PPP_BSDCOMP=m
@@ -2113,8 +2214,11 @@ CONFIG_USB_NET_AX88179_178A=m
 CONFIG_USB_NET_CDCETHER=m
 CONFIG_USB_NET_CDC_EEM=m
 CONFIG_USB_NET_CDC_NCM=m
+CONFIG_USB_NET_HUAWEI_CDC_NCM=m
 CONFIG_USB_NET_CDC_MBIM=m
 CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_SR9700=m
+CONFIG_USB_NET_SR9800=m
 CONFIG_USB_NET_SMSC75XX=m
 CONFIG_USB_NET_SMSC95XX=m
 CONFIG_USB_NET_GL620A=m
@@ -2167,7 +2271,9 @@ CONFIG_ATH9K=m
 CONFIG_ATH9K_PCI=y
 CONFIG_ATH9K_AHB=y
 # CONFIG_ATH9K_DEBUGFS is not set
+# CONFIG_ATH9K_WOW is not set
 # CONFIG_ATH9K_LEGACY_RATE_CONTROL is not set
+CONFIG_ATH9K_RFKILL=y
 CONFIG_ATH9K_HTC=m
 # CONFIG_ATH9K_HTC_DEBUGFS is not set
 CONFIG_CARL9170=m
@@ -2177,14 +2283,24 @@ CONFIG_CARL9170_WPC=y
 # CONFIG_ATH6KL is not set
 CONFIG_AR5523=m
 # CONFIG_WIL6210 is not set
+CONFIG_ATH10K=m
+CONFIG_ATH10K_PCI=m
+# CONFIG_ATH10K_DEBUG is not set
+# CONFIG_ATH10K_DEBUGFS is not set
+# CONFIG_ATH10K_TRACING is not set
+CONFIG_WCN36XX=m
+# CONFIG_WCN36XX_DEBUGFS is not set
 CONFIG_B43=m
+CONFIG_B43_BCMA=y
 CONFIG_B43_SSB=y
 CONFIG_B43_PCI_AUTOSELECT=y
 CONFIG_B43_PCICORE_AUTOSELECT=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
@@ -2200,6 +2316,7 @@ 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_BRCMSMAC=m
 CONFIG_BRCMFMAC=m
 CONFIG_BRCMFMAC_SDIO=y
 # CONFIG_BRCMFMAC_USB is not set
@@ -2231,7 +2348,6 @@ CONFIG_IWLWIFI_OPMODE_MODULAR=y
 #
 # CONFIG_IWLWIFI_DEBUG is not set
 # CONFIG_IWLWIFI_DEVICE_TRACING is not set
-CONFIG_IWLWIFI_P2P=y
 CONFIG_IWLEGACY=m
 CONFIG_IWL4965=m
 CONFIG_IWL3945=m
@@ -2266,6 +2382,7 @@ CONFIG_RT73USB=m
 CONFIG_RT2800USB=m
 CONFIG_RT2800USB_RT33XX=y
 CONFIG_RT2800USB_RT35XX=y
+CONFIG_RT2800USB_RT3573=y
 CONFIG_RT2800USB_RT53XX=y
 CONFIG_RT2800USB_RT55XX=y
 CONFIG_RT2800USB_UNKNOWN=y
@@ -2276,14 +2393,17 @@ CONFIG_RT2X00_LIB_FIRMWARE=y
 CONFIG_RT2X00_LIB_CRYPTO=y
 CONFIG_RT2X00_LIB_LEDS=y
 # CONFIG_RT2X00_DEBUG is not set
-CONFIG_RTLWIFI=m
-# CONFIG_RTLWIFI_DEBUG is not set
+CONFIG_RTL_CARDS=m
 CONFIG_RTL8192CE=m
 CONFIG_RTL8192SE=m
 CONFIG_RTL8192DE=m
 CONFIG_RTL8723AE=m
 CONFIG_RTL8188EE=m
 CONFIG_RTL8192CU=m
+CONFIG_RTLWIFI=m
+CONFIG_RTLWIFI_PCI=m
+CONFIG_RTLWIFI_USB=m
+# CONFIG_RTLWIFI_DEBUG is not set
 CONFIG_RTL8192C_COMMON=m
 CONFIG_WL_TI=y
 CONFIG_WL1251=m
@@ -2299,6 +2419,8 @@ CONFIG_MWIFIEX=m
 CONFIG_MWIFIEX_SDIO=m
 CONFIG_MWIFIEX_PCIE=m
 CONFIG_MWIFIEX_USB=m
+CONFIG_CW1200=m
+CONFIG_CW1200_WLAN_SDIO=m
 
 #
 # Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -2379,8 +2501,8 @@ CONFIG_HISAX_HFC4S8S=m
 CONFIG_ISDN_CAPI=m
 CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
 CONFIG_CAPI_TRACE=y
-CONFIG_ISDN_CAPI_MIDDLEWARE=y
 CONFIG_ISDN_CAPI_CAPI20=m
+CONFIG_ISDN_CAPI_MIDDLEWARE=y
 CONFIG_ISDN_CAPI_CAPIDRV=m
 
 #
@@ -2443,6 +2565,7 @@ CONFIG_KEYBOARD_IMX=m
 # CONFIG_KEYBOARD_SAMSUNG is not set
 # CONFIG_KEYBOARD_STOWAWAY is not set
 # CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_SUN4I_LRADC is not set
 CONFIG_KEYBOARD_OMAP4=m
 CONFIG_KEYBOARD_TWL4030=m
 # CONFIG_KEYBOARD_XTKBD is not set
@@ -2475,6 +2598,7 @@ CONFIG_INPUT_MISC=y
 # CONFIG_INPUT_MMA8450 is not set
 # CONFIG_INPUT_MPU3050 is not set
 # CONFIG_INPUT_GP2A is not set
+CONFIG_INPUT_GPIO_BEEPER=m
 # CONFIG_INPUT_GPIO_TILT_POLLED is not set
 CONFIG_INPUT_ATI_REMOTE2=m
 CONFIG_INPUT_KEYSPAN_REMOTE=m
@@ -2483,11 +2607,11 @@ CONFIG_INPUT_POWERMATE=m
 CONFIG_INPUT_YEALINK=m
 CONFIG_INPUT_CM109=m
 CONFIG_INPUT_RETU_PWRBUTTON=m
+CONFIG_INPUT_AXP20X_PEK=y
 CONFIG_INPUT_TWL4030_PWRBUTTON=m
 CONFIG_INPUT_TWL4030_VIBRA=m
 CONFIG_INPUT_UINPUT=m
 # CONFIG_INPUT_PCF8574 is not set
-CONFIG_INPUT_PWM_BEEPER=m
 CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
 # CONFIG_INPUT_ADXL34X is not set
 # CONFIG_INPUT_IMS_PCU is not set
@@ -2507,6 +2631,7 @@ CONFIG_SERIO_ALTERA_PS2=m
 # CONFIG_SERIO_PS2MULT is not set
 CONFIG_SERIO_ARC_PS2=m
 CONFIG_SERIO_APBPS2=m
+CONFIG_SERIO_OLPC_APSP=m
 # CONFIG_GAMEPORT is not set
 
 #
@@ -2535,7 +2660,6 @@ CONFIG_N_HDLC=m
 CONFIG_N_GSM=m
 # CONFIG_TRACE_SINK is not set
 # CONFIG_DEVKMEM is not set
-# CONFIG_STALDRV is not set
 
 #
 # Serial drivers
@@ -2565,6 +2689,9 @@ CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
 # CONFIG_SERIAL_MFD_HSU is not set
 CONFIG_SERIAL_IMX=y
 CONFIG_SERIAL_IMX_CONSOLE=y
+CONFIG_SERIAL_UARTLITE=m
+CONFIG_SERIAL_SH_SCI=m
+CONFIG_SERIAL_SH_SCI_NR_UARTS=2
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
 # CONFIG_SERIAL_JSM is not set
@@ -2581,6 +2708,8 @@ CONFIG_SERIAL_SCCNXP=m
 CONFIG_SERIAL_ARC=m
 CONFIG_SERIAL_ARC_NR_PORTS=1
 # CONFIG_SERIAL_RP2 is not set
+CONFIG_SERIAL_FSL_LPUART=m
+CONFIG_SERIAL_ST_ASC=m
 # CONFIG_TTY_PRINTK is not set
 CONFIG_PRINTER=m
 CONFIG_LP_CONSOLE=y
@@ -2595,6 +2724,8 @@ CONFIG_IPMI_POWEROFF=m
 CONFIG_HW_RANDOM=y
 CONFIG_HW_RANDOM_TIMERIOMEM=m
 CONFIG_HW_RANDOM_ATMEL=m
+CONFIG_HW_RANDOM_OMAP=y
+CONFIG_HW_RANDOM_OMAP3_ROM=y
 CONFIG_HW_RANDOM_EXYNOS=m
 CONFIG_NVRAM=y
 CONFIG_R3964=m
@@ -2607,7 +2738,16 @@ CONFIG_I2C=y
 CONFIG_I2C_BOARDINFO=y
 CONFIG_I2C_COMPAT=y
 CONFIG_I2C_CHARDEV=m
-# CONFIG_I2C_MUX is not set
+CONFIG_I2C_MUX=y
+
+#
+# Multiplexer I2C Chip support
+#
+CONFIG_I2C_ARB_GPIO_CHALLENGE=m
+CONFIG_I2C_MUX_GPIO=m
+CONFIG_I2C_MUX_PCA9541=m
+CONFIG_I2C_MUX_PCA954x=m
+CONFIG_I2C_MUX_PINCTRL=m
 CONFIG_I2C_HELPER_AUTO=y
 CONFIG_I2C_SMBUS=m
 CONFIG_I2C_ALGOBIT=m
@@ -2644,7 +2784,6 @@ CONFIG_I2C_CBUS_GPIO=m
 # CONFIG_I2C_EG20T is not set
 CONFIG_I2C_GPIO=m
 CONFIG_I2C_IMX=m
-# CONFIG_I2C_INTEL_MID is not set
 CONFIG_I2C_MV64XXX=y
 CONFIG_I2C_NOMADIK=y
 # CONFIG_I2C_OCORES is not set
@@ -2653,6 +2792,7 @@ CONFIG_I2C_PCA_PLATFORM=m
 # CONFIG_I2C_PXA_PCI is not set
 CONFIG_I2C_SIMTEC=m
 CONFIG_I2C_VERSATILE=m
+CONFIG_I2C_WMT=m
 # CONFIG_I2C_XILINX is not set
 
 #
@@ -2661,6 +2801,7 @@ CONFIG_I2C_VERSATILE=m
 CONFIG_I2C_DIOLAN_U2C=m
 CONFIG_I2C_PARPORT=m
 CONFIG_I2C_PARPORT_LIGHT=m
+CONFIG_I2C_ROBOTFUZZ_OSIF=m
 # CONFIG_I2C_TAOS_EVM is not set
 CONFIG_I2C_TINY_USB=m
 CONFIG_I2C_VIPERBOARD=m
@@ -2673,11 +2814,6 @@ CONFIG_I2C_STUB=m
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_BUS is not set
 # CONFIG_SPI is not set
-
-#
-# Qualcomm MSM SSBI bus support
-#
-# CONFIG_SSBI is not set
 CONFIG_HSI=m
 CONFIG_HSI_BOARDINFO=y
 
@@ -2712,7 +2848,6 @@ CONFIG_PTP_1588_CLOCK=m
 #
 # Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
 #
-CONFIG_PTP_1588_CLOCK_PCH=m
 CONFIG_PINCTRL=y
 
 #
@@ -2722,14 +2857,17 @@ CONFIG_PINMUX=y
 CONFIG_PINCONF=y
 CONFIG_GENERIC_PINCONF=y
 # CONFIG_DEBUG_PINCTRL is not set
+# CONFIG_PINCTRL_CAPRI is not set
 CONFIG_PINCTRL_IMX=y
 CONFIG_PINCTRL_IMX51=y
 CONFIG_PINCTRL_IMX53=y
 CONFIG_PINCTRL_IMX6Q=y
+CONFIG_PINCTRL_IMX6SL=y
+CONFIG_PINCTRL_MSM=y
+CONFIG_PINCTRL_MSM8X74=m
+CONFIG_PINCTRL_ROCKCHIP=y
 CONFIG_PINCTRL_SINGLE=y
 CONFIG_PINCTRL_SUNXI=y
-# CONFIG_PINCTRL_EXYNOS is not set
-# CONFIG_PINCTRL_EXYNOS5440 is not set
 CONFIG_PINCTRL_MVEBU=y
 CONFIG_PINCTRL_ARMADA_370=y
 CONFIG_PINCTRL_ARMADA_XP=y
@@ -2738,8 +2876,8 @@ CONFIG_PINCTRL_WM8850=y
 CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
 CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
 CONFIG_ARCH_REQUIRE_GPIOLIB=y
-CONFIG_GPIO_DEVRES=y
 CONFIG_GPIOLIB=y
+CONFIG_GPIO_DEVRES=y
 CONFIG_OF_GPIO=y
 # CONFIG_DEBUG_GPIO is not set
 CONFIG_GPIO_SYSFS=y
@@ -2754,7 +2892,9 @@ CONFIG_GPIO_MVEBU=y
 CONFIG_GPIO_MXC=y
 CONFIG_GPIO_PL061=y
 # CONFIG_GPIO_RCAR is not set
+CONFIG_GPIO_SCH311X=m
 CONFIG_GPIO_TS5500=m
+# CONFIG_GPIO_XILINX is not set
 # CONFIG_GPIO_VX855 is not set
 # CONFIG_GPIO_GRGPIO is not set
 
@@ -2785,9 +2925,14 @@ CONFIG_GPIO_MCP23S08=m
 # AC97 GPIO expanders:
 #
 
+#
+# LPC GPIO expanders:
+#
+
 #
 # MODULbus GPIO expanders:
 #
+# CONFIG_GPIO_BCM_KONA is not set
 
 #
 # USB GPIO expanders:
@@ -2839,6 +2984,7 @@ CONFIG_BATTERY_88PM860X=m
 # CONFIG_BATTERY_BQ27x00 is not set
 # CONFIG_BATTERY_MAX17040 is not set
 # CONFIG_BATTERY_MAX17042 is not set
+CONFIG_BATTERY_TWL4030_MADC=m
 CONFIG_CHARGER_88PM860X=m
 # CONFIG_BATTERY_RX51 is not set
 # CONFIG_CHARGER_ISP1704 is not set
@@ -2848,8 +2994,9 @@ CONFIG_CHARGER_TWL4030=y
 # CONFIG_CHARGER_GPIO is not set
 # CONFIG_CHARGER_MANAGER is not set
 # CONFIG_CHARGER_BQ2415X is not set
+# CONFIG_CHARGER_BQ24190 is not set
+# CONFIG_CHARGER_BQ24735 is not set
 # CONFIG_CHARGER_SMB347 is not set
-# CONFIG_BATTERY_GOLDFISH is not set
 CONFIG_POWER_RESET=y
 CONFIG_POWER_RESET_GPIO=y
 CONFIG_POWER_RESET_QNAP=y
@@ -2886,10 +3033,12 @@ CONFIG_SENSORS_F71805F=m
 CONFIG_SENSORS_F71882FG=m
 CONFIG_SENSORS_F75375S=m
 CONFIG_SENSORS_G760A=m
+CONFIG_SENSORS_G762=m
 CONFIG_SENSORS_GL518SM=m
 CONFIG_SENSORS_GL520SM=m
 # CONFIG_SENSORS_GPIO_FAN is not set
 CONFIG_SENSORS_HIH6130=m
+CONFIG_SENSORS_HTU21=m
 CONFIG_SENSORS_IBMAEM=m
 CONFIG_SENSORS_IBMPEX=m
 # CONFIG_SENSORS_IIO_HWMON is not set
@@ -2980,6 +3129,7 @@ CONFIG_SENSORS_W83627HF=m
 CONFIG_SENSORS_W83627EHF=m
 CONFIG_THERMAL=y
 CONFIG_THERMAL_HWMON=y
+CONFIG_THERMAL_OF=y
 CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
 # CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
 # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
@@ -2990,6 +3140,15 @@ CONFIG_CPU_THERMAL=y
 CONFIG_THERMAL_EMULATION=y
 CONFIG_IMX_THERMAL=m
 CONFIG_ARMADA_THERMAL=m
+
+#
+# Texas Instruments thermal drivers
+#
+CONFIG_TI_SOC_THERMAL=m
+CONFIG_TI_THERMAL=y
+CONFIG_OMAP4_THERMAL=y
+CONFIG_OMAP5_THERMAL=y
+CONFIG_DRA752_THERMAL=y
 CONFIG_WATCHDOG=y
 CONFIG_WATCHDOG_CORE=y
 CONFIG_WATCHDOG_NOWAYOUT=y
@@ -2998,16 +3157,18 @@ CONFIG_WATCHDOG_NOWAYOUT=y
 # Watchdog Device Drivers
 #
 CONFIG_SOFT_WATCHDOG=m
+CONFIG_GPIO_WATCHDOG=m
 CONFIG_ARM_SP805_WATCHDOG=m
 # CONFIG_DW_WATCHDOG is not set
-CONFIG_MPCORE_WATCHDOG=m
 CONFIG_OMAP_WATCHDOG=m
+CONFIG_SUNXI_WATCHDOG=m
 CONFIG_TWL4030_WATCHDOG=m
 # CONFIG_MAX63XX_WATCHDOG is not set
 CONFIG_IMX2_WDT=m
 CONFIG_RETU_WATCHDOG=m
 # CONFIG_ALIM7101_WDT is not set
 # CONFIG_I6300ESB_WDT is not set
+CONFIG_MEN_A21_WDT=m
 
 #
 # PCI-based Watchdog Cards
@@ -3042,20 +3203,30 @@ CONFIG_BCMA_POSSIBLE=y
 #
 # Broadcom specific AMBA
 #
-# CONFIG_BCMA is not set
+CONFIG_BCMA=m
+CONFIG_BCMA_BLOCKIO=y
+CONFIG_BCMA_HOST_PCI_POSSIBLE=y
+CONFIG_BCMA_HOST_PCI=y
+CONFIG_BCMA_HOST_SOC=y
+CONFIG_BCMA_DRIVER_GMAC_CMN=y
+CONFIG_BCMA_DRIVER_GPIO=y
+# CONFIG_BCMA_DEBUG is not set
 
 #
 # Multifunction device drivers
 #
 CONFIG_MFD_CORE=y
 # CONFIG_MFD_AS3711 is not set
+# CONFIG_MFD_AS3722 is not set
 # CONFIG_PMIC_ADP5520 is not set
 # CONFIG_MFD_AAT2870_CORE is not set
+CONFIG_MFD_AXP20X=y
 # CONFIG_MFD_CROS_EC is not set
 # CONFIG_MFD_ASIC3 is not set
 # CONFIG_PMIC_DA903X is not set
 # CONFIG_MFD_DA9052_I2C is not set
 # CONFIG_MFD_DA9055 is not set
+# CONFIG_MFD_DA9063 is not set
 # CONFIG_MFD_MC13XXX_I2C is not set
 # CONFIG_HTC_EGPIO is not set
 # CONFIG_HTC_PASIC3 is not set
@@ -3063,9 +3234,11 @@ CONFIG_MFD_CORE=y
 # CONFIG_LPC_ICH is not set
 # CONFIG_LPC_SCH is not set
 # CONFIG_MFD_JANZ_CMODIO is not set
+# CONFIG_MFD_KEMPLD is not set
 CONFIG_MFD_88PM800=y
 CONFIG_MFD_88PM805=y
 CONFIG_MFD_88PM860X=y
+# CONFIG_MFD_MAX14577 is not set
 # CONFIG_MFD_MAX77686 is not set
 # CONFIG_MFD_MAX77693 is not set
 # CONFIG_MFD_MAX8907 is not set
@@ -3089,6 +3262,7 @@ CONFIG_ABX500_CORE=y
 # CONFIG_MFD_STMPE is not set
 CONFIG_MFD_SYSCON=y
 # CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_MFD_LP3943 is not set
 # CONFIG_MFD_LP8788 is not set
 CONFIG_MFD_OMAP_USB_HOST=y
 # CONFIG_MFD_PALMAS is not set
@@ -3124,25 +3298,30 @@ CONFIG_MFD_LM3533=m
 CONFIG_VEXPRESS_CONFIG=y
 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_88PM800=m
+CONFIG_REGULATOR_88PM8607=y
+# CONFIG_REGULATOR_ACT8865 is not set
 # CONFIG_REGULATOR_AD5398 is not set
-# CONFIG_REGULATOR_FAN53555 is not set
 CONFIG_REGULATOR_ANATOP=m
+CONFIG_REGULATOR_AXP20X=y
+# CONFIG_REGULATOR_DA9210 is not set
+# CONFIG_REGULATOR_FAN53555 is not set
+# CONFIG_REGULATOR_GPIO is not set
 # CONFIG_REGULATOR_ISL6271A is not set
-CONFIG_REGULATOR_88PM8607=y
+# CONFIG_REGULATOR_LP3971 is not set
+# CONFIG_REGULATOR_LP3972 is not set
+# CONFIG_REGULATOR_LP872X is not set
+CONFIG_REGULATOR_LP8755=m
 # CONFIG_REGULATOR_MAX1586 is not set
 # CONFIG_REGULATOR_MAX8649 is not set
 # CONFIG_REGULATOR_MAX8660 is not set
 # CONFIG_REGULATOR_MAX8952 is not set
 # CONFIG_REGULATOR_MAX8973 is not set
-# CONFIG_REGULATOR_LP3971 is not set
-# CONFIG_REGULATOR_LP3972 is not set
-# CONFIG_REGULATOR_LP872X is not set
-CONFIG_REGULATOR_LP8755=m
+CONFIG_REGULATOR_PFUZE100=y
+# CONFIG_REGULATOR_TI_ABB is not set
 # CONFIG_REGULATOR_TPS51632 is not set
 # CONFIG_REGULATOR_TPS62360 is not set
 # CONFIG_REGULATOR_TPS65023 is not set
@@ -3176,7 +3355,6 @@ CONFIG_VIDEOBUF2_CORE=m
 CONFIG_VIDEOBUF2_MEMOPS=m
 CONFIG_VIDEOBUF2_DMA_CONTIG=m
 CONFIG_VIDEOBUF2_VMALLOC=m
-CONFIG_VIDEO_V4L2_INT_DEVICE=m
 CONFIG_DVB_CORE=y
 CONFIG_DVB_NET=y
 CONFIG_TTPCI_EEPROM=m
@@ -3209,6 +3387,7 @@ CONFIG_IR_IGUANA=m
 CONFIG_IR_TTUSBIR=m
 CONFIG_RC_LOOPBACK=m
 CONFIG_IR_GPIO_CIR=m
+CONFIG_IR_SUNXI=m
 CONFIG_MEDIA_USB_SUPPORT=y
 
 #
@@ -3254,6 +3433,7 @@ CONFIG_USB_GSPCA_SQ905=m
 CONFIG_USB_GSPCA_SQ905C=m
 CONFIG_USB_GSPCA_SQ930X=m
 CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_STK1135=m
 CONFIG_USB_GSPCA_STV0680=m
 CONFIG_USB_GSPCA_SUNPLUS=m
 CONFIG_USB_GSPCA_T613=m
@@ -3270,7 +3450,7 @@ CONFIG_VIDEO_CPIA2=m
 CONFIG_USB_ZR364XX=m
 CONFIG_USB_STKWEBCAM=m
 CONFIG_USB_S2255=m
-CONFIG_USB_SN9C102=m
+CONFIG_VIDEO_USBTV=m
 
 #
 # Analog TV USB devices
@@ -3282,8 +3462,9 @@ CONFIG_VIDEO_PVRUSB2_DVB=y
 CONFIG_VIDEO_HDPVR=m
 CONFIG_VIDEO_TLG2300=m
 CONFIG_VIDEO_USBVISION=m
-CONFIG_VIDEO_STK1160=m
+CONFIG_VIDEO_STK1160_COMMON=m
 # CONFIG_VIDEO_STK1160_AC97 is not set
+CONFIG_VIDEO_STK1160=m
 
 #
 # Analog/digital TV USB devices
@@ -3352,6 +3533,7 @@ CONFIG_DVB_B2C2_FLEXCOP_USB=m
 # Webcam, TV (analog/digital) USB devices
 #
 CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_EM28XX_V4L2=m
 CONFIG_VIDEO_EM28XX_ALSA=m
 CONFIG_VIDEO_EM28XX_DVB=m
 CONFIG_VIDEO_EM28XX_RC=m
@@ -3384,6 +3566,7 @@ CONFIG_VIDEO_CX88=m
 CONFIG_VIDEO_CX88_ALSA=m
 CONFIG_VIDEO_CX88_BLACKBIRD=m
 CONFIG_VIDEO_CX88_DVB=m
+CONFIG_VIDEO_CX88_ENABLE_VP3054=y
 CONFIG_VIDEO_CX88_VP3054=m
 CONFIG_VIDEO_CX88_MPEG=m
 CONFIG_VIDEO_BT848=m
@@ -3421,15 +3604,19 @@ CONFIG_VIDEO_OMAP2_VOUT_VRFB=y
 CONFIG_VIDEO_OMAP2_VOUT=y
 CONFIG_VIDEO_TIMBERDALE=m
 CONFIG_SOC_CAMERA=m
+CONFIG_SOC_CAMERA_SCALE_CROP=m
 CONFIG_SOC_CAMERA_PLATFORM=m
-CONFIG_MX3_VIDEO=y
 CONFIG_VIDEO_MX3=m
+CONFIG_VIDEO_RCAR_VIN=m
 # CONFIG_VIDEO_SH_MOBILE_CSI2 is not set
 # CONFIG_VIDEO_SH_MOBILE_CEU is not set
 CONFIG_V4L_MEM2MEM_DRIVERS=y
 # CONFIG_VIDEO_CODA is not set
 CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
 CONFIG_VIDEO_SH_VEU=m
+CONFIG_VIDEO_RENESAS_VSP1=m
+CONFIG_VIDEO_TI_VPE=m
+# CONFIG_VIDEO_TI_VPE_DEBUG is not set
 # CONFIG_V4L_TEST_DRIVERS is not set
 
 #
@@ -3456,7 +3643,6 @@ CONFIG_VIDEO_SAA7146=m
 CONFIG_VIDEO_SAA7146_VV=m
 CONFIG_SMS_SIANO_MDTV=m
 CONFIG_SMS_SIANO_RC=y
-# CONFIG_SMS_SIANO_DEBUGFS is not set
 
 #
 # Media ancillary drivers (tuners, sensors, i2c, frontends)
@@ -3519,7 +3705,12 @@ CONFIG_VIDEO_UPD64031A=m
 CONFIG_VIDEO_UPD64083=m
 
 #
-# Miscelaneous helper chips
+# Audio/Video compression chips
+#
+CONFIG_VIDEO_SAA6752HS=m
+
+#
+# Miscellaneous helper chips
 #
 CONFIG_VIDEO_M52790=m
 
@@ -3570,6 +3761,7 @@ CONFIG_MEDIA_TUNER_FC0013=m
 CONFIG_MEDIA_TUNER_TDA18212=m
 CONFIG_MEDIA_TUNER_E4000=m
 CONFIG_MEDIA_TUNER_FC2580=m
+CONFIG_MEDIA_TUNER_M88TS2022=m
 CONFIG_MEDIA_TUNER_TUA9001=m
 CONFIG_MEDIA_TUNER_IT913X=m
 CONFIG_MEDIA_TUNER_R820T=m
@@ -3581,6 +3773,7 @@ CONFIG_DVB_STB0899=m
 CONFIG_DVB_STB6100=m
 CONFIG_DVB_STV090x=m
 CONFIG_DVB_STV6110x=m
+CONFIG_DVB_M88DS3103=m
 
 #
 # Multistandard (cable + terrestrial) frontends
@@ -3611,8 +3804,7 @@ CONFIG_DVB_TUNER_CX24113=m
 CONFIG_DVB_TDA826X=m
 CONFIG_DVB_TUA6100=m
 CONFIG_DVB_CX24116=m
-CONFIG_DVB_M88DS3103=m
-CONFIG_DVB_M88DC2800=m
+CONFIG_DVB_CX24117=m
 CONFIG_DVB_SI21XX=m
 CONFIG_DVB_TS2020=m
 CONFIG_DVB_DS3000=m
@@ -3693,6 +3885,8 @@ CONFIG_DVB_A8293=m
 CONFIG_DVB_LGS8GXX=m
 CONFIG_DVB_ATBM8830=m
 CONFIG_DVB_TDA665x=m
+CONFIG_DVB_DVBSKY_M88DS3103=m
+CONFIG_DVB_M88DC2800=m
 CONFIG_DVB_IX2505V=m
 CONFIG_DVB_IT913X_FE=m
 CONFIG_DVB_M88RS2000=m
@@ -3711,6 +3905,7 @@ CONFIG_VGA_ARB_MAX_GPUS=16
 CONFIG_DRM=m
 CONFIG_DRM_USB=m
 CONFIG_DRM_KMS_HELPER=m
+CONFIG_DRM_KMS_FB_HELPER=y
 # CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
 CONFIG_DRM_GEM_CMA_HELPER=y
 CONFIG_DRM_KMS_CMA_HELPER=y
@@ -3733,16 +3928,23 @@ CONFIG_DRM_EXYNOS_DMABUF=y
 CONFIG_DRM_EXYNOS_HDMI=y
 CONFIG_DRM_EXYNOS_VIDI=y
 CONFIG_DRM_EXYNOS_G2D=y
+CONFIG_DRM_EXYNOS_IPP=y
+CONFIG_DRM_EXYNOS_FIMC=y
+CONFIG_DRM_EXYNOS_ROTATOR=y
 # CONFIG_DRM_VMWGFX is not set
 CONFIG_DRM_UDL=m
 # CONFIG_DRM_AST is not set
 # CONFIG_DRM_MGAG200 is not set
 # CONFIG_DRM_CIRRUS_QEMU is not set
+CONFIG_DRM_ARMADA=m
+CONFIG_DRM_RCAR_DU=m
+CONFIG_DRM_RCAR_LVDS=y
+CONFIG_DRM_SHMOBILE=m
 CONFIG_DRM_OMAP=m
 CONFIG_DRM_OMAP_NUM_CRTCS=2
 CONFIG_DRM_TILCDC=m
 # CONFIG_DRM_QXL is not set
-# CONFIG_TEGRA_HOST1X is not set
+# CONFIG_DRM_BOCHS is not set
 # CONFIG_VGASTATE is not set
 # CONFIG_VIDEO_OUTPUT_CONTROL is not set
 CONFIG_VIDEOMODE_HELPERS=y
@@ -3754,7 +3956,7 @@ CONFIG_FIRMWARE_EDID=y
 CONFIG_FB_CFB_FILLRECT=m
 CONFIG_FB_CFB_COPYAREA=m
 CONFIG_FB_CFB_IMAGEBLIT=m
-# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+CONFIG_FB_CFB_REV_PIXELS_IN_BYTE=y
 CONFIG_FB_SYS_FILLRECT=y
 CONFIG_FB_SYS_COPYAREA=y
 CONFIG_FB_SYS_IMAGEBLIT=y
@@ -3773,10 +3975,12 @@ CONFIG_FB_TILEBLITTING=y
 # CONFIG_FB_CIRRUS is not set
 # CONFIG_FB_PM2 is not set
 CONFIG_FB_ARMCLCD=m
+CONFIG_FB_IMX=m
 # CONFIG_FB_CYBER2000 is not set
 # CONFIG_FB_ASILIANT is not set
 # CONFIG_FB_IMSTT is not set
 # CONFIG_FB_UVESA is not set
+CONFIG_FB_OPENCORES=m
 # CONFIG_FB_S1D13XXX is not set
 # CONFIG_FB_NVIDIA is not set
 # CONFIG_FB_RIVA is not set
@@ -3803,7 +4007,9 @@ CONFIG_FB_ARMCLCD=m
 # CONFIG_FB_SM501 is not set
 CONFIG_FB_SMSCUFX=m
 # CONFIG_FB_UDL is not set
+CONFIG_FB_XILINX=m
 # CONFIG_FB_GOLDFISH is not set
+CONFIG_FB_DA8XX=m
 # CONFIG_FB_VIRTUAL is not set
 # CONFIG_FB_METRONOME is not set
 # CONFIG_FB_MB862XX is not set
@@ -3816,7 +4022,6 @@ CONFIG_OMAP2_DSS=y
 # CONFIG_OMAP2_DSS_DEBUG is not set
 # CONFIG_OMAP2_DSS_DEBUGFS is not set
 CONFIG_OMAP2_DSS_DPI=y
-CONFIG_OMAP2_DSS_RFBI=y
 CONFIG_OMAP2_DSS_VENC=y
 CONFIG_OMAP4_DSS_HDMI=y
 CONFIG_OMAP4_DSS_HDMI_AUDIO=y
@@ -3829,13 +4034,16 @@ CONFIG_FB_OMAP2_DEBUG_SUPPORT=y
 CONFIG_FB_OMAP2_NUM_FBS=3
 
 #
-# OMAP2/3 Display Device Drivers
+# OMAP Display Device Drivers (new device model)
 #
-CONFIG_PANEL_GENERIC_DPI=m
-CONFIG_PANEL_TFP410=m
-CONFIG_PANEL_SHARP_LS037V7DW01=m
-CONFIG_PANEL_PICODLP=m
-CONFIG_PANEL_TAAL=m
+CONFIG_DISPLAY_ENCODER_TFP410=m
+CONFIG_DISPLAY_ENCODER_TPD12S015=m
+CONFIG_DISPLAY_CONNECTOR_DVI=m
+CONFIG_DISPLAY_CONNECTOR_HDMI=m
+CONFIG_DISPLAY_CONNECTOR_ANALOG_TV=m
+CONFIG_DISPLAY_PANEL_DPI=m
+CONFIG_DISPLAY_PANEL_DSI_CM=m
+CONFIG_DISPLAY_PANEL_SHARP_LS037V7DW01=m
 # CONFIG_EXYNOS_VIDEO is not set
 CONFIG_BACKLIGHT_LCD_SUPPORT=y
 CONFIG_LCD_CLASS_DEVICE=m
@@ -3847,11 +4055,13 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
 # CONFIG_BACKLIGHT_ADP8860 is not set
 # CONFIG_BACKLIGHT_ADP8870 is not set
 # CONFIG_BACKLIGHT_88PM860X is not set
-# CONFIG_BACKLIGHT_LM3630 is not set
+# CONFIG_BACKLIGHT_LM3630A is not set
 # CONFIG_BACKLIGHT_LM3639 is not set
 # CONFIG_BACKLIGHT_LP855X is not set
 # CONFIG_BACKLIGHT_PANDORA is not set
-# CONFIG_BACKLIGHT_TLC59108 is not set
+# CONFIG_BACKLIGHT_GPIO is not set
+# CONFIG_BACKLIGHT_LV5207LP is not set
+# CONFIG_BACKLIGHT_BD6107 is not set
 
 #
 # Console display driver support
@@ -3860,9 +4070,6 @@ CONFIG_DUMMY_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
 CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
 CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
@@ -3874,6 +4081,7 @@ CONFIG_SOUND_OSS_CORE_PRECLAIM=y
 CONFIG_SND=m
 CONFIG_SND_TIMER=m
 CONFIG_SND_PCM=m
+CONFIG_SND_DMAENGINE_PCM=m
 CONFIG_SND_HWDEP=m
 CONFIG_SND_RAWMIDI=m
 CONFIG_SND_COMPRESS_OFFLOAD=m
@@ -3888,6 +4096,7 @@ CONFIG_SND_SEQUENCER_OSS=y
 CONFIG_SND_HRTIMER=m
 CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
 CONFIG_SND_DYNAMIC_MINORS=y
+CONFIG_SND_MAX_CARDS=32
 # CONFIG_SND_SUPPORT_OLD_API is not set
 CONFIG_SND_VERBOSE_PROCFS=y
 CONFIG_SND_VERBOSE_PRINTK=y
@@ -3916,7 +4125,6 @@ CONFIG_SND_MPU401=m
 CONFIG_SND_PORTMAN2X4=m
 CONFIG_SND_AC97_POWER_SAVE=y
 CONFIG_SND_AC97_POWER_SAVE_DEFAULT=0
-CONFIG_SND_TEA575X=m
 CONFIG_SND_PCI=y
 CONFIG_SND_AD1889=m
 CONFIG_SND_ALS300=m
@@ -3960,28 +4168,26 @@ CONFIG_SND_ENS1371=m
 CONFIG_SND_ES1938=m
 CONFIG_SND_ES1968=m
 CONFIG_SND_ES1968_INPUT=y
-CONFIG_SND_ES1968_RADIO=y
 CONFIG_SND_FM801=m
-CONFIG_SND_FM801_TEA575X_BOOL=y
 CONFIG_SND_HDA_INTEL=m
 CONFIG_SND_HDA_PREALLOC_SIZE=64
 # CONFIG_SND_HDA_HWDEP is not set
 # CONFIG_SND_HDA_INPUT_BEEP is not set
 # CONFIG_SND_HDA_INPUT_JACK is not set
 # CONFIG_SND_HDA_PATCH_LOADER is not set
-CONFIG_SND_HDA_CODEC_REALTEK=y
-CONFIG_SND_HDA_CODEC_ANALOG=y
-CONFIG_SND_HDA_CODEC_SIGMATEL=y
-CONFIG_SND_HDA_CODEC_VIA=y
-CONFIG_SND_HDA_CODEC_HDMI=y
-CONFIG_SND_HDA_CODEC_CIRRUS=y
-CONFIG_SND_HDA_CODEC_CONEXANT=y
-CONFIG_SND_HDA_CODEC_CA0110=y
-CONFIG_SND_HDA_CODEC_CA0132=y
+CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_ANALOG=m
+CONFIG_SND_HDA_CODEC_SIGMATEL=m
+CONFIG_SND_HDA_CODEC_VIA=m
+CONFIG_SND_HDA_CODEC_HDMI=m
+CONFIG_SND_HDA_CODEC_CIRRUS=m
+CONFIG_SND_HDA_CODEC_CONEXANT=m
+CONFIG_SND_HDA_CODEC_CA0110=m
+CONFIG_SND_HDA_CODEC_CA0132=m
 # CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
-CONFIG_SND_HDA_CODEC_CMEDIA=y
-CONFIG_SND_HDA_CODEC_SI3054=y
-CONFIG_SND_HDA_GENERIC=y
+CONFIG_SND_HDA_CODEC_CMEDIA=m
+CONFIG_SND_HDA_CODEC_SI3054=m
+CONFIG_SND_HDA_GENERIC=m
 CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
 CONFIG_SND_HDSP=m
 CONFIG_SND_HDSPM=m
@@ -4015,22 +4221,32 @@ CONFIG_SND_USB_UA101=m
 CONFIG_SND_USB_CAIAQ=m
 CONFIG_SND_USB_CAIAQ_INPUT=y
 CONFIG_SND_USB_6FIRE=m
+CONFIG_SND_USB_HIFACE=m
 CONFIG_SND_FIREWIRE=y
+CONFIG_SND_FIREWIRE_LIB=m
+CONFIG_SND_DICE=m
 # CONFIG_SND_FIREWIRE_SPEAKERS is not set
 # CONFIG_SND_ISIGHT is not set
 # CONFIG_SND_SCS1X is not set
 CONFIG_SND_SOC=m
-CONFIG_SND_SOC_DMAENGINE_PCM=y
 CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
+CONFIG_SND_SOC_ADI=m
+CONFIG_SND_SOC_ADI_AXI_I2S=m
+CONFIG_SND_SOC_ADI_AXI_SPDIF=m
 CONFIG_SND_ATMEL_SOC=m
+CONFIG_SND_DAVINCI_SOC=m
+CONFIG_SND_DAVINCI_SOC_MCASP=m
+CONFIG_SND_DAVINCI_SOC_GENERIC_EVM=m
+CONFIG_SND_AM33XX_SOC_EVM=m
 CONFIG_SND_DESIGNWARE_I2S=m
 CONFIG_SND_SOC_FSL_SSI=m
-CONFIG_SND_SOC_FSL_UTILS=m
+CONFIG_SND_SOC_FSL_SPDIF=m
 CONFIG_SND_IMX_SOC=m
-CONFIG_SND_SOC_IMX_PCM=m
-CONFIG_SND_SOC_IMX_PCM_DMA=y
+CONFIG_SND_SOC_IMX_PCM_DMA=m
 CONFIG_SND_SOC_IMX_AUDMUX=m
+CONFIG_SND_SOC_IMX_WM8962=m
 CONFIG_SND_SOC_IMX_SGTL5000=m
+CONFIG_SND_SOC_IMX_SPDIF=m
 CONFIG_SND_OMAP_SOC=m
 CONFIG_SND_OMAP_SOC_MCBSP=m
 CONFIG_SND_OMAP_SOC_HDMI=m
@@ -4040,12 +4256,12 @@ CONFIG_SND_OMAP_SOC_OMAP_TWL4030=m
 CONFIG_SND_OMAP_SOC_OMAP_HDMI=m
 CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m
 CONFIG_SND_SOC_I2C_AND_SPI=m
-# CONFIG_SND_SOC_ALL_CODECS is not set
-CONFIG_SND_SOC_OMAP_HDMI_CODEC=m
+CONFIG_SND_SOC_HDMI_CODEC=m
 CONFIG_SND_SOC_SGTL5000=m
 CONFIG_SND_SOC_TLV320AIC23=m
 CONFIG_SND_SOC_TLV320AIC3X=m
 CONFIG_SND_SOC_TWL4030=m
+CONFIG_SND_SOC_WM8962=m
 CONFIG_SND_SOC_TPA6130A2=m
 CONFIG_SND_SIMPLE_CARD=m
 # CONFIG_SOUND_PRIME is not set
@@ -4076,8 +4292,10 @@ CONFIG_HID_CYPRESS=y
 # CONFIG_HID_DRAGONRISE is not set
 # CONFIG_HID_EMS_FF is not set
 # CONFIG_HID_ELECOM is not set
+# CONFIG_HID_ELO is not set
 CONFIG_HID_EZKEY=y
 # CONFIG_HID_HOLTEK is not set
+# CONFIG_HID_HUION is not set
 CONFIG_HID_KEYTOUCH=m
 CONFIG_HID_KYE=y
 # CONFIG_HID_UCLOGIC is not set
@@ -4109,7 +4327,6 @@ CONFIG_HID_PICOLCD_LCD=y
 CONFIG_HID_PICOLCD_LEDS=y
 CONFIG_HID_PICOLCD_CIR=y
 # CONFIG_HID_PRIMAX is not set
-# CONFIG_HID_PS3REMOTE is not set
 CONFIG_HID_ROCCAT=m
 CONFIG_HID_SAITEK=m
 CONFIG_HID_SAMSUNG=m
@@ -4125,6 +4342,7 @@ CONFIG_HID_THINGM=m
 # CONFIG_HID_THRUSTMASTER is not set
 # CONFIG_HID_WACOM is not set
 # CONFIG_HID_WIIMOTE is not set
+# CONFIG_HID_XINMO is not set
 # CONFIG_HID_ZEROPLUS is not set
 CONFIG_HID_ZYDACRON=m
 CONFIG_HID_SENSOR_HUB=m
@@ -4140,9 +4358,8 @@ CONFIG_USB_HIDDEV=y
 # I2C HID support
 #
 CONFIG_I2C_HID=m
-CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
 CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB_ARCH_HAS_XHCI=y
 CONFIG_USB_SUPPORT=y
 CONFIG_USB_COMMON=y
 CONFIG_USB_ARCH_HAS_HCD=y
@@ -4179,6 +4396,8 @@ CONFIG_USB_EHCI_HCD_PLATFORM=y
 # CONFIG_USB_ISP116X_HCD is not set
 # CONFIG_USB_ISP1760_HCD is not set
 CONFIG_USB_ISP1362_HCD=m
+CONFIG_USB_FUSBH200_HCD=m
+CONFIG_USB_FOTG210_HCD=m
 # CONFIG_USB_OHCI_HCD is not set
 CONFIG_USB_UHCI_HCD=y
 CONFIG_USB_UHCI_SUPPORT_NON_PCI_HC=y
@@ -4188,7 +4407,9 @@ CONFIG_USB_SL811_HCD=m
 CONFIG_USB_SL811_HCD_ISO=y
 # CONFIG_USB_R8A66597_HCD is not set
 CONFIG_USB_IMX21_HCD=y
+CONFIG_USB_HCD_BCMA=m
 CONFIG_USB_HCD_SSB=m
+# CONFIG_USB_HCD_TEST_MODE is not set
 
 #
 # USB Device Class drivers
@@ -4227,9 +4448,36 @@ CONFIG_USB_STORAGE_ENE_UB6250=m
 #
 CONFIG_USB_MDC800=m
 CONFIG_USB_MICROTEK=m
+CONFIG_USB_MUSB_HDRC=m
+CONFIG_USB_MUSB_HOST=y
+CONFIG_USB_MUSB_TUSB6010=m
+CONFIG_USB_MUSB_OMAP2PLUS=m
+CONFIG_USB_MUSB_AM35X=m
+CONFIG_USB_MUSB_DSPS=m
+CONFIG_USB_MUSB_UX500=m
+CONFIG_USB_MUSB_AM335X_CHILD=m
+# CONFIG_USB_UX500_DMA is not set
+# CONFIG_USB_INVENTRA_DMA is not set
+# CONFIG_USB_TI_CPPI41_DMA is not set
+# CONFIG_USB_TUSB_OMAP_DMA is not set
+CONFIG_MUSB_PIO_ONLY=y
 CONFIG_USB_DWC3=m
 CONFIG_USB_DWC3_HOST=y
+
+#
+# Platform Glue Driver Support
+#
+CONFIG_USB_DWC3_EXYNOS=m
+CONFIG_USB_DWC3_PCI=m
+CONFIG_USB_DWC3_KEYSTONE=m
+
+#
+# Debugging features
+#
 # CONFIG_USB_DWC3_DEBUG is not set
+CONFIG_USB_DWC2=m
+# CONFIG_USB_DWC2_DEBUG is not set
+# CONFIG_USB_DWC2_TRACK_MISSED_SOFS is not set
 CONFIG_USB_CHIPIDEA=m
 CONFIG_USB_CHIPIDEA_HOST=y
 # CONFIG_USB_CHIPIDEA_DEBUG is not set
@@ -4240,6 +4488,7 @@ CONFIG_USB_CHIPIDEA_HOST=y
 CONFIG_USB_USS720=m
 CONFIG_USB_SERIAL=m
 CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_SIMPLE=m
 CONFIG_USB_SERIAL_AIRCABLE=m
 CONFIG_USB_SERIAL_ARK3116=m
 CONFIG_USB_SERIAL_BELKIN=m
@@ -4250,7 +4499,6 @@ CONFIG_USB_SERIAL_CP210X=m
 CONFIG_USB_SERIAL_CYPRESS_M8=m
 # CONFIG_USB_SERIAL_EMPEG is not set
 CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
 CONFIG_USB_SERIAL_VISOR=m
 CONFIG_USB_SERIAL_IPAQ=m
 CONFIG_USB_SERIAL_IR=m
@@ -4269,16 +4517,14 @@ CONFIG_USB_SERIAL_MCT_U232=m
 CONFIG_USB_SERIAL_MOS7720=m
 CONFIG_USB_SERIAL_MOS7715_PARPORT=y
 CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_MOTOROLA=m
+CONFIG_USB_SERIAL_MXUPORT=m
 # CONFIG_USB_SERIAL_NAVMAN is not set
 CONFIG_USB_SERIAL_PL2303=m
 CONFIG_USB_SERIAL_OTI6858=m
 CONFIG_USB_SERIAL_QCAUX=m
 CONFIG_USB_SERIAL_QUALCOMM=m
 CONFIG_USB_SERIAL_SPCP8X5=m
-# CONFIG_USB_SERIAL_HP4X is not set
 # CONFIG_USB_SERIAL_SAFE is not set
-CONFIG_USB_SERIAL_SIEMENS_MPI=m
 CONFIG_USB_SERIAL_SIERRAWIRELESS=m
 # CONFIG_USB_SERIAL_SYMBOL is not set
 # CONFIG_USB_SERIAL_TI is not set
@@ -4288,9 +4534,7 @@ CONFIG_USB_SERIAL_WWAN=m
 CONFIG_USB_SERIAL_OPTION=m
 # CONFIG_USB_SERIAL_OMNINET is not set
 # CONFIG_USB_SERIAL_OPTICON is not set
-# CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set
 # CONFIG_USB_SERIAL_XSENS_MT is not set
-# CONFIG_USB_SERIAL_ZIO is not set
 # CONFIG_USB_SERIAL_WISHBONE is not set
 CONFIG_USB_SERIAL_ZTE=m
 CONFIG_USB_SERIAL_SSU100=m
@@ -4319,6 +4563,7 @@ CONFIG_USB_SISUSBVGA_CON=y
 # CONFIG_USB_TRANCEVIBRATOR is not set
 CONFIG_USB_IOWARRIOR=m
 # CONFIG_USB_TEST is not set
+# CONFIG_USB_EHSET_TEST_FIXTURE is not set
 # CONFIG_USB_ISIGHTFW is not set
 CONFIG_USB_YUREX=m
 CONFIG_USB_EZUSB_FX2=m
@@ -4328,14 +4573,21 @@ CONFIG_USB_SPEEDTOUCH=m
 CONFIG_USB_CXACRU=m
 CONFIG_USB_UEAGLEATM=m
 CONFIG_USB_XUSBATM=m
+
+#
+# USB Physical Layer drivers
+#
 CONFIG_USB_PHY=y
-CONFIG_NOP_USB_XCEIV=m
+CONFIG_USB_OTG_FSM=m
+CONFIG_NOP_USB_XCEIV=y
 CONFIG_OMAP_CONTROL_USB=y
-CONFIG_OMAP_USB2=y
 CONFIG_OMAP_USB3=m
+CONFIG_AM335X_CONTROL_USB=m
+CONFIG_AM335X_PHY_USB=m
 CONFIG_SAMSUNG_USBPHY=m
 CONFIG_SAMSUNG_USB2PHY=m
 CONFIG_SAMSUNG_USB3PHY=m
+CONFIG_TWL6030_USB=m
 CONFIG_USB_GPIO_VBUS=m
 CONFIG_USB_ISP1301=m
 CONFIG_USB_MXS_PHY=m
@@ -4365,6 +4617,7 @@ CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_IO_ACCESSORS=y
 # CONFIG_MMC_SDHCI_PCI is not set
 CONFIG_MMC_SDHCI_PLTFM=y
+CONFIG_MMC_SDHCI_OF_ARASAN=m
 CONFIG_MMC_SDHCI_ESDHC_IMX=y
 CONFIG_MMC_SDHCI_PXAV3=m
 CONFIG_MMC_SDHCI_PXAV2=m
@@ -4376,13 +4629,16 @@ CONFIG_MMC_MVSDIO=y
 # CONFIG_MMC_CB710 is not set
 # CONFIG_MMC_VIA_SDMMC is not set
 CONFIG_MMC_DW=m
-# CONFIG_MMC_DW_IDMAC is not set
+CONFIG_MMC_DW_IDMAC=y
 CONFIG_MMC_DW_PLTFM=m
 CONFIG_MMC_DW_EXYNOS=m
+CONFIG_MMC_DW_SOCFPGA=m
+CONFIG_MMC_DW_K3=m
 # CONFIG_MMC_DW_PCI is not set
 CONFIG_MMC_VUB300=m
 CONFIG_MMC_USHC=m
 CONFIG_MMC_WMT=m
+CONFIG_MMC_SUNXI=y
 CONFIG_MEMSTICK=m
 # CONFIG_MEMSTICK_DEBUG is not set
 
@@ -4391,6 +4647,7 @@ CONFIG_MEMSTICK=m
 #
 # CONFIG_MEMSTICK_UNSAFE_RESUME is not set
 CONFIG_MSPRO_BLOCK=m
+CONFIG_MS_BLOCK=m
 
 #
 # MemoryStick Host Controller Drivers
@@ -4416,17 +4673,19 @@ CONFIG_LEDS_LP55XX_COMMON=m
 CONFIG_LEDS_LP5521=m
 CONFIG_LEDS_LP5523=m
 CONFIG_LEDS_LP5562=m
+CONFIG_LEDS_LP8501=m
 CONFIG_LEDS_PCA955X=m
-CONFIG_LEDS_PCA9633=m
+CONFIG_LEDS_PCA963X=m
+CONFIG_LEDS_PCA9685=m
 CONFIG_LEDS_PWM=m
 CONFIG_LEDS_REGULATOR=m
 CONFIG_LEDS_BD2802=m
 CONFIG_LEDS_LT3593=m
-CONFIG_LEDS_RENESAS_TPU=y
 CONFIG_LEDS_TCA6507=m
 CONFIG_LEDS_LM355x=m
 CONFIG_LEDS_OT200=m
 CONFIG_LEDS_BLINKM=m
+CONFIG_LEDS_TLC59116=m
 
 #
 # LED Triggers
@@ -4474,11 +4733,14 @@ CONFIG_RTC_DRV_DS1307=m
 CONFIG_RTC_DRV_DS1374=m
 CONFIG_RTC_DRV_DS1672=m
 CONFIG_RTC_DRV_DS3232=m
+CONFIG_RTC_DRV_HYM8563=m
 CONFIG_RTC_DRV_MAX6900=m
 CONFIG_RTC_DRV_RS5C372=m
 CONFIG_RTC_DRV_ISL1208=m
 CONFIG_RTC_DRV_ISL12022=m
+CONFIG_RTC_DRV_ISL12057=m
 CONFIG_RTC_DRV_X1205=m
+CONFIG_RTC_DRV_PCF2127=m
 CONFIG_RTC_DRV_PCF8523=m
 CONFIG_RTC_DRV_PCF8563=m
 CONFIG_RTC_DRV_PCF8583=m
@@ -4523,9 +4785,11 @@ CONFIG_RTC_DRV_OMAP=y
 CONFIG_RTC_DRV_PL030=m
 CONFIG_RTC_DRV_PL031=m
 CONFIG_RTC_DRV_VT8500=m
+CONFIG_RTC_DRV_SUNXI=y
 CONFIG_RTC_DRV_MV=m
 CONFIG_RTC_DRV_MXC=m
 CONFIG_RTC_DRV_SNVS=m
+CONFIG_RTC_DRV_MOXART=m
 
 #
 # HID Sensor RTC drivers
@@ -4539,16 +4803,20 @@ CONFIG_DMADEVICES=y
 #
 CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH=y
 CONFIG_AMBA_PL08X=y
+CONFIG_DW_DMAC_CORE=m
 # CONFIG_DW_DMAC is not set
+CONFIG_DW_DMAC_PCI=m
 CONFIG_MV_XOR=y
 CONFIG_MX3_IPU=y
 CONFIG_MX3_IPU_IRQS=4
 CONFIG_TIMB_DMA=m
+CONFIG_TI_EDMA=y
 CONFIG_PL330_DMA=y
 CONFIG_IMX_SDMA=y
 CONFIG_IMX_DMA=y
 CONFIG_MXS_DMA=y
 CONFIG_DMA_OMAP=y
+CONFIG_TI_CPPI41=m
 CONFIG_DMA_ENGINE=y
 CONFIG_DMA_VIRTUAL_CHANNELS=y
 CONFIG_DMA_OF=y
@@ -4558,16 +4826,17 @@ CONFIG_DMA_OF=y
 #
 CONFIG_ASYNC_TX_DMA=y
 # CONFIG_DMATEST is not set
+CONFIG_DMA_ENGINE_RAID=y
 # CONFIG_AUXDISPLAY is not set
 CONFIG_UIO=m
 # CONFIG_UIO_CIF is not set
-# CONFIG_UIO_PDRV is not set
 # CONFIG_UIO_PDRV_GENIRQ is not set
 # CONFIG_UIO_DMEM_GENIRQ is not set
 # CONFIG_UIO_AEC is not set
 # CONFIG_UIO_SERCOS3 is not set
 # CONFIG_UIO_PCI_GENERIC is not set
 # CONFIG_UIO_NETX is not set
+# CONFIG_UIO_MF624 is not set
 CONFIG_VIRT_DRIVERS=y
 
 #
@@ -4589,14 +4858,16 @@ CONFIG_USBIP_HOST=m
 # CONFIG_PRISM2_USB is not set
 # CONFIG_ECHO is not set
 # CONFIG_COMEDI is not set
-# CONFIG_ASUS_OLED is not set
 # CONFIG_PANEL is not set
 # CONFIG_R8187SE is not set
 # CONFIG_RTL8192U is not set
 # CONFIG_RTLLIB is not set
 # CONFIG_R8712U is not set
+# CONFIG_R8188EU is not set
+# CONFIG_R8821AE is not set
 CONFIG_RTS5139=m
 # CONFIG_RTS5139_DEBUG is not set
+# CONFIG_RTS5208 is not set
 # CONFIG_TRANZPORT is not set
 # CONFIG_IDE_PHISON is not set
 # CONFIG_LINE6_USB is not set
@@ -4671,10 +4942,7 @@ CONFIG_RTS5139=m
 # Triggers - standalone
 #
 # CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set
-# CONFIG_IIO_GPIO_TRIGGER is not set
-# CONFIG_IIO_SYSFS_TRIGGER is not set
 # CONFIG_IIO_SIMPLE_DUMMY is not set
-# CONFIG_ZSMALLOC is not set
 # CONFIG_FB_SM7XX is not set
 # CONFIG_CRYSTALHD is not set
 # CONFIG_FB_XGI is not set
@@ -4696,7 +4964,7 @@ CONFIG_RTS5139=m
 # CONFIG_ANDROID is not set
 # CONFIG_USB_WPAN_HCD is not set
 # CONFIG_WIMAX_GDM72XX is not set
-# CONFIG_CSR_WIFI is not set
+CONFIG_LTE_GDM724X=m
 CONFIG_NET_VENDOR_SILICOM=y
 # CONFIG_SBYPASS is not set
 # CONFIG_BPCTL is not set
@@ -4705,8 +4973,16 @@ CONFIG_DRM_IMX=m
 # CONFIG_DRM_IMX_FB_HELPER is not set
 CONFIG_DRM_IMX_PARALLEL_DISPLAY=m
 # CONFIG_DRM_IMX_TVE is not set
+CONFIG_DRM_IMX_LDB=m
+CONFIG_DRM_IMX_IPUV3_CORE=m
+CONFIG_DRM_IMX_IPUV3=m
+CONFIG_DRM_IMX_HDMI=m
 # CONFIG_DGRP is not set
 # CONFIG_FIREWIRE_SERIAL is not set
+# CONFIG_LUSTRE_FS is not set
+# CONFIG_XILLYBUS is not set
+# CONFIG_DGNC is not set
+# CONFIG_DGAP is not set
 CONFIG_CLKDEV_LOOKUP=y
 CONFIG_HAVE_CLK_PREPARE=y
 CONFIG_COMMON_CLK=y
@@ -4714,13 +4990,21 @@ CONFIG_COMMON_CLK=y
 #
 # Common Clock Framework
 #
-# CONFIG_COMMON_CLK_DEBUG is not set
 CONFIG_COMMON_CLK_VERSATILE=y
 CONFIG_COMMON_CLK_SI5351=m
+CONFIG_COMMON_CLK_SI570=m
 CONFIG_COMMON_CLK_AXI_CLKGEN=m
-CONFIG_MVEBU_CLK_CORE=y
+CONFIG_COMMON_CLK_QCOM=m
+CONFIG_MSM_GCC_8660=m
+CONFIG_MSM_GCC_8960=m
+CONFIG_MSM_MMCC_8960=m
+CONFIG_MSM_GCC_8974=m
+CONFIG_MSM_MMCC_8974=m
+CONFIG_MVEBU_CLK_COMMON=y
 CONFIG_MVEBU_CLK_CPU=y
-CONFIG_MVEBU_CLK_GATING=y
+CONFIG_MVEBU_CLK_COREDIV=y
+CONFIG_ARMADA_370_CLK=y
+CONFIG_ARMADA_XP_CLK=y
 CONFIG_HWSPINLOCK=y
 
 #
@@ -4729,13 +5013,22 @@ CONFIG_HWSPINLOCK=y
 CONFIG_HWSPINLOCK_OMAP=y
 CONFIG_CLKSRC_OF=y
 CONFIG_CLKSRC_MMIO=y
+CONFIG_DW_APB_TIMER=y
+CONFIG_DW_APB_TIMER_OF=y
 CONFIG_ARMADA_370_XP_TIMER=y
 CONFIG_SUN4I_TIMER=y
+CONFIG_SUN5I_HSTIMER=y
 CONFIG_VT8500_TIMER=y
 CONFIG_CADENCE_TTC_TIMER=y
 CONFIG_ARM_ARCH_TIMER=y
+CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
+CONFIG_ARM_GLOBAL_TIMER=y
+CONFIG_CLKSRC_ARM_GLOBAL_TIMER_SCHED_CLOCK=y
 CONFIG_MAILBOX=y
 CONFIG_PL320_MBOX=y
+CONFIG_OMAP_MBOX=y
+CONFIG_OMAP2PLUS_MBOX=y
+CONFIG_OMAP_MBOX_KFIFO_SIZE=256
 # CONFIG_IOMMU_SUPPORT is not set
 
 #
@@ -4750,6 +5043,7 @@ CONFIG_PL320_MBOX=y
 # CONFIG_EXTCON is not set
 CONFIG_MEMORY=y
 # CONFIG_TI_EMIF is not set
+CONFIG_MVEBU_DEVBUS=y
 CONFIG_IIO=m
 CONFIG_IIO_BUFFER=y
 CONFIG_IIO_BUFFER_CB=y
@@ -4760,6 +5054,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 #
 # Accelerometers
 #
+# CONFIG_BMA180 is not set
 # CONFIG_HID_SENSOR_ACCEL_3D is not set
 # CONFIG_IIO_ST_ACCEL_3AXIS is not set
 
@@ -4768,7 +5063,10 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 #
 # CONFIG_EXYNOS_ADC is not set
 # CONFIG_MAX1363 is not set
+# CONFIG_MCP3422 is not set
+# CONFIG_NAU7802 is not set
 # CONFIG_TI_ADC081C is not set
+# CONFIG_TWL6030_GPADC is not set
 # CONFIG_VIPERBOARD_ADC is not set
 
 #
@@ -4780,7 +5078,6 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 #
 CONFIG_HID_SENSOR_IIO_COMMON=m
 CONFIG_HID_SENSOR_IIO_TRIGGER=m
-# CONFIG_HID_SENSOR_ENUM_BASE_QUIRKS is not set
 
 #
 # Digital to analog converters
@@ -4810,6 +5107,11 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=m
 # CONFIG_IIO_ST_GYRO_3AXIS is not set
 # CONFIG_ITG3200 is not set
 
+#
+# Humidity sensors
+#
+# CONFIG_DHT11 is not set
+
 #
 # Inertial measurement units
 #
@@ -4819,20 +5121,52 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=m
 # Light sensors
 #
 # CONFIG_ADJD_S311 is not set
+# CONFIG_APDS9300 is not set
+# CONFIG_CM32181 is not set
+# CONFIG_CM36651 is not set
+# CONFIG_GP2AP020A00F is not set
+# CONFIG_HID_SENSOR_ALS is not set
 # CONFIG_SENSORS_LM3533 is not set
+# CONFIG_TCS3472 is not set
 # CONFIG_SENSORS_TSL2563 is not set
+# CONFIG_TSL4531 is not set
 # CONFIG_VCNL4000 is not set
-# CONFIG_HID_SENSOR_ALS is not set
 
 #
 # Magnetometer sensors
 #
 # CONFIG_AK8975 is not set
+# CONFIG_MAG3110 is not set
 # CONFIG_HID_SENSOR_MAGNETOMETER_3D is not set
 # CONFIG_IIO_ST_MAGN_3AXIS is not set
+
+#
+# Inclinometer sensors
+#
+# CONFIG_HID_SENSOR_INCLINOMETER_3D is not set
+
+#
+# Triggers - standalone
+#
+# CONFIG_IIO_INTERRUPT_TRIGGER is not set
+# CONFIG_IIO_SYSFS_TRIGGER is not set
+
+#
+# Pressure sensors
+#
+# CONFIG_MPL3115 is not set
+# CONFIG_IIO_ST_PRESS is not set
+
+#
+# Temperature sensors
+#
+# CONFIG_TMP006 is not set
 # CONFIG_VME_BUS is not set
 CONFIG_PWM=y
+CONFIG_PWM_SYSFS=y
 CONFIG_PWM_IMX=m
+# CONFIG_PWM_PCA9685 is not set
+CONFIG_PWM_SUNXI=m
 # CONFIG_PWM_TIECAP is not set
 # CONFIG_PWM_TIEHRPWM is not set
 CONFIG_PWM_TWL=m
@@ -4842,7 +5176,20 @@ CONFIG_IRQCHIP=y
 CONFIG_ARM_GIC=y
 # CONFIG_IPACK_BUS is not set
 CONFIG_ARCH_HAS_RESET_CONTROLLER=y
-# CONFIG_RESET_CONTROLLER is not set
+CONFIG_RESET_CONTROLLER=y
+# CONFIG_FMC is not set
+
+#
+# PHY Subsystem
+#
+CONFIG_GENERIC_PHY=y
+# CONFIG_PHY_EXYNOS_MIPI_VIDEO is not set
+CONFIG_OMAP_USB2=y
+CONFIG_TWL4030_USB=m
+# CONFIG_PHY_EXYNOS_DP_VIDEO is not set
+# CONFIG_BCM_KONA_USB2_PHY is not set
+CONFIG_PHY_SUN4I_USB=y
+# CONFIG_POWERCAP is not set
 
 #
 # File systems
@@ -4878,6 +5225,7 @@ CONFIG_BTRFS_FS_POSIX_ACL=y
 # CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set
 # CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
 # CONFIG_BTRFS_DEBUG is not set
+CONFIG_BTRFS_ASSERT=y
 # CONFIG_NILFS2_FS is not set
 CONFIG_FS_POSIX_ACL=y
 CONFIG_EXPORTFS=y
@@ -4898,7 +5246,6 @@ CONFIG_QUOTACTL=y
 CONFIG_AUTOFS4_FS=y
 CONFIG_FUSE_FS=m
 CONFIG_CUSE=m
-CONFIG_GENERIC_ACL=y
 
 #
 # Caches
@@ -4980,10 +5327,13 @@ CONFIG_NFS_V3_ACL=y
 CONFIG_NFS_V4=m
 # CONFIG_NFS_SWAP is not set
 CONFIG_NFS_V4_1=y
+CONFIG_NFS_V4_2=y
 CONFIG_PNFS_FILE_LAYOUT=m
 CONFIG_PNFS_BLOCK=m
 CONFIG_PNFS_OBJLAYOUT=m
 CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="ipfire.org"
+CONFIG_NFS_V4_1_MIGRATION=y
+CONFIG_NFS_V4_SECURITY_LABEL=y
 CONFIG_NFS_FSCACHE=y
 # CONFIG_NFS_USE_LEGACY_DNS is not set
 CONFIG_NFS_USE_KERNEL_DNS=y
@@ -4992,6 +5342,7 @@ CONFIG_NFSD_V2_ACL=y
 CONFIG_NFSD_V3=y
 CONFIG_NFSD_V3_ACL=y
 CONFIG_NFSD_V4=y
+CONFIG_NFSD_V4_SECURITY_LABEL=y
 # CONFIG_NFSD_FAULT_INJECTION is not set
 CONFIG_LOCKD=m
 CONFIG_LOCKD_V4=y
@@ -5075,33 +5426,65 @@ CONFIG_DLM=m
 #
 # Kernel hacking
 #
+
+#
+# printk and dmesg options
+#
 # CONFIG_PRINTK_TIME is not set
 CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
+# CONFIG_BOOT_PRINTK_DELAY is not set
+CONFIG_DYNAMIC_DEBUG=y
+
+#
+# Compile-time checks and compiler options
+#
+# CONFIG_DEBUG_INFO is not set
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 CONFIG_ENABLE_MUST_CHECK=y
 CONFIG_FRAME_WARN=2048
-# CONFIG_MAGIC_SYSRQ is not set
 CONFIG_STRIP_ASM_SYMS=y
 # CONFIG_READABLE_ASM is not set
 # CONFIG_UNUSED_SYMBOLS is not set
 CONFIG_DEBUG_FS=y
 CONFIG_HEADERS_CHECK=y
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+# CONFIG_MAGIC_SYSRQ is not set
 CONFIG_DEBUG_KERNEL=y
+
+#
+# Memory Debugging
+#
+# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_STATS is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_DEBUG_MEMORY_INIT=y
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
+# CONFIG_DEBUG_HIGHMEM is not set
 CONFIG_DEBUG_SHIRQ=y
+
+#
+# Debug Lockups and Hangs
+#
 CONFIG_LOCKUP_DETECTOR=y
 # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
 CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+# CONFIG_DETECT_HUNG_TASK is not set
 # CONFIG_PANIC_ON_OOPS is not set
 CONFIG_PANIC_ON_OOPS_VALUE=0
-# CONFIG_DETECT_HUNG_TASK is not set
+CONFIG_PANIC_TIMEOUT=0
 CONFIG_SCHED_DEBUG=y
 CONFIG_SCHEDSTATS=y
 CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_SLUB_STATS is not set
-CONFIG_HAVE_DEBUG_KMEMLEAK=y
-# CONFIG_DEBUG_KMEMLEAK is not set
+
+#
+# Lock Debugging (spinlocks, mutexes, etc...)
+#
 # CONFIG_DEBUG_RT_MUTEXES is not set
 # CONFIG_RT_MUTEX_TESTER is not set
 # CONFIG_DEBUG_SPINLOCK is not set
@@ -5109,21 +5492,13 @@ CONFIG_HAVE_DEBUG_KMEMLEAK=y
 # CONFIG_DEBUG_ATOMIC_SLEEP is not set
 # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
 CONFIG_STACKTRACE=y
-# CONFIG_DEBUG_STACK_USAGE is not set
 # CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_HIGHMEM is not set
 CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
 # CONFIG_DEBUG_WRITECOUNT is not set
-CONFIG_DEBUG_MEMORY_INIT=y
 CONFIG_DEBUG_LIST=y
-# CONFIG_TEST_LIST_SORT is not set
 # CONFIG_DEBUG_SG is not set
 # CONFIG_DEBUG_NOTIFIERS is not set
 # CONFIG_DEBUG_CREDENTIALS is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_BOOT_PRINTK_DELAY is not set
 
 #
 # RCU Debugging
@@ -5133,14 +5508,9 @@ CONFIG_FRAME_POINTER=y
 CONFIG_RCU_CPU_STALL_TIMEOUT=21
 # CONFIG_RCU_CPU_STALL_INFO is not set
 # CONFIG_RCU_TRACE is not set
-# CONFIG_BACKTRACE_SELF_TEST is not set
 # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
-# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
-# CONFIG_DEBUG_PER_CPU_MAPS is not set
-# CONFIG_LKDTM is not set
 # CONFIG_NOTIFIER_ERROR_INJECTION is not set
 # CONFIG_FAULT_INJECTION is not set
-# CONFIG_DEBUG_PAGEALLOC is not set
 CONFIG_NOP_TRACER=y
 CONFIG_HAVE_FUNCTION_TRACER=y
 CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
@@ -5177,18 +5547,28 @@ CONFIG_FTRACE_MCOUNT_RECORD=y
 # CONFIG_FTRACE_STARTUP_TEST is not set
 CONFIG_RING_BUFFER_BENCHMARK=m
 # CONFIG_RING_BUFFER_STARTUP_TEST is not set
+
+#
+# Runtime Testing
+#
+# CONFIG_LKDTM is not set
+# CONFIG_TEST_LIST_SORT is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
 CONFIG_RBTREE_TEST=m
 # CONFIG_INTERVAL_TREE_TEST is not set
-# CONFIG_BUILD_DOCSRC is not set
-CONFIG_DYNAMIC_DEBUG=y
-# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_PERCPU_TEST is not set
 # CONFIG_ATOMIC64_SELFTEST is not set
 CONFIG_ASYNC_RAID6_TEST=m
+# CONFIG_TEST_STRING_HELPERS is not set
+# CONFIG_TEST_KSTRTOX is not set
+# CONFIG_BUILD_DOCSRC is not set
+# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_TEST_MODULE is not set
+# CONFIG_TEST_USER_COPY is not set
 # CONFIG_SAMPLES is not set
 CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_KGDB is not set
-# CONFIG_TEST_STRING_HELPERS is not set
-# CONFIG_TEST_KSTRTOX is not set
+# CONFIG_ARM_PTDUMP is not set
 CONFIG_STRICT_DEVMEM=y
 CONFIG_ARM_UNWIND=y
 CONFIG_OLD_MCOUNT=y
@@ -5196,9 +5576,12 @@ CONFIG_OLD_MCOUNT=y
 # CONFIG_DEBUG_LL is not set
 CONFIG_DEBUG_IMX_UART_PORT=1
 CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
+# CONFIG_DEBUG_UART_PL01X is not set
+# CONFIG_DEBUG_UART_8250 is not set
 CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
 CONFIG_OC_ETM=y
 # CONFIG_PID_IN_CONTEXTIDR is not set
+CONFIG_DEBUG_SET_MODULE_RONX=y
 
 #
 # Security options
@@ -5265,14 +5648,16 @@ CONFIG_PAX_USERCOPY=y
 # Memory Protections
 #
 # CONFIG_GRKERNSEC_KMEM is not set
-CONFIG_GRKERNSEC_JIT_HARDEN=y
 # CONFIG_GRKERNSEC_PERF_HARDEN is not set
 CONFIG_GRKERNSEC_RAND_THREADSTACK=y
 CONFIG_GRKERNSEC_PROC_MEMMAP=y
 CONFIG_GRKERNSEC_BRUTE=y
 CONFIG_GRKERNSEC_MODHARDEN=y
 CONFIG_GRKERNSEC_HIDESYM=y
+CONFIG_GRKERNSEC_RANDSTRUCT=y
+CONFIG_GRKERNSEC_RANDSTRUCT_PERFORMANCE=y
 CONFIG_GRKERNSEC_KERN_LOCKOUT=y
+CONFIG_GRKERNSEC_OLD_ARM_USERLAND=y
 
 #
 # Role Based Access Control Options
@@ -5331,12 +5716,12 @@ CONFIG_GRKERNSEC_DMESG=y
 CONFIG_GRKERNSEC_HARDEN_PTRACE=y
 CONFIG_GRKERNSEC_PTRACE_READEXEC=y
 CONFIG_GRKERNSEC_SETXID=y
+CONFIG_GRKERNSEC_HARDEN_IPC=y
 # CONFIG_GRKERNSEC_TPE is not set
 
 #
 # Network Protections
 #
-CONFIG_GRKERNSEC_RANDNET=y
 CONFIG_GRKERNSEC_BLACKHOLE=y
 CONFIG_GRKERNSEC_NO_SIMULT_CONNECT=y
 # CONFIG_GRKERNSEC_SOCKET is not set
@@ -5357,6 +5742,8 @@ CONFIG_GRKERNSEC_NO_SIMULT_CONNECT=y
 CONFIG_GRKERNSEC_FLOODTIME=10
 CONFIG_GRKERNSEC_FLOODBURST=6
 CONFIG_KEYS=y
+# CONFIG_PERSISTENT_KEYRINGS is not set
+# CONFIG_BIG_KEYS is not set
 # CONFIG_ENCRYPTED_KEYS is not set
 CONFIG_KEYS_DEBUG_PROC_KEYS=y
 CONFIG_SECURITY_DMESG_RESTRICT=y
@@ -5408,6 +5795,7 @@ CONFIG_CRYPTO_WORKQUEUE=y
 CONFIG_CRYPTO_CRYPTD=y
 CONFIG_CRYPTO_AUTHENC=m
 CONFIG_CRYPTO_TEST=m
+CONFIG_CRYPTO_ABLK_HELPER=m
 
 #
 # Authenticated Encryption with Associated Data
@@ -5440,6 +5828,7 @@ CONFIG_CRYPTO_VMAC=m
 #
 CONFIG_CRYPTO_CRC32C=y
 CONFIG_CRYPTO_CRC32=y
+CONFIG_CRYPTO_CRCT10DIF=y
 CONFIG_CRYPTO_GHASH=m
 CONFIG_CRYPTO_MD4=m
 CONFIG_CRYPTO_MD5=y
@@ -5451,7 +5840,7 @@ CONFIG_CRYPTO_RMD320=m
 CONFIG_CRYPTO_SHA1=y
 CONFIG_CRYPTO_SHA1_ARM=y
 CONFIG_CRYPTO_SHA256=y
-CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_SHA512=y
 CONFIG_CRYPTO_TGR192=m
 CONFIG_CRYPTO_WP512=m
 
@@ -5460,6 +5849,7 @@ CONFIG_CRYPTO_WP512=m
 #
 CONFIG_CRYPTO_AES=y
 CONFIG_CRYPTO_AES_ARM=m
+CONFIG_CRYPTO_AES_ARM_BS=m
 CONFIG_CRYPTO_ANUBIS=m
 CONFIG_CRYPTO_ARC4=m
 CONFIG_CRYPTO_BLOWFISH=m
@@ -5468,7 +5858,7 @@ CONFIG_CRYPTO_CAMELLIA=m
 CONFIG_CRYPTO_CAST_COMMON=m
 CONFIG_CRYPTO_CAST5=m
 CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_DES=y
 CONFIG_CRYPTO_FCRYPT=m
 CONFIG_CRYPTO_KHAZAD=m
 CONFIG_CRYPTO_SALSA20=m
@@ -5484,6 +5874,8 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
 CONFIG_CRYPTO_DEFLATE=m
 CONFIG_CRYPTO_ZLIB=m
 CONFIG_CRYPTO_LZO=m
+CONFIG_CRYPTO_LZ4=m
+CONFIG_CRYPTO_LZ4HC=m
 
 #
 # Random Number Generation
@@ -5492,12 +5884,15 @@ CONFIG_CRYPTO_ANSI_CPRNG=m
 CONFIG_CRYPTO_USER_API=y
 CONFIG_CRYPTO_USER_API_HASH=y
 CONFIG_CRYPTO_USER_API_SKCIPHER=y
+CONFIG_CRYPTO_HASH_INFO=y
 CONFIG_CRYPTO_HW=y
 CONFIG_CRYPTO_DEV_MV_CESA=m
 CONFIG_CRYPTO_DEV_HIFN_795X=m
 CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
 CONFIG_CRYPTO_DEV_OMAP_SHAM=y
 CONFIG_CRYPTO_DEV_OMAP_AES=y
+CONFIG_CRYPTO_DEV_SAHARA=y
+CONFIG_CRYPTO_DEV_SUNXI_SS=y
 CONFIG_ASYMMETRIC_KEY_TYPE=m
 CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
 CONFIG_PUBLIC_KEY_ALGO_RSA=m
@@ -5512,9 +5907,11 @@ CONFIG_BITREVERSE=y
 CONFIG_RATIONAL=y
 CONFIG_GENERIC_STRNCPY_FROM_USER=y
 CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_NET_UTILS=y
 CONFIG_GENERIC_PCI_IOMAP=y
 CONFIG_GENERIC_IO=y
 CONFIG_STMP_DEVICE=y
+CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
 CONFIG_CRC_CCITT=y
 CONFIG_CRC16=y
 CONFIG_CRC_T10DIF=y
@@ -5529,10 +5926,14 @@ CONFIG_CRC7=m
 CONFIG_LIBCRC32C=m
 CONFIG_CRC8=m
 CONFIG_AUDIT_GENERIC=y
+# CONFIG_RANDOM32_SELFTEST is not set
 CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=m
+CONFIG_ZLIB_DEFLATE=y
 CONFIG_LZO_COMPRESS=y
 CONFIG_LZO_DECOMPRESS=y
+CONFIG_LZ4_COMPRESS=m
+CONFIG_LZ4HC_COMPRESS=m
+CONFIG_LZ4_DECOMPRESS=y
 CONFIG_XZ_DEC=y
 CONFIG_XZ_DEC_X86=y
 CONFIG_XZ_DEC_POWERPC=y
@@ -5547,13 +5948,14 @@ CONFIG_DECOMPRESS_BZIP2=y
 CONFIG_DECOMPRESS_LZMA=y
 CONFIG_DECOMPRESS_XZ=y
 CONFIG_DECOMPRESS_LZO=y
+CONFIG_DECOMPRESS_LZ4=y
 CONFIG_GENERIC_ALLOCATOR=y
 CONFIG_BCH=m
-CONFIG_BCH_CONST_PARAMS=y
 CONFIG_TEXTSEARCH=y
 CONFIG_TEXTSEARCH_KMP=m
 CONFIG_TEXTSEARCH_BM=m
 CONFIG_TEXTSEARCH_FSM=m
+CONFIG_ASSOCIATIVE_ARRAY=y
 CONFIG_HAS_IOMEM=y
 CONFIG_HAS_DMA=y
 CONFIG_CHECK_SIGNATURE=y
@@ -5567,9 +5969,8 @@ CONFIG_CORDIC=m
 CONFIG_DDR=y
 CONFIG_MPILIB=m
 CONFIG_OID_REGISTRY=m
+CONFIG_FONT_SUPPORT=y
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
 CONFIG_VIRTUALIZATION=y
-CONFIG_KVM_ARM_MAX_VCPUS=0
-
-#
-# Virtio drivers
-#
index 2c709ccfca87f5beb40bb6b349828d4de4ca25dc..269c633e75560d392abddab1d0494f396ef36c07 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/arm 3.10.38 Kernel Configuration
+# Linux/arm 3.14.22 Kernel Configuration
 #
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -16,7 +16,7 @@ CONFIG_GENERIC_CALIBRATE_DELAY=y
 CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_FIQ=y
 CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_ARM_PATCH_PHYS_VIRT=y
+# CONFIG_ARM_PATCH_PHYS_VIRT is not set
 CONFIG_NEED_MACH_GPIO_H=y
 CONFIG_NEED_MACH_IO_H=y
 CONFIG_NEED_MACH_MEMORY_H=y
@@ -31,37 +31,38 @@ CONFIG_BUILDTIME_EXTABLE_SORT=y
 CONFIG_BROKEN_ON_SMP=y
 CONFIG_INIT_ENV_ARG_LIMIT=32
 CONFIG_CROSS_COMPILE=""
+# CONFIG_COMPILE_TEST is not set
 CONFIG_LOCALVERSION=""
 # CONFIG_LOCALVERSION_AUTO is not set
 CONFIG_HAVE_KERNEL_GZIP=y
 CONFIG_HAVE_KERNEL_LZMA=y
 CONFIG_HAVE_KERNEL_XZ=y
 CONFIG_HAVE_KERNEL_LZO=y
+CONFIG_HAVE_KERNEL_LZ4=y
 CONFIG_KERNEL_GZIP=y
 # CONFIG_KERNEL_LZMA is not set
 # CONFIG_KERNEL_XZ is not set
 # CONFIG_KERNEL_LZO is not set
+# CONFIG_KERNEL_LZ4 is not set
 CONFIG_DEFAULT_HOSTNAME="(none)"
 CONFIG_SWAP=y
 CONFIG_SYSVIPC=y
 CONFIG_SYSVIPC_SYSCTL=y
 CONFIG_POSIX_MQUEUE=y
 CONFIG_POSIX_MQUEUE_SYSCTL=y
-# CONFIG_FHANDLE is not set
+CONFIG_FHANDLE=y
 CONFIG_AUDIT=y
 # CONFIG_AUDITSYSCALL is not set
-# CONFIG_AUDIT_LOGINUID_IMMUTABLE is not set
-CONFIG_HAVE_GENERIC_HARDIRQS=y
 
 #
 # IRQ subsystem
 #
-CONFIG_GENERIC_HARDIRQS=y
 CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_GENERIC_IRQ_SHOW=y
 CONFIG_HARDIRQS_SW_RESEND=y
-CONFIG_GENERIC_IRQ_CHIP=y
 CONFIG_IRQ_DOMAIN=y
+# CONFIG_IRQ_DOMAIN_DEBUG is not set
+CONFIG_IRQ_FORCED_THREADING=y
 CONFIG_KTIME_SCALAR=y
 CONFIG_GENERIC_CLOCKEVENTS=y
 CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
@@ -80,6 +81,7 @@ CONFIG_HIGH_RES_TIMERS=y
 # CPU/Task time and stats accounting
 #
 CONFIG_TICK_CPU_ACCOUNTING=y
+# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set
 # CONFIG_IRQ_TIME_ACCOUNTING is not set
 CONFIG_BSD_PROCESS_ACCT=y
 # CONFIG_BSD_PROCESS_ACCT_V3 is not set
@@ -96,7 +98,8 @@ CONFIG_TINY_RCU=y
 # CONFIG_RCU_STALL_COMMON is not set
 # CONFIG_TREE_RCU_TRACE is not set
 # CONFIG_IKCONFIG is not set
-CONFIG_LOG_BUF_SHIFT=19
+CONFIG_LOG_BUF_SHIFT=17
+CONFIG_GENERIC_SCHED_CLOCK=y
 CONFIG_CGROUPS=y
 # CONFIG_CGROUP_DEBUG is not set
 CONFIG_CGROUP_FREEZER=y
@@ -111,16 +114,17 @@ CONFIG_CGROUP_SCHED=y
 CONFIG_FAIR_GROUP_SCHED=y
 # CONFIG_CFS_BANDWIDTH is not set
 CONFIG_RT_GROUP_SCHED=y
-# CONFIG_BLK_CGROUP is not set
+CONFIG_BLK_CGROUP=y
+# CONFIG_DEBUG_BLK_CGROUP is not set
 CONFIG_NAMESPACES=y
 CONFIG_UTS_NS=y
 CONFIG_IPC_NS=y
-# CONFIG_PID_NS is not set
-# CONFIG_NET_NS is not set
-# CONFIG_SCHED_AUTOGROUP is not set
-CONFIG_SYSFS_DEPRECATED=y
-CONFIG_SYSFS_DEPRECATED_V2=y
-# CONFIG_RELAY is not set
+CONFIG_USER_NS=y
+CONFIG_PID_NS=y
+CONFIG_NET_NS=y
+CONFIG_SCHED_AUTOGROUP=y
+# CONFIG_SYSFS_DEPRECATED is not set
+CONFIG_RELAY=y
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_INITRAMFS_SOURCE=""
 CONFIG_RD_GZIP=y
@@ -128,16 +132,16 @@ CONFIG_RD_BZIP2=y
 CONFIG_RD_LZMA=y
 CONFIG_RD_XZ=y
 CONFIG_RD_LZO=y
+CONFIG_RD_LZ4=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
 CONFIG_HAVE_UID16=y
-CONFIG_HOTPLUG=y
-# CONFIG_EXPERT is not set
+CONFIG_EXPERT=y
 CONFIG_UID16=y
 # CONFIG_SYSCTL_SYSCALL is not set
 CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_ALL is not set
+CONFIG_KALLSYMS_ALL=y
 CONFIG_PRINTK=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
@@ -149,7 +153,7 @@ CONFIG_TIMERFD=y
 CONFIG_EVENTFD=y
 CONFIG_SHMEM=y
 CONFIG_AIO=y
-# CONFIG_EMBEDDED is not set
+CONFIG_EMBEDDED=y
 CONFIG_HAVE_PERF_EVENTS=y
 CONFIG_PERF_USE_VMALLOC=y
 
@@ -163,11 +167,15 @@ CONFIG_SLUB_DEBUG=y
 # CONFIG_COMPAT_BRK is not set
 # CONFIG_SLAB is not set
 CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
 # CONFIG_PROFILING is not set
 CONFIG_HAVE_OPROFILE=y
 # CONFIG_KPROBES is not set
 CONFIG_JUMP_LABEL=y
 # CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_ARCH_USE_BUILTIN_BSWAP=y
 CONFIG_HAVE_KPROBES=y
 CONFIG_HAVE_KRETPROBES=y
 CONFIG_HAVE_ARCH_TRACEHOOK=y
@@ -179,12 +187,21 @@ CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
 CONFIG_HAVE_CLK=y
 CONFIG_HAVE_DMA_API_DEBUG=y
 CONFIG_HAVE_HW_BREAKPOINT=y
+CONFIG_HAVE_PERF_REGS=y
+CONFIG_HAVE_PERF_USER_STACK_DUMP=y
 CONFIG_HAVE_ARCH_JUMP_LABEL=y
 CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
 CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
 CONFIG_SECCOMP_FILTER=y
+CONFIG_HAVE_CC_STACKPROTECTOR=y
+CONFIG_CC_STACKPROTECTOR=y
+# CONFIG_CC_STACKPROTECTOR_NONE is not set
+CONFIG_CC_STACKPROTECTOR_REGULAR=y
+# CONFIG_CC_STACKPROTECTOR_STRONG is not set
 CONFIG_HAVE_CONTEXT_TRACKING=y
+CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
 CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
+CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
 CONFIG_MODULES_USE_ELF_REL=y
 CONFIG_CLONE_BACKWARDS=y
 CONFIG_OLD_SIGSUSPEND3=y
@@ -193,6 +210,7 @@ CONFIG_OLD_SIGACTION=y
 #
 # GCOV-based kernel profiling
 #
+# CONFIG_GCOV_KERNEL is not set
 CONFIG_HAVE_GENERIC_DMA_COHERENT=y
 CONFIG_SLABINFO=y
 CONFIG_RT_MUTEXES=y
@@ -200,28 +218,31 @@ CONFIG_BASE_SMALL=0
 CONFIG_MODULES=y
 # CONFIG_MODULE_FORCE_LOAD is not set
 CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_MODULE_SRCVERSION_ALL is not set
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+CONFIG_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_MODULE_SIG is not set
 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
+CONFIG_BLK_DEV_INTEGRITY=y
+CONFIG_BLK_DEV_THROTTLING=y
+# CONFIG_BLK_CMDLINE_PARSER is not set
 
 #
 # Partition Types
 #
 CONFIG_PARTITION_ADVANCED=y
 # CONFIG_ACORN_PARTITION is not set
+# CONFIG_AIX_PARTITION is not set
 # CONFIG_OSF_PARTITION is not set
 # CONFIG_AMIGA_PARTITION is not set
 # CONFIG_ATARI_PARTITION is not set
 # CONFIG_MAC_PARTITION is not set
 CONFIG_MSDOS_PARTITION=y
-CONFIG_BSD_DISKLABEL=y
+# CONFIG_BSD_DISKLABEL is not set
 # CONFIG_MINIX_SUBPARTITION is not set
 # CONFIG_SOLARIS_X86_PARTITION is not set
 # CONFIG_UNIXWARE_DISKLABEL is not set
@@ -233,6 +254,7 @@ CONFIG_LDM_PARTITION=y
 # CONFIG_KARMA_PARTITION is not set
 CONFIG_EFI_PARTITION=y
 # CONFIG_SYSV68_PARTITION is not set
+# CONFIG_CMDLINE_PARTITION is not set
 
 #
 # IO Schedulers
@@ -240,16 +262,17 @@ CONFIG_EFI_PARTITION=y
 CONFIG_IOSCHED_NOOP=y
 CONFIG_IOSCHED_DEADLINE=y
 CONFIG_IOSCHED_CFQ=y
+CONFIG_CFQ_GROUP_IOSCHED=y
 # CONFIG_DEFAULT_DEADLINE is not set
 CONFIG_DEFAULT_CFQ=y
 # CONFIG_DEFAULT_NOOP is not set
 CONFIG_DEFAULT_IOSCHED="cfq"
-CONFIG_ASN1=m
 CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
 CONFIG_INLINE_READ_UNLOCK=y
 CONFIG_INLINE_READ_UNLOCK_IRQ=y
 CONFIG_INLINE_WRITE_UNLOCK=y
 CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
 CONFIG_FREEZER=y
 
 #
@@ -281,8 +304,8 @@ CONFIG_ARCH_BCM2708=y
 # CONFIG_ARCH_W90X900 is not set
 # CONFIG_ARCH_LPC32XX is not set
 # CONFIG_ARCH_PXA is not set
-# CONFIG_ARCH_MSM is not set
-# CONFIG_ARCH_SHMOBILE is not set
+# CONFIG_ARCH_MSM_NODT is not set
+# CONFIG_ARCH_SHMOBILE_LEGACY is not set
 # CONFIG_ARCH_RPC is not set
 # CONFIG_ARCH_SA1100 is not set
 # CONFIG_ARCH_S3C24XX is not set
@@ -291,12 +314,9 @@ CONFIG_ARCH_BCM2708=y
 # CONFIG_ARCH_S5PC100 is not set
 # CONFIG_ARCH_S5PV210 is not set
 # CONFIG_ARCH_EXYNOS is not set
-# CONFIG_ARCH_SHARK is not set
-# CONFIG_ARCH_U300 is not set
 # CONFIG_ARCH_DAVINCI is not set
 # CONFIG_ARCH_OMAP1 is not set
-CONFIG_GPIO_PCA953X=m
-CONFIG_KEYBOARD_GPIO_POLLED=m
+# CONFIG_GPIO_PCA953X is not set
 # CONFIG_PLAT_SPEAR is not set
 
 #
@@ -307,7 +327,6 @@ CONFIG_BCM2708_GPIO=y
 CONFIG_BCM2708_VCMEM=y
 # CONFIG_BCM2708_NOL2CACHE is not set
 CONFIG_BCM2708_SPIDEV=y
-CONFIG_BCM2708_DMAER=m
 
 #
 # Processor Type
@@ -359,6 +378,13 @@ CONFIG_ARCH_NR_GPIO=0
 CONFIG_PREEMPT_NONE=y
 # CONFIG_PREEMPT_VOLUNTARY is not set
 # CONFIG_PREEMPT is not set
+CONFIG_HZ_FIXED=0
+CONFIG_HZ_100=y
+# CONFIG_HZ_200 is not set
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_500 is not set
+# CONFIG_HZ_1000 is not set
 CONFIG_HZ=100
 CONFIG_SCHED_HRTICK=y
 CONFIG_AEABI=y
@@ -368,14 +394,16 @@ CONFIG_AEABI=y
 CONFIG_HAVE_ARCH_PFN_VALID=y
 # CONFIG_HIGHMEM is not set
 CONFIG_HW_PERF_EVENTS=y
+CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
 CONFIG_FLATMEM=y
 CONFIG_FLAT_NODE_MEM_MAP=y
 CONFIG_HAVE_MEMBLOCK=y
+CONFIG_NO_BOOTMEM=y
 CONFIG_MEMORY_ISOLATION=y
 # CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
 CONFIG_PAGEFLAGS_EXTENDED=y
 CONFIG_SPLIT_PTLOCK_CPUS=4
-# CONFIG_COMPACTION is not set
+CONFIG_COMPACTION=y
 CONFIG_MIGRATION=y
 # CONFIG_PHYS_ADDR_T_64BIT is not set
 CONFIG_ZONE_DMA_FLAG=0
@@ -385,27 +413,32 @@ CONFIG_CROSS_MEMORY_ATTACH=y
 CONFIG_NEED_PER_CPU_KM=y
 CONFIG_CLEANCACHE=y
 CONFIG_FRONTSWAP=y
+CONFIG_CMA=y
+# CONFIG_CMA_DEBUG is not set
+# CONFIG_ZBUD is not set
+# CONFIG_ZSWAP is not set
+# CONFIG_ZSMALLOC is not set
 CONFIG_FORCE_MAX_ZONEORDER=11
 CONFIG_ALIGNMENT_TRAP=y
 CONFIG_SECCOMP=y
-CONFIG_CC_STACKPROTECTOR=y
+CONFIG_SWIOTLB=y
+CONFIG_IOMMU_HELPER=y
 
 #
 # Boot options
 #
-CONFIG_USE_OF=y
+# CONFIG_USE_OF is not set
 CONFIG_ATAGS=y
 # CONFIG_DEPRECATED_PARAM_STRUCT is not set
 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=ttyAMA0,115200 root=/dev/mmcblk0p3 rootwait"
+CONFIG_CMDLINE="console=ttyAMA0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait"
 CONFIG_CMDLINE_FROM_BOOTLOADER=y
 # CONFIG_CMDLINE_EXTEND is not set
 # CONFIG_CMDLINE_FORCE is not set
 # CONFIG_XIP_KERNEL is not set
 # CONFIG_KEXEC is not set
-# CONFIG_CRASH_DUMP is not set
+CONFIG_CRASH_DUMP=y
 # CONFIG_AUTO_ZRELADDR is not set
 
 #
@@ -416,13 +449,13 @@ CONFIG_CMDLINE_FROM_BOOTLOADER=y
 # CPU Frequency scaling
 #
 CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
 CONFIG_CPU_FREQ_GOV_COMMON=y
 CONFIG_CPU_FREQ_STAT=m
-# CONFIG_CPU_FREQ_STAT_DETAILS is not set
+CONFIG_CPU_FREQ_STAT_DETAILS=y
 # CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y
 # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
 # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
 CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
 CONFIG_CPU_FREQ_GOV_POWERSAVE=y
@@ -433,15 +466,20 @@ CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
 #
 # ARM CPU frequency scaling drivers
 #
-# CONFIG_ARM_EXYNOS4210_CPUFREQ is not set
-# CONFIG_ARM_EXYNOS4X12_CPUFREQ is not set
-# CONFIG_ARM_EXYNOS5250_CPUFREQ is not set
 # CONFIG_ARM_KIRKWOOD_CPUFREQ is not set
 CONFIG_ARM_BCM2835_CPUFREQ=y
+
+#
+# CPU Idle
+#
 CONFIG_CPU_IDLE=y
 # CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
 CONFIG_CPU_IDLE_GOV_LADDER=y
 CONFIG_CPU_IDLE_GOV_MENU=y
+
+#
+# ARM CPU Idle Drivers
+#
 # CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
 
 #
@@ -458,10 +496,10 @@ CONFIG_VFP=y
 #
 CONFIG_BINFMT_ELF=y
 CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
-# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
 CONFIG_BINFMT_SCRIPT=y
 # CONFIG_HAVE_AOUT is not set
-# CONFIG_BINFMT_MISC is not set
+CONFIG_BINFMT_MISC=y
 CONFIG_COREDUMP=y
 
 #
@@ -472,11 +510,12 @@ CONFIG_SUSPEND_FREEZER=y
 CONFIG_PM_SLEEP=y
 # CONFIG_PM_AUTOSLEEP is not set
 # CONFIG_PM_WAKELOCKS is not set
-CONFIG_PM_RUNTIME=y
+# CONFIG_PM_RUNTIME is not set
 CONFIG_PM=y
 # CONFIG_PM_DEBUG is not set
 # CONFIG_APM_EMULATION is not set
 CONFIG_PM_CLK=y
+# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
 CONFIG_CPU_PM=y
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
 CONFIG_ARM_CPU_SUSPEND=y
@@ -486,13 +525,13 @@ CONFIG_NET=y
 # Networking options
 #
 CONFIG_PACKET=y
-# CONFIG_PACKET_DIAG is not set
+CONFIG_PACKET_DIAG=y
 CONFIG_UNIX=y
 CONFIG_UNIX_DIAG=m
 CONFIG_XFRM=y
-CONFIG_XFRM_ALGO=m
-CONFIG_XFRM_USER=m
-# CONFIG_XFRM_SUB_POLICY is not set
+CONFIG_XFRM_ALGO=y
+CONFIG_XFRM_USER=y
+CONFIG_XFRM_SUB_POLICY=y
 CONFIG_XFRM_MIGRATE=y
 CONFIG_XFRM_STATISTICS=y
 CONFIG_XFRM_IPCOMP=m
@@ -513,10 +552,9 @@ CONFIG_NET_IP_TUNNEL=m
 CONFIG_NET_IPGRE=m
 CONFIG_NET_IPGRE_BROADCAST=y
 CONFIG_IP_MROUTE=y
-# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set
+CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
 CONFIG_IP_PIMSM_V1=y
 CONFIG_IP_PIMSM_V2=y
-CONFIG_ARPD=y
 CONFIG_SYN_COOKIES=y
 CONFIG_NET_IPVTI=m
 CONFIG_INET_AH=m
@@ -524,16 +562,16 @@ CONFIG_INET_ESP=m
 CONFIG_INET_IPCOMP=m
 CONFIG_INET_XFRM_TUNNEL=m
 CONFIG_INET_TUNNEL=m
-CONFIG_INET_XFRM_MODE_TRANSPORT=y
-CONFIG_INET_XFRM_MODE_TUNNEL=y
-CONFIG_INET_XFRM_MODE_BEET=y
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
 CONFIG_INET_LRO=y
 CONFIG_INET_DIAG=m
 CONFIG_INET_TCP_DIAG=m
 CONFIG_INET_UDP_DIAG=m
 CONFIG_TCP_CONG_ADVANCED=y
 CONFIG_TCP_CONG_BIC=m
-CONFIG_TCP_CONG_CUBIC=m
+CONFIG_TCP_CONG_CUBIC=y
 CONFIG_TCP_CONG_WESTWOOD=m
 CONFIG_TCP_CONG_HTCP=m
 CONFIG_TCP_CONG_HSTCP=m
@@ -544,13 +582,14 @@ CONFIG_TCP_CONG_LP=m
 CONFIG_TCP_CONG_VENO=m
 CONFIG_TCP_CONG_YEAH=m
 CONFIG_TCP_CONG_ILLINOIS=m
-CONFIG_DEFAULT_RENO=y
-CONFIG_DEFAULT_TCP_CONG="reno"
-# CONFIG_TCP_MD5SIG is not set
+CONFIG_DEFAULT_CUBIC=y
+# CONFIG_DEFAULT_RENO is not set
+CONFIG_DEFAULT_TCP_CONG="cubic"
+CONFIG_TCP_MD5SIG=y
 CONFIG_IPV6=y
-# CONFIG_IPV6_PRIVACY is not set
-# CONFIG_IPV6_ROUTER_PREF is not set
-# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_IPV6_ROUTER_PREF=y
+CONFIG_IPV6_ROUTE_INFO=y
+CONFIG_IPV6_OPTIMISTIC_DAD=y
 CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
 CONFIG_INET6_IPCOMP=m
@@ -561,17 +600,20 @@ CONFIG_INET6_XFRM_MODE_TRANSPORT=m
 CONFIG_INET6_XFRM_MODE_TUNNEL=m
 CONFIG_INET6_XFRM_MODE_BEET=m
 CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
+CONFIG_IPV6_VTI=m
 CONFIG_IPV6_SIT=m
-# CONFIG_IPV6_SIT_6RD is not set
+CONFIG_IPV6_SIT_6RD=y
 CONFIG_IPV6_NDISC_NODETYPE=y
 CONFIG_IPV6_TUNNEL=m
 CONFIG_IPV6_GRE=m
 CONFIG_IPV6_MULTIPLE_TABLES=y
-# CONFIG_IPV6_SUBTREES is not set
-# CONFIG_IPV6_MROUTE is not set
+CONFIG_IPV6_SUBTREES=y
+CONFIG_IPV6_MROUTE=y
+CONFIG_IPV6_MROUTE_MULTIPLE_TABLES=y
+CONFIG_IPV6_PIMSM_V2=y
 # CONFIG_NETLABEL is not set
-# CONFIG_NETWORK_SECMARK is not set
-CONFIG_NETWORK_PHY_TIMESTAMPING=y
+CONFIG_NETWORK_SECMARK=y
+# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
 CONFIG_NETFILTER=y
 # CONFIG_NETFILTER_DEBUG is not set
 CONFIG_NETFILTER_ADVANCED=y
@@ -586,10 +628,11 @@ CONFIG_NETFILTER_NETLINK_QUEUE=m
 CONFIG_NETFILTER_NETLINK_LOG=m
 CONFIG_NF_CONNTRACK=y
 CONFIG_NF_CONNTRACK_MARK=y
-# CONFIG_NF_CONNTRACK_ZONES is not set
+CONFIG_NF_CONNTRACK_SECMARK=y
+CONFIG_NF_CONNTRACK_ZONES=y
 CONFIG_NF_CONNTRACK_PROCFS=y
 CONFIG_NF_CONNTRACK_EVENTS=y
-# CONFIG_NF_CONNTRACK_TIMEOUT is not set
+CONFIG_NF_CONNTRACK_TIMEOUT=y
 CONFIG_NF_CONNTRACK_TIMESTAMP=y
 CONFIG_NF_CONNTRACK_LABELS=y
 CONFIG_NF_CT_PROTO_DCCP=m
@@ -621,14 +664,30 @@ CONFIG_NF_NAT_FTP=m
 CONFIG_NF_NAT_IRC=m
 CONFIG_NF_NAT_SIP=m
 CONFIG_NF_NAT_TFTP=m
-CONFIG_NETFILTER_TPROXY=m
-CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_SYNPROXY=m
+CONFIG_NF_TABLES=m
+CONFIG_NF_TABLES_INET=m
+CONFIG_NFT_EXTHDR=m
+CONFIG_NFT_META=m
+CONFIG_NFT_CT=m
+CONFIG_NFT_RBTREE=m
+CONFIG_NFT_HASH=m
+CONFIG_NFT_COUNTER=m
+CONFIG_NFT_LOG=m
+CONFIG_NFT_LIMIT=m
+CONFIG_NFT_NAT=m
+CONFIG_NFT_QUEUE=m
+CONFIG_NFT_REJECT=m
+CONFIG_NFT_REJECT_INET=m
+CONFIG_NFT_COMPAT=m
+CONFIG_NETFILTER_XTABLES=y
 
 #
 # Xtables combined modules
 #
 CONFIG_NETFILTER_XT_MARK=m
 CONFIG_NETFILTER_XT_CONNMARK=m
+CONFIG_NETFILTER_XT_SET=m
 
 #
 # Xtables targets
@@ -637,6 +696,7 @@ CONFIG_NETFILTER_XT_TARGET_AUDIT=m
 CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
 CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
 CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
 CONFIG_NETFILTER_XT_TARGET_CT=m
 CONFIG_NETFILTER_XT_TARGET_DSCP=m
 CONFIG_NETFILTER_XT_TARGET_HL=m
@@ -655,6 +715,7 @@ CONFIG_NETFILTER_XT_TARGET_REDIRECT=m
 CONFIG_NETFILTER_XT_TARGET_TEE=m
 CONFIG_NETFILTER_XT_TARGET_TPROXY=m
 CONFIG_NETFILTER_XT_TARGET_TRACE=m
+CONFIG_NETFILTER_XT_TARGET_SECMARK=m
 CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
 CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
 
@@ -663,6 +724,7 @@ CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
 #
 CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
 CONFIG_NETFILTER_XT_MATCH_BPF=m
+CONFIG_NETFILTER_XT_MATCH_CGROUP=m
 CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
 CONFIG_NETFILTER_XT_MATCH_COMMENT=m
 CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
@@ -679,8 +741,10 @@ CONFIG_NETFILTER_XT_MATCH_ESP=m
 CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
 CONFIG_NETFILTER_XT_MATCH_HELPER=m
 CONFIG_NETFILTER_XT_MATCH_HL=m
+CONFIG_NETFILTER_XT_MATCH_IPCOMP=m
 CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
 CONFIG_NETFILTER_XT_MATCH_IPVS=m
+CONFIG_NETFILTER_XT_MATCH_L2TP=m
 CONFIG_NETFILTER_XT_MATCH_LAYER7=m
 # CONFIG_NETFILTER_XT_MATCH_LAYER7_DEBUG is not set
 CONFIG_NETFILTER_XT_MATCH_LENGTH=m
@@ -706,7 +770,21 @@ CONFIG_NETFILTER_XT_MATCH_STRING=m
 CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
 CONFIG_NETFILTER_XT_MATCH_TIME=m
 CONFIG_NETFILTER_XT_MATCH_U32=m
-# CONFIG_IP_SET is not set
+CONFIG_IP_SET=m
+CONFIG_IP_SET_MAX=256
+CONFIG_IP_SET_BITMAP_IP=m
+CONFIG_IP_SET_BITMAP_IPMAC=m
+CONFIG_IP_SET_BITMAP_PORT=m
+CONFIG_IP_SET_HASH_IP=m
+CONFIG_IP_SET_HASH_IPPORT=m
+CONFIG_IP_SET_HASH_IPPORTIP=m
+CONFIG_IP_SET_HASH_IPPORTNET=m
+CONFIG_IP_SET_HASH_NETPORTNET=m
+CONFIG_IP_SET_HASH_NET=m
+CONFIG_IP_SET_HASH_NETNET=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
 # CONFIG_IP_VS_DEBUG is not set
@@ -751,16 +829,22 @@ CONFIG_IP_VS_PE_SIP=m
 #
 # IP: Netfilter Configuration
 #
-CONFIG_NF_DEFRAG_IPV4=m
-CONFIG_NF_CONNTRACK_IPV4=m
-CONFIG_NF_CONNTRACK_PROC_COMPAT=y
-CONFIG_IP_NF_IPTABLES=m
+CONFIG_NF_DEFRAG_IPV4=y
+CONFIG_NF_CONNTRACK_IPV4=y
+# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
+CONFIG_NF_TABLES_IPV4=m
+CONFIG_NFT_CHAIN_ROUTE_IPV4=m
+CONFIG_NFT_CHAIN_NAT_IPV4=m
+CONFIG_NFT_REJECT_IPV4=m
+CONFIG_NF_TABLES_ARP=m
+CONFIG_IP_NF_IPTABLES=y
 CONFIG_IP_NF_MATCH_AH=m
 CONFIG_IP_NF_MATCH_ECN=m
 CONFIG_IP_NF_MATCH_RPFILTER=m
 CONFIG_IP_NF_MATCH_TTL=m
 CONFIG_IP_NF_FILTER=m
 CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_SYNPROXY=m
 CONFIG_IP_NF_TARGET_ULOG=m
 CONFIG_NF_NAT_IPV4=m
 CONFIG_IP_NF_TARGET_MASQUERADE=m
@@ -784,9 +868,13 @@ CONFIG_IP_NF_MATCH_IPP2P=m
 #
 # IPv6: Netfilter Configuration
 #
-CONFIG_NF_DEFRAG_IPV6=m
-CONFIG_NF_CONNTRACK_IPV6=m
-CONFIG_IP6_NF_IPTABLES=m
+CONFIG_NF_DEFRAG_IPV6=y
+CONFIG_NF_CONNTRACK_IPV6=y
+CONFIG_NF_TABLES_IPV6=m
+CONFIG_NFT_CHAIN_ROUTE_IPV6=m
+CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NFT_REJECT_IPV6=m
+CONFIG_IP6_NF_IPTABLES=y
 CONFIG_IP6_NF_MATCH_AH=m
 CONFIG_IP6_NF_MATCH_EUI64=m
 CONFIG_IP6_NF_MATCH_FRAG=m
@@ -799,10 +887,14 @@ CONFIG_IP6_NF_MATCH_RT=m
 CONFIG_IP6_NF_TARGET_HL=m
 CONFIG_IP6_NF_FILTER=m
 CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_TARGET_SYNPROXY=m
 CONFIG_IP6_NF_MANGLE=m
 CONFIG_IP6_NF_RAW=m
 CONFIG_IP6_NF_SECURITY=m
-# CONFIG_NF_NAT_IPV6 is not set
+CONFIG_NF_NAT_IPV6=m
+CONFIG_IP6_NF_TARGET_MASQUERADE=m
+CONFIG_IP6_NF_TARGET_NPT=m
+CONFIG_NF_TABLES_BRIDGE=m
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
@@ -826,43 +918,45 @@ CONFIG_BRIDGE_EBT_LOG=m
 CONFIG_BRIDGE_EBT_ULOG=m
 CONFIG_BRIDGE_EBT_NFLOG=m
 # CONFIG_IP_DCCP is not set
-# CONFIG_IP_SCTP is not set
+CONFIG_IP_SCTP=m
+# CONFIG_SCTP_DBG_OBJCNT is not set
+# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 is not set
+CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y
+# CONFIG_SCTP_DEFAULT_COOKIE_HMAC_NONE is not set
+CONFIG_SCTP_COOKIE_HMAC_MD5=y
+CONFIG_SCTP_COOKIE_HMAC_SHA1=y
 # CONFIG_RDS is not set
 # CONFIG_TIPC is not set
 CONFIG_ATM=m
 CONFIG_ATM_CLIP=m
-CONFIG_ATM_CLIP_NO_ICMP=y
+# CONFIG_ATM_CLIP_NO_ICMP is not set
 # CONFIG_ATM_LANE is not set
 CONFIG_ATM_BR2684=m
 # CONFIG_ATM_BR2684_IPFILTER is not set
 CONFIG_L2TP=m
+# CONFIG_L2TP_DEBUGFS is not set
 CONFIG_L2TP_V3=y
 CONFIG_L2TP_IP=m
 CONFIG_L2TP_ETH=m
-CONFIG_STP=m
+CONFIG_STP=y
 CONFIG_GARP=m
-CONFIG_BRIDGE=m
+CONFIG_BRIDGE=y
 CONFIG_BRIDGE_IGMP_SNOOPING=y
 CONFIG_BRIDGE_VLAN_FILTERING=y
 CONFIG_HAVE_NET_DSA=y
-CONFIG_NET_DSA=y
-CONFIG_NET_DSA_TAG_DSA=y
-CONFIG_NET_DSA_TAG_EDSA=y
-CONFIG_NET_DSA_TAG_TRAILER=y
 CONFIG_VLAN_8021Q=m
 CONFIG_VLAN_8021Q_GVRP=y
 # CONFIG_VLAN_8021Q_MVRP is not set
 # CONFIG_DECNET is not set
-CONFIG_LLC=m
+CONFIG_LLC=y
 # CONFIG_LLC2 is not set
 # CONFIG_IPX is not set
 # CONFIG_ATALK is not set
 # CONFIG_X25 is not set
 # CONFIG_LAPB is not set
 # CONFIG_PHONET is not set
-CONFIG_IEEE802154=m
-CONFIG_IEEE802154_6LOWPAN=m
-CONFIG_MAC802154=m
+# CONFIG_IEEE802154 is not set
+CONFIG_6LOWPAN_IPHC=m
 CONFIG_NET_SCHED=y
 
 #
@@ -888,6 +982,8 @@ CONFIG_NET_SCH_CHOKE=m
 CONFIG_NET_SCH_QFQ=m
 CONFIG_NET_SCH_CODEL=m
 CONFIG_NET_SCH_FQ_CODEL=m
+CONFIG_NET_SCH_FQ=m
+CONFIG_NET_SCH_HHF=m
 CONFIG_NET_SCH_PIE=m
 CONFIG_NET_SCH_INGRESS=m
 CONFIG_NET_SCH_PLUG=m
@@ -907,6 +1003,7 @@ CONFIG_NET_CLS_RSVP=m
 CONFIG_NET_CLS_RSVP6=m
 CONFIG_NET_CLS_FLOW=m
 CONFIG_NET_CLS_CGROUP=m
+CONFIG_NET_CLS_BPF=m
 CONFIG_NET_EMATCH=y
 CONFIG_NET_EMATCH_STACK=32
 CONFIG_NET_EMATCH_CMP=m
@@ -914,6 +1011,7 @@ CONFIG_NET_EMATCH_NBYTE=m
 CONFIG_NET_EMATCH_U32=m
 CONFIG_NET_EMATCH_META=m
 CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_EMATCH_IPSET=m
 CONFIG_NET_CLS_ACT=y
 CONFIG_NET_ACT_POLICE=m
 CONFIG_NET_ACT_GACT=m
@@ -935,10 +1033,15 @@ CONFIG_BATMAN_ADV_DAT=y
 CONFIG_BATMAN_ADV_NC=y
 # CONFIG_BATMAN_ADV_DEBUG is not set
 CONFIG_OPENVSWITCH=m
-# CONFIG_VSOCKETS is not set
-# CONFIG_NETLINK_MMAP is not set
+CONFIG_OPENVSWITCH_GRE=y
+CONFIG_VSOCKETS=m
+CONFIG_NETLINK_MMAP=y
 CONFIG_NETLINK_DIAG=m
-CONFIG_NETPRIO_CGROUP=m
+CONFIG_NET_MPLS_GSO=m
+CONFIG_HSR=m
+CONFIG_CGROUP_NET_PRIO=m
+CONFIG_CGROUP_NET_CLASSID=y
+CONFIG_NET_RX_BUSY_POLL=y
 CONFIG_BQL=y
 CONFIG_BPF_JIT=y
 
@@ -976,9 +1079,8 @@ CONFIG_BT_HCIVHCI=m
 CONFIG_BT_MRVL=m
 CONFIG_BT_MRVL_SDIO=m
 CONFIG_BT_ATH3K=m
-CONFIG_AF_RXRPC=m
-# CONFIG_AF_RXRPC_DEBUG is not set
-CONFIG_RXKAD=m
+CONFIG_BT_WILINK=m
+# CONFIG_AF_RXRPC is not set
 CONFIG_FIB_RULES=y
 CONFIG_WIRELESS=y
 CONFIG_WIRELESS_EXT=y
@@ -990,7 +1092,9 @@ CONFIG_CFG80211=m
 # CONFIG_NL80211_TESTMODE is not set
 # CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
 # CONFIG_CFG80211_REG_DEBUG is not set
+# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
 # CONFIG_CFG80211_DEFAULT_PS is not set
+# CONFIG_CFG80211_DEBUGFS is not set
 # CONFIG_CFG80211_INTERNAL_REGDB is not set
 CONFIG_CFG80211_WEXT=y
 CONFIG_LIB80211=m
@@ -1000,25 +1104,25 @@ CONFIG_LIB80211_CRYPT_TKIP=m
 # CONFIG_LIB80211_DEBUG is not set
 CONFIG_MAC80211=m
 CONFIG_MAC80211_HAS_RC=y
+CONFIG_MAC80211_RC_PID=y
 CONFIG_MAC80211_RC_MINSTREL=y
 CONFIG_MAC80211_RC_MINSTREL_HT=y
+# CONFIG_MAC80211_RC_DEFAULT_PID is not set
 CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
 CONFIG_MAC80211_RC_DEFAULT="minstrel_ht"
 CONFIG_MAC80211_MESH=y
 CONFIG_MAC80211_LEDS=y
+# CONFIG_MAC80211_DEBUGFS is not set
 # CONFIG_MAC80211_MESSAGE_TRACING is not set
 # CONFIG_MAC80211_DEBUG_MENU is not set
 # CONFIG_WIMAX is not set
 CONFIG_RFKILL=m
 CONFIG_RFKILL_LEDS=y
 CONFIG_RFKILL_INPUT=y
-CONFIG_RFKILL_REGULATOR=m
 CONFIG_RFKILL_GPIO=m
 # CONFIG_NET_9P is not set
 # CONFIG_CAIF is not set
-CONFIG_CEPH_LIB=m
-# CONFIG_CEPH_LIB_PRETTYDEBUG is not set
-# CONFIG_CEPH_LIB_USE_DNS_RESOLVER is not set
+# CONFIG_CEPH_LIB is not set
 # CONFIG_NFC is not set
 CONFIG_HAVE_BPF_JIT=y
 
@@ -1029,11 +1133,11 @@ CONFIG_HAVE_BPF_JIT=y
 #
 # Generic Driver Options
 #
-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_UEVENT_HELPER_PATH=""
 CONFIG_DEVTMPFS=y
 CONFIG_DEVTMPFS_MOUNT=y
-# CONFIG_STANDALONE is not set
-# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
 CONFIG_FW_LOADER=y
 # CONFIG_FIRMWARE_IN_KERNEL is not set
 CONFIG_EXTRA_FIRMWARE=""
@@ -1047,13 +1151,12 @@ CONFIG_REGMAP_I2C=m
 CONFIG_REGMAP_SPI=m
 CONFIG_REGMAP_MMIO=m
 CONFIG_DMA_SHARED_BUFFER=y
-CONFIG_CMA=y
-# CONFIG_CMA_DEBUG is not set
+CONFIG_DMA_CMA=y
 
 #
 # Default contiguous memory area size:
 #
-CONFIG_CMA_SIZE_MBYTES=16
+CONFIG_CMA_SIZE_MBYTES=5
 CONFIG_CMA_SIZE_SEL_MBYTES=y
 # CONFIG_CMA_SIZE_SEL_PERCENTAGE is not set
 # CONFIG_CMA_SIZE_SEL_MIN is not set
@@ -1064,137 +1167,30 @@ CONFIG_CMA_AREAS=7
 #
 # Bus devices
 #
+# CONFIG_ARM_CCI is not set
 CONFIG_CONNECTOR=m
-CONFIG_MTD=m
-# CONFIG_MTD_TESTS is not set
-# CONFIG_MTD_REDBOOT_PARTS is not set
-CONFIG_MTD_CMDLINE_PARTS=m
-# CONFIG_MTD_AFS_PARTS is not set
-CONFIG_MTD_OF_PARTS=m
-# CONFIG_MTD_AR7_PARTS is not set
-
-#
-# User Modules And Translation Layers
-#
-CONFIG_MTD_BLKDEVS=m
-CONFIG_MTD_BLOCK=m
-# CONFIG_MTD_BLOCK_RO is not set
-# CONFIG_FTL is not set
-# CONFIG_NFTL is not set
-# CONFIG_INFTL is not set
-# CONFIG_RFD_FTL is not set
-# CONFIG_SSFDC is not set
-# CONFIG_SM_FTL is not set
-# CONFIG_MTD_OOPS is not set
-# CONFIG_MTD_SWAP is not set
-
-#
-# RAM/ROM/Flash chip drivers
-#
-# CONFIG_MTD_CFI is not set
-# CONFIG_MTD_JEDECPROBE is not set
-CONFIG_MTD_MAP_BANK_WIDTH_1=y
-CONFIG_MTD_MAP_BANK_WIDTH_2=y
-CONFIG_MTD_MAP_BANK_WIDTH_4=y
-# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
-# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
-CONFIG_MTD_CFI_I1=y
-CONFIG_MTD_CFI_I2=y
-# CONFIG_MTD_CFI_I4 is not set
-# CONFIG_MTD_CFI_I8 is not set
-# CONFIG_MTD_RAM is not set
-# CONFIG_MTD_ROM is not set
-# CONFIG_MTD_ABSENT is not set
-
-#
-# Mapping drivers for chip access
-#
-# CONFIG_MTD_COMPLEX_MAPPINGS is not set
-CONFIG_MTD_PHYSMAP=m
-# CONFIG_MTD_PHYSMAP_COMPAT is not set
-# CONFIG_MTD_PLATRAM is not set
-
-#
-# Self-contained MTD device drivers
-#
-# CONFIG_MTD_DATAFLASH is not set
-# CONFIG_MTD_M25P80 is not set
-# CONFIG_MTD_SST25L is not set
-# CONFIG_MTD_SLRAM is not set
-# CONFIG_MTD_PHRAM is not set
-# CONFIG_MTD_MTDRAM is not set
-# CONFIG_MTD_BLOCK2MTD is not set
-
-#
-# Disk-On-Chip Device Drivers
-#
-# CONFIG_MTD_DOCG3 is not set
-CONFIG_MTD_NAND_ECC=m
-# CONFIG_MTD_NAND_ECC_SMC is not set
-CONFIG_MTD_NAND=m
-# CONFIG_MTD_NAND_ECC_BCH is not set
-# CONFIG_MTD_SM_COMMON is not set
-# CONFIG_MTD_NAND_DENALI is not set
-# CONFIG_MTD_NAND_GPIO is not set
-CONFIG_MTD_NAND_IDS=m
-# CONFIG_MTD_NAND_DISKONCHIP is not set
-# CONFIG_MTD_NAND_DOCG4 is not set
-# CONFIG_MTD_NAND_NANDSIM is not set
-CONFIG_MTD_NAND_PLATFORM=m
-# CONFIG_MTD_ALAUDA is not set
-# CONFIG_MTD_ONENAND is not set
-
-#
-# LPDDR flash memory drivers
-#
-CONFIG_MTD_LPDDR=m
-CONFIG_MTD_QINFO_PROBE=m
-CONFIG_MTD_UBI=m
-CONFIG_MTD_UBI_WL_THRESHOLD=4096
-CONFIG_MTD_UBI_BEB_LIMIT=20
-# CONFIG_MTD_UBI_FASTMAP is not set
-# CONFIG_MTD_UBI_GLUEBI is not set
-CONFIG_DTC=y
-CONFIG_OF=y
-
-#
-# Device Tree and Open Firmware support
-#
-CONFIG_PROC_DEVICETREE=y
-# CONFIG_OF_SELFTEST is not set
-CONFIG_OF_FLATTREE=y
-CONFIG_OF_EARLY_FLATTREE=y
-CONFIG_OF_ADDRESS=y
-CONFIG_OF_IRQ=y
-CONFIG_OF_DEVICE=y
-CONFIG_OF_I2C=y
-CONFIG_OF_NET=y
-CONFIG_OF_MDIO=y
-CONFIG_OF_MTD=y
-CONFIG_PARPORT=m
-# CONFIG_PARPORT_PC is not set
-# CONFIG_PARPORT_GSC is not set
-CONFIG_PARPORT_AX88796=m
-CONFIG_PARPORT_1284=y
-CONFIG_PARPORT_NOT_PC=y
+# CONFIG_MTD is not set
+CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
+# CONFIG_PARPORT is not set
 CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_NULL_BLK is not set
 # 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_DRBD=m
+# CONFIG_DRBD_FAULT_INJECTION is not set
 CONFIG_BLK_DEV_NBD=m
-CONFIG_BLK_DEV_OSD=m
 CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_COUNT=8
-CONFIG_BLK_DEV_RAM_SIZE=16384
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
 # CONFIG_BLK_DEV_XIP is not set
-# CONFIG_CDROM_PKTCDVD is not set
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
 CONFIG_ATA_OVER_ETH=m
-CONFIG_MG_DISK=m
-CONFIG_MG_DISK_RES=0
-CONFIG_BLK_DEV_RBD=m
+# CONFIG_MG_DISK is not set
+# CONFIG_BLK_DEV_RBD is not set
 
 #
 # Misc devices
@@ -1202,10 +1198,10 @@ CONFIG_BLK_DEV_RBD=m
 # CONFIG_SENSORS_LIS3LV02D is not set
 # CONFIG_AD525X_DPOT is not set
 # CONFIG_ATMEL_PWM is not set
-CONFIG_DUMMY_IRQ=m
+# CONFIG_DUMMY_IRQ is not set
 # CONFIG_ICS932S401 is not set
 # CONFIG_ATMEL_SSC is not set
-CONFIG_ENCLOSURE_SERVICES=m
+# CONFIG_ENCLOSURE_SERVICES is not set
 # CONFIG_APDS9802ALS is not set
 # CONFIG_ISL29003 is not set
 # CONFIG_ISL29020 is not set
@@ -1214,11 +1210,11 @@ CONFIG_ENCLOSURE_SERVICES=m
 # CONFIG_SENSORS_BH1770 is not set
 # CONFIG_SENSORS_APDS990X is not set
 # CONFIG_HMC6352 is not set
-CONFIG_DS1682=m
+# CONFIG_DS1682 is not set
 # CONFIG_TI_DAC7512 is not set
 # CONFIG_BMP085_I2C is not set
 # CONFIG_BMP085_SPI is not set
-CONFIG_USB_SWITCH_FSA9480=m
+# CONFIG_USB_SWITCH_FSA9480 is not set
 # CONFIG_LATTICE_ECP3_CONFIG is not set
 # CONFIG_SRAM is not set
 # CONFIG_C2PORT is not set
@@ -1228,15 +1224,15 @@ CONFIG_USB_SWITCH_FSA9480=m
 #
 CONFIG_EEPROM_AT24=m
 # CONFIG_EEPROM_AT25 is not set
-CONFIG_EEPROM_LEGACY=m
-CONFIG_EEPROM_MAX6875=m
+# CONFIG_EEPROM_LEGACY is not set
+# CONFIG_EEPROM_MAX6875 is not set
 CONFIG_EEPROM_93CX6=m
 # CONFIG_EEPROM_93XX46 is not set
 
 #
 # Texas Instruments shared transport line discipline
 #
-# CONFIG_TI_ST is not set
+CONFIG_TI_ST=m
 # CONFIG_SENSORS_LIS3_SPI is not set
 # CONFIG_SENSORS_LIS3_I2C is not set
 
@@ -1246,28 +1242,35 @@ CONFIG_EEPROM_93CX6=m
 # CONFIG_ALTERA_STAPL is not set
 CONFIG_BCM2708_VCHIQ=y
 
+#
+# Intel MIC Host Driver
+#
+
+#
+# Intel MIC Card Driver
+#
+
 #
 # SCSI device support
 #
 CONFIG_SCSI_MOD=y
-CONFIG_RAID_ATTRS=m
+# CONFIG_RAID_ATTRS is not set
 CONFIG_SCSI=y
 CONFIG_SCSI_DMA=y
 # CONFIG_SCSI_TGT is not set
-CONFIG_SCSI_NETLINK=y
-CONFIG_SCSI_PROC_FS=y
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_SCSI_PROC_FS is not set
 
 #
 # SCSI support type (disk, tape, CD-ROM)
 #
 CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-# CONFIG_CHR_DEV_OSST is not set
+CONFIG_CHR_DEV_ST=m
+CONFIG_CHR_DEV_OSST=m
 CONFIG_BLK_DEV_SR=m
-CONFIG_BLK_DEV_SR_VENDOR=y
+# CONFIG_BLK_DEV_SR_VENDOR is not set
 CONFIG_CHR_DEV_SG=m
-CONFIG_CHR_DEV_SCH=m
-CONFIG_SCSI_ENCLOSURE=m
+# CONFIG_CHR_DEV_SCH is not set
 CONFIG_SCSI_MULTI_LUN=y
 # CONFIG_SCSI_CONSTANTS is not set
 # CONFIG_SCSI_LOGGING is not set
@@ -1276,41 +1279,22 @@ CONFIG_SCSI_MULTI_LUN=y
 #
 # SCSI Transports
 #
-CONFIG_SCSI_SPI_ATTRS=m
-CONFIG_SCSI_FC_ATTRS=m
-CONFIG_SCSI_ISCSI_ATTRS=m
-CONFIG_SCSI_SAS_ATTRS=m
-CONFIG_SCSI_SAS_LIBSAS=m
-CONFIG_SCSI_SAS_ATA=y
-CONFIG_SCSI_SAS_HOST_SMP=y
-CONFIG_SCSI_SRP_ATTRS=m
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+CONFIG_SCSI_ISCSI_ATTRS=y
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
 CONFIG_SCSI_LOWLEVEL=y
 CONFIG_ISCSI_TCP=m
 CONFIG_ISCSI_BOOT_SYSFS=m
-CONFIG_SCSI_UFSHCD=m
-CONFIG_SCSI_UFSHCD_PLATFORM=m
-CONFIG_LIBFC=m
-CONFIG_LIBFCOE=m
+# CONFIG_SCSI_UFSHCD is not set
+# CONFIG_LIBFC is not set
+# CONFIG_LIBFCOE is not set
 # CONFIG_SCSI_DEBUG is not set
-CONFIG_SCSI_DH=m
-CONFIG_SCSI_DH_RDAC=m
-CONFIG_SCSI_DH_HP_SW=m
-CONFIG_SCSI_DH_EMC=m
-CONFIG_SCSI_DH_ALUA=m
-CONFIG_SCSI_OSD_INITIATOR=m
-CONFIG_SCSI_OSD_ULD=m
-CONFIG_SCSI_OSD_DPRINT_SENSE=1
-# CONFIG_SCSI_OSD_DEBUG is not set
-CONFIG_ATA=m
-# CONFIG_ATA_NONSTANDARD is not set
-CONFIG_ATA_VERBOSE_ERROR=y
-CONFIG_SATA_PMP=y
-
-#
-# Controllers with non-SFF native interface
-#
-# CONFIG_SATA_AHCI_PLATFORM is not set
-# CONFIG_ATA_SFF is not set
+# CONFIG_SCSI_DH is not set
+# CONFIG_SCSI_OSD_INITIATOR is not set
+# CONFIG_ATA is not set
 CONFIG_MD=y
 CONFIG_BLK_DEV_MD=m
 CONFIG_MD_LINEAR=m
@@ -1318,56 +1302,43 @@ CONFIG_MD_RAID0=m
 CONFIG_MD_RAID1=m
 CONFIG_MD_RAID10=m
 CONFIG_MD_RAID456=m
-CONFIG_MD_MULTIPATH=m
+# CONFIG_MD_MULTIPATH is not set
 # CONFIG_MD_FAULTY is not set
-CONFIG_BCACHE=m
-# CONFIG_BCACHE_DEBUG is not set
-# CONFIG_BCACHE_EDEBUG is not set
-# CONFIG_BCACHE_CLOSURES_DEBUG is not set
+# CONFIG_BCACHE is not set
 CONFIG_BLK_DEV_DM_BUILTIN=y
 CONFIG_BLK_DEV_DM=m
 # CONFIG_DM_DEBUG is not set
 CONFIG_DM_BUFIO=m
-CONFIG_DM_BIO_PRISON=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_CACHE=m
-CONFIG_DM_CACHE_MQ=m
-CONFIG_DM_CACHE_CLEANER=m
+# CONFIG_DM_THIN_PROVISIONING is not set
+# CONFIG_DM_CACHE is not set
 CONFIG_DM_MIRROR=m
-CONFIG_DM_RAID=m
 CONFIG_DM_LOG_USERSPACE=m
+CONFIG_DM_RAID=m
 CONFIG_DM_ZERO=m
-CONFIG_DM_MULTIPATH=m
-CONFIG_DM_MULTIPATH_QL=m
-CONFIG_DM_MULTIPATH_ST=m
+# CONFIG_DM_MULTIPATH is not set
 CONFIG_DM_DELAY=m
-CONFIG_DM_UEVENT=y
-CONFIG_DM_FLAKEY=m
-CONFIG_DM_VERITY=m
+# CONFIG_DM_UEVENT is not set
+# CONFIG_DM_FLAKEY is not set
+# CONFIG_DM_VERITY is not set
+# CONFIG_DM_SWITCH is not set
 # CONFIG_TARGET_CORE is not set
 CONFIG_NETDEVICES=y
+CONFIG_MII=y
 CONFIG_NET_CORE=y
 CONFIG_BONDING=m
 CONFIG_DUMMY=m
-CONFIG_EQUALIZER=m
-CONFIG_MII=m
+# CONFIG_EQUALIZER is not set
 CONFIG_IFB=m
-CONFIG_NET_TEAM=m
-CONFIG_NET_TEAM_MODE_BROADCAST=m
-CONFIG_NET_TEAM_MODE_ROUNDROBIN=m
-CONFIG_NET_TEAM_MODE_RANDOM=m
-CONFIG_NET_TEAM_MODE_ACTIVEBACKUP=m
-CONFIG_NET_TEAM_MODE_LOADBALANCE=m
+# CONFIG_NET_TEAM is not set
 CONFIG_MACVLAN=m
-CONFIG_MACVTAP=m
-CONFIG_VXLAN=m
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_MACVTAP is not set
+# CONFIG_VXLAN is not set
+CONFIG_NETCONSOLE=m
+CONFIG_NETPOLL=y
+# CONFIG_NETPOLL_TRAP is not set
+CONFIG_NET_POLL_CONTROLLER=y
 CONFIG_IMQ=m
 # CONFIG_IMQ_BEHAVIOR_AA is not set
 CONFIG_IMQ_BEHAVIOR_AB=y
@@ -1376,9 +1347,10 @@ CONFIG_IMQ_BEHAVIOR_AB=y
 CONFIG_IMQ_NUM_DEVS=2
 CONFIG_TUN=m
 CONFIG_VETH=m
+# CONFIG_NLMON is not set
 CONFIG_ATM_DRIVERS=y
 # CONFIG_ATM_DUMMY is not set
-CONFIG_ATM_TCP=m
+# CONFIG_ATM_TCP is not set
 
 #
 # CAIF transport drivers
@@ -1387,89 +1359,77 @@ CONFIG_ATM_TCP=m
 #
 # Distributed Switch Architecture drivers
 #
-CONFIG_NET_DSA_MV88E6XXX=y
-CONFIG_NET_DSA_MV88E6060=y
-CONFIG_NET_DSA_MV88E6XXX_NEED_PPU=y
-CONFIG_NET_DSA_MV88E6131=y
-CONFIG_NET_DSA_MV88E6123_61_65=y
+# CONFIG_NET_DSA_MV88E6XXX is not set
+# CONFIG_NET_DSA_MV88E6060 is not set
+# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set
+# CONFIG_NET_DSA_MV88E6131 is not set
+# CONFIG_NET_DSA_MV88E6123_61_65 is not set
 CONFIG_ETHERNET=y
+CONFIG_NET_VENDOR_ARC=y
 CONFIG_NET_CADENCE=y
-CONFIG_ARM_AT91_ETHER=m
-CONFIG_MACB=m
+# CONFIG_ARM_AT91_ETHER is not set
+# CONFIG_MACB is not set
 CONFIG_NET_VENDOR_BROADCOM=y
-CONFIG_B44=m
-CONFIG_NET_CALXEDA_XGMAC=m
+# CONFIG_B44 is not set
+# CONFIG_NET_CALXEDA_XGMAC is not set
 CONFIG_NET_VENDOR_CIRRUS=y
-CONFIG_CS89x0=m
-CONFIG_CS89x0_PLATFORM=y
-CONFIG_DM9000=m
-# CONFIG_DM9000_FORCE_SIMPLE_PHY_POLL is not set
-CONFIG_DNET=m
+# CONFIG_CS89x0 is not set
+# CONFIG_DM9000 is not set
+# CONFIG_DNET is not set
 CONFIG_NET_VENDOR_FARADAY=y
-CONFIG_FTMAC100=m
-CONFIG_FTGMAC100=m
+# 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_MVMDIO=m
+# CONFIG_MVMDIO is not set
 CONFIG_NET_VENDOR_MICREL=y
-CONFIG_KS8842=m
-CONFIG_KS8851=m
-CONFIG_KS8851_MLL=m
+# CONFIG_KS8842 is not set
+# CONFIG_KS8851 is not set
+# CONFIG_KS8851_MLL is not set
 CONFIG_NET_VENDOR_MICROCHIP=y
-CONFIG_ENC28J60=m
-# CONFIG_ENC28J60_WRITEVERIFY is not set
+# CONFIG_ENC28J60 is not set
 CONFIG_NET_VENDOR_NATSEMI=y
 CONFIG_NET_VENDOR_8390=y
-CONFIG_AX88796=m
-CONFIG_AX88796_93CX6=y
-CONFIG_ETHOC=m
+# CONFIG_AX88796 is not set
+# CONFIG_ETHOC is not set
+# CONFIG_SH_ETH is not set
 CONFIG_NET_VENDOR_SEEQ=y
 CONFIG_NET_VENDOR_SMSC=y
-CONFIG_SMC91X=m
-CONFIG_SMC911X=m
-CONFIG_SMSC911X=m
-# CONFIG_SMSC911X_ARCH_HOOKS is not set
+# CONFIG_SMC91X is not set
+# CONFIG_SMC911X is not set
+# CONFIG_SMSC911X is not set
 CONFIG_NET_VENDOR_STMICRO=y
-CONFIG_STMMAC_ETH=m
-CONFIG_STMMAC_PLATFORM=y
-# CONFIG_STMMAC_DA is not set
+# CONFIG_STMMAC_ETH is not set
+CONFIG_NET_VENDOR_VIA=y
 CONFIG_NET_VENDOR_WIZNET=y
-CONFIG_WIZNET_W5100=m
-CONFIG_WIZNET_W5300=m
-# CONFIG_WIZNET_BUS_DIRECT is not set
-# CONFIG_WIZNET_BUS_INDIRECT is not set
-CONFIG_WIZNET_BUS_ANY=y
-CONFIG_PHYLIB=y
+# CONFIG_WIZNET_W5100 is not set
+# CONFIG_WIZNET_W5300 is not set
+CONFIG_PHYLIB=m
 
 #
 # MII PHY device drivers
 #
-CONFIG_AT803X_PHY=m
-CONFIG_AMD_PHY=m
-CONFIG_MARVELL_PHY=m
-CONFIG_DAVICOM_PHY=m
-CONFIG_QSEMI_PHY=m
-CONFIG_LXT_PHY=m
-CONFIG_CICADA_PHY=m
-CONFIG_VITESSE_PHY=m
-CONFIG_SMSC_PHY=m
-CONFIG_BROADCOM_PHY=m
-CONFIG_BCM87XX_PHY=m
-CONFIG_ICPLUS_PHY=m
-CONFIG_REALTEK_PHY=m
-CONFIG_NATIONAL_PHY=m
-CONFIG_STE10XP=m
-CONFIG_LSI_ET1011C_PHY=m
-CONFIG_MICREL_PHY=m
-# CONFIG_FIXED_PHY is not set
+# CONFIG_AT803X_PHY is not set
+# CONFIG_AMD_PHY is not set
+# CONFIG_MARVELL_PHY is not set
+# CONFIG_DAVICOM_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+# CONFIG_LXT_PHY is not set
+# CONFIG_CICADA_PHY is not set
+# CONFIG_VITESSE_PHY is not set
+# CONFIG_SMSC_PHY is not set
+# CONFIG_BROADCOM_PHY is not set
+# CONFIG_BCM87XX_PHY is not set
+# CONFIG_ICPLUS_PHY is not set
+# CONFIG_REALTEK_PHY is not set
+# CONFIG_NATIONAL_PHY is not set
+# CONFIG_STE10XP is not set
+# CONFIG_LSI_ET1011C_PHY is not set
+# CONFIG_MICREL_PHY is not set
 CONFIG_MDIO_BITBANG=m
-CONFIG_MDIO_GPIO=m
-CONFIG_MDIO_BUS_MUX=m
-CONFIG_MDIO_BUS_MUX_GPIO=m
-CONFIG_MDIO_BUS_MUX_MMIOREG=m
-# CONFIG_MICREL_KS8995MA is not set
-# CONFIG_PLIP is not set
+# CONFIG_MDIO_GPIO is not set
+CONFIG_MICREL_KS8995MA=m
 CONFIG_PPP=m
 CONFIG_PPP_BSDCOMP=m
 CONFIG_PPP_DEFLATE=m
@@ -1478,15 +1438,12 @@ CONFIG_PPP_MPPE=m
 CONFIG_PPP_MULTILINK=y
 CONFIG_PPPOATM=m
 CONFIG_PPPOE=m
-CONFIG_PPTP=m
+# CONFIG_PPTP is not set
 CONFIG_PPPOL2TP=m
 CONFIG_PPP_ASYNC=m
 CONFIG_PPP_SYNC_TTY=m
-CONFIG_SLIP=m
+# CONFIG_SLIP is not set
 CONFIG_SLHC=m
-CONFIG_SLIP_COMPRESSED=y
-CONFIG_SLIP_SMART=y
-CONFIG_SLIP_MODE_SLIP6=y
 
 #
 # USB Network Adapters
@@ -1496,16 +1453,19 @@ CONFIG_USB_KAWETH=m
 CONFIG_USB_PEGASUS=m
 CONFIG_USB_RTL8150=m
 CONFIG_USB_RTL8152=m
-CONFIG_USB_USBNET=m
+CONFIG_USB_USBNET=y
 CONFIG_USB_NET_AX8817X=m
 CONFIG_USB_NET_AX88179_178A=m
 CONFIG_USB_NET_CDCETHER=m
 CONFIG_USB_NET_CDC_EEM=m
 CONFIG_USB_NET_CDC_NCM=m
+CONFIG_USB_NET_HUAWEI_CDC_NCM=m
 CONFIG_USB_NET_CDC_MBIM=m
 CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_SR9700=m
+CONFIG_USB_NET_SR9800=m
 CONFIG_USB_NET_SMSC75XX=m
-CONFIG_USB_NET_SMSC95XX=m
+CONFIG_USB_NET_SMSC95XX=y
 CONFIG_USB_NET_GL620A=m
 CONFIG_USB_NET_NET1080=m
 CONFIG_USB_NET_PLUSB=m
@@ -1524,7 +1484,7 @@ CONFIG_USB_NET_KALMIA=m
 CONFIG_USB_NET_QMI_WWAN=m
 CONFIG_USB_HSO=m
 CONFIG_USB_NET_INT51X1=m
-# CONFIG_USB_IPHETH is not set
+CONFIG_USB_IPHETH=m
 CONFIG_USB_SIERRA_NET=m
 CONFIG_USB_VL600=m
 CONFIG_WLAN=y
@@ -1537,7 +1497,7 @@ CONFIG_USB_ZD1201=m
 CONFIG_USB_NET_RNDIS_WLAN=m
 CONFIG_RTL8187=m
 CONFIG_RTL8187_LEDS=y
-# CONFIG_MAC80211_HWSIM is not set
+CONFIG_MAC80211_HWSIM=m
 CONFIG_ATH_COMMON=m
 CONFIG_ATH_CARDS=m
 # CONFIG_ATH_DEBUG is not set
@@ -1547,27 +1507,31 @@ CONFIG_ATH9K_BTCOEX_SUPPORT=y
 CONFIG_ATH9K=m
 # CONFIG_ATH9K_AHB is not set
 # CONFIG_ATH9K_DEBUGFS is not set
-CONFIG_ATH9K_LEGACY_RATE_CONTROL=y
+# CONFIG_ATH9K_WOW is not set
+# CONFIG_ATH9K_LEGACY_RATE_CONTROL is not set
+CONFIG_ATH9K_RFKILL=y
 CONFIG_ATH9K_HTC=m
+# CONFIG_ATH9K_HTC_DEBUGFS is not set
 CONFIG_CARL9170=m
 CONFIG_CARL9170_LEDS=y
 CONFIG_CARL9170_WPC=y
-CONFIG_CARL9170_HWRNG=y
+# CONFIG_CARL9170_HWRNG is not set
 CONFIG_ATH6KL=m
-CONFIG_ATH6KL_SDIO=m
+# CONFIG_ATH6KL_SDIO is not set
 CONFIG_ATH6KL_USB=m
 # CONFIG_ATH6KL_DEBUG is not set
 CONFIG_AR5523=m
+# CONFIG_ATH10K is not set
+# CONFIG_WCN36XX is not set
 CONFIG_B43=m
 CONFIG_B43_BCMA=y
-# CONFIG_B43_BCMA_EXTRA is not set
 CONFIG_B43_SSB=y
 # CONFIG_B43_SDIO is not set
 CONFIG_B43_BCMA_PIO=y
 CONFIG_B43_PIO=y
 # CONFIG_B43_PHY_N is not set
 CONFIG_B43_PHY_LP=y
-# CONFIG_B43_PHY_HT is not set
+CONFIG_B43_PHY_HT=y
 CONFIG_B43_LEDS=y
 CONFIG_B43_HWRNG=y
 # CONFIG_B43_DEBUG is not set
@@ -1584,12 +1548,11 @@ CONFIG_BRCMUTIL=m
 CONFIG_BRCMSMAC=m
 CONFIG_BRCMFMAC=m
 CONFIG_BRCMFMAC_SDIO=y
-# CONFIG_BRCMFMAC_USB is not set
+CONFIG_BRCMFMAC_USB=y
 # CONFIG_BRCM_TRACING is not set
 # CONFIG_BRCMDBG is not set
 CONFIG_HOSTAP=m
-CONFIG_HOSTAP_FIRMWARE=y
-# CONFIG_HOSTAP_FIRMWARE_NVRAM is not set
+# CONFIG_HOSTAP_FIRMWARE is not set
 CONFIG_LIBERTAS=m
 CONFIG_LIBERTAS_USB=m
 CONFIG_LIBERTAS_SDIO=m
@@ -1607,6 +1570,7 @@ CONFIG_RT73USB=m
 CONFIG_RT2800USB=m
 CONFIG_RT2800USB_RT33XX=y
 CONFIG_RT2800USB_RT35XX=y
+CONFIG_RT2800USB_RT3573=y
 CONFIG_RT2800USB_RT53XX=y
 CONFIG_RT2800USB_RT55XX=y
 CONFIG_RT2800USB_UNKNOWN=y
@@ -1617,14 +1581,20 @@ CONFIG_RT2X00_LIB_FIRMWARE=y
 CONFIG_RT2X00_LIB_CRYPTO=y
 CONFIG_RT2X00_LIB_LEDS=y
 # CONFIG_RT2X00_DEBUG is not set
+CONFIG_RTL_CARDS=m
+CONFIG_RTL8192CU=m
+CONFIG_RTLWIFI=m
+CONFIG_RTLWIFI_USB=m
+CONFIG_RTLWIFI_DEBUG=y
+CONFIG_RTL8192C_COMMON=m
 CONFIG_WL_TI=y
 CONFIG_WL1251=m
 # CONFIG_WL1251_SPI is not set
-CONFIG_WL1251_SDIO=m
+# CONFIG_WL1251_SDIO is not set
 CONFIG_WL12XX=m
 CONFIG_WL18XX=m
 CONFIG_WLCORE=m
-# CONFIG_WLCORE_SPI is not set
+CONFIG_WLCORE_SPI=m
 CONFIG_WLCORE_SDIO=m
 CONFIG_WILINK_PLATFORM_DATA=y
 CONFIG_ZD1211RW=m
@@ -1632,101 +1602,21 @@ CONFIG_ZD1211RW=m
 CONFIG_MWIFIEX=m
 CONFIG_MWIFIEX_SDIO=m
 CONFIG_MWIFIEX_USB=m
-CONFIG_RTL8192CU=m
+CONFIG_CW1200=m
+CONFIG_CW1200_WLAN_SDIO=m
+CONFIG_CW1200_WLAN_SPI=m
 
 #
 # Enable WiMAX (Networking options) to see the WiMAX drivers
 #
-CONFIG_WAN=y
-CONFIG_HDLC=m
-CONFIG_HDLC_RAW=m
-CONFIG_HDLC_RAW_ETH=m
-CONFIG_HDLC_CISCO=m
-CONFIG_HDLC_FR=m
-CONFIG_HDLC_PPP=m
-
-#
-# X.25/LAPB support is disabled
-#
-CONFIG_DLCI=m
-CONFIG_DLCI_MAX=8
-CONFIG_IEEE802154_DRIVERS=m
-CONFIG_IEEE802154_FAKEHARD=m
-CONFIG_IEEE802154_FAKELB=m
-# CONFIG_IEEE802154_AT86RF230 is not set
-# CONFIG_IEEE802154_MRF24J40 is not set
+# CONFIG_WAN is not set
 CONFIG_ISDN=y
-CONFIG_ISDN_I4L=m
-CONFIG_ISDN_PPP=y
-CONFIG_ISDN_PPP_VJ=y
-CONFIG_ISDN_MPP=y
-CONFIG_IPPP_FILTER=y
-CONFIG_ISDN_PPP_BSDCOMP=m
-CONFIG_ISDN_AUDIO=y
-CONFIG_ISDN_TTY_FAX=y
-
-#
-# ISDN feature submodules
-#
-# CONFIG_ISDN_DRV_LOOP is not set
-CONFIG_ISDN_DIVERSION=m
-
-#
-# ISDN4Linux hardware drivers
-#
-
-#
-# Passive cards
-#
-CONFIG_ISDN_DRV_HISAX=m
-
-#
-# D-channel protocol features
-#
-CONFIG_HISAX_EURO=y
-CONFIG_DE_AOC=y
-# CONFIG_HISAX_NO_SENDCOMPLETE is not set
-# CONFIG_HISAX_NO_LLC is not set
-# CONFIG_HISAX_NO_KEYPAD is not set
-CONFIG_HISAX_1TR6=y
-CONFIG_HISAX_NI1=y
-CONFIG_HISAX_MAX_CARDS=8
-
-#
-# HiSax supported cards
-#
-CONFIG_HISAX_16_3=y
-CONFIG_HISAX_S0BOX=y
-CONFIG_HISAX_FRITZPCI=y
-CONFIG_HISAX_AVM_A1_PCMCIA=y
-CONFIG_HISAX_ELSA=y
-CONFIG_HISAX_DIEHLDIVA=y
-CONFIG_HISAX_SEDLBAUER=y
-CONFIG_HISAX_NICCY=y
-CONFIG_HISAX_GAZEL=y
-CONFIG_HISAX_HFC_SX=y
-CONFIG_HISAX_DEBUG=y
-
-#
-# HiSax PCMCIA card service modules
-#
-
-#
-# HiSax sub driver modules
-#
-CONFIG_HISAX_ST5481=m
-CONFIG_HISAX_HFCUSB=m
-CONFIG_HISAX_HFC4S8S=m
-
-#
-# Active cards
-#
+# CONFIG_ISDN_I4L is not set
 CONFIG_ISDN_CAPI=m
 CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
 CONFIG_CAPI_TRACE=y
-CONFIG_ISDN_CAPI_MIDDLEWARE=y
 CONFIG_ISDN_CAPI_CAPI20=m
-CONFIG_ISDN_CAPI_CAPIDRV=m
+CONFIG_ISDN_CAPI_MIDDLEWARE=y
 
 #
 # CAPI hardware drivers
@@ -1735,7 +1625,6 @@ CONFIG_CAPI_AVM=y
 CONFIG_CAPI_EICON=y
 CONFIG_ISDN_DRV_GIGASET=m
 CONFIG_GIGASET_CAPI=y
-# CONFIG_GIGASET_I4L is not set
 # CONFIG_GIGASET_DUMMYLL is not set
 CONFIG_GIGASET_BASE=m
 CONFIG_GIGASET_M105=m
@@ -1749,7 +1638,6 @@ CONFIG_MISDN_L1OIP=m
 # mISDN hardware drivers
 #
 CONFIG_MISDN_HFCUSB=m
-CONFIG_ISDN_HDLC=m
 
 #
 # Input device support
@@ -1757,8 +1645,8 @@ CONFIG_ISDN_HDLC=m
 CONFIG_INPUT=y
 CONFIG_INPUT_FF_MEMLESS=m
 CONFIG_INPUT_POLLDEV=m
-CONFIG_INPUT_SPARSEKMAP=m
-CONFIG_INPUT_MATRIXKMAP=m
+# CONFIG_INPUT_SPARSEKMAP is not set
+# CONFIG_INPUT_MATRIXKMAP is not set
 
 #
 # Userland interfaces
@@ -1767,41 +1655,48 @@ CONFIG_INPUT_MOUSEDEV=y
 # CONFIG_INPUT_MOUSEDEV_PSAUX is not set
 CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_JOYDEV=m
+CONFIG_INPUT_EVDEV=m
 # CONFIG_INPUT_EVBUG is not set
 
 #
 # Input Device Drivers
 #
-CONFIG_INPUT_KEYBOARD=y
-CONFIG_KEYBOARD_ADP5588=m
-CONFIG_KEYBOARD_ADP5589=m
-CONFIG_KEYBOARD_ATKBD=y
-CONFIG_KEYBOARD_QT1070=m
-CONFIG_KEYBOARD_QT2160=m
-CONFIG_KEYBOARD_LKKBD=m
-CONFIG_KEYBOARD_GPIO=m
-CONFIG_KEYBOARD_TCA6416=m
-CONFIG_KEYBOARD_TCA8418=m
-CONFIG_KEYBOARD_MATRIX=m
-CONFIG_KEYBOARD_LM8323=m
-CONFIG_KEYBOARD_LM8333=m
-CONFIG_KEYBOARD_MAX7359=m
-CONFIG_KEYBOARD_MCS=m
-CONFIG_KEYBOARD_MPR121=m
-CONFIG_KEYBOARD_NEWTON=m
-CONFIG_KEYBOARD_OPENCORES=m
-CONFIG_KEYBOARD_SAMSUNG=m
-CONFIG_KEYBOARD_STOWAWAY=m
-CONFIG_KEYBOARD_SUNKBD=m
-CONFIG_KEYBOARD_XTKBD=m
+# CONFIG_INPUT_KEYBOARD is not set
 # CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_JOYSTICK=y
+# CONFIG_JOYSTICK_ANALOG is not set
+# CONFIG_JOYSTICK_A3D is not set
+# CONFIG_JOYSTICK_ADI is not set
+# CONFIG_JOYSTICK_COBRA is not set
+# CONFIG_JOYSTICK_GF2K is not set
+# CONFIG_JOYSTICK_GRIP is not set
+# CONFIG_JOYSTICK_GRIP_MP is not set
+# CONFIG_JOYSTICK_GUILLEMOT is not set
+# CONFIG_JOYSTICK_INTERACT is not set
+# CONFIG_JOYSTICK_SIDEWINDER is not set
+# CONFIG_JOYSTICK_TMDC is not set
+CONFIG_JOYSTICK_IFORCE=m
+CONFIG_JOYSTICK_IFORCE_USB=y
+# CONFIG_JOYSTICK_IFORCE_232 is not set
+# CONFIG_JOYSTICK_WARRIOR is not set
+# CONFIG_JOYSTICK_MAGELLAN is not set
+# CONFIG_JOYSTICK_SPACEORB is not set
+# CONFIG_JOYSTICK_SPACEBALL is not set
+# CONFIG_JOYSTICK_STINGER is not set
+# CONFIG_JOYSTICK_TWIDJOY is not set
+# CONFIG_JOYSTICK_ZHENHUA is not set
+# CONFIG_JOYSTICK_AS5011 is not set
+# CONFIG_JOYSTICK_JOYDUMP is not set
+CONFIG_JOYSTICK_XPAD=m
+CONFIG_JOYSTICK_XPAD_FF=y
+# CONFIG_JOYSTICK_XPAD_LEDS is not set
 # CONFIG_INPUT_TABLET is not set
 # CONFIG_INPUT_TOUCHSCREEN is not set
 CONFIG_INPUT_MISC=y
-# CONFIG_INPUT_AD714X is not set
+CONFIG_INPUT_AD714X=m
+CONFIG_INPUT_AD714X_I2C=m
+CONFIG_INPUT_AD714X_SPI=m
 # CONFIG_INPUT_BMA150 is not set
 # CONFIG_INPUT_MMA8450 is not set
 # CONFIG_INPUT_MPU3050 is not set
@@ -1810,31 +1705,33 @@ CONFIG_INPUT_MISC=y
 CONFIG_INPUT_ATI_REMOTE2=m
 CONFIG_INPUT_KEYSPAN_REMOTE=m
 # CONFIG_INPUT_KXTJ9 is not set
-# CONFIG_INPUT_POWERMATE is not set
-# CONFIG_INPUT_YEALINK is not set
-# CONFIG_INPUT_CM109 is not set
-# CONFIG_INPUT_UINPUT is not set
+CONFIG_INPUT_POWERMATE=m
+CONFIG_INPUT_YEALINK=m
+CONFIG_INPUT_CM109=m
+CONFIG_INPUT_UINPUT=m
 # CONFIG_INPUT_PCF8574 is not set
-CONFIG_INPUT_PWM_BEEPER=m
-# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
-# CONFIG_INPUT_ADXL34X 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_IMS_PCU is not set
-# CONFIG_INPUT_CMA3000 is not set
+CONFIG_INPUT_CMA3000=m
+# CONFIG_INPUT_CMA3000_I2C is not set
 
 #
 # Hardware I/O ports
 #
-CONFIG_SERIO=y
-CONFIG_SERIO_SERPORT=y
-# CONFIG_SERIO_PARKBD is not set
-CONFIG_SERIO_AMBAKMI=m
-CONFIG_SERIO_LIBPS2=y
-# CONFIG_SERIO_RAW is not set
-CONFIG_SERIO_ALTERA_PS2=m
-CONFIG_SERIO_PS2MULT=m
-CONFIG_SERIO_ARC_PS2=m
-CONFIG_SERIO_APBPS2=m
-# CONFIG_GAMEPORT is not set
+CONFIG_SERIO=m
+CONFIG_SERIO_SERPORT=m
+# CONFIG_SERIO_AMBAKMI is not set
+# CONFIG_SERIO_LIBPS2 is not set
+CONFIG_SERIO_RAW=m
+# CONFIG_SERIO_ALTERA_PS2 is not set
+# CONFIG_SERIO_PS2MULT is not set
+# CONFIG_SERIO_ARC_PS2 is not set
+CONFIG_GAMEPORT=m
+CONFIG_GAMEPORT_NS558=m
+CONFIG_GAMEPORT_L4=m
 
 #
 # Character devices
@@ -1845,76 +1742,54 @@ 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_VT_HW_CONSOLE_BINDING=y
 CONFIG_UNIX98_PTYS=y
-# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
+CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
 # CONFIG_LEGACY_PTYS is not set
 # CONFIG_SERIAL_NONSTANDARD is not set
-CONFIG_N_GSM=m
+# CONFIG_N_GSM is not set
 # CONFIG_TRACE_SINK is not set
-CONFIG_DEVKMEM=y
+# CONFIG_DEVKMEM is not set
 
 #
 # Serial drivers
 #
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_DMA=y
-CONFIG_SERIAL_8250_NR_UARTS=4
-CONFIG_SERIAL_8250_RUNTIME_UARTS=4
-CONFIG_SERIAL_8250_EXTENDED=y
-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
-CONFIG_SERIAL_8250_EM=m
+# CONFIG_SERIAL_8250 is not set
 
 #
 # Non-8250 serial port support
 #
-CONFIG_SERIAL_AMBA_PL010=y
-CONFIG_SERIAL_AMBA_PL010_CONSOLE=y
+# CONFIG_SERIAL_AMBA_PL010 is not set
 CONFIG_SERIAL_AMBA_PL011=y
 CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
 # CONFIG_SERIAL_MAX3100 is not set
 # CONFIG_SERIAL_MAX310X is not set
+# CONFIG_SERIAL_SH_SCI is not set
 CONFIG_SERIAL_CORE=y
 CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_SERIAL_OF_PLATFORM=y
-CONFIG_SERIAL_SCCNXP=m
-CONFIG_SERIAL_TIMBERDALE=m
-CONFIG_SERIAL_ALTERA_JTAGUART=m
-CONFIG_SERIAL_ALTERA_UART=m
-CONFIG_SERIAL_ALTERA_UART_MAXPORTS=4
-CONFIG_SERIAL_ALTERA_UART_BAUDRATE=115200
+# CONFIG_SERIAL_SCCNXP is not set
+# CONFIG_SERIAL_TIMBERDALE is not set
+# CONFIG_SERIAL_ALTERA_JTAGUART is not set
+# CONFIG_SERIAL_ALTERA_UART is not set
 # CONFIG_SERIAL_IFX6X60 is not set
-CONFIG_SERIAL_XILINX_PS_UART=m
-CONFIG_SERIAL_ARC=m
-CONFIG_SERIAL_ARC_NR_PORTS=1
-CONFIG_PRINTER=m
-# CONFIG_LP_CONSOLE is not set
-CONFIG_PPDEV=m
+# CONFIG_SERIAL_ARC is not set
+# CONFIG_SERIAL_FSL_LPUART is not set
+# CONFIG_SERIAL_ST_ASC is not set
+CONFIG_TTY_PRINTK=y
 # CONFIG_HVC_DCC is not set
-CONFIG_IPMI_HANDLER=m
-CONFIG_IPMI_PANIC_EVENT=y
-# CONFIG_IPMI_PANIC_STRING is not set
-CONFIG_IPMI_DEVICE_INTERFACE=m
-CONFIG_IPMI_SI=m
-CONFIG_IPMI_WATCHDOG=m
-CONFIG_IPMI_POWEROFF=m
+# CONFIG_IPMI_HANDLER is not set
 CONFIG_HW_RANDOM=y
 # CONFIG_HW_RANDOM_TIMERIOMEM is not set
 # CONFIG_HW_RANDOM_ATMEL is not set
 # CONFIG_HW_RANDOM_EXYNOS is not set
 CONFIG_HW_RANDOM_BCM2708=y
-CONFIG_NVRAM=m
 # CONFIG_R3964 is not set
-# CONFIG_RAW_DRIVER is not set
+CONFIG_RAW_DRIVER=y
+CONFIG_MAX_RAW_DEVS=256
 # CONFIG_TCG_TPM is not set
 CONFIG_BRCM_CHAR_DRIVERS=y
 CONFIG_BCM_VC_CMA=y
+# CONFIG_BCM_VC_SM is not set
 CONFIG_I2C=y
 CONFIG_I2C_BOARDINFO=y
 CONFIG_I2C_COMPAT=y
@@ -1924,14 +1799,11 @@ CONFIG_I2C_MUX=m
 #
 # Multiplexer I2C Chip support
 #
-# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set
-CONFIG_I2C_MUX_GPIO=m
-CONFIG_I2C_MUX_PCA9541=m
-CONFIG_I2C_MUX_PCA954x=m
+# CONFIG_I2C_MUX_GPIO is not set
+# CONFIG_I2C_MUX_PCA9541 is not set
+# CONFIG_I2C_MUX_PCA954x is not set
 CONFIG_I2C_HELPER_AUTO=y
-CONFIG_I2C_SMBUS=m
 CONFIG_I2C_ALGOBIT=m
-CONFIG_I2C_ALGOPCA=m
 
 #
 # I2C Hardware Bus support
@@ -1940,32 +1812,31 @@ CONFIG_I2C_ALGOPCA=m
 #
 # I2C system bus drivers (mostly embedded / system-on-chip)
 #
-CONFIG_I2C_BCM2708=m
+CONFIG_I2C_BCM2708=y
 CONFIG_I2C_BCM2708_BAUDRATE=100000
-CONFIG_I2C_CBUS_GPIO=m
-CONFIG_I2C_DESIGNWARE_CORE=m
-CONFIG_I2C_DESIGNWARE_PLATFORM=m
-CONFIG_I2C_GPIO=m
-CONFIG_I2C_NOMADIK=m
-CONFIG_I2C_OCORES=m
-CONFIG_I2C_PCA_PLATFORM=m
+# CONFIG_I2C_CBUS_GPIO is not set
+# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_NOMADIK is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PCA_PLATFORM is not set
 # CONFIG_I2C_PXA_PCI is not set
-CONFIG_I2C_SIMTEC=m
-CONFIG_I2C_XILINX=m
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_XILINX is not set
 
 #
 # External I2C/SMBus adapter drivers
 #
-CONFIG_I2C_DIOLAN_U2C=m
-CONFIG_I2C_PARPORT=m
-CONFIG_I2C_PARPORT_LIGHT=m
-CONFIG_I2C_TAOS_EVM=m
-CONFIG_I2C_TINY_USB=m
+# CONFIG_I2C_DIOLAN_U2C is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_ROBOTFUZZ_OSIF is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_TINY_USB is not set
 
 #
 # Other I2C/SMBus bus drivers
 #
-CONFIG_I2C_STUB=m
+# CONFIG_I2C_STUB is not set
 # CONFIG_I2C_DEBUG_CORE is not set
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_BUS is not set
@@ -1978,13 +1849,10 @@ CONFIG_SPI_MASTER=y
 #
 # CONFIG_SPI_ALTERA is not set
 CONFIG_SPI_BCM2708=m
-CONFIG_SPI_BITBANG=m
-# CONFIG_SPI_BUTTERFLY is not set
-CONFIG_SPI_GPIO=m
-# CONFIG_SPI_LM70_LLP is not set
-# CONFIG_SPI_FSL_SPI is not set
-CONFIG_SPI_OC_TINY=m
-CONFIG_SPI_PL022=m
+# CONFIG_SPI_BITBANG is not set
+# CONFIG_SPI_GPIO is not set
+# CONFIG_SPI_OC_TINY is not set
+# CONFIG_SPI_PL022 is not set
 # CONFIG_SPI_PXA2XX_PCI is not set
 # CONFIG_SPI_SC18IS602 is not set
 # CONFIG_SPI_XCOMM is not set
@@ -1994,74 +1862,51 @@ CONFIG_SPI_PL022=m
 #
 # SPI Protocol Masters
 #
-# CONFIG_SPI_SPIDEV is not set
+CONFIG_SPI_SPIDEV=y
 # CONFIG_SPI_TLE62X0 is not set
-
-#
-# Qualcomm MSM SSBI bus support
-#
-# CONFIG_SSBI is not set
-CONFIG_HSI=m
-CONFIG_HSI_BOARDINFO=y
-
-#
-# HSI clients
-#
-CONFIG_HSI_CHAR=m
+# CONFIG_HSI is not set
 
 #
 # PPS support
 #
-CONFIG_PPS=m
-# CONFIG_PPS_DEBUG is not set
+# CONFIG_PPS is not set
 
 #
-# PPS clients support
+# PPS generators support
 #
-# CONFIG_PPS_CLIENT_KTIMER is not set
-# CONFIG_PPS_CLIENT_LDISC is not set
-# CONFIG_PPS_CLIENT_PARPORT is not set
-# CONFIG_PPS_CLIENT_GPIO is not set
 
 #
-# PPS generators support
+# PTP clock support
 #
+# CONFIG_PTP_1588_CLOCK is not set
 
 #
-# PTP clock support
+# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
 #
-CONFIG_PTP_1588_CLOCK=m
-# CONFIG_DP83640_PHY is not set
-# CONFIG_PTP_1588_CLOCK_PCH is not set
 CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
 CONFIG_ARCH_REQUIRE_GPIOLIB=y
-CONFIG_GPIO_DEVRES=y
 CONFIG_GPIOLIB=y
-CONFIG_OF_GPIO=y
+CONFIG_GPIO_DEVRES=y
 # CONFIG_DEBUG_GPIO is not set
 CONFIG_GPIO_SYSFS=y
-CONFIG_GPIO_GENERIC=m
-CONFIG_GPIO_MAX730X=m
 
 #
 # Memory mapped GPIO drivers:
 #
-CONFIG_GPIO_GENERIC_PLATFORM=m
-# CONFIG_GPIO_EM is not set
-CONFIG_GPIO_PL061=y
-CONFIG_GPIO_RCAR=m
-CONFIG_GPIO_TS5500=m
-CONFIG_GPIO_GRGPIO=m
+# CONFIG_GPIO_GENERIC_PLATFORM is not set
+# CONFIG_GPIO_PL061 is not set
+# CONFIG_GPIO_RCAR is not set
+# CONFIG_GPIO_SCH311X is not set
+# CONFIG_GPIO_TS5500 is not set
 
 #
 # I2C GPIO expanders:
 #
-CONFIG_GPIO_MAX7300=m
-CONFIG_GPIO_MAX732X=m
-CONFIG_GPIO_PCF857X=m
+# CONFIG_GPIO_MAX7300 is not set
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCF857X is not set
 # CONFIG_GPIO_SX150X is not set
-CONFIG_GPIO_ADP5588=m
-CONFIG_GPIO_ADNP=m
+# CONFIG_GPIO_ADP5588 is not set
 
 #
 # PCI GPIO expanders:
@@ -2070,15 +1915,17 @@ CONFIG_GPIO_ADNP=m
 #
 # SPI GPIO expanders:
 #
-CONFIG_GPIO_MAX7301=m
-CONFIG_GPIO_MCP23S08=m
-CONFIG_GPIO_MC33880=m
-CONFIG_GPIO_74X164=m
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MC33880 is not set
 
 #
 # AC97 GPIO expanders:
 #
 
+#
+# LPC GPIO expanders:
+#
+
 #
 # MODULbus GPIO expanders:
 #
@@ -2108,7 +1955,7 @@ CONFIG_W1_SLAVE_DS2413=m
 CONFIG_W1_SLAVE_DS2423=m
 CONFIG_W1_SLAVE_DS2431=m
 CONFIG_W1_SLAVE_DS2433=m
-CONFIG_W1_SLAVE_DS2433_CRC=y
+# CONFIG_W1_SLAVE_DS2433_CRC is not set
 CONFIG_W1_SLAVE_DS2760=m
 CONFIG_W1_SLAVE_DS2780=m
 CONFIG_W1_SLAVE_DS2781=m
@@ -2117,9 +1964,8 @@ CONFIG_W1_SLAVE_BQ27000=m
 CONFIG_POWER_SUPPLY=y
 # CONFIG_POWER_SUPPLY_DEBUG is not set
 # CONFIG_PDA_POWER is not set
-# CONFIG_GENERIC_ADC_BATTERY is not set
 # CONFIG_TEST_POWER is not set
-# CONFIG_BATTERY_DS2760 is not set
+CONFIG_BATTERY_DS2760=m
 # CONFIG_BATTERY_DS2780 is not set
 # CONFIG_BATTERY_DS2781 is not set
 # CONFIG_BATTERY_DS2782 is not set
@@ -2130,10 +1976,10 @@ CONFIG_POWER_SUPPLY=y
 # CONFIG_CHARGER_MAX8903 is not set
 # CONFIG_CHARGER_LP8727 is not set
 # CONFIG_CHARGER_GPIO is not set
-# CONFIG_CHARGER_MANAGER is not set
 # CONFIG_CHARGER_BQ2415X is not set
+# CONFIG_CHARGER_BQ24190 is not set
+# CONFIG_CHARGER_BQ24735 is not set
 # CONFIG_CHARGER_SMB347 is not set
-# CONFIG_BATTERY_GOLDFISH is not set
 # CONFIG_POWER_RESET is not set
 # CONFIG_POWER_RESET_RESTART is not set
 # CONFIG_POWER_AVS is not set
@@ -2169,13 +2015,12 @@ CONFIG_SENSORS_F71805F=m
 CONFIG_SENSORS_F71882FG=m
 CONFIG_SENSORS_F75375S=m
 CONFIG_SENSORS_G760A=m
+CONFIG_SENSORS_G762=m
 CONFIG_SENSORS_GL518SM=m
 CONFIG_SENSORS_GL520SM=m
 CONFIG_SENSORS_GPIO_FAN=m
 CONFIG_SENSORS_HIH6130=m
-CONFIG_SENSORS_IBMAEM=m
-CONFIG_SENSORS_IBMPEX=m
-CONFIG_SENSORS_IIO_HWMON=m
+CONFIG_SENSORS_HTU21=m
 CONFIG_SENSORS_IT87=m
 CONFIG_SENSORS_JC42=m
 CONFIG_SENSORS_LINEAGE=m
@@ -2263,12 +2108,15 @@ CONFIG_THERMAL=y
 CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
 # CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
 # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
-CONFIG_THERMAL_GOV_FAIR_SHARE=y
+# CONFIG_THERMAL_GOV_FAIR_SHARE is not set
 CONFIG_THERMAL_GOV_STEP_WISE=y
-CONFIG_THERMAL_GOV_USER_SPACE=y
-CONFIG_CPU_THERMAL=y
+# CONFIG_THERMAL_GOV_USER_SPACE is not set
 # CONFIG_THERMAL_EMULATION is not set
 CONFIG_THERMAL_BCM2835=y
+
+#
+# Texas Instruments thermal drivers
+#
 CONFIG_WATCHDOG=y
 CONFIG_WATCHDOG_CORE=y
 # CONFIG_WATCHDOG_NOWAYOUT is not set
@@ -2276,16 +2124,17 @@ CONFIG_WATCHDOG_CORE=y
 #
 # Watchdog Device Drivers
 #
-CONFIG_SOFT_WATCHDOG=m
+# CONFIG_SOFT_WATCHDOG is not set
 # CONFIG_ARM_SP805_WATCHDOG is not set
 # CONFIG_DW_WATCHDOG is not set
 # CONFIG_MAX63XX_WATCHDOG is not set
 CONFIG_BCM2708_WDT=m
+# CONFIG_MEN_A21_WDT is not set
 
 #
 # USB-based Watchdog Cards
 #
-CONFIG_USBPCWATCHDOG=m
+# CONFIG_USBPCWATCHDOG is not set
 CONFIG_SSB_POSSIBLE=y
 
 #
@@ -2294,18 +2143,20 @@ CONFIG_SSB_POSSIBLE=y
 CONFIG_SSB=m
 CONFIG_SSB_BLOCKIO=y
 CONFIG_SSB_SDIOHOST_POSSIBLE=y
-CONFIG_SSB_SDIOHOST=y
+# CONFIG_SSB_SDIOHOST is not set
+# CONFIG_SSB_SILENT is not set
 # CONFIG_SSB_DEBUG is not set
-CONFIG_SSB_DRIVER_GPIO=y
+# CONFIG_SSB_DRIVER_GPIO is not set
 CONFIG_BCMA_POSSIBLE=y
 
 #
 # Broadcom specific AMBA
 #
-CONFIG_BCMA=y
+CONFIG_BCMA=m
 CONFIG_BCMA_BLOCKIO=y
-CONFIG_BCMA_DRIVER_GMAC_CMN=y
-CONFIG_BCMA_DRIVER_GPIO=y
+# CONFIG_BCMA_HOST_SOC is not set
+# CONFIG_BCMA_DRIVER_GMAC_CMN is not set
+# CONFIG_BCMA_DRIVER_GPIO is not set
 # CONFIG_BCMA_DEBUG is not set
 
 #
@@ -2321,14 +2172,17 @@ CONFIG_MFD_CORE=m
 # CONFIG_MFD_DA9052_SPI is not set
 # CONFIG_MFD_DA9052_I2C is not set
 # CONFIG_MFD_DA9055 is not set
+# CONFIG_MFD_DA9063 is not set
 # CONFIG_MFD_MC13XXX_SPI is not set
 # CONFIG_MFD_MC13XXX_I2C is not set
 # CONFIG_HTC_EGPIO is not set
 # CONFIG_HTC_PASIC3 is not set
 # CONFIG_HTC_I2CPLD is not set
+# CONFIG_MFD_KEMPLD is not set
 # CONFIG_MFD_88PM800 is not set
 # CONFIG_MFD_88PM805 is not set
 # CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_MAX14577 is not set
 # CONFIG_MFD_MAX77686 is not set
 # CONFIG_MFD_MAX77693 is not set
 # CONFIG_MFD_MAX8907 is not set
@@ -2349,6 +2203,7 @@ CONFIG_MFD_CORE=m
 # CONFIG_MFD_STMPE is not set
 # CONFIG_MFD_SYSCON is not set
 # CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_MFD_LP3943 is not set
 # CONFIG_MFD_LP8788 is not set
 # CONFIG_MFD_PALMAS is not set
 # CONFIG_TPS6105X is not set
@@ -2364,7 +2219,7 @@ CONFIG_MFD_CORE=m
 # CONFIG_MFD_TPS80031 is not set
 # CONFIG_TWL4030_CORE is not set
 # CONFIG_TWL6040_CORE is not set
-# CONFIG_MFD_WL1273_CORE is not set
+CONFIG_MFD_WL1273_CORE=m
 # CONFIG_MFD_LM3533 is not set
 # CONFIG_MFD_TC3589X is not set
 # CONFIG_MFD_TMIO is not set
@@ -2378,30 +2233,8 @@ CONFIG_MFD_CORE=m
 # CONFIG_MFD_WM831X_SPI is not set
 # CONFIG_MFD_WM8350_I2C is not set
 # CONFIG_MFD_WM8994 is not set
-CONFIG_REGULATOR=y
-# CONFIG_REGULATOR_DEBUG is not set
-# CONFIG_REGULATOR_DUMMY is not set
-CONFIG_REGULATOR_FIXED_VOLTAGE=m
-# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
-# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
-CONFIG_REGULATOR_GPIO=m
-# CONFIG_REGULATOR_AD5398 is not set
-# CONFIG_REGULATOR_FAN53555 is not set
-# CONFIG_REGULATOR_ISL6271A is not set
-# CONFIG_REGULATOR_MAX1586 is not set
-# CONFIG_REGULATOR_MAX8649 is not set
-# CONFIG_REGULATOR_MAX8660 is not set
-# CONFIG_REGULATOR_MAX8952 is not set
-# CONFIG_REGULATOR_MAX8973 is not set
-# CONFIG_REGULATOR_LP3971 is not set
-# CONFIG_REGULATOR_LP3972 is not set
-# CONFIG_REGULATOR_LP872X is not set
-# CONFIG_REGULATOR_LP8755 is not set
-# CONFIG_REGULATOR_TPS51632 is not set
-# CONFIG_REGULATOR_TPS62360 is not set
-# CONFIG_REGULATOR_TPS65023 is not set
-# CONFIG_REGULATOR_TPS6507X is not set
-# CONFIG_REGULATOR_TPS6524X is not set
+# CONFIG_VEXPRESS_CONFIG is not set
+# CONFIG_REGULATOR is not set
 CONFIG_MEDIA_SUPPORT=m
 
 #
@@ -2425,7 +2258,6 @@ CONFIG_VIDEOBUF_DVB=m
 CONFIG_VIDEOBUF2_CORE=m
 CONFIG_VIDEOBUF2_MEMOPS=m
 CONFIG_VIDEOBUF2_VMALLOC=m
-CONFIG_VIDEO_V4L2_INT_DEVICE=m
 CONFIG_DVB_CORE=m
 CONFIG_DVB_NET=y
 CONFIG_TTPCI_EEPROM=m
@@ -2503,6 +2335,7 @@ CONFIG_USB_GSPCA_SQ905=m
 CONFIG_USB_GSPCA_SQ905C=m
 CONFIG_USB_GSPCA_SQ930X=m
 CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_STK1135=m
 CONFIG_USB_GSPCA_STV0680=m
 CONFIG_USB_GSPCA_SUNPLUS=m
 CONFIG_USB_GSPCA_T613=m
@@ -2519,7 +2352,7 @@ CONFIG_VIDEO_CPIA2=m
 CONFIG_USB_ZR364XX=m
 CONFIG_USB_STKWEBCAM=m
 CONFIG_USB_S2255=m
-CONFIG_USB_SN9C102=m
+CONFIG_VIDEO_USBTV=m
 
 #
 # Analog TV USB devices
@@ -2531,8 +2364,9 @@ CONFIG_VIDEO_PVRUSB2_DVB=y
 CONFIG_VIDEO_HDPVR=m
 CONFIG_VIDEO_TLG2300=m
 CONFIG_VIDEO_USBVISION=m
+CONFIG_VIDEO_STK1160_COMMON=m
+# CONFIG_VIDEO_STK1160_AC97 is not set
 CONFIG_VIDEO_STK1160=m
-CONFIG_VIDEO_STK1160_AC97=y
 
 #
 # Analog/digital TV USB devices
@@ -2540,7 +2374,7 @@ CONFIG_VIDEO_STK1160_AC97=y
 CONFIG_VIDEO_AU0828=m
 CONFIG_VIDEO_AU0828_V4L2=y
 CONFIG_VIDEO_CX231XX=m
-# CONFIG_VIDEO_CX231XX_RC is not set
+CONFIG_VIDEO_CX231XX_RC=y
 CONFIG_VIDEO_CX231XX_ALSA=m
 CONFIG_VIDEO_CX231XX_DVB=m
 CONFIG_VIDEO_TM6000=m
@@ -2554,7 +2388,7 @@ CONFIG_DVB_USB=m
 # CONFIG_DVB_USB_DEBUG is not set
 CONFIG_DVB_USB_A800=m
 CONFIG_DVB_USB_DIBUSB_MB=m
-# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set
+CONFIG_DVB_USB_DIBUSB_MB_FAULTY=y
 CONFIG_DVB_USB_DIBUSB_MC=m
 CONFIG_DVB_USB_DIB0700=m
 CONFIG_DVB_USB_UMT_010=m
@@ -2593,12 +2427,13 @@ CONFIG_DVB_USB_RTL28XXU=m
 CONFIG_DVB_USB_DVBSKY=m
 CONFIG_SMS_USB_DRV=m
 CONFIG_DVB_B2C2_FLEXCOP_USB=m
-CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG=y
+# CONFIG_DVB_B2C2_FLEXCOP_USB_DEBUG is not set
 
 #
 # Webcam, TV (analog/digital) USB devices
 #
 CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_EM28XX_V4L2=m
 CONFIG_VIDEO_EM28XX_ALSA=m
 CONFIG_VIDEO_EM28XX_DVB=m
 CONFIG_VIDEO_EM28XX_RC=m
@@ -2614,7 +2449,6 @@ CONFIG_VIDEO_BCM2835_MMAL=m
 # Supported MMC/SDIO adapters
 #
 # CONFIG_SMS_SDIO_DRV is not set
-# CONFIG_MEDIA_PARPORT_SUPPORT is not set
 # CONFIG_RADIO_ADAPTERS is not set
 CONFIG_MEDIA_COMMON_OPTIONS=y
 
@@ -2625,7 +2459,6 @@ CONFIG_VIDEO_CX2341X=m
 CONFIG_VIDEO_TVEEPROM=m
 CONFIG_CYPRESS_FIRMWARE=m
 CONFIG_DVB_B2C2_FLEXCOP=m
-CONFIG_DVB_B2C2_FLEXCOP_DEBUG=y
 CONFIG_SMS_SIANO_MDTV=m
 CONFIG_SMS_SIANO_RC=y
 
@@ -2676,7 +2509,11 @@ CONFIG_VIDEO_MT9V011=m
 #
 
 #
-# Miscelaneous helper chips
+# Audio/Video compression chips
+#
+
+#
+# Miscellaneous helper chips
 #
 
 #
@@ -2709,6 +2546,7 @@ CONFIG_MEDIA_TUNER_FC0013=m
 CONFIG_MEDIA_TUNER_TDA18212=m
 CONFIG_MEDIA_TUNER_E4000=m
 CONFIG_MEDIA_TUNER_FC2580=m
+CONFIG_MEDIA_TUNER_M88TS2022=m
 CONFIG_MEDIA_TUNER_TUA9001=m
 CONFIG_MEDIA_TUNER_IT913X=m
 CONFIG_MEDIA_TUNER_R820T=m
@@ -2720,6 +2558,7 @@ CONFIG_DVB_STB0899=m
 CONFIG_DVB_STB6100=m
 CONFIG_DVB_STV090x=m
 CONFIG_DVB_STV6110x=m
+CONFIG_DVB_M88DS3103=m
 
 #
 # Multistandard (cable + terrestrial) frontends
@@ -2744,7 +2583,6 @@ CONFIG_DVB_TUNER_ITD1000=m
 CONFIG_DVB_TUNER_CX24113=m
 CONFIG_DVB_TDA826X=m
 CONFIG_DVB_CX24116=m
-CONFIG_DVB_M88DS3103=m
 CONFIG_DVB_SI21XX=m
 CONFIG_DVB_TS2020=m
 CONFIG_DVB_DS3000=m
@@ -2814,6 +2652,7 @@ CONFIG_DVB_ISL6423=m
 CONFIG_DVB_A8293=m
 CONFIG_DVB_LGS8GXX=m
 CONFIG_DVB_ATBM8830=m
+CONFIG_DVB_DVBSKY_M88DS3103=m
 CONFIG_DVB_IX2505V=m
 CONFIG_DVB_IT913X_FE=m
 CONFIG_DVB_M88RS2000=m
@@ -2827,52 +2666,39 @@ CONFIG_DVB_AF9033=m
 #
 # Graphics support
 #
-CONFIG_DRM=m
-CONFIG_DRM_USB=m
-CONFIG_DRM_KMS_HELPER=m
-# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
-
-#
-# I2C encoder or helper chips
-#
-# CONFIG_DRM_I2C_CH7006 is not set
-# CONFIG_DRM_I2C_SIL164 is not set
-CONFIG_DRM_I2C_NXP_TDA998X=m
-CONFIG_DRM_UDL=m
-# CONFIG_DRM_TILCDC is not set
+# CONFIG_DRM is not set
 # CONFIG_VGASTATE is not set
-CONFIG_VIDEO_OUTPUT_CONTROL=m
-CONFIG_HDMI=y
+# 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=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_DEFERRED_IO=y
+# CONFIG_FB_SYS_FOPS is not set
 # CONFIG_FB_SVGALIB is not set
 # CONFIG_FB_MACMODES is not set
 # CONFIG_FB_BACKLIGHT is not set
-CONFIG_FB_MODE_HELPERS=y
-CONFIG_FB_TILEBLITTING=y
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
 
 #
 # Frame buffer hardware drivers
 #
 CONFIG_FB_BCM2708=y
-CONFIG_FB_ARMCLCD=y
-CONFIG_FB_UVESA=m
+# CONFIG_FB_ARMCLCD is not set
+# CONFIG_FB_UVESA is not set
+# CONFIG_FB_OPENCORES is not set
 # CONFIG_FB_S1D13XXX is not set
 # CONFIG_FB_TMIO is not set
-CONFIG_FB_SMSCUFX=m
-CONFIG_FB_UDL=m
+# CONFIG_FB_SMSCUFX is not set
+# CONFIG_FB_UDL is not set
 # CONFIG_FB_GOLDFISH is not set
 # CONFIG_FB_VIRTUAL is not set
 # CONFIG_FB_METRONOME is not set
@@ -2880,29 +2706,50 @@ CONFIG_FB_UDL=m
 # CONFIG_FB_AUO_K190X is not set
 # CONFIG_FB_SIMPLE is not set
 # CONFIG_EXYNOS_VIDEO is not set
-# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=m
+# CONFIG_LCD_L4F00242T03 is not set
+# CONFIG_LCD_LMS283GF05 is not set
+# CONFIG_LCD_LTV350QV is not set
+# CONFIG_LCD_ILI922X is not set
+# CONFIG_LCD_ILI9320 is not set
+# CONFIG_LCD_TDO24M is not set
+# CONFIG_LCD_VGG2432A4 is not set
+# CONFIG_LCD_PLATFORM is not set
+# CONFIG_LCD_S6E63M0 is not set
+# CONFIG_LCD_LD9040 is not set
+# CONFIG_LCD_AMS369FG06 is not set
+# CONFIG_LCD_LMS501KF03 is not set
+# CONFIG_LCD_HX8357 is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=m
+# CONFIG_BACKLIGHT_GENERIC is not set
+# CONFIG_BACKLIGHT_ADP8860 is not set
+# CONFIG_BACKLIGHT_ADP8870 is not set
+# CONFIG_BACKLIGHT_LM3630A is not set
+# CONFIG_BACKLIGHT_LM3639 is not set
+# CONFIG_BACKLIGHT_LP855X is not set
+# CONFIG_BACKLIGHT_GPIO is not set
+# CONFIG_BACKLIGHT_LV5207LP is not set
+# CONFIG_BACKLIGHT_BD6107 is not set
 
 #
 # Console display driver support
 #
 CONFIG_DUMMY_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
 # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
 CONFIG_LOGO=y
-CONFIG_LOGO_LINUX_MONO=y
-CONFIG_LOGO_LINUX_VGA16=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
 CONFIG_LOGO_LINUX_CLUT224=y
-# CONFIG_FB_SSD1307 is not set
-CONFIG_SOUND=m
+CONFIG_SOUND=y
 CONFIG_SOUND_OSS_CORE=y
 CONFIG_SOUND_OSS_CORE_PRECLAIM=y
 CONFIG_SND=m
 CONFIG_SND_TIMER=m
 CONFIG_SND_PCM=m
+CONFIG_SND_DMAENGINE_PCM=m
 CONFIG_SND_HWDEP=m
 CONFIG_SND_RAWMIDI=m
 CONFIG_SND_COMPRESS_OFFLOAD=m
@@ -2916,8 +2763,8 @@ CONFIG_SND_PCM_OSS_PLUGINS=y
 CONFIG_SND_SEQUENCER_OSS=y
 CONFIG_SND_HRTIMER=m
 CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
-CONFIG_SND_DYNAMIC_MINORS=y
-# CONFIG_SND_SUPPORT_OLD_API is not set
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
 CONFIG_SND_VERBOSE_PROCFS=y
 # CONFIG_SND_VERBOSE_PRINTK is not set
 # CONFIG_SND_DEBUG is not set
@@ -2934,14 +2781,11 @@ CONFIG_SND_DUMMY=m
 CONFIG_SND_ALOOP=m
 CONFIG_SND_VIRMIDI=m
 CONFIG_SND_MTPAV=m
-CONFIG_SND_MTS64=m
 CONFIG_SND_SERIAL_U16550=m
 CONFIG_SND_MPU401=m
-CONFIG_SND_PORTMAN2X4=m
-CONFIG_SND_AC97_POWER_SAVE=y
-CONFIG_SND_AC97_POWER_SAVE_DEFAULT=60
+# 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
@@ -2950,24 +2794,25 @@ CONFIG_SND_USB_UA101=m
 CONFIG_SND_USB_CAIAQ=m
 CONFIG_SND_USB_CAIAQ_INPUT=y
 CONFIG_SND_USB_6FIRE=m
+# CONFIG_SND_USB_HIFACE is not set
 CONFIG_SND_SOC=m
-CONFIG_SND_SOC_DMAENGINE_PCM=y
 CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
 # CONFIG_SND_ATMEL_SOC is not set
 CONFIG_SND_BCM2708_SOC_I2S=m
 CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
+# CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS is not set
 CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m
+CONFIG_SND_BCM2708_SOC_HIFIBERRY_AMP=m
 CONFIG_SND_BCM2708_SOC_RPI_DAC=m
 # CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC is not set
-CONFIG_SND_DESIGNWARE_I2S=m
+# CONFIG_SND_DESIGNWARE_I2S is not set
 CONFIG_SND_SOC_I2C_AND_SPI=m
-# CONFIG_SND_SOC_ALL_CODECS is not set
 CONFIG_SND_SOC_PCM1794A=m
 CONFIG_SND_SOC_PCM5102A=m
-# CONFIG_SND_SOC_PCM512x is not set
+CONFIG_SND_SOC_TAS5713=m
 CONFIG_SND_SOC_WM8804=m
 CONFIG_SND_SIMPLE_CARD=m
-# CONFIG_SOUND_PRIME is not set
+CONFIG_SOUND_PRIME=m
 CONFIG_AC97_BUS=m
 
 #
@@ -2975,50 +2820,52 @@ CONFIG_AC97_BUS=m
 #
 CONFIG_HID=y
 # CONFIG_HID_BATTERY_STRENGTH is not set
-# CONFIG_HIDRAW is not set
+CONFIG_HIDRAW=y
 # CONFIG_UHID is not set
 CONFIG_HID_GENERIC=y
 
 #
 # Special HID drivers
 #
-CONFIG_HID_A4TECH=y
+CONFIG_HID_A4TECH=m
 CONFIG_HID_ACRUX=m
 # CONFIG_HID_ACRUX_FF is not set
-CONFIG_HID_APPLE=y
+CONFIG_HID_APPLE=m
 # CONFIG_HID_APPLEIR is not set
-CONFIG_HID_AUREAL=m
-CONFIG_HID_BELKIN=y
-CONFIG_HID_CHERRY=y
-CONFIG_HID_CHICONY=y
-CONFIG_HID_PRODIKEYS=m
-CONFIG_HID_CYPRESS=y
+# CONFIG_HID_AUREAL is not set
+CONFIG_HID_BELKIN=m
+CONFIG_HID_CHERRY=m
+CONFIG_HID_CHICONY=m
+# CONFIG_HID_PRODIKEYS is not set
+CONFIG_HID_CYPRESS=m
 CONFIG_HID_DRAGONRISE=m
 # CONFIG_DRAGONRISE_FF is not set
-# CONFIG_HID_EMS_FF is not set
+CONFIG_HID_EMS_FF=m
 CONFIG_HID_ELECOM=m
-CONFIG_HID_EZKEY=y
+CONFIG_HID_ELO=m
+CONFIG_HID_EZKEY=m
 CONFIG_HID_HOLTEK=m
 # CONFIG_HOLTEK_FF is not set
+# CONFIG_HID_HUION is not set
 CONFIG_HID_KEYTOUCH=m
 CONFIG_HID_KYE=m
 CONFIG_HID_UCLOGIC=m
 CONFIG_HID_WALTOP=m
 CONFIG_HID_GYRATION=m
-CONFIG_HID_ICADE=m
+# CONFIG_HID_ICADE is not set
 CONFIG_HID_TWINHAN=m
-CONFIG_HID_KENSINGTON=y
+CONFIG_HID_KENSINGTON=m
 CONFIG_HID_LCPOWER=m
-CONFIG_HID_LENOVO_TPKBD=m
-CONFIG_HID_LOGITECH=y
-CONFIG_HID_LOGITECH_DJ=m
+# CONFIG_HID_LENOVO_TPKBD is not set
+CONFIG_HID_LOGITECH=m
+# CONFIG_HID_LOGITECH_DJ is not set
 # CONFIG_LOGITECH_FF is not set
 # CONFIG_LOGIRUMBLEPAD2_FF is not set
 # CONFIG_LOGIG940_FF is not set
 # CONFIG_LOGIWHEELS_FF is not set
 CONFIG_HID_MAGICMOUSE=m
-CONFIG_HID_MICROSOFT=y
-CONFIG_HID_MONTEREY=y
+CONFIG_HID_MICROSOFT=m
+CONFIG_HID_MONTEREY=m
 CONFIG_HID_MULTITOUCH=m
 CONFIG_HID_NTRIG=m
 CONFIG_HID_ORTEK=m
@@ -3026,49 +2873,49 @@ CONFIG_HID_PANTHERLORD=m
 # CONFIG_PANTHERLORD_FF is not set
 CONFIG_HID_PETALYNX=m
 CONFIG_HID_PICOLCD=m
-CONFIG_HID_PICOLCD_FB=y
-CONFIG_HID_PICOLCD_LEDS=y
-CONFIG_HID_PICOLCD_CIR=y
-CONFIG_HID_PRIMAX=m
-CONFIG_HID_PS3REMOTE=m
+# CONFIG_HID_PICOLCD_FB is not set
+# CONFIG_HID_PICOLCD_BACKLIGHT is not set
+# CONFIG_HID_PICOLCD_LCD is not set
+# CONFIG_HID_PICOLCD_LEDS is not set
+# CONFIG_HID_PICOLCD_CIR is not set
+# CONFIG_HID_PRIMAX is not set
 CONFIG_HID_ROCCAT=m
-CONFIG_HID_SAITEK=m
+# CONFIG_HID_SAITEK is not set
 CONFIG_HID_SAMSUNG=m
 CONFIG_HID_SONY=m
+# CONFIG_SONY_FF is not set
 CONFIG_HID_SPEEDLINK=m
-CONFIG_HID_STEELSERIES=m
+# CONFIG_HID_STEELSERIES is not set
 CONFIG_HID_SUNPLUS=m
 CONFIG_HID_GREENASIA=m
 # CONFIG_GREENASIA_FF is not set
 CONFIG_HID_SMARTJOYPLUS=m
 # CONFIG_SMARTJOYPLUS_FF is not set
-CONFIG_HID_TIVO=m
+# CONFIG_HID_TIVO is not set
 CONFIG_HID_TOPSEED=m
 CONFIG_HID_THINGM=m
 CONFIG_HID_THRUSTMASTER=m
 # CONFIG_THRUSTMASTER_FF is not set
 CONFIG_HID_WACOM=m
 CONFIG_HID_WIIMOTE=m
-CONFIG_HID_WIIMOTE_EXT=y
+CONFIG_HID_XINMO=m
 CONFIG_HID_ZEROPLUS=m
 # CONFIG_ZEROPLUS_FF is not set
 CONFIG_HID_ZYDACRON=m
-CONFIG_HID_SENSOR_HUB=m
+# CONFIG_HID_SENSOR_HUB is not set
 
 #
 # USB HID support
 #
-CONFIG_USB_HID=m
-# CONFIG_HID_PID is not set
+CONFIG_USB_HID=y
+CONFIG_HID_PID=y
 CONFIG_USB_HIDDEV=y
 
 #
 # I2C HID support
 #
-CONFIG_I2C_HID=m
-# 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_I2C_HID is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
 CONFIG_USB_SUPPORT=y
 CONFIG_USB_COMMON=y
 CONFIG_USB_ARCH_HAS_HCD=y
@@ -3080,25 +2927,32 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 # Miscellaneous USB options
 #
 CONFIG_USB_DEFAULT_PERSIST=y
-CONFIG_USB_DYNAMIC_MINORS=y
-# CONFIG_USB_OTG is not set
-# CONFIG_USB_MON is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_MON=m
 # CONFIG_USB_WUSB_CBAF is not set
 
 #
 # USB Host Controller Drivers
 #
 # CONFIG_USB_C67X00_HCD is not set
+# CONFIG_USB_XHCI_HCD is not set
+# CONFIG_USB_EHCI_HCD is not set
 # 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_FUSBH200_HCD is not set
+# CONFIG_USB_FOTG210_HCD is not set
+# CONFIG_USB_OHCI_HCD is not set
 # CONFIG_USB_U132_HCD is not set
 # CONFIG_USB_SL811_HCD is not set
 # CONFIG_USB_R8A66597_HCD is not set
 CONFIG_USB_DWCOTG=y
-CONFIG_USB_HCD_BCMA=y
+# CONFIG_USB_HCD_BCMA is not set
 # CONFIG_USB_HCD_SSB is not set
+# CONFIG_USB_HCD_TEST_MODE is not set
 
 #
 # USB Device Class drivers
@@ -3106,7 +2960,7 @@ CONFIG_USB_HCD_BCMA=y
 CONFIG_USB_ACM=m
 CONFIG_USB_PRINTER=m
 CONFIG_USB_WDM=m
-CONFIG_USB_TMC=m
+# CONFIG_USB_TMC is not set
 
 #
 # NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
@@ -3115,10 +2969,9 @@ CONFIG_USB_TMC=m
 #
 # also be needed; see USB_STORAGE Help for more info
 #
-CONFIG_USB_STORAGE=m
+CONFIG_USB_STORAGE=y
 # CONFIG_USB_STORAGE_DEBUG is not set
 CONFIG_USB_STORAGE_REALTEK=m
-CONFIG_REALTEK_AUTOPM=y
 CONFIG_USB_STORAGE_DATAFAB=m
 CONFIG_USB_STORAGE_FREECOM=m
 CONFIG_USB_STORAGE_ISD200=m
@@ -3135,17 +2988,18 @@ CONFIG_USB_STORAGE_ENE_UB6250=m
 #
 # USB Imaging devices
 #
-# CONFIG_USB_MDC800 is not set
-# CONFIG_USB_MICROTEK is not set
+CONFIG_USB_MDC800=m
+CONFIG_USB_MICROTEK=m
+# CONFIG_USB_MUSB_HDRC is not set
 # CONFIG_USB_DWC3 is not set
-# CONFIG_USB_CHIPIDEA is not set
+# CONFIG_USB_DWC2 is not set
 
 #
 # USB port drivers
 #
-CONFIG_USB_USS720=m
 CONFIG_USB_SERIAL=m
 CONFIG_USB_SERIAL_GENERIC=y
+# CONFIG_USB_SERIAL_SIMPLE is not set
 CONFIG_USB_SERIAL_AIRCABLE=m
 CONFIG_USB_SERIAL_ARK3116=m
 CONFIG_USB_SERIAL_BELKIN=m
@@ -3156,7 +3010,6 @@ CONFIG_USB_SERIAL_CP210X=m
 CONFIG_USB_SERIAL_CYPRESS_M8=m
 CONFIG_USB_SERIAL_EMPEG=m
 CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
 CONFIG_USB_SERIAL_VISOR=m
 CONFIG_USB_SERIAL_IPAQ=m
 CONFIG_USB_SERIAL_IR=m
@@ -3173,19 +3026,16 @@ CONFIG_USB_SERIAL_KOBIL_SCT=m
 CONFIG_USB_SERIAL_MCT_U232=m
 CONFIG_USB_SERIAL_METRO=m
 CONFIG_USB_SERIAL_MOS7720=m
-# CONFIG_USB_SERIAL_MOS7715_PARPORT is not set
 CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_MOTOROLA=m
+# CONFIG_USB_SERIAL_MXUPORT is not set
 CONFIG_USB_SERIAL_NAVMAN=m
 CONFIG_USB_SERIAL_PL2303=m
 CONFIG_USB_SERIAL_OTI6858=m
 CONFIG_USB_SERIAL_QCAUX=m
 CONFIG_USB_SERIAL_QUALCOMM=m
 CONFIG_USB_SERIAL_SPCP8X5=m
-CONFIG_USB_SERIAL_HP4X=m
 CONFIG_USB_SERIAL_SAFE=m
 # CONFIG_USB_SERIAL_SAFE_PADDED is not set
-CONFIG_USB_SERIAL_SIEMENS_MPI=m
 CONFIG_USB_SERIAL_SIERRAWIRELESS=m
 CONFIG_USB_SERIAL_SYMBOL=m
 CONFIG_USB_SERIAL_TI=m
@@ -3195,45 +3045,57 @@ CONFIG_USB_SERIAL_WWAN=m
 CONFIG_USB_SERIAL_OPTION=m
 CONFIG_USB_SERIAL_OMNINET=m
 CONFIG_USB_SERIAL_OPTICON=m
-CONFIG_USB_SERIAL_VIVOPAY_SERIAL=m
 CONFIG_USB_SERIAL_XSENS_MT=m
-CONFIG_USB_SERIAL_ZIO=m
 CONFIG_USB_SERIAL_WISHBONE=m
 CONFIG_USB_SERIAL_ZTE=m
 CONFIG_USB_SERIAL_SSU100=m
 CONFIG_USB_SERIAL_QT2=m
-# CONFIG_USB_SERIAL_DEBUG is not set
+CONFIG_USB_SERIAL_DEBUG=m
 
 #
 # USB Miscellaneous drivers
 #
 CONFIG_USB_EMI62=m
 CONFIG_USB_EMI26=m
-# CONFIG_USB_ADUTUX is not set
+CONFIG_USB_ADUTUX=m
 CONFIG_USB_SEVSEG=m
-# CONFIG_USB_RIO500 is not set
-# CONFIG_USB_LEGOTOWER is not set
+CONFIG_USB_RIO500=m
+CONFIG_USB_LEGOTOWER=m
 CONFIG_USB_LCD=m
 CONFIG_USB_LED=m
 CONFIG_USB_CYPRESS_CY7C63=m
 CONFIG_USB_CYTHERM=m
-# CONFIG_USB_IDMOUSE is not set
+CONFIG_USB_IDMOUSE=m
 CONFIG_USB_FTDI_ELAN=m
-# CONFIG_USB_APPLEDISPLAY is not set
-# CONFIG_USB_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
+CONFIG_USB_APPLEDISPLAY=m
+CONFIG_USB_LD=m
+CONFIG_USB_TRANCEVIBRATOR=m
 CONFIG_USB_IOWARRIOR=m
-# CONFIG_USB_TEST is not set
+CONFIG_USB_TEST=m
+# CONFIG_USB_EHSET_TEST_FIXTURE is not set
 CONFIG_USB_ISIGHTFW=m
 CONFIG_USB_YUREX=m
 CONFIG_USB_EZUSB_FX2=m
-CONFIG_USB_HSIC_USB3503=m
+# CONFIG_USB_HSIC_USB3503 is not set
 CONFIG_USB_ATM=m
 CONFIG_USB_SPEEDTOUCH=m
 CONFIG_USB_CXACRU=m
 CONFIG_USB_UEAGLEATM=m
 CONFIG_USB_XUSBATM=m
+
+#
+# USB Physical Layer drivers
+#
 # CONFIG_USB_PHY is not set
+# CONFIG_USB_OTG_FSM is not set
+# CONFIG_NOP_USB_XCEIV is not set
+# CONFIG_AM335X_PHY_USB is not set
+# CONFIG_SAMSUNG_USB2PHY is not set
+# CONFIG_SAMSUNG_USB3PHY is not set
+# CONFIG_USB_GPIO_VBUS is not set
+# CONFIG_USB_ISP1301 is not set
+# CONFIG_USB_RCAR_PHY is not set
+# CONFIG_USB_ULPI is not set
 # CONFIG_USB_GADGET is not set
 CONFIG_MMC=y
 # CONFIG_MMC_DEBUG is not set
@@ -3244,80 +3106,65 @@ CONFIG_MMC=y
 # MMC/SD/SDIO Card Drivers
 #
 CONFIG_MMC_BLOCK=y
-CONFIG_MMC_BLOCK_MINORS=8
+CONFIG_MMC_BLOCK_MINORS=32
 CONFIG_MMC_BLOCK_BOUNCE=y
-CONFIG_SDIO_UART=m
-CONFIG_MMC_TEST=m
+# CONFIG_SDIO_UART is not set
+# CONFIG_MMC_TEST is not set
 
 #
 # MMC/SD/SDIO Host Controller Drivers
 #
-CONFIG_MMC_ARMMMCI=m
+# CONFIG_MMC_ARMMMCI is not set
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_IO_ACCESSORS=y
-CONFIG_MMC_SDHCI_PLTFM=m
-CONFIG_MMC_SDHCI_PXAV3=m
-CONFIG_MMC_SDHCI_PXAV2=m
+CONFIG_MMC_SDHCI_PLTFM=y
+# CONFIG_MMC_SDHCI_PXAV3 is not set
+# CONFIG_MMC_SDHCI_PXAV2 is not set
 CONFIG_MMC_SDHCI_BCM2708=y
-CONFIG_MMC_SDHCI_BCM2708_DMA=y
-# CONFIG_MMC_SPI is not set
-CONFIG_MMC_DW=m
-# CONFIG_MMC_DW_IDMAC is not set
-CONFIG_MMC_DW_PLTFM=m
-CONFIG_MMC_DW_EXYNOS=m
-CONFIG_MMC_VUB300=m
-CONFIG_MMC_USHC=m
-CONFIG_MEMSTICK=m
-# CONFIG_MEMSTICK_DEBUG is not set
-
-#
-# MemoryStick drivers
-#
-# CONFIG_MEMSTICK_UNSAFE_RESUME is not set
-CONFIG_MSPRO_BLOCK=m
-
-#
-# MemoryStick Host Controller Drivers
-#
+# CONFIG_MMC_SDHCI_BCM2708_DMA is not set
+CONFIG_MMC_BCM2835=y
+# CONFIG_MMC_BCM2835_DMA is not set
+CONFIG_MMC_SPI=m
+# CONFIG_MMC_DW is not set
+# CONFIG_MMC_VUB300 is not set
+# CONFIG_MMC_USHC is not set
+# CONFIG_MEMSTICK is not set
 CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_CLASS=m
 
 #
 # LED drivers
 #
-CONFIG_LEDS_LM3530=m
-CONFIG_LEDS_LM3642=m
-CONFIG_LEDS_PCA9532=m
-CONFIG_LEDS_PCA9532_GPIO=y
+# CONFIG_LEDS_LM3530 is not set
+# CONFIG_LEDS_LM3642 is not set
+# CONFIG_LEDS_PCA9532 is not set
 CONFIG_LEDS_GPIO=m
-CONFIG_LEDS_LP3944=m
-CONFIG_LEDS_LP55XX_COMMON=m
-CONFIG_LEDS_LP5521=m
-CONFIG_LEDS_LP5523=m
-CONFIG_LEDS_LP5562=m
-CONFIG_LEDS_PCA955X=m
-CONFIG_LEDS_PCA9633=m
-CONFIG_LEDS_DAC124S085=m
-CONFIG_LEDS_PWM=m
-CONFIG_LEDS_REGULATOR=m
-CONFIG_LEDS_BD2802=m
-CONFIG_LEDS_LT3593=m
-# CONFIG_LEDS_RENESAS_TPU is not set
-CONFIG_LEDS_TCA6507=m
-CONFIG_LEDS_LM355x=m
-CONFIG_LEDS_OT200=m
-CONFIG_LEDS_BLINKM=m
+# CONFIG_LEDS_LP3944 is not set
+# CONFIG_LEDS_LP5521 is not set
+# CONFIG_LEDS_LP5523 is not set
+# CONFIG_LEDS_LP5562 is not set
+# CONFIG_LEDS_LP8501 is not set
+# CONFIG_LEDS_PCA955X is not set
+# CONFIG_LEDS_PCA963X is not set
+# CONFIG_LEDS_PCA9685 is not set
+# CONFIG_LEDS_DAC124S085 is not set
+# CONFIG_LEDS_BD2802 is not set
+# CONFIG_LEDS_LT3593 is not set
+# CONFIG_LEDS_TCA6507 is not set
+# CONFIG_LEDS_LM355x is not set
+# CONFIG_LEDS_OT200 is not set
+# CONFIG_LEDS_BLINKM is not set
 
 #
 # LED Triggers
 #
 CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=m
-CONFIG_LEDS_TRIGGER_ONESHOT=m
-CONFIG_LEDS_TRIGGER_HEARTBEAT=m
-CONFIG_LEDS_TRIGGER_BACKLIGHT=m
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_ONESHOT=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=y
 CONFIG_LEDS_TRIGGER_CPU=y
-CONFIG_LEDS_TRIGGER_GPIO=m
+CONFIG_LEDS_TRIGGER_GPIO=y
 CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
 
 #
@@ -3331,7 +3178,8 @@ CONFIG_LEDS_TRIGGER_NETDEV=m
 CONFIG_RTC_LIB=y
 CONFIG_RTC_CLASS=y
 # CONFIG_RTC_HCTOSYS is not set
-# CONFIG_RTC_SYSTOHC is not set
+CONFIG_RTC_SYSTOHC=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
 # CONFIG_RTC_DEBUG is not set
 
 #
@@ -3354,12 +3202,14 @@ CONFIG_RTC_DRV_MAX6900=m
 CONFIG_RTC_DRV_RS5C372=m
 CONFIG_RTC_DRV_ISL1208=m
 CONFIG_RTC_DRV_ISL12022=m
+# CONFIG_RTC_DRV_ISL12057 is not set
 CONFIG_RTC_DRV_X1205=m
+CONFIG_RTC_DRV_PCF2127=m
 CONFIG_RTC_DRV_PCF8523=m
 CONFIG_RTC_DRV_PCF8563=m
 CONFIG_RTC_DRV_PCF8583=m
 CONFIG_RTC_DRV_M41T80=m
-CONFIG_RTC_DRV_M41T80_WDT=y
+# CONFIG_RTC_DRV_M41T80_WDT is not set
 CONFIG_RTC_DRV_BQ32K=m
 CONFIG_RTC_DRV_S35390A=m
 CONFIG_RTC_DRV_FM3130=m
@@ -3385,58 +3235,56 @@ CONFIG_RTC_DRV_RX4581=m
 #
 # Platform RTC drivers
 #
-CONFIG_RTC_DRV_CMOS=m
-CONFIG_RTC_DRV_DS1286=m
-CONFIG_RTC_DRV_DS1511=m
-CONFIG_RTC_DRV_DS1553=m
-CONFIG_RTC_DRV_DS1742=m
-CONFIG_RTC_DRV_STK17TA8=m
-CONFIG_RTC_DRV_M48T86=m
-CONFIG_RTC_DRV_M48T35=m
-CONFIG_RTC_DRV_M48T59=m
-CONFIG_RTC_DRV_MSM6242=m
-CONFIG_RTC_DRV_BQ4802=m
-CONFIG_RTC_DRV_RP5C01=m
-CONFIG_RTC_DRV_V3020=m
-CONFIG_RTC_DRV_DS2404=m
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1286 is not set
+# CONFIG_RTC_DRV_DS1511 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T35 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_MSM6242 is not set
+# CONFIG_RTC_DRV_BQ4802 is not set
+# CONFIG_RTC_DRV_RP5C01 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+# CONFIG_RTC_DRV_DS2404 is not set
 
 #
 # on-CPU RTC drivers
 #
-CONFIG_RTC_DRV_PL030=m
-CONFIG_RTC_DRV_PL031=m
-CONFIG_RTC_DRV_SNVS=m
+# CONFIG_RTC_DRV_PL030 is not set
+# CONFIG_RTC_DRV_PL031 is not set
+# CONFIG_RTC_DRV_MOXART is not set
 
 #
 # HID Sensor RTC drivers
 #
-CONFIG_RTC_DRV_HID_SENSOR_TIME=m
+# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
 CONFIG_DMADEVICES=y
 # CONFIG_DMADEVICES_DEBUG is not set
 
 #
 # DMA Devices
 #
-CONFIG_AMBA_PL08X=y
-CONFIG_DW_DMAC=y
-# CONFIG_DW_DMAC_BIG_ENDIAN_IO is not set
+# CONFIG_AMBA_PL08X is not set
+# CONFIG_DW_DMAC_CORE is not set
+# CONFIG_DW_DMAC is not set
 # CONFIG_TIMB_DMA is not set
-CONFIG_PL330_DMA=y
-CONFIG_DMA_BCM2708=y
+# CONFIG_PL330_DMA is not set
+CONFIG_DMA_BCM2835=y
 CONFIG_DMA_ENGINE=y
 CONFIG_DMA_VIRTUAL_CHANNELS=y
-CONFIG_DMA_OF=y
 
 #
 # DMA Clients
 #
-CONFIG_ASYNC_TX_DMA=y
-CONFIG_DMATEST=m
+# CONFIG_ASYNC_TX_DMA is not set
+# CONFIG_DMATEST is not set
 # CONFIG_AUXDISPLAY is not set
 CONFIG_UIO=m
-CONFIG_UIO_PDRV=m
 CONFIG_UIO_PDRV_GENIRQ=m
-CONFIG_UIO_DMEM_GENIRQ=m
+# CONFIG_UIO_DMEM_GENIRQ is not set
 # CONFIG_VIRT_DRIVERS is not set
 
 #
@@ -3448,120 +3296,19 @@ CONFIG_UIO_DMEM_GENIRQ=m
 # Microsoft Hyper-V guest support
 #
 CONFIG_STAGING=y
-CONFIG_USBIP_CORE=m
-CONFIG_USBIP_VHCI_HCD=m
-CONFIG_USBIP_HOST=m
-# CONFIG_USBIP_DEBUG is not set
-# CONFIG_W35UND is not set
-# CONFIG_PRISM2_USB is not set
-CONFIG_ECHO=m
+# CONFIG_USBIP_CORE is not set
+CONFIG_W35UND=m
+CONFIG_PRISM2_USB=m
+# CONFIG_ECHO is not set
 # CONFIG_COMEDI is not set
-# CONFIG_ASUS_OLED is not set
-# CONFIG_PANEL is not set
 # CONFIG_RTLLIB is not set
-# CONFIG_R8712U is not set
-CONFIG_RTS5139=m
-# CONFIG_RTS5139_DEBUG is not set
+CONFIG_R8712U=m
+# CONFIG_R8188EU is not set
+# CONFIG_RTS5139 is not set
 # CONFIG_TRANZPORT is not set
 # CONFIG_LINE6_USB is not set
 # CONFIG_USB_SERIAL_QUATECH2 is not set
-# CONFIG_VT6656 is not set
-
-#
-# IIO staging drivers
-#
-
-#
-# Accelerometers
-#
-# CONFIG_ADIS16201 is not set
-# CONFIG_ADIS16203 is not set
-# CONFIG_ADIS16204 is not set
-# CONFIG_ADIS16209 is not set
-# CONFIG_ADIS16220 is not set
-# CONFIG_ADIS16240 is not set
-# CONFIG_LIS3L02DQ is not set
-
-#
-# Analog to digital converters
-#
-# CONFIG_AD7291 is not set
-# CONFIG_AD7606 is not set
-# CONFIG_AD799X is not set
-# CONFIG_AD7780 is not set
-# CONFIG_AD7816 is not set
-# CONFIG_AD7192 is not set
-# CONFIG_AD7280 is not set
-
-#
-# Analog digital bi-direction converters
-#
-# CONFIG_ADT7316 is not set
-
-#
-# Capacitance to digital converters
-#
-# CONFIG_AD7150 is not set
-# CONFIG_AD7152 is not set
-# CONFIG_AD7746 is not set
-
-#
-# Direct Digital Synthesis
-#
-# CONFIG_AD5930 is not set
-# CONFIG_AD9832 is not set
-# CONFIG_AD9834 is not set
-# CONFIG_AD9850 is not set
-# CONFIG_AD9852 is not set
-# CONFIG_AD9910 is not set
-# CONFIG_AD9951 is not set
-
-#
-# Digital gyroscope sensors
-#
-# CONFIG_ADIS16060 is not set
-# CONFIG_ADIS16130 is not set
-# CONFIG_ADIS16260 is not set
-
-#
-# Network Analyzer, Impedance Converters
-#
-# CONFIG_AD5933 is not set
-
-#
-# Light sensors
-#
-# CONFIG_SENSORS_ISL29018 is not set
-# CONFIG_SENSORS_ISL29028 is not set
-# CONFIG_TSL2583 is not set
-# CONFIG_TSL2x7x is not set
-
-#
-# Magnetometer sensors
-#
-# CONFIG_SENSORS_HMC5843 is not set
-
-#
-# Active energy metering IC
-#
-# CONFIG_ADE7753 is not set
-# CONFIG_ADE7754 is not set
-# CONFIG_ADE7758 is not set
-# CONFIG_ADE7759 is not set
-# CONFIG_ADE7854 is not set
-
-#
-# Resolver to digital converters
-#
-# CONFIG_AD2S90 is not set
-# CONFIG_AD2S1200 is not set
-# CONFIG_AD2S1210 is not set
-
-#
-# Triggers - standalone
-#
-# CONFIG_IIO_SIMPLE_DUMMY is not set
-# CONFIG_ZSMALLOC is not set
+CONFIG_VT6656=m
 # CONFIG_USB_ENESTORAGE is not set
 # CONFIG_BCM_WIMAX is not set
 # CONFIG_FT1000 is not set
@@ -3569,10 +3316,35 @@ CONFIG_RTS5139=m
 #
 # Speakup console speech
 #
-# CONFIG_SPEAKUP is not set
+CONFIG_SPEAKUP=m
+# CONFIG_SPEAKUP_SYNTH_ACNTSA is not set
+# CONFIG_SPEAKUP_SYNTH_APOLLO is not set
+# CONFIG_SPEAKUP_SYNTH_AUDPTR is not set
+# CONFIG_SPEAKUP_SYNTH_BNS is not set
+# CONFIG_SPEAKUP_SYNTH_DECTLK is not set
+# CONFIG_SPEAKUP_SYNTH_DECEXT is not set
+# CONFIG_SPEAKUP_SYNTH_LTLK is not set
+CONFIG_SPEAKUP_SYNTH_SOFT=m
+# CONFIG_SPEAKUP_SYNTH_SPKOUT is not set
+# CONFIG_SPEAKUP_SYNTH_TXPRT is not set
+# CONFIG_SPEAKUP_SYNTH_DUMMY 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_STAGING_MEDIA=y
+CONFIG_DVB_AS102=m
+# CONFIG_VIDEO_GO7007 is not set
+# CONFIG_USB_MSI3101 is not set
+# CONFIG_VIDEO_TCM825X is not set
+CONFIG_USB_SN9C102=m
+CONFIG_LIRC_STAGING=y
+CONFIG_LIRC_IGORPLUGUSB=m
+CONFIG_LIRC_IMON=m
+CONFIG_LIRC_RPI=m
+CONFIG_LIRC_SASEM=m
+CONFIG_LIRC_SERIAL=m
+CONFIG_LIRC_SERIAL_TRANSMITTER=y
+# CONFIG_LIRC_SIR is not set
+# CONFIG_LIRC_ZILOG is not set
 
 #
 # Android
@@ -3580,10 +3352,11 @@ CONFIG_RTS5139=m
 # CONFIG_ANDROID is not set
 # CONFIG_USB_WPAN_HCD is not set
 # CONFIG_WIMAX_GDM72XX is not set
-# CONFIG_CSR_WIFI is not set
+# CONFIG_LTE_GDM724X is not set
 # CONFIG_CED1401 is not set
 # CONFIG_DGRP is not set
-# CONFIG_ZCACHE is not set
+# CONFIG_LUSTRE_FS is not set
+# CONFIG_DGAP is not set
 CONFIG_CLKDEV_LOOKUP=y
 
 #
@@ -3603,110 +3376,18 @@ CONFIG_CLKDEV_LOOKUP=y
 # CONFIG_PM_DEVFREQ is not set
 # CONFIG_EXTCON is not set
 # CONFIG_MEMORY is not set
-CONFIG_IIO=m
-# CONFIG_IIO_BUFFER is not set
-# CONFIG_IIO_TRIGGER is not set
-
-#
-# Accelerometers
-#
-# CONFIG_HID_SENSOR_ACCEL_3D is not set
-# CONFIG_KXSD9 is not set
-# CONFIG_IIO_ST_ACCEL_3AXIS is not set
-
-#
-# Analog to digital converters
-#
-# CONFIG_AD7266 is not set
-# CONFIG_AD7298 is not set
-# CONFIG_AD7923 is not set
-# CONFIG_AD7791 is not set
-# CONFIG_AD7793 is not set
-# CONFIG_AD7476 is not set
-# CONFIG_AD7887 is not set
-# CONFIG_EXYNOS_ADC is not set
-# CONFIG_MAX1363 is not set
-# CONFIG_TI_ADC081C is not set
-
-#
-# Amplifiers
-#
-# CONFIG_AD8366 is not set
-
-#
-# Hid Sensor IIO Common
-#
-CONFIG_HID_SENSOR_IIO_COMMON=m
-# CONFIG_HID_SENSOR_IIO_TRIGGER is not set
-# CONFIG_HID_SENSOR_ENUM_BASE_QUIRKS is not set
-
-#
-# Digital to analog converters
-#
-# CONFIG_AD5064 is not set
-# CONFIG_AD5360 is not set
-# CONFIG_AD5380 is not set
-# CONFIG_AD5421 is not set
-# CONFIG_AD5624R_SPI is not set
-# CONFIG_AD5446 is not set
-# CONFIG_AD5449 is not set
-# CONFIG_AD5504 is not set
-# CONFIG_AD5755 is not set
-# CONFIG_AD5764 is not set
-# CONFIG_AD5791 is not set
-# CONFIG_AD5686 is not set
-# CONFIG_MAX517 is not set
-# CONFIG_MCP4725 is not set
-
-#
-# Frequency Synthesizers DDS/PLL
-#
-
-#
-# Clock Generator/Distribution
-#
-# CONFIG_AD9523 is not set
-
-#
-# Phase-Locked Loop (PLL) frequency synthesizers
-#
-# CONFIG_ADF4350 is not set
-
-#
-# Digital gyroscope sensors
-#
-# CONFIG_ADIS16080 is not set
-# CONFIG_ADIS16136 is not set
-# CONFIG_ADXRS450 is not set
-# CONFIG_HID_SENSOR_GYRO_3D is not set
-# CONFIG_IIO_ST_GYRO_3AXIS is not set
-# CONFIG_ITG3200 is not set
-
-#
-# Inertial measurement units
-#
-# CONFIG_ADIS16400 is not set
-# CONFIG_ADIS16480 is not set
-# CONFIG_INV_MPU6050_IIO is not set
-
-#
-# Light sensors
-#
-# CONFIG_ADJD_S311 is not set
-# CONFIG_SENSORS_TSL2563 is not set
-# CONFIG_VCNL4000 is not set
-# CONFIG_HID_SENSOR_ALS is not set
+# CONFIG_IIO is not set
+# CONFIG_PWM is not set
+# CONFIG_IPACK_BUS is not set
+# CONFIG_RESET_CONTROLLER is not set
+# CONFIG_FMC is not set
 
 #
-# Magnetometer sensors
+# PHY Subsystem
 #
-# CONFIG_AK8975 is not set
-# CONFIG_HID_SENSOR_MAGNETOMETER_3D is not set
-# CONFIG_IIO_ST_MAGN_3AXIS is not set
-CONFIG_PWM=y
-CONFIG_IRQCHIP=y
-# CONFIG_IPACK_BUS is not set
-# CONFIG_RESET_CONTROLLER is not set
+# CONFIG_GENERIC_PHY is not set
+# CONFIG_PHY_EXYNOS_MIPI_VIDEO is not set
+# CONFIG_POWERCAP is not set
 
 #
 # File systems
@@ -3720,6 +3401,7 @@ CONFIG_EXT4_FS_POSIX_ACL=y
 CONFIG_EXT4_FS_SECURITY=y
 # CONFIG_EXT4_DEBUG is not set
 CONFIG_JBD2=y
+# CONFIG_JBD2_DEBUG is not set
 CONFIG_FS_MBCACHE=y
 CONFIG_REISERFS_FS=m
 # CONFIG_REISERFS_CHECK is not set
@@ -3744,9 +3426,10 @@ CONFIG_BTRFS_FS_POSIX_ACL=y
 # CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set
 # CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
 # CONFIG_BTRFS_DEBUG is not set
+# CONFIG_BTRFS_ASSERT is not set
 # CONFIG_NILFS2_FS is not set
 CONFIG_FS_POSIX_ACL=y
-CONFIG_EXPORTFS=m
+CONFIG_EXPORTFS=y
 CONFIG_FILE_LOCKING=y
 CONFIG_FSNOTIFY=y
 CONFIG_DNOTIFY=y
@@ -3764,7 +3447,6 @@ CONFIG_QUOTACTL=y
 CONFIG_AUTOFS4_FS=m
 CONFIG_FUSE_FS=m
 CONFIG_CUSE=m
-CONFIG_GENERIC_ACL=y
 
 #
 # Caches
@@ -3818,22 +3500,6 @@ CONFIG_ECRYPT_FS=m
 # CONFIG_BEFS_FS is not set
 # CONFIG_BFS_FS is not set
 # CONFIG_EFS_FS is not set
-CONFIG_JFFS2_FS=m
-CONFIG_JFFS2_FS_DEBUG=0
-CONFIG_JFFS2_FS_WRITEBUFFER=y
-# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
-# CONFIG_JFFS2_SUMMARY is not set
-# CONFIG_JFFS2_FS_XATTR is not set
-CONFIG_JFFS2_COMPRESSION_OPTIONS=y
-CONFIG_JFFS2_ZLIB=y
-# CONFIG_JFFS2_LZO is not set
-CONFIG_JFFS2_RTIME=y
-CONFIG_JFFS2_RUBIN=y
-# CONFIG_JFFS2_CMODE_NONE is not set
-CONFIG_JFFS2_CMODE_PRIORITY=y
-# CONFIG_JFFS2_CMODE_SIZE is not set
-# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
-# CONFIG_UBIFS_FS is not set
 # CONFIG_LOGFS is not set
 # CONFIG_CRAMFS is not set
 # CONFIG_SQUASHFS is not set
@@ -3849,7 +3515,6 @@ CONFIG_JFFS2_CMODE_PRIORITY=y
 CONFIG_UFS_FS=m
 # CONFIG_UFS_FS_WRITE is not set
 # CONFIG_UFS_DEBUG is not set
-# CONFIG_EXOFS_FS is not set
 # CONFIG_F2FS_FS is not set
 CONFIG_NETWORK_FILESYSTEMS=y
 CONFIG_NFS_FS=m
@@ -3867,6 +3532,7 @@ CONFIG_NFSD_V2_ACL=y
 CONFIG_NFSD_V3=y
 CONFIG_NFSD_V3_ACL=y
 CONFIG_NFSD_V4=y
+CONFIG_NFSD_V4_SECURITY_LABEL=y
 # CONFIG_NFSD_FAULT_INJECTION is not set
 CONFIG_LOCKD=m
 CONFIG_LOCKD_V4=y
@@ -3948,58 +3614,81 @@ CONFIG_NLS_UTF8=y
 #
 # Kernel hacking
 #
+
+#
+# printk and dmesg options
+#
 # CONFIG_PRINTK_TIME is not set
 CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
-# CONFIG_ENABLE_WARN_DEPRECATED is not set
+CONFIG_BOOT_PRINTK_DELAY=y
+# CONFIG_DYNAMIC_DEBUG is not set
+
+#
+# Compile-time checks and compiler options
+#
+# CONFIG_DEBUG_INFO is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
 CONFIG_ENABLE_MUST_CHECK=y
 CONFIG_FRAME_WARN=1024
-# CONFIG_MAGIC_SYSRQ is not set
-CONFIG_STRIP_ASM_SYMS=y
+# CONFIG_STRIP_ASM_SYMS is not set
 # CONFIG_READABLE_ASM is not set
 # CONFIG_UNUSED_SYMBOLS is not set
-# CONFIG_DEBUG_FS is not set
+CONFIG_DEBUG_FS=y
 # CONFIG_HEADERS_CHECK is not set
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+# CONFIG_MAGIC_SYSRQ is not set
 CONFIG_DEBUG_KERNEL=y
+
+#
+# Memory Debugging
+#
+# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_DEBUG_MEMORY_INIT=y
 # CONFIG_DEBUG_SHIRQ is not set
+
+#
+# Debug Lockups and Hangs
+#
 # CONFIG_LOCKUP_DETECTOR is not set
-# CONFIG_PANIC_ON_OOPS is not set
-CONFIG_PANIC_ON_OOPS_VALUE=0
 CONFIG_DETECT_HUNG_TASK=y
 CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=120
 # CONFIG_BOOTPARAM_HUNG_TASK_PANIC is not set
 CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
+# CONFIG_PANIC_ON_OOPS is not set
+CONFIG_PANIC_ON_OOPS_VALUE=0
+CONFIG_PANIC_TIMEOUT=0
 CONFIG_SCHED_DEBUG=y
-# CONFIG_SCHEDSTATS is not set
+CONFIG_SCHEDSTATS=y
 CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_SLUB_DEBUG_ON is not set
-# CONFIG_SLUB_STATS is not set
-CONFIG_HAVE_DEBUG_KMEMLEAK=y
-# CONFIG_DEBUG_KMEMLEAK is not set
+
+#
+# Lock Debugging (spinlocks, mutexes, etc...)
+#
 # CONFIG_DEBUG_RT_MUTEXES is not set
 # CONFIG_RT_MUTEX_TESTER is not set
 # CONFIG_DEBUG_SPINLOCK is not set
 # CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
 # CONFIG_DEBUG_LOCK_ALLOC is not set
 # CONFIG_PROVE_LOCKING is not set
 # CONFIG_LOCK_STAT 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
 CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
 # CONFIG_DEBUG_WRITECOUNT is not set
-CONFIG_DEBUG_MEMORY_INIT=y
-# CONFIG_DEBUG_LIST is not set
-# CONFIG_TEST_LIST_SORT is not set
+CONFIG_DEBUG_LIST=y
 # CONFIG_DEBUG_SG is not set
 # CONFIG_DEBUG_NOTIFIERS is not set
 # CONFIG_DEBUG_CREDENTIALS is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_BOOT_PRINTK_DELAY is not set
 
 #
 # RCU Debugging
@@ -4007,12 +3696,9 @@ CONFIG_FRAME_POINTER=y
 # CONFIG_SPARSE_RCU_POINTER is not set
 # CONFIG_RCU_TORTURE_TEST is not set
 # CONFIG_RCU_TRACE is not set
-# CONFIG_BACKTRACE_SELF_TEST is not set
 # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
-# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
 # CONFIG_NOTIFIER_ERROR_INJECTION is not set
 # CONFIG_FAULT_INJECTION is not set
-# CONFIG_DEBUG_PAGEALLOC is not set
 CONFIG_HAVE_FUNCTION_TRACER=y
 CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
 CONFIG_HAVE_DYNAMIC_FTRACE=y
@@ -4020,30 +3706,51 @@ CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
 CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
 CONFIG_HAVE_C_RECORDMCOUNT=y
 CONFIG_TRACING_SUPPORT=y
-# CONFIG_FTRACE is not set
+CONFIG_FTRACE=y
+# CONFIG_FUNCTION_TRACER is not set
+# CONFIG_IRQSOFF_TRACER is not set
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_ENABLE_DEFAULT_TRACERS is not set
+# CONFIG_FTRACE_SYSCALLS is not set
+# CONFIG_TRACER_SNAPSHOT is not set
+CONFIG_BRANCH_PROFILE_NONE=y
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+# CONFIG_PROFILE_ALL_BRANCHES is not set
+# CONFIG_STACK_TRACER is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_PROBE_EVENTS is not set
+
+#
+# Runtime Testing
+#
+# CONFIG_LKDTM is not set
+# CONFIG_TEST_LIST_SORT is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
 # CONFIG_RBTREE_TEST is not set
 # CONFIG_INTERVAL_TREE_TEST is not set
-# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_PERCPU_TEST is not set
 # CONFIG_ATOMIC64_SELFTEST is not set
-CONFIG_ASYNC_RAID6_TEST=m
+# CONFIG_ASYNC_RAID6_TEST is not set
+# CONFIG_TEST_STRING_HELPERS is not set
+# CONFIG_TEST_KSTRTOX is not set
+# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_TEST_MODULE is not set
+# CONFIG_TEST_USER_COPY is not set
 # CONFIG_SAMPLES is not set
 CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_KGDB is not set
-# CONFIG_TEST_STRING_HELPERS is not set
-# CONFIG_TEST_KSTRTOX is not set
-# CONFIG_STRICT_DEVMEM is not set
-# CONFIG_ARM_UNWIND is not set
+# CONFIG_ARM_PTDUMP is not set
+CONFIG_STRICT_DEVMEM=y
+CONFIG_ARM_UNWIND=y
 # CONFIG_DEBUG_USER is not set
-CONFIG_DEBUG_LL=y
-# CONFIG_DEBUG_LL_UART_NONE is not set
-# CONFIG_DEBUG_ICEDCC is not set
-# CONFIG_DEBUG_SEMIHOSTING is not set
-CONFIG_DEBUG_BCM2708_UART0=y
+# CONFIG_DEBUG_LL is not set
 CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
+# CONFIG_DEBUG_UART_PL01X is not set
+# CONFIG_DEBUG_UART_8250 is not set
 CONFIG_UNCOMPRESS_INCLUDE="mach/uncompress.h"
-CONFIG_EARLY_PRINTK=y
 # CONFIG_OC_ETM is not set
 # CONFIG_PID_IN_CONTEXTIDR is not set
+# CONFIG_DEBUG_SET_MODULE_RONX is not set
 
 #
 # Security options
@@ -4109,14 +3816,16 @@ CONFIG_PAX_USERCOPY=y
 # Memory Protections
 #
 # CONFIG_GRKERNSEC_KMEM is not set
-CONFIG_GRKERNSEC_JIT_HARDEN=y
 # CONFIG_GRKERNSEC_PERF_HARDEN is not set
 CONFIG_GRKERNSEC_RAND_THREADSTACK=y
 CONFIG_GRKERNSEC_PROC_MEMMAP=y
 CONFIG_GRKERNSEC_BRUTE=y
 CONFIG_GRKERNSEC_MODHARDEN=y
 CONFIG_GRKERNSEC_HIDESYM=y
+CONFIG_GRKERNSEC_RANDSTRUCT=y
+CONFIG_GRKERNSEC_RANDSTRUCT_PERFORMANCE=y
 CONFIG_GRKERNSEC_KERN_LOCKOUT=y
+CONFIG_GRKERNSEC_OLD_ARM_USERLAND=y
 
 #
 # Role Based Access Control Options
@@ -4175,12 +3884,12 @@ CONFIG_GRKERNSEC_DMESG=y
 CONFIG_GRKERNSEC_HARDEN_PTRACE=y
 CONFIG_GRKERNSEC_PTRACE_READEXEC=y
 CONFIG_GRKERNSEC_SETXID=y
+CONFIG_GRKERNSEC_HARDEN_IPC=y
 # CONFIG_GRKERNSEC_TPE is not set
 
 #
 # Network Protections
 #
-CONFIG_GRKERNSEC_RANDNET=y
 CONFIG_GRKERNSEC_BLACKHOLE=y
 CONFIG_GRKERNSEC_NO_SIMULT_CONNECT=y
 # CONFIG_GRKERNSEC_SOCKET is not set
@@ -4201,6 +3910,8 @@ CONFIG_GRKERNSEC_NO_SIMULT_CONNECT=y
 CONFIG_GRKERNSEC_FLOODTIME=10
 CONFIG_GRKERNSEC_FLOODBURST=6
 CONFIG_KEYS=y
+# CONFIG_PERSISTENT_KEYRINGS is not set
+# CONFIG_BIG_KEYS is not set
 # CONFIG_ENCRYPTED_KEYS is not set
 CONFIG_KEYS_DEBUG_PROC_KEYS=y
 CONFIG_SECURITY_DMESG_RESTRICT=y
@@ -4232,7 +3943,7 @@ CONFIG_CRYPTO_ALGAPI=y
 CONFIG_CRYPTO_ALGAPI2=y
 CONFIG_CRYPTO_AEAD=m
 CONFIG_CRYPTO_AEAD2=y
-CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_BLKCIPHER=y
 CONFIG_CRYPTO_BLKCIPHER2=y
 CONFIG_CRYPTO_HASH=y
 CONFIG_CRYPTO_HASH2=y
@@ -4255,13 +3966,13 @@ CONFIG_CRYPTO_AUTHENC=m
 # Authenticated Encryption with Associated Data
 #
 CONFIG_CRYPTO_CCM=m
-CONFIG_CRYPTO_GCM=m
+# CONFIG_CRYPTO_GCM is not set
 CONFIG_CRYPTO_SEQIV=m
 
 #
 # Block modes
 #
-CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_CBC=y
 CONFIG_CRYPTO_CTR=m
 CONFIG_CRYPTO_CTS=m
 CONFIG_CRYPTO_ECB=m
@@ -4282,15 +3993,16 @@ CONFIG_CRYPTO_VMAC=m
 #
 CONFIG_CRYPTO_CRC32C=y
 CONFIG_CRYPTO_CRC32=m
+CONFIG_CRYPTO_CRCT10DIF=y
 CONFIG_CRYPTO_GHASH=m
 CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_MD5=y
 CONFIG_CRYPTO_MICHAEL_MIC=m
 CONFIG_CRYPTO_RMD128=m
 CONFIG_CRYPTO_RMD160=m
 CONFIG_CRYPTO_RMD256=m
 CONFIG_CRYPTO_RMD320=m
-CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA1=y
 CONFIG_CRYPTO_SHA1_ARM=m
 CONFIG_CRYPTO_SHA256=y
 CONFIG_CRYPTO_SHA512=m
@@ -4310,7 +4022,7 @@ CONFIG_CRYPTO_CAMELLIA=m
 CONFIG_CRYPTO_CAST_COMMON=m
 CONFIG_CRYPTO_CAST5=m
 CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_DES=y
 CONFIG_CRYPTO_FCRYPT=m
 CONFIG_CRYPTO_KHAZAD=m
 CONFIG_CRYPTO_SALSA20=m
@@ -4323,9 +4035,11 @@ CONFIG_CRYPTO_TWOFISH_COMMON=m
 #
 # Compression
 #
-CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_DEFLATE=m
 CONFIG_CRYPTO_ZLIB=m
 CONFIG_CRYPTO_LZO=m
+CONFIG_CRYPTO_LZ4=m
+CONFIG_CRYPTO_LZ4HC=m
 
 #
 # Random Number Generation
@@ -4334,11 +4048,10 @@ CONFIG_CRYPTO_ANSI_CPRNG=m
 CONFIG_CRYPTO_USER_API=m
 CONFIG_CRYPTO_USER_API_HASH=m
 CONFIG_CRYPTO_USER_API_SKCIPHER=m
-CONFIG_CRYPTO_HW=y
+# CONFIG_CRYPTO_HW is not set
 CONFIG_ASYMMETRIC_KEY_TYPE=m
-CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
-CONFIG_PUBLIC_KEY_ALGO_RSA=m
-CONFIG_X509_CERTIFICATE_PARSER=m
+# CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE is not set
+# CONFIG_PUBLIC_KEY_ALGO_RSA is not set
 # CONFIG_BINARY_PRINTF is not set
 
 #
@@ -4348,12 +4061,14 @@ CONFIG_RAID6_PQ=m
 CONFIG_BITREVERSE=y
 CONFIG_GENERIC_STRNCPY_FROM_USER=y
 CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_NET_UTILS=y
 CONFIG_GENERIC_PCI_IOMAP=y
 CONFIG_GENERIC_IO=y
+CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
 CONFIG_CRC_CCITT=m
 CONFIG_CRC16=y
-CONFIG_CRC_T10DIF=m
-CONFIG_CRC_ITU_T=m
+CONFIG_CRC_T10DIF=y
+CONFIG_CRC_ITU_T=y
 CONFIG_CRC32=y
 # CONFIG_CRC32_SELFTEST is not set
 CONFIG_CRC32_SLICEBY8=y
@@ -4361,20 +4076,24 @@ CONFIG_CRC32_SLICEBY8=y
 # CONFIG_CRC32_SARWATE is not set
 # CONFIG_CRC32_BIT is not set
 CONFIG_CRC7=m
-CONFIG_LIBCRC32C=m
+CONFIG_LIBCRC32C=y
 CONFIG_CRC8=m
 CONFIG_AUDIT_GENERIC=y
+# CONFIG_RANDOM32_SELFTEST is not set
 CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=y
+CONFIG_ZLIB_DEFLATE=m
 CONFIG_LZO_COMPRESS=y
 CONFIG_LZO_DECOMPRESS=y
+CONFIG_LZ4_COMPRESS=m
+CONFIG_LZ4HC_COMPRESS=m
+CONFIG_LZ4_DECOMPRESS=y
 CONFIG_XZ_DEC=y
-CONFIG_XZ_DEC_X86=y
-CONFIG_XZ_DEC_POWERPC=y
-CONFIG_XZ_DEC_IA64=y
+# CONFIG_XZ_DEC_X86 is not set
+# CONFIG_XZ_DEC_POWERPC is not set
+# CONFIG_XZ_DEC_IA64 is not set
 CONFIG_XZ_DEC_ARM=y
 CONFIG_XZ_DEC_ARMTHUMB=y
-CONFIG_XZ_DEC_SPARC=y
+# CONFIG_XZ_DEC_SPARC is not set
 CONFIG_XZ_DEC_BCJ=y
 # CONFIG_XZ_DEC_TEST is not set
 CONFIG_DECOMPRESS_GZIP=y
@@ -4382,10 +4101,12 @@ CONFIG_DECOMPRESS_BZIP2=y
 CONFIG_DECOMPRESS_LZMA=y
 CONFIG_DECOMPRESS_XZ=y
 CONFIG_DECOMPRESS_LZO=y
+CONFIG_DECOMPRESS_LZ4=y
 CONFIG_TEXTSEARCH=y
 CONFIG_TEXTSEARCH_KMP=m
 CONFIG_TEXTSEARCH_BM=m
 CONFIG_TEXTSEARCH_FSM=m
+CONFIG_ASSOCIATIVE_ARRAY=y
 CONFIG_HAS_IOMEM=y
 CONFIG_HAS_IOPORT=y
 CONFIG_HAS_DMA=y
@@ -4393,10 +4114,13 @@ CONFIG_DQL=y
 CONFIG_NLATTR=y
 CONFIG_GENERIC_ATOMIC64=y
 CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
+CONFIG_LRU_CACHE=m
 CONFIG_AVERAGE=y
-CONFIG_CLZ_TAB=y
 CONFIG_CORDIC=m
 # CONFIG_DDR is not set
-CONFIG_MPILIB=m
 CONFIG_OID_REGISTRY=m
+CONFIG_FONT_SUPPORT=y
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
 # CONFIG_VIRTUALIZATION is not set
index 329d96d5ff88bfc212facc6868f8f7cf2d7fc4da..03d0eadae730cba9d49ef5656583916d5f4bfb52 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/x86 3.10.40-ipfire Kernel Configuration
+# Linux/x86 3.14.22 Kernel Configuration
 #
 # CONFIG_64BIT is not set
 CONFIG_X86_32=y
@@ -28,6 +28,8 @@ CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
 CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
 CONFIG_ARCH_HIBERNATION_POSSIBLE=y
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
+CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
 # CONFIG_ZONE_DMA32 is not set
 # CONFIG_AUDIT_ARCH is not set
 CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
@@ -36,7 +38,6 @@ CONFIG_HAVE_INTEL_TXT=y
 CONFIG_X86_32_SMP=y
 CONFIG_X86_HT=y
 CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx"
-CONFIG_ARCH_CPU_PROBE_RELEASE=y
 CONFIG_ARCH_SUPPORTS_UPROBES=y
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 CONFIG_IRQ_WORK=y
@@ -47,6 +48,7 @@ CONFIG_BUILDTIME_EXTABLE_SORT=y
 #
 CONFIG_INIT_ENV_ARG_LIMIT=32
 CONFIG_CROSS_COMPILE=""
+# CONFIG_COMPILE_TEST is not set
 CONFIG_LOCALVERSION=""
 # CONFIG_LOCALVERSION_AUTO is not set
 CONFIG_HAVE_KERNEL_GZIP=y
@@ -54,11 +56,13 @@ CONFIG_HAVE_KERNEL_BZIP2=y
 CONFIG_HAVE_KERNEL_LZMA=y
 CONFIG_HAVE_KERNEL_XZ=y
 CONFIG_HAVE_KERNEL_LZO=y
+CONFIG_HAVE_KERNEL_LZ4=y
 # CONFIG_KERNEL_GZIP is not set
 # CONFIG_KERNEL_BZIP2 is not set
 # CONFIG_KERNEL_LZMA is not set
 CONFIG_KERNEL_XZ=y
 # CONFIG_KERNEL_LZO is not set
+# CONFIG_KERNEL_LZ4 is not set
 CONFIG_DEFAULT_HOSTNAME="(none)"
 CONFIG_SWAP=y
 CONFIG_SYSVIPC=y
@@ -70,13 +74,10 @@ CONFIG_AUDIT=y
 CONFIG_AUDITSYSCALL=y
 CONFIG_AUDIT_WATCH=y
 CONFIG_AUDIT_TREE=y
-CONFIG_AUDIT_LOGINUID_IMMUTABLE=y
-CONFIG_HAVE_GENERIC_HARDIRQS=y
 
 #
 # IRQ subsystem
 #
-CONFIG_GENERIC_HARDIRQS=y
 CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_GENERIC_IRQ_SHOW=y
 CONFIG_GENERIC_PENDING_IRQ=y
@@ -153,6 +154,7 @@ CONFIG_BLK_CGROUP=y
 CONFIG_NAMESPACES=y
 CONFIG_UTS_NS=y
 CONFIG_IPC_NS=y
+CONFIG_USER_NS=y
 CONFIG_PID_NS=y
 CONFIG_NET_NS=y
 CONFIG_SCHED_AUTOGROUP=y
@@ -165,12 +167,12 @@ CONFIG_RD_BZIP2=y
 CONFIG_RD_LZMA=y
 CONFIG_RD_XZ=y
 CONFIG_RD_LZO=y
+CONFIG_RD_LZ4=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
 CONFIG_HAVE_UID16=y
 CONFIG_SYSCTL_EXCEPTION_TRACE=y
-CONFIG_HOTPLUG=y
 CONFIG_HAVE_PCSPKR_PLATFORM=y
 CONFIG_EXPERT=y
 CONFIG_UID16=y
@@ -204,6 +206,8 @@ CONFIG_SLUB_DEBUG=y
 # CONFIG_SLAB is not set
 CONFIG_SLUB=y
 # CONFIG_SLOB is not set
+CONFIG_SLUB_CPU_PARTIAL=y
+# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
 # CONFIG_PROFILING is not set
 CONFIG_TRACEPOINTS=y
 CONFIG_HAVE_OPROFILE=y
@@ -222,7 +226,6 @@ CONFIG_HAVE_KPROBES_ON_FTRACE=y
 CONFIG_HAVE_ARCH_TRACEHOOK=y
 CONFIG_HAVE_DMA_ATTRS=y
 CONFIG_HAVE_DMA_CONTIGUOUS=y
-CONFIG_USE_GENERIC_SMP_HELPERS=y
 CONFIG_GENERIC_SMP_IDLE_THREAD=y
 CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
 CONFIG_HAVE_CLK=y
@@ -241,8 +244,14 @@ CONFIG_HAVE_CMPXCHG_DOUBLE=y
 CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
 CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
 CONFIG_SECCOMP_FILTER=y
+CONFIG_HAVE_CC_STACKPROTECTOR=y
+CONFIG_CC_STACKPROTECTOR=y
+# CONFIG_CC_STACKPROTECTOR_NONE is not set
+CONFIG_CC_STACKPROTECTOR_REGULAR=y
+# CONFIG_CC_STACKPROTECTOR_STRONG is not set
 CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
 CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
+CONFIG_HAVE_ARCH_SOFT_DIRTY=y
 CONFIG_MODULES_USE_ELF_REL=y
 CONFIG_CLONE_BACKWARDS=y
 CONFIG_OLD_SIGSUSPEND3=y
@@ -260,7 +269,7 @@ CONFIG_MODULES=y
 # CONFIG_MODULE_FORCE_LOAD is not set
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_MODULE_FORCE_UNLOAD is not set
-# CONFIG_MODVERSIONS is not set
+CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_MODULE_SIG is not set
 CONFIG_STOP_MACHINE=y
@@ -270,12 +279,14 @@ CONFIG_BLK_DEV_BSG=y
 CONFIG_BLK_DEV_BSGLIB=y
 CONFIG_BLK_DEV_INTEGRITY=y
 CONFIG_BLK_DEV_THROTTLING=y
+# CONFIG_BLK_CMDLINE_PARSER is not set
 
 #
 # Partition Types
 #
 CONFIG_PARTITION_ADVANCED=y
 # CONFIG_ACORN_PARTITION is not set
+# CONFIG_AIX_PARTITION is not set
 # CONFIG_OSF_PARTITION is not set
 # CONFIG_AMIGA_PARTITION is not set
 # CONFIG_ATARI_PARTITION is not set
@@ -293,6 +304,7 @@ CONFIG_LDM_PARTITION=y
 # CONFIG_KARMA_PARTITION is not set
 CONFIG_EFI_PARTITION=y
 # CONFIG_SYSV68_PARTITION is not set
+# CONFIG_CMDLINE_PARTITION is not set
 
 #
 # IO Schedulers
@@ -313,6 +325,7 @@ CONFIG_INLINE_READ_UNLOCK=y
 CONFIG_INLINE_READ_UNLOCK_IRQ=y
 CONFIG_INLINE_WRITE_UNLOCK=y
 CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
 CONFIG_MUTEX_SPIN_ON_OWNER=y
 CONFIG_FREEZER=y
 
@@ -325,7 +338,7 @@ CONFIG_X86_MPPARSE=y
 CONFIG_X86_BIGSMP=y
 CONFIG_X86_EXTENDED_PLATFORM=y
 # CONFIG_X86_GOLDFISH is not set
-# CONFIG_X86_WANT_INTEL_MID is not set
+# CONFIG_X86_INTEL_MID is not set
 CONFIG_X86_INTEL_LPSS=y
 # CONFIG_X86_RDC321X is not set
 CONFIG_X86_32_NON_STANDARD=y
@@ -342,6 +355,7 @@ CONFIG_PARAVIRT=y
 # CONFIG_PARAVIRT_SPINLOCKS is not set
 # CONFIG_XEN_PRIVILEGED_GUEST is not set
 CONFIG_KVM_GUEST=y
+# CONFIG_KVM_DEBUG_FS is not set
 # CONFIG_LGUEST_GUEST is not set
 CONFIG_PARAVIRT_TIME_ACCOUNTING=y
 CONFIG_PARAVIRT_CLOCK=y
@@ -407,6 +421,8 @@ CONFIG_X86_MCE_THRESHOLD=y
 # CONFIG_X86_MCE_INJECT is not set
 CONFIG_X86_THERMAL_VECTOR=y
 CONFIG_VM86=y
+CONFIG_X86_16BIT=y
+CONFIG_X86_ESPFIX32=y
 CONFIG_TOSHIBA=m
 CONFIG_I8K=m
 # CONFIG_X86_REBOOTFIXUPS is not set
@@ -414,9 +430,8 @@ CONFIG_MICROCODE=m
 CONFIG_MICROCODE_INTEL=y
 CONFIG_MICROCODE_AMD=y
 CONFIG_MICROCODE_OLD_INTERFACE=y
-CONFIG_MICROCODE_INTEL_LIB=y
-CONFIG_MICROCODE_INTEL_EARLY=y
-CONFIG_MICROCODE_EARLY=y
+# CONFIG_MICROCODE_INTEL_EARLY is not set
+# CONFIG_MICROCODE_AMD_EARLY is not set
 # CONFIG_X86_MSR is not set
 CONFIG_X86_CPUID=y
 # CONFIG_NOHIGHMEM is not set
@@ -464,6 +479,9 @@ CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
 CONFIG_CROSS_MEMORY_ATTACH=y
 CONFIG_CLEANCACHE=y
 # CONFIG_FRONTSWAP is not set
+# CONFIG_CMA is not set
+# CONFIG_ZBUD is not set
+# CONFIG_ZSMALLOC is not set
 CONFIG_HIGHPTE=y
 CONFIG_X86_CHECK_BIOS_CORRUPTION=y
 CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
@@ -480,7 +498,6 @@ CONFIG_X86_SMAP=y
 CONFIG_EFI=y
 CONFIG_EFI_STUB=y
 CONFIG_SECCOMP=y
-CONFIG_CC_STACKPROTECTOR=y
 # CONFIG_HZ_100 is not set
 # CONFIG_HZ_250 is not set
 CONFIG_HZ_300=y
@@ -491,6 +508,7 @@ CONFIG_SCHED_HRTICK=y
 CONFIG_CRASH_DUMP=y
 CONFIG_PHYSICAL_START=0x400000
 CONFIG_RELOCATABLE=y
+# CONFIG_RANDOMIZE_BASE is not set
 CONFIG_X86_NEED_RELOCS=y
 CONFIG_PHYSICAL_ALIGN=0x400000
 CONFIG_HOTPLUG_CPU=y
@@ -504,9 +522,6 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
 #
 CONFIG_SUSPEND=y
 CONFIG_SUSPEND_FREEZER=y
-CONFIG_HIBERNATE_CALLBACKS=y
-CONFIG_HIBERNATION=y
-CONFIG_PM_STD_PARTITION=""
 CONFIG_PM_SLEEP=y
 CONFIG_PM_SLEEP_SMP=y
 # CONFIG_PM_AUTOSLEEP is not set
@@ -515,19 +530,18 @@ CONFIG_PM_RUNTIME=y
 CONFIG_PM=y
 # CONFIG_PM_DEBUG is not set
 CONFIG_PM_CLK=y
+# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
 CONFIG_ACPI=y
 CONFIG_ACPI_SLEEP=y
 CONFIG_ACPI_PROCFS=y
 # CONFIG_ACPI_PROCFS_POWER is not set
 CONFIG_ACPI_EC_DEBUGFS=m
-# CONFIG_ACPI_PROC_EVENT is not set
 CONFIG_ACPI_AC=y
 CONFIG_ACPI_BATTERY=y
 CONFIG_ACPI_BUTTON=y
 CONFIG_ACPI_VIDEO=m
 CONFIG_ACPI_FAN=y
 CONFIG_ACPI_DOCK=y
-CONFIG_ACPI_I2C=m
 CONFIG_ACPI_PROCESSOR=y
 CONFIG_ACPI_IPMI=m
 CONFIG_ACPI_HOTPLUG_CPU=y
@@ -535,7 +549,6 @@ CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
 CONFIG_ACPI_THERMAL=y
 # CONFIG_ACPI_CUSTOM_DSDT is not set
 CONFIG_ACPI_INITRD_TABLE_OVERRIDE=y
-CONFIG_ACPI_BLACKLIST_YEAR=1999
 # CONFIG_ACPI_DEBUG is not set
 CONFIG_ACPI_PCI_SLOT=y
 CONFIG_X86_PM_TIMER=y
@@ -550,6 +563,7 @@ CONFIG_ACPI_APEI_PCIEAER=y
 CONFIG_ACPI_APEI_MEMORY_FAILURE=y
 # CONFIG_ACPI_APEI_EINJ is not set
 # CONFIG_ACPI_APEI_ERST_DEBUG is not set
+CONFIG_ACPI_EXTLOG=m
 CONFIG_SFI=y
 CONFIG_X86_APM_BOOT=y
 CONFIG_APM=y
@@ -563,7 +577,6 @@ CONFIG_APM_CPU_IDLE=y
 # CPU Frequency scaling
 #
 CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
 CONFIG_CPU_FREQ_GOV_COMMON=y
 CONFIG_CPU_FREQ_STAT=m
 CONFIG_CPU_FREQ_STAT_DETAILS=y
@@ -605,6 +618,10 @@ CONFIG_X86_LONGHAUL=m
 #
 CONFIG_X86_SPEEDSTEP_LIB=m
 CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y
+
+#
+# CPU Idle
+#
 CONFIG_CPU_IDLE=y
 # CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
 CONFIG_CPU_IDLE_GOV_LADDER=y
@@ -636,7 +653,6 @@ CONFIG_PCIEASPM_DEFAULT=y
 # CONFIG_PCIEASPM_POWERSAVE is not set
 # CONFIG_PCIEASPM_PERFORMANCE is not set
 CONFIG_PCIE_PME=y
-CONFIG_ARCH_SUPPORTS_MSI=y
 CONFIG_PCI_MSI=y
 # CONFIG_PCI_DEBUG is not set
 # CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
@@ -648,6 +664,10 @@ CONFIG_PCI_IOV=y
 # CONFIG_PCI_PASID is not set
 CONFIG_PCI_IOAPIC=y
 CONFIG_PCI_LABEL=y
+
+#
+# PCI host controller drivers
+#
 CONFIG_ISA_DMA_API=y
 CONFIG_ISA=y
 CONFIG_EISA=y
@@ -691,6 +711,7 @@ CONFIG_HOTPLUG_PCI_ACPI_IBM=m
 # CONFIG_HOTPLUG_PCI_CPCI is not set
 # CONFIG_HOTPLUG_PCI_SHPC is not set
 # CONFIG_RAPIDIO is not set
+CONFIG_X86_SYSFB=y
 
 #
 # Executable file formats / Emulations
@@ -703,7 +724,6 @@ CONFIG_HAVE_AOUT=y
 CONFIG_BINFMT_MISC=y
 CONFIG_COREDUMP=y
 CONFIG_HAVE_ATOMIC_IOMAP=y
-CONFIG_HAVE_TEXT_POKE_SMP=y
 CONFIG_NET=y
 
 #
@@ -740,7 +760,6 @@ CONFIG_IP_MROUTE=y
 CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
 CONFIG_IP_PIMSM_V1=y
 CONFIG_IP_PIMSM_V2=y
-# CONFIG_ARPD is not set
 CONFIG_SYN_COOKIES=y
 CONFIG_NET_IPVTI=m
 CONFIG_INET_AH=m
@@ -773,7 +792,6 @@ CONFIG_DEFAULT_CUBIC=y
 CONFIG_DEFAULT_TCP_CONG="cubic"
 CONFIG_TCP_MD5SIG=y
 CONFIG_IPV6=y
-CONFIG_IPV6_PRIVACY=y
 CONFIG_IPV6_ROUTER_PREF=y
 CONFIG_IPV6_ROUTE_INFO=y
 CONFIG_IPV6_OPTIMISTIC_DAD=y
@@ -787,6 +805,7 @@ CONFIG_INET6_XFRM_MODE_TRANSPORT=m
 CONFIG_INET6_XFRM_MODE_TUNNEL=m
 CONFIG_INET6_XFRM_MODE_BEET=m
 CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
+CONFIG_IPV6_VTI=m
 CONFIG_IPV6_SIT=m
 CONFIG_IPV6_SIT_6RD=y
 CONFIG_IPV6_NDISC_NODETYPE=y
@@ -850,7 +869,22 @@ CONFIG_NF_NAT_FTP=m
 CONFIG_NF_NAT_IRC=m
 CONFIG_NF_NAT_SIP=m
 CONFIG_NF_NAT_TFTP=m
-CONFIG_NETFILTER_TPROXY=m
+CONFIG_NETFILTER_SYNPROXY=m
+CONFIG_NF_TABLES=m
+CONFIG_NF_TABLES_INET=m
+CONFIG_NFT_EXTHDR=m
+CONFIG_NFT_META=m
+CONFIG_NFT_CT=m
+CONFIG_NFT_RBTREE=m
+CONFIG_NFT_HASH=m
+CONFIG_NFT_COUNTER=m
+CONFIG_NFT_LOG=m
+CONFIG_NFT_LIMIT=m
+CONFIG_NFT_NAT=m
+CONFIG_NFT_QUEUE=m
+CONFIG_NFT_REJECT=m
+CONFIG_NFT_REJECT_INET=m
+CONFIG_NFT_COMPAT=m
 CONFIG_NETFILTER_XTABLES=y
 
 #
@@ -895,6 +929,7 @@ CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
 #
 CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
 CONFIG_NETFILTER_XT_MATCH_BPF=m
+CONFIG_NETFILTER_XT_MATCH_CGROUP=m
 CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
 CONFIG_NETFILTER_XT_MATCH_COMMENT=m
 CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
@@ -911,8 +946,10 @@ CONFIG_NETFILTER_XT_MATCH_ESP=m
 CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
 CONFIG_NETFILTER_XT_MATCH_HELPER=m
 CONFIG_NETFILTER_XT_MATCH_HL=m
+CONFIG_NETFILTER_XT_MATCH_IPCOMP=m
 CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
 # CONFIG_NETFILTER_XT_MATCH_IPVS is not set
+CONFIG_NETFILTER_XT_MATCH_L2TP=m
 CONFIG_NETFILTER_XT_MATCH_LAYER7=m
 # CONFIG_NETFILTER_XT_MATCH_LAYER7_DEBUG is not set
 CONFIG_NETFILTER_XT_MATCH_LENGTH=m
@@ -947,7 +984,9 @@ CONFIG_IP_SET_HASH_IP=m
 CONFIG_IP_SET_HASH_IPPORT=m
 CONFIG_IP_SET_HASH_IPPORTIP=m
 CONFIG_IP_SET_HASH_IPPORTNET=m
+CONFIG_IP_SET_HASH_NETPORTNET=m
 CONFIG_IP_SET_HASH_NET=m
+CONFIG_IP_SET_HASH_NETNET=m
 CONFIG_IP_SET_HASH_NETPORT=m
 CONFIG_IP_SET_HASH_NETIFACE=m
 CONFIG_IP_SET_LIST_SET=m
@@ -998,6 +1037,11 @@ CONFIG_IP_VS_PE_SIP=m
 CONFIG_NF_DEFRAG_IPV4=y
 CONFIG_NF_CONNTRACK_IPV4=y
 # CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
+CONFIG_NF_TABLES_IPV4=m
+CONFIG_NFT_CHAIN_ROUTE_IPV4=m
+CONFIG_NFT_CHAIN_NAT_IPV4=m
+CONFIG_NFT_REJECT_IPV4=m
+CONFIG_NF_TABLES_ARP=m
 CONFIG_IP_NF_IPTABLES=y
 CONFIG_IP_NF_MATCH_AH=m
 CONFIG_IP_NF_MATCH_ECN=m
@@ -1005,6 +1049,7 @@ CONFIG_IP_NF_MATCH_RPFILTER=m
 CONFIG_IP_NF_MATCH_TTL=m
 CONFIG_IP_NF_FILTER=m
 CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_SYNPROXY=m
 # CONFIG_IP_NF_TARGET_ULOG is not set
 CONFIG_NF_NAT_IPV4=m
 CONFIG_IP_NF_TARGET_MASQUERADE=m
@@ -1030,6 +1075,10 @@ CONFIG_IP_NF_MATCH_IPP2P=m
 #
 CONFIG_NF_DEFRAG_IPV6=y
 CONFIG_NF_CONNTRACK_IPV6=y
+CONFIG_NF_TABLES_IPV6=m
+CONFIG_NFT_CHAIN_ROUTE_IPV6=m
+CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NFT_REJECT_IPV6=m
 CONFIG_IP6_NF_IPTABLES=y
 CONFIG_IP6_NF_MATCH_AH=m
 CONFIG_IP6_NF_MATCH_EUI64=m
@@ -1043,12 +1092,14 @@ CONFIG_IP6_NF_MATCH_RT=m
 CONFIG_IP6_NF_TARGET_HL=m
 CONFIG_IP6_NF_FILTER=m
 CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_TARGET_SYNPROXY=m
 CONFIG_IP6_NF_MANGLE=m
 CONFIG_IP6_NF_RAW=m
 CONFIG_IP6_NF_SECURITY=m
 CONFIG_NF_NAT_IPV6=m
 CONFIG_IP6_NF_TARGET_MASQUERADE=m
 CONFIG_IP6_NF_TARGET_NPT=m
+CONFIG_NF_TABLES_BRIDGE=m
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
@@ -1073,7 +1124,6 @@ CONFIG_BRIDGE_EBT_LOG=m
 CONFIG_BRIDGE_EBT_NFLOG=m
 # CONFIG_IP_DCCP is not set
 CONFIG_IP_SCTP=m
-# CONFIG_SCTP_DBG_MSG is not set
 # CONFIG_SCTP_DBG_OBJCNT is not set
 # CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 is not set
 CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y
@@ -1115,6 +1165,7 @@ CONFIG_LLC=y
 # CONFIG_LAPB is not set
 # CONFIG_PHONET is not set
 # CONFIG_IEEE802154 is not set
+CONFIG_6LOWPAN_IPHC=m
 CONFIG_NET_SCHED=y
 
 #
@@ -1140,6 +1191,8 @@ CONFIG_NET_SCH_CHOKE=m
 CONFIG_NET_SCH_QFQ=m
 CONFIG_NET_SCH_CODEL=m
 CONFIG_NET_SCH_FQ_CODEL=m
+CONFIG_NET_SCH_FQ=m
+CONFIG_NET_SCH_HHF=m
 CONFIG_NET_SCH_PIE=m
 CONFIG_NET_SCH_INGRESS=m
 CONFIG_NET_SCH_PLUG=m
@@ -1159,6 +1212,7 @@ CONFIG_NET_CLS_RSVP=m
 CONFIG_NET_CLS_RSVP6=m
 CONFIG_NET_CLS_FLOW=m
 CONFIG_NET_CLS_CGROUP=m
+CONFIG_NET_CLS_BPF=m
 CONFIG_NET_EMATCH=y
 CONFIG_NET_EMATCH_STACK=32
 CONFIG_NET_EMATCH_CMP=m
@@ -1188,15 +1242,22 @@ CONFIG_BATMAN_ADV_DAT=y
 CONFIG_BATMAN_ADV_NC=y
 # CONFIG_BATMAN_ADV_DEBUG is not set
 CONFIG_OPENVSWITCH=m
+CONFIG_OPENVSWITCH_GRE=y
+CONFIG_OPENVSWITCH_VXLAN=y
 CONFIG_VSOCKETS=m
 CONFIG_VMWARE_VMCI_VSOCKETS=m
 CONFIG_NETLINK_MMAP=y
 CONFIG_NETLINK_DIAG=m
+CONFIG_NET_MPLS_GSO=m
+CONFIG_HSR=m
 CONFIG_RPS=y
 CONFIG_RFS_ACCEL=y
 CONFIG_XPS=y
-CONFIG_NETPRIO_CGROUP=m
+CONFIG_CGROUP_NET_PRIO=m
+CONFIG_CGROUP_NET_CLASSID=y
+CONFIG_NET_RX_BUSY_POLL=y
 CONFIG_BQL=y
+CONFIG_NET_FLOW_LIMIT=y
 
 #
 # Network testing
@@ -1306,7 +1367,6 @@ CONFIG_REGMAP=y
 CONFIG_REGMAP_I2C=m
 CONFIG_REGMAP_IRQ=y
 CONFIG_DMA_SHARED_BUFFER=y
-# CONFIG_CMA is not set
 
 #
 # Bus devices
@@ -1314,6 +1374,7 @@ CONFIG_DMA_SHARED_BUFFER=y
 CONFIG_CONNECTOR=y
 CONFIG_PROC_EVENTS=y
 # CONFIG_MTD is not set
+CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
 CONFIG_PARPORT=m
 CONFIG_PARPORT_PC=m
 CONFIG_PARPORT_SERIAL=m
@@ -1335,10 +1396,10 @@ CONFIG_PNPBIOS=y
 # CONFIG_PNPBIOS_PROC_FS is not set
 CONFIG_PNPACPI=y
 CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_NULL_BLK is not set
 CONFIG_BLK_DEV_FD=m
 # CONFIG_PARIDE is not set
 CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m
-CONFIG_BLK_CPQ_DA=m
 CONFIG_BLK_CPQ_CISS_DA=m
 # CONFIG_CISS_SCSI_TAPE is not set
 CONFIG_BLK_DEV_DAC960=m
@@ -1372,7 +1433,6 @@ CONFIG_SENSORS_LIS3LV02D=m
 CONFIG_DUMMY_IRQ=m
 CONFIG_IBM_ASM=m
 # CONFIG_PHANTOM is not set
-# CONFIG_INTEL_MID_PTI is not set
 # CONFIG_SGI_IOC4 is not set
 CONFIG_TIFM_CORE=m
 CONFIG_TIFM_7XX1=m
@@ -1424,6 +1484,14 @@ CONFIG_ALTERA_STAPL=m
 # CONFIG_INTEL_MEI is not set
 # CONFIG_INTEL_MEI_ME is not set
 CONFIG_VMWARE_VMCI=m
+
+#
+# Intel MIC Host Driver
+#
+
+#
+# Intel MIC Card Driver
+#
 CONFIG_HAVE_IDE=y
 # CONFIG_IDE is not set
 
@@ -1491,7 +1559,6 @@ CONFIG_AIC7XXX_RESET_DELAY_MS=5000
 CONFIG_AIC7XXX_DEBUG_ENABLE=y
 CONFIG_AIC7XXX_DEBUG_MASK=0
 CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
-# CONFIG_SCSI_AIC7XXX_OLD is not set
 CONFIG_SCSI_AIC79XX=m
 CONFIG_AIC79XX_CMDS_PER_DEVICE=32
 CONFIG_AIC79XX_RESET_DELAY_MS=4000
@@ -1508,6 +1575,7 @@ CONFIG_SCSI_DPT_I2O=m
 CONFIG_SCSI_ADVANSYS=m
 CONFIG_SCSI_IN2000=m
 CONFIG_SCSI_ARCMSR=m
+CONFIG_SCSI_ESAS2R=m
 CONFIG_MEGARAID_NEWGEN=y
 CONFIG_MEGARAID_MM=m
 CONFIG_MEGARAID_MAILBOX=m
@@ -1633,6 +1701,7 @@ CONFIG_SATA_HIGHBANK=m
 CONFIG_SATA_MV=m
 CONFIG_SATA_NV=m
 CONFIG_SATA_PROMISE=m
+CONFIG_SATA_RCAR=m
 CONFIG_SATA_SIL=m
 CONFIG_SATA_SIS=m
 CONFIG_SATA_SVW=m
@@ -1716,14 +1785,14 @@ CONFIG_MD_MULTIPATH=m
 CONFIG_MD_FAULTY=m
 CONFIG_BCACHE=m
 # CONFIG_BCACHE_DEBUG is not set
-# CONFIG_BCACHE_EDEBUG is not set
 # CONFIG_BCACHE_CLOSURES_DEBUG is not set
 CONFIG_BLK_DEV_DM_BUILTIN=y
 CONFIG_BLK_DEV_DM=y
 # CONFIG_DM_DEBUG is not set
-CONFIG_DM_BUFIO=m
+CONFIG_DM_BUFIO=y
 CONFIG_DM_BIO_PRISON=m
 CONFIG_DM_PERSISTENT_DATA=m
+# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
 CONFIG_DM_CRYPT=m
 CONFIG_DM_SNAPSHOT=y
 # CONFIG_DM_THIN_PROVISIONING is not set
@@ -1731,8 +1800,8 @@ CONFIG_DM_CACHE=m
 CONFIG_DM_CACHE_MQ=m
 CONFIG_DM_CACHE_CLEANER=m
 CONFIG_DM_MIRROR=y
-CONFIG_DM_RAID=m
 CONFIG_DM_LOG_USERSPACE=m
+CONFIG_DM_RAID=m
 CONFIG_DM_ZERO=y
 CONFIG_DM_MULTIPATH=m
 CONFIG_DM_MULTIPATH_QL=m
@@ -1741,6 +1810,7 @@ CONFIG_DM_MULTIPATH_ST=m
 CONFIG_DM_UEVENT=y
 # CONFIG_DM_FLAKEY is not set
 CONFIG_DM_VERITY=m
+CONFIG_DM_SWITCH=m
 # CONFIG_TARGET_CORE is not set
 CONFIG_FUSION=y
 CONFIG_FUSION_SPI=m
@@ -1770,12 +1840,12 @@ CONFIG_I2O_PROC=m
 CONFIG_MACINTOSH_DRIVERS=y
 # CONFIG_MAC_EMUMOUSEBTN is not set
 CONFIG_NETDEVICES=y
+CONFIG_MII=m
 CONFIG_NET_CORE=y
 CONFIG_BONDING=m
 CONFIG_DUMMY=m
 # CONFIG_EQUALIZER is not set
 # CONFIG_NET_FC is not set
-CONFIG_MII=m
 CONFIG_IFB=m
 # CONFIG_NET_TEAM is not set
 CONFIG_MACVLAN=m
@@ -1795,6 +1865,7 @@ CONFIG_IMQ_NUM_DEVS=2
 CONFIG_TUN=m
 CONFIG_VETH=m
 CONFIG_VIRTIO_NET=m
+CONFIG_NLMON=m
 CONFIG_SUNGEM_PHY=m
 # CONFIG_ARCNET is not set
 CONFIG_ATM_DRIVERS=y
@@ -1833,6 +1904,7 @@ CONFIG_ATM_SOLOS=m
 #
 CONFIG_VHOST_NET=m
 CONFIG_VHOST_RING=m
+CONFIG_VHOST=m
 
 #
 # Distributed Switch Architecture drivers
@@ -1862,6 +1934,7 @@ CONFIG_LANCE=m
 CONFIG_PCNET32=m
 CONFIG_PCMCIA_NMCLAN=m
 CONFIG_NI65=m
+CONFIG_NET_VENDOR_ARC=y
 CONFIG_NET_VENDOR_ATHEROS=y
 CONFIG_ATL2=m
 CONFIG_ATL1=m
@@ -1937,6 +2010,9 @@ CONFIG_IXGBE=m
 CONFIG_IXGBE_HWMON=y
 CONFIG_IXGBE_DCA=y
 CONFIG_IXGBEVF=m
+CONFIG_I40E=m
+CONFIG_I40E_VXLAN=y
+CONFIG_I40EVF=m
 CONFIG_NET_VENDOR_I825XX=y
 CONFIG_IP1000=m
 CONFIG_JME=m
@@ -1951,6 +2027,7 @@ CONFIG_NET_VENDOR_MELLANOX=y
 CONFIG_MLX4_EN=m
 CONFIG_MLX4_CORE=m
 CONFIG_MLX4_DEBUG=y
+# CONFIG_MLX5_CORE is not set
 CONFIG_NET_VENDOR_MICREL=y
 CONFIG_KS8842=m
 CONFIG_KS8851_MLL=m
@@ -1990,6 +2067,7 @@ CONFIG_8139TOO=m
 CONFIG_8139TOO_8129=y
 # CONFIG_8139_OLD_RX_RESET is not set
 CONFIG_R8169=m
+CONFIG_SH_ETH=m
 CONFIG_NET_VENDOR_RDC=y
 CONFIG_R6040=m
 CONFIG_NET_VENDOR_SEEQ=y
@@ -2005,6 +2083,8 @@ CONFIG_NET_VENDOR_SMSC=y
 CONFIG_SMC9194=m
 CONFIG_PCMCIA_SMC91C92=m
 CONFIG_EPIC100=m
+CONFIG_SMSC911X=m
+# CONFIG_SMSC911X_ARCH_HOOKS is not set
 CONFIG_SMSC9420=m
 CONFIG_NET_VENDOR_STMICRO=y
 CONFIG_STMMAC_ETH=m
@@ -2091,8 +2171,11 @@ CONFIG_USB_NET_AX88179_178A=m
 CONFIG_USB_NET_CDCETHER=m
 CONFIG_USB_NET_CDC_EEM=m
 CONFIG_USB_NET_CDC_NCM=m
+CONFIG_USB_NET_HUAWEI_CDC_NCM=m
 CONFIG_USB_NET_CDC_MBIM=m
 CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_SR9700=m
+CONFIG_USB_NET_SR9800=m
 CONFIG_USB_NET_SMSC75XX=m
 CONFIG_USB_NET_SMSC95XX=m
 CONFIG_USB_NET_GL620A=m
@@ -2152,7 +2235,9 @@ CONFIG_ATH9K=m
 CONFIG_ATH9K_PCI=y
 CONFIG_ATH9K_AHB=y
 # CONFIG_ATH9K_DEBUGFS is not set
+# CONFIG_ATH9K_WOW is not set
 # CONFIG_ATH9K_LEGACY_RATE_CONTROL is not set
+CONFIG_ATH9K_RFKILL=y
 CONFIG_ATH9K_HTC=m
 # CONFIG_ATH9K_HTC_DEBUGFS is not set
 CONFIG_CARL9170=m
@@ -2163,15 +2248,26 @@ CONFIG_CARL9170_WPC=y
 CONFIG_AR5523=m
 CONFIG_WIL6210=m
 CONFIG_WIL6210_ISR_COR=y
+CONFIG_WIL6210_TRACING=y
+CONFIG_ATH10K=m
+CONFIG_ATH10K_PCI=m
+# CONFIG_ATH10K_DEBUG is not set
+# CONFIG_ATH10K_DEBUGFS is not set
+# CONFIG_ATH10K_TRACING is not set
+CONFIG_WCN36XX=m
+# CONFIG_WCN36XX_DEBUGFS is not set
 CONFIG_B43=m
+CONFIG_B43_BCMA=y
 CONFIG_B43_SSB=y
 CONFIG_B43_PCI_AUTOSELECT=y
 CONFIG_B43_PCICORE_AUTOSELECT=y
 # CONFIG_B43_PCMCIA is not set
 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
@@ -2187,6 +2283,7 @@ 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_BRCMSMAC=m
 CONFIG_BRCMFMAC=m
 CONFIG_BRCMFMAC_SDIO=y
 # CONFIG_BRCMFMAC_USB is not set
@@ -2219,7 +2316,6 @@ CONFIG_IWLWIFI_OPMODE_MODULAR=y
 #
 # CONFIG_IWLWIFI_DEBUG is not set
 # CONFIG_IWLWIFI_DEVICE_TRACING is not set
-CONFIG_IWLWIFI_P2P=y
 CONFIG_IWLEGACY=m
 CONFIG_IWL4965=m
 CONFIG_IWL3945=m
@@ -2261,10 +2357,12 @@ CONFIG_RT73USB=m
 CONFIG_RT2800USB=m
 CONFIG_RT2800USB_RT33XX=y
 CONFIG_RT2800USB_RT35XX=y
+CONFIG_RT2800USB_RT3573=y
 CONFIG_RT2800USB_RT53XX=y
 CONFIG_RT2800USB_RT55XX=y
 CONFIG_RT2800USB_UNKNOWN=y
 CONFIG_RT2800_LIB=m
+CONFIG_RT2800_LIB_MMIO=m
 CONFIG_RT2X00_LIB_MMIO=m
 CONFIG_RT2X00_LIB_PCI=m
 CONFIG_RT2X00_LIB_USB=m
@@ -2273,14 +2371,17 @@ CONFIG_RT2X00_LIB_FIRMWARE=y
 CONFIG_RT2X00_LIB_CRYPTO=y
 CONFIG_RT2X00_LIB_LEDS=y
 # CONFIG_RT2X00_DEBUG is not set
-CONFIG_RTLWIFI=m
-# CONFIG_RTLWIFI_DEBUG is not set
+CONFIG_RTL_CARDS=m
 CONFIG_RTL8192CE=m
 CONFIG_RTL8192SE=m
 CONFIG_RTL8192DE=m
 CONFIG_RTL8723AE=m
 CONFIG_RTL8188EE=m
 CONFIG_RTL8192CU=m
+CONFIG_RTLWIFI=m
+CONFIG_RTLWIFI_PCI=m
+CONFIG_RTLWIFI_USB=m
+# CONFIG_RTLWIFI_DEBUG is not set
 CONFIG_RTL8192C_COMMON=m
 CONFIG_WL_TI=y
 CONFIG_WL1251=m
@@ -2296,6 +2397,8 @@ CONFIG_MWIFIEX=m
 CONFIG_MWIFIEX_SDIO=m
 CONFIG_MWIFIEX_PCIE=m
 CONFIG_MWIFIEX_USB=m
+CONFIG_CW1200=m
+CONFIG_CW1200_WLAN_SDIO=m
 
 #
 # Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -2398,8 +2501,8 @@ CONFIG_HISAX_FRITZ_PCIPNP=m
 CONFIG_ISDN_CAPI=m
 CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
 CONFIG_CAPI_TRACE=y
-CONFIG_ISDN_CAPI_MIDDLEWARE=y
 CONFIG_ISDN_CAPI_CAPI20=m
+CONFIG_ISDN_CAPI_MIDDLEWARE=y
 CONFIG_ISDN_CAPI_CAPIDRV=m
 
 #
@@ -2544,11 +2647,13 @@ CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
 # CONFIG_INPUT_ADXL34X is not set
 # CONFIG_INPUT_IMS_PCU is not set
 # CONFIG_INPUT_CMA3000 is not set
+CONFIG_INPUT_IDEAPAD_SLIDEBAR=m
 
 #
 # Hardware I/O ports
 #
 CONFIG_SERIO=y
+CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
 CONFIG_SERIO_I8042=y
 CONFIG_SERIO_SERPORT=y
 # CONFIG_SERIO_CT82C710 is not set
@@ -2559,6 +2664,7 @@ CONFIG_SERIO_RAW=m
 CONFIG_SERIO_ALTERA_PS2=m
 # CONFIG_SERIO_PS2MULT is not set
 CONFIG_SERIO_ARC_PS2=m
+CONFIG_HYPERV_KEYBOARD=m
 # CONFIG_GAMEPORT is not set
 
 #
@@ -2589,7 +2695,6 @@ CONFIG_N_HDLC=m
 CONFIG_N_GSM=m
 # CONFIG_TRACE_SINK is not set
 # CONFIG_DEVKMEM is not set
-# CONFIG_STALDRV is not set
 
 #
 # Serial drivers
@@ -2632,6 +2737,7 @@ CONFIG_SERIAL_ARC=m
 CONFIG_SERIAL_ARC_NR_PORTS=1
 CONFIG_SERIAL_RP2=m
 CONFIG_SERIAL_RP2_NR_UARTS=32
+CONFIG_SERIAL_FSL_LPUART=m
 # CONFIG_TTY_PRINTK is not set
 CONFIG_PRINTER=m
 CONFIG_LP_CONSOLE=y
@@ -2682,7 +2788,15 @@ CONFIG_I2C=m
 CONFIG_I2C_BOARDINFO=y
 CONFIG_I2C_COMPAT=y
 CONFIG_I2C_CHARDEV=m
-# CONFIG_I2C_MUX is not set
+CONFIG_I2C_MUX=m
+
+#
+# Multiplexer I2C Chip support
+#
+CONFIG_I2C_MUX_GPIO=m
+CONFIG_I2C_MUX_PCA9541=m
+CONFIG_I2C_MUX_PCA954x=m
+CONFIG_I2C_MUX_PINCTRL=m
 CONFIG_I2C_HELPER_AUTO=y
 CONFIG_I2C_SMBUS=m
 CONFIG_I2C_ALGOBIT=m
@@ -2727,7 +2841,6 @@ CONFIG_I2C_DESIGNWARE_PLATFORM=m
 # CONFIG_I2C_DESIGNWARE_PCI is not set
 # CONFIG_I2C_EG20T is not set
 # CONFIG_I2C_GPIO is not set
-# CONFIG_I2C_INTEL_MID is not set
 # CONFIG_I2C_OCORES is not set
 CONFIG_I2C_PCA_PLATFORM=m
 # CONFIG_I2C_PXA_PCI is not set
@@ -2740,6 +2853,7 @@ CONFIG_I2C_SIMTEC=m
 CONFIG_I2C_DIOLAN_U2C=m
 CONFIG_I2C_PARPORT=m
 CONFIG_I2C_PARPORT_LIGHT=m
+CONFIG_I2C_ROBOTFUZZ_OSIF=m
 # CONFIG_I2C_TAOS_EVM is not set
 CONFIG_I2C_TINY_USB=m
 CONFIG_I2C_VIPERBOARD=m
@@ -2754,11 +2868,6 @@ CONFIG_SCx200_ACB=m
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_BUS is not set
 # CONFIG_SPI is not set
-
-#
-# Qualcomm MSM SSBI bus support
-#
-# CONFIG_SSBI is not set
 CONFIG_HSI=m
 CONFIG_HSI_BOARDINFO=y
 
@@ -2794,9 +2903,18 @@ CONFIG_PTP_1588_CLOCK=m
 # Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
 #
 CONFIG_PTP_1588_CLOCK_PCH=m
+CONFIG_PINCTRL=y
+
+#
+# Pin controllers
+#
+# CONFIG_PINMUX is not set
+# CONFIG_PINCONF is not set
+# CONFIG_DEBUG_PINCTRL is not set
+CONFIG_PINCTRL_BAYTRAIL=y
 CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
-CONFIG_GPIO_DEVRES=y
 CONFIG_GPIOLIB=y
+CONFIG_GPIO_DEVRES=y
 CONFIG_GPIO_ACPI=y
 # CONFIG_DEBUG_GPIO is not set
 CONFIG_GPIO_SYSFS=y
@@ -2806,6 +2924,8 @@ CONFIG_GPIO_SYSFS=y
 #
 # CONFIG_GPIO_GENERIC_PLATFORM is not set
 # CONFIG_GPIO_IT8761E is not set
+# CONFIG_GPIO_F7188X is not set
+# CONFIG_GPIO_SCH311X is not set
 CONFIG_GPIO_TS5500=m
 CONFIG_GPIO_SCH=m
 CONFIG_GPIO_ICH=m
@@ -2826,7 +2946,7 @@ CONFIG_GPIO_ICH=m
 #
 CONFIG_GPIO_CS5535=m
 # CONFIG_GPIO_AMD8111 is not set
-# CONFIG_GPIO_LANGWELL is not set
+# CONFIG_GPIO_INTEL_MID is not set
 # CONFIG_GPIO_PCH is not set
 # CONFIG_GPIO_ML_IOH is not set
 # CONFIG_GPIO_RDC321X is not set
@@ -2834,12 +2954,15 @@ CONFIG_GPIO_CS5535=m
 #
 # SPI GPIO expanders:
 #
-# CONFIG_GPIO_MCP23S08 is not set
 
 #
 # AC97 GPIO expanders:
 #
 
+#
+# LPC GPIO expanders:
+#
+
 #
 # MODULbus GPIO expanders:
 #
@@ -2890,12 +3013,14 @@ CONFIG_GENERIC_ADC_BATTERY=m
 # CONFIG_BATTERY_BQ27x00 is not set
 # CONFIG_BATTERY_MAX17040 is not set
 # CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_CHARGER_ISP1704 is not set
 # CONFIG_CHARGER_MAX8903 is not set
 # CONFIG_CHARGER_LP8727 is not set
 # CONFIG_CHARGER_GPIO is not set
 # CONFIG_CHARGER_BQ2415X is not set
+# CONFIG_CHARGER_BQ24190 is not set
+# CONFIG_CHARGER_BQ24735 is not set
 # CONFIG_CHARGER_SMB347 is not set
-# CONFIG_BATTERY_GOLDFISH is not set
 CONFIG_POWER_RESET=y
 CONFIG_POWER_AVS=y
 CONFIG_HWMON=y
@@ -2935,10 +3060,12 @@ CONFIG_SENSORS_F71882FG=m
 CONFIG_SENSORS_F75375S=m
 CONFIG_SENSORS_FSCHMD=m
 CONFIG_SENSORS_G760A=m
+CONFIG_SENSORS_G762=m
 CONFIG_SENSORS_GL518SM=m
 CONFIG_SENSORS_GL520SM=m
 # CONFIG_SENSORS_GPIO_FAN is not set
 CONFIG_SENSORS_HIH6130=m
+CONFIG_SENSORS_HTU21=m
 CONFIG_SENSORS_CORETEMP=m
 CONFIG_SENSORS_IBMAEM=m
 CONFIG_SENSORS_IBMPEX=m
@@ -3042,9 +3169,14 @@ CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
 CONFIG_THERMAL_GOV_FAIR_SHARE=y
 CONFIG_THERMAL_GOV_STEP_WISE=y
 CONFIG_THERMAL_GOV_USER_SPACE=y
-CONFIG_CPU_THERMAL=y
 CONFIG_THERMAL_EMULATION=y
 CONFIG_INTEL_POWERCLAMP=m
+CONFIG_X86_PKG_TEMP_THERMAL=m
+CONFIG_ACPI_INT3403_THERMAL=m
+
+#
+# Texas Instruments thermal drivers
+#
 CONFIG_WATCHDOG=y
 CONFIG_WATCHDOG_CORE=y
 CONFIG_WATCHDOG_NOWAYOUT=y
@@ -3053,6 +3185,7 @@ CONFIG_WATCHDOG_NOWAYOUT=y
 # Watchdog Device Drivers
 #
 CONFIG_SOFT_WATCHDOG=m
+CONFIG_DW_WATCHDOG=m
 CONFIG_RETU_WATCHDOG=m
 CONFIG_ACQUIRE_WDT=m
 CONFIG_ADVANTECH_WDT=m
@@ -3093,6 +3226,7 @@ CONFIG_W83877F_WDT=m
 CONFIG_W83977F_WDT=m
 CONFIG_MACHZ_WDT=m
 CONFIG_SBC_EPX_C3_WATCHDOG=m
+CONFIG_MEN_A21_WDT=m
 
 #
 # ISA-based Watchdog Cards
@@ -3135,7 +3269,14 @@ CONFIG_BCMA_POSSIBLE=y
 #
 # Broadcom specific AMBA
 #
-# CONFIG_BCMA is not set
+CONFIG_BCMA=m
+CONFIG_BCMA_BLOCKIO=y
+CONFIG_BCMA_HOST_PCI_POSSIBLE=y
+CONFIG_BCMA_HOST_PCI=y
+CONFIG_BCMA_HOST_SOC=y
+CONFIG_BCMA_DRIVER_GMAC_CMN=y
+CONFIG_BCMA_DRIVER_GPIO=y
+# CONFIG_BCMA_DEBUG is not set
 
 #
 # Multifunction device drivers
@@ -3148,6 +3289,7 @@ CONFIG_MFD_CS5535=m
 CONFIG_LPC_ICH=m
 CONFIG_LPC_SCH=m
 # CONFIG_MFD_JANZ_CMODIO is not set
+# CONFIG_MFD_KEMPLD is not set
 CONFIG_MFD_VIPERBOARD=m
 CONFIG_MFD_RETU=m
 # CONFIG_MFD_PCF50633 is not set
@@ -3160,6 +3302,7 @@ CONFIG_MFD_SM501_GPIO=y
 # CONFIG_ABX500_CORE is not set
 # CONFIG_MFD_SYSCON is not set
 # CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_MFD_LP3943 is not set
 # CONFIG_TPS6105X is not set
 # CONFIG_TPS65010 is not set
 # CONFIG_TPS6507X is not set
@@ -3199,7 +3342,6 @@ CONFIG_VIDEOBUF2_CORE=m
 CONFIG_VIDEOBUF2_MEMOPS=m
 CONFIG_VIDEOBUF2_DMA_CONTIG=m
 CONFIG_VIDEOBUF2_VMALLOC=m
-CONFIG_VIDEO_V4L2_INT_DEVICE=m
 CONFIG_DVB_CORE=m
 CONFIG_DVB_NET=y
 CONFIG_TTPCI_EEPROM=m
@@ -3282,6 +3424,7 @@ CONFIG_USB_GSPCA_SQ905=m
 CONFIG_USB_GSPCA_SQ905C=m
 CONFIG_USB_GSPCA_SQ930X=m
 CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_STK1135=m
 CONFIG_USB_GSPCA_STV0680=m
 CONFIG_USB_GSPCA_SUNPLUS=m
 CONFIG_USB_GSPCA_T613=m
@@ -3298,7 +3441,7 @@ CONFIG_VIDEO_CPIA2=m
 CONFIG_USB_ZR364XX=m
 CONFIG_USB_STKWEBCAM=m
 CONFIG_USB_S2255=m
-CONFIG_USB_SN9C102=m
+CONFIG_VIDEO_USBTV=m
 
 #
 # Analog TV USB devices
@@ -3310,8 +3453,9 @@ CONFIG_VIDEO_PVRUSB2_DVB=y
 CONFIG_VIDEO_HDPVR=m
 CONFIG_VIDEO_TLG2300=m
 CONFIG_VIDEO_USBVISION=m
-CONFIG_VIDEO_STK1160=m
+CONFIG_VIDEO_STK1160_COMMON=m
 CONFIG_VIDEO_STK1160_AC97=y
+CONFIG_VIDEO_STK1160=m
 
 #
 # Analog/digital TV USB devices
@@ -3380,6 +3524,7 @@ CONFIG_DVB_B2C2_FLEXCOP_USB=m
 # Webcam, TV (analog/digital) USB devices
 #
 CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_EM28XX_V4L2=m
 CONFIG_VIDEO_EM28XX_ALSA=m
 CONFIG_VIDEO_EM28XX_DVB=m
 CONFIG_VIDEO_EM28XX_RC=m
@@ -3421,6 +3566,7 @@ CONFIG_VIDEO_CX88=m
 CONFIG_VIDEO_CX88_ALSA=m
 CONFIG_VIDEO_CX88_BLACKBIRD=m
 CONFIG_VIDEO_CX88_DVB=m
+CONFIG_VIDEO_CX88_ENABLE_VP3054=y
 CONFIG_VIDEO_CX88_VP3054=m
 CONFIG_VIDEO_CX88_MPEG=m
 CONFIG_VIDEO_BT848=m
@@ -3456,12 +3602,15 @@ CONFIG_VIDEO_CAFE_CCIC=m
 # CONFIG_VIDEO_VIA_CAMERA is not set
 CONFIG_VIDEO_TIMBERDALE=m
 CONFIG_SOC_CAMERA=m
+CONFIG_SOC_CAMERA_SCALE_CROP=m
 CONFIG_SOC_CAMERA_PLATFORM=m
+CONFIG_VIDEO_RCAR_VIN=m
 CONFIG_VIDEO_SH_MOBILE_CSI2=m
 CONFIG_VIDEO_SH_MOBILE_CEU=m
 CONFIG_V4L_MEM2MEM_DRIVERS=y
 CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
 CONFIG_VIDEO_SH_VEU=m
+CONFIG_VIDEO_RENESAS_VSP1=m
 # CONFIG_V4L_TEST_DRIVERS is not set
 
 #
@@ -3489,7 +3638,6 @@ CONFIG_VIDEO_SAA7146=m
 CONFIG_VIDEO_SAA7146_VV=m
 CONFIG_SMS_SIANO_MDTV=m
 CONFIG_SMS_SIANO_RC=y
-# CONFIG_SMS_SIANO_DEBUGFS is not set
 
 #
 # Media ancillary drivers (tuners, sensors, i2c, frontends)
@@ -3562,7 +3710,12 @@ CONFIG_VIDEO_UPD64031A=m
 CONFIG_VIDEO_UPD64083=m
 
 #
-# Miscelaneous helper chips
+# Audio/Video compression chips
+#
+CONFIG_VIDEO_SAA6752HS=m
+
+#
+# Miscellaneous helper chips
 #
 CONFIG_VIDEO_M52790=m
 
@@ -3613,6 +3766,7 @@ CONFIG_MEDIA_TUNER_FC0013=m
 CONFIG_MEDIA_TUNER_TDA18212=m
 CONFIG_MEDIA_TUNER_E4000=m
 CONFIG_MEDIA_TUNER_FC2580=m
+CONFIG_MEDIA_TUNER_M88TS2022=m
 CONFIG_MEDIA_TUNER_TUA9001=m
 CONFIG_MEDIA_TUNER_IT913X=m
 CONFIG_MEDIA_TUNER_R820T=m
@@ -3624,6 +3778,7 @@ CONFIG_DVB_STB0899=m
 CONFIG_DVB_STB6100=m
 CONFIG_DVB_STV090x=m
 CONFIG_DVB_STV6110x=m
+CONFIG_DVB_M88DS3103=m
 
 #
 # Multistandard (cable + terrestrial) frontends
@@ -3654,8 +3809,7 @@ CONFIG_DVB_TUNER_CX24113=m
 CONFIG_DVB_TDA826X=m
 CONFIG_DVB_TUA6100=m
 CONFIG_DVB_CX24116=m
-CONFIG_DVB_M88DS3103=m
-CONFIG_DVB_M88DC2800=m
+CONFIG_DVB_CX24117=m
 CONFIG_DVB_SI21XX=m
 CONFIG_DVB_TS2020=m
 CONFIG_DVB_DS3000=m
@@ -3737,6 +3891,8 @@ CONFIG_DVB_A8293=m
 CONFIG_DVB_LGS8GXX=m
 CONFIG_DVB_ATBM8830=m
 CONFIG_DVB_TDA665x=m
+CONFIG_DVB_DVBSKY_M88DS3103=m
+CONFIG_DVB_M88DC2800=m
 CONFIG_DVB_IX2505V=m
 CONFIG_DVB_IT913X_FE=m
 CONFIG_DVB_M88RS2000=m
@@ -3761,12 +3917,14 @@ CONFIG_AGP_SIS=y
 # CONFIG_AGP_SWORKS is not set
 CONFIG_AGP_VIA=y
 # CONFIG_AGP_EFFICEON is not set
+CONFIG_INTEL_GTT=y
 CONFIG_VGA_ARB=y
 CONFIG_VGA_ARB_MAX_GPUS=16
 CONFIG_VGA_SWITCHEROO=y
 CONFIG_DRM=m
 CONFIG_DRM_USB=m
 CONFIG_DRM_KMS_HELPER=m
+CONFIG_DRM_KMS_FB_HELPER=y
 # CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
 CONFIG_DRM_TTM=m
 
@@ -3787,6 +3945,9 @@ CONFIG_DRM_NOUVEAU_BACKLIGHT=y
 CONFIG_DRM_I810=m
 CONFIG_DRM_I915=m
 CONFIG_DRM_I915_KMS=y
+CONFIG_DRM_I915_FBDEV=y
+CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT=y
+# CONFIG_DRM_I915_UMS is not set
 CONFIG_DRM_MGA=m
 CONFIG_DRM_SIS=m
 CONFIG_DRM_VIA=m
@@ -3801,6 +3962,7 @@ CONFIG_DRM_AST=m
 CONFIG_DRM_MGAG200=m
 CONFIG_DRM_CIRRUS_QEMU=m
 CONFIG_DRM_QXL=m
+CONFIG_DRM_BOCHS=m
 CONFIG_VGASTATE=m
 CONFIG_VIDEO_OUTPUT_CONTROL=m
 CONFIG_HDMI=y
@@ -3841,6 +4003,7 @@ CONFIG_FB_VESA=y
 CONFIG_FB_EFI=y
 # CONFIG_FB_N411 is not set
 CONFIG_FB_HGA=m
+CONFIG_FB_OPENCORES=m
 # CONFIG_FB_S1D13XXX is not set
 # CONFIG_FB_NVIDIA is not set
 CONFIG_FB_RIVA=m
@@ -3897,6 +4060,7 @@ CONFIG_FB_UDL=m
 # CONFIG_FB_BROADSHEET is not set
 # CONFIG_FB_AUO_K190X is not set
 CONFIG_FB_HYPERV=m
+CONFIG_FB_SIMPLE=y
 # CONFIG_EXYNOS_VIDEO is not set
 CONFIG_BACKLIGHT_LCD_SUPPORT=y
 CONFIG_LCD_CLASS_DEVICE=m
@@ -3909,10 +4073,13 @@ CONFIG_BACKLIGHT_APPLE=m
 # CONFIG_BACKLIGHT_SAHARA is not set
 # CONFIG_BACKLIGHT_ADP8860 is not set
 # CONFIG_BACKLIGHT_ADP8870 is not set
-# CONFIG_BACKLIGHT_LM3630 is not set
+# CONFIG_BACKLIGHT_LM3630A is not set
 # CONFIG_BACKLIGHT_LM3639 is not set
 # CONFIG_BACKLIGHT_LP855X is not set
 # CONFIG_BACKLIGHT_OT200 is not set
+# CONFIG_BACKLIGHT_GPIO is not set
+# CONFIG_BACKLIGHT_LV5207LP is not set
+# CONFIG_BACKLIGHT_BD6107 is not set
 
 #
 # Console display driver support
@@ -3924,9 +4091,6 @@ CONFIG_DUMMY_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
 # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
 CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
@@ -3950,6 +4114,7 @@ CONFIG_SND_SEQUENCER_OSS=y
 CONFIG_SND_HRTIMER=m
 CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
 CONFIG_SND_DYNAMIC_MINORS=y
+CONFIG_SND_MAX_CARDS=32
 # CONFIG_SND_SUPPORT_OLD_API is not set
 CONFIG_SND_VERBOSE_PROCFS=y
 CONFIG_SND_VERBOSE_PRINTK=y
@@ -4019,7 +4184,6 @@ CONFIG_SND_SSCAPE=m
 CONFIG_SND_WAVEFRONT=m
 CONFIG_SND_MSND_PINNACLE=m
 CONFIG_SND_MSND_CLASSIC=m
-CONFIG_SND_TEA575X=m
 CONFIG_SND_PCI=y
 CONFIG_SND_AD1889=m
 CONFIG_SND_ALS300=m
@@ -4066,9 +4230,7 @@ CONFIG_SND_ENS1371=m
 CONFIG_SND_ES1938=m
 CONFIG_SND_ES1968=m
 CONFIG_SND_ES1968_INPUT=y
-CONFIG_SND_ES1968_RADIO=y
 CONFIG_SND_FM801=m
-CONFIG_SND_FM801_TEA575X_BOOL=y
 CONFIG_SND_HDA_INTEL=m
 CONFIG_SND_HDA_PREALLOC_SIZE=64
 CONFIG_SND_HDA_HWDEP=y
@@ -4077,19 +4239,20 @@ CONFIG_SND_HDA_INPUT_BEEP=y
 CONFIG_SND_HDA_INPUT_BEEP_MODE=1
 CONFIG_SND_HDA_INPUT_JACK=y
 # CONFIG_SND_HDA_PATCH_LOADER is not set
-CONFIG_SND_HDA_CODEC_REALTEK=y
-CONFIG_SND_HDA_CODEC_ANALOG=y
-CONFIG_SND_HDA_CODEC_SIGMATEL=y
-CONFIG_SND_HDA_CODEC_VIA=y
-CONFIG_SND_HDA_CODEC_HDMI=y
-CONFIG_SND_HDA_CODEC_CIRRUS=y
-CONFIG_SND_HDA_CODEC_CONEXANT=y
-CONFIG_SND_HDA_CODEC_CA0110=y
-CONFIG_SND_HDA_CODEC_CA0132=y
+CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_ANALOG=m
+CONFIG_SND_HDA_CODEC_SIGMATEL=m
+CONFIG_SND_HDA_CODEC_VIA=m
+CONFIG_SND_HDA_CODEC_HDMI=m
+CONFIG_SND_HDA_I915=y
+CONFIG_SND_HDA_CODEC_CIRRUS=m
+CONFIG_SND_HDA_CODEC_CONEXANT=m
+CONFIG_SND_HDA_CODEC_CA0110=m
+CONFIG_SND_HDA_CODEC_CA0132=m
 # CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
-CONFIG_SND_HDA_CODEC_CMEDIA=y
-CONFIG_SND_HDA_CODEC_SI3054=y
-CONFIG_SND_HDA_GENERIC=y
+CONFIG_SND_HDA_CODEC_CMEDIA=m
+CONFIG_SND_HDA_CODEC_SI3054=m
+CONFIG_SND_HDA_GENERIC=m
 CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
 CONFIG_SND_HDSP=m
 CONFIG_SND_HDSPM=m
@@ -4125,8 +4288,10 @@ CONFIG_SND_USB_CAIAQ=m
 CONFIG_SND_USB_CAIAQ_INPUT=y
 CONFIG_SND_USB_US122L=m
 CONFIG_SND_USB_6FIRE=m
+CONFIG_SND_USB_HIFACE=m
 CONFIG_SND_FIREWIRE=y
 CONFIG_SND_FIREWIRE_LIB=m
+CONFIG_SND_DICE=m
 CONFIG_SND_FIREWIRE_SPEAKERS=m
 # CONFIG_SND_ISIGHT is not set
 # CONFIG_SND_SCS1X is not set
@@ -4162,8 +4327,10 @@ CONFIG_HID_CYPRESS=y
 # CONFIG_HID_DRAGONRISE is not set
 # CONFIG_HID_EMS_FF is not set
 # CONFIG_HID_ELECOM is not set
+# CONFIG_HID_ELO is not set
 CONFIG_HID_EZKEY=y
 # CONFIG_HID_HOLTEK is not set
+# CONFIG_HID_HUION is not set
 CONFIG_HID_KEYTOUCH=m
 CONFIG_HID_KYE=y
 # CONFIG_HID_UCLOGIC is not set
@@ -4195,7 +4362,6 @@ CONFIG_HID_PICOLCD_LCD=y
 CONFIG_HID_PICOLCD_LEDS=y
 CONFIG_HID_PICOLCD_CIR=y
 # CONFIG_HID_PRIMAX is not set
-# CONFIG_HID_PS3REMOTE is not set
 CONFIG_HID_ROCCAT=m
 CONFIG_HID_SAITEK=m
 CONFIG_HID_SAMSUNG=m
@@ -4212,6 +4378,7 @@ CONFIG_HID_THINGM=m
 # CONFIG_HID_THRUSTMASTER is not set
 # CONFIG_HID_WACOM is not set
 # CONFIG_HID_WIIMOTE is not set
+# CONFIG_HID_XINMO is not set
 # CONFIG_HID_ZEROPLUS is not set
 CONFIG_HID_ZYDACRON=m
 CONFIG_HID_SENSOR_HUB=m
@@ -4227,9 +4394,7 @@ CONFIG_USB_HIDDEV=y
 # I2C HID support
 #
 CONFIG_I2C_HID=m
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB_ARCH_HAS_XHCI=y
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
 CONFIG_USB_SUPPORT=y
 CONFIG_USB_COMMON=y
 CONFIG_USB_ARCH_HAS_HCD=y
@@ -4242,7 +4407,7 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 #
 CONFIG_USB_DEFAULT_PERSIST=y
 # CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_OTG is not set
+CONFIG_USB_OTG=y
 # CONFIG_USB_OTG_WHITELIST is not set
 # CONFIG_USB_OTG_BLACKLIST_HUB is not set
 CONFIG_USB_MON=m
@@ -4256,7 +4421,6 @@ CONFIG_USB_WUSB_CBAF=m
 # CONFIG_USB_C67X00_HCD is not set
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_PLATFORM=m
-# CONFIG_USB_XHCI_HCD_DEBUGGING is not set
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_ROOT_HUB_TT=y
 CONFIG_USB_EHCI_TT_NEWSCHED=y
@@ -4266,11 +4430,11 @@ CONFIG_USB_EHCI_HCD_PLATFORM=y
 # CONFIG_USB_ISP116X_HCD is not set
 # CONFIG_USB_ISP1760_HCD is not set
 CONFIG_USB_ISP1362_HCD=m
+# CONFIG_USB_FUSBH200_HCD is not set
+# CONFIG_USB_FOTG210_HCD is not set
 CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD_PCI=y
 CONFIG_USB_OHCI_HCD_PLATFORM=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_UHCI_HCD=y
 # CONFIG_USB_U132_HCD is not set
 CONFIG_USB_SL811_HCD=m
@@ -4279,7 +4443,9 @@ CONFIG_USB_SL811_HCD_ISO=y
 # CONFIG_USB_R8A66597_HCD is not set
 CONFIG_USB_WHCI_HCD=m
 CONFIG_USB_HWA_HCD=m
+CONFIG_USB_HCD_BCMA=m
 CONFIG_USB_HCD_SSB=m
+# CONFIG_USB_HCD_TEST_MODE is not set
 
 #
 # USB Device Class drivers
@@ -4318,9 +4484,22 @@ CONFIG_USB_STORAGE_ENE_UB6250=m
 #
 CONFIG_USB_MDC800=m
 CONFIG_USB_MICROTEK=m
+# CONFIG_USB_MUSB_HDRC is not set
 CONFIG_USB_DWC3=m
 CONFIG_USB_DWC3_HOST=y
+
+#
+# Platform Glue Driver Support
+#
+# CONFIG_USB_DWC3_EXYNOS is not set
+CONFIG_USB_DWC3_PCI=m
+CONFIG_USB_DWC3_KEYSTONE=m
+
+#
+# Debugging features
+#
 # CONFIG_USB_DWC3_DEBUG is not set
+# CONFIG_USB_DWC2 is not set
 CONFIG_USB_CHIPIDEA=m
 # CONFIG_USB_CHIPIDEA_HOST is not set
 # CONFIG_USB_CHIPIDEA_DEBUG is not set
@@ -4331,6 +4510,7 @@ CONFIG_USB_CHIPIDEA=m
 CONFIG_USB_USS720=m
 CONFIG_USB_SERIAL=m
 CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_SIMPLE=m
 CONFIG_USB_SERIAL_AIRCABLE=m
 CONFIG_USB_SERIAL_ARK3116=m
 CONFIG_USB_SERIAL_BELKIN=m
@@ -4341,7 +4521,6 @@ CONFIG_USB_SERIAL_CP210X=m
 CONFIG_USB_SERIAL_CYPRESS_M8=m
 # CONFIG_USB_SERIAL_EMPEG is not set
 CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
 CONFIG_USB_SERIAL_VISOR=m
 CONFIG_USB_SERIAL_IPAQ=m
 CONFIG_USB_SERIAL_IR=m
@@ -4360,16 +4539,14 @@ CONFIG_USB_SERIAL_MCT_U232=m
 CONFIG_USB_SERIAL_MOS7720=m
 CONFIG_USB_SERIAL_MOS7715_PARPORT=y
 CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_MOTOROLA=m
+CONFIG_USB_SERIAL_MXUPORT=m
 # CONFIG_USB_SERIAL_NAVMAN is not set
 CONFIG_USB_SERIAL_PL2303=m
 CONFIG_USB_SERIAL_OTI6858=m
 CONFIG_USB_SERIAL_QCAUX=m
 CONFIG_USB_SERIAL_QUALCOMM=m
 CONFIG_USB_SERIAL_SPCP8X5=m
-# CONFIG_USB_SERIAL_HP4X is not set
 # CONFIG_USB_SERIAL_SAFE is not set
-CONFIG_USB_SERIAL_SIEMENS_MPI=m
 CONFIG_USB_SERIAL_SIERRAWIRELESS=m
 # CONFIG_USB_SERIAL_SYMBOL is not set
 # CONFIG_USB_SERIAL_TI is not set
@@ -4379,9 +4556,7 @@ CONFIG_USB_SERIAL_WWAN=m
 CONFIG_USB_SERIAL_OPTION=m
 # CONFIG_USB_SERIAL_OMNINET is not set
 # CONFIG_USB_SERIAL_OPTICON is not set
-# CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set
 # CONFIG_USB_SERIAL_XSENS_MT is not set
-# CONFIG_USB_SERIAL_ZIO is not set
 # CONFIG_USB_SERIAL_WISHBONE is not set
 CONFIG_USB_SERIAL_ZTE=m
 CONFIG_USB_SERIAL_SSU100=m
@@ -4410,6 +4585,7 @@ CONFIG_USB_SISUSBVGA_CON=y
 # CONFIG_USB_TRANCEVIBRATOR is not set
 CONFIG_USB_IOWARRIOR=m
 # CONFIG_USB_TEST is not set
+CONFIG_USB_EHSET_TEST_FIXTURE=m
 # CONFIG_USB_ISIGHTFW is not set
 CONFIG_USB_YUREX=m
 CONFIG_USB_EZUSB_FX2=m
@@ -4419,7 +4595,18 @@ CONFIG_USB_SPEEDTOUCH=m
 CONFIG_USB_CXACRU=m
 CONFIG_USB_UEAGLEATM=m
 CONFIG_USB_XUSBATM=m
-# CONFIG_USB_PHY is not set
+
+#
+# USB Physical Layer drivers
+#
+CONFIG_USB_PHY=y
+CONFIG_USB_OTG_FSM=m
+# CONFIG_NOP_USB_XCEIV is not set
+# CONFIG_SAMSUNG_USB2PHY is not set
+# CONFIG_SAMSUNG_USB3PHY is not set
+# CONFIG_USB_GPIO_VBUS is not set
+# CONFIG_USB_ISP1301 is not set
+# CONFIG_USB_RCAR_PHY is not set
 # CONFIG_USB_GADGET is not set
 CONFIG_UWB=m
 CONFIG_UWB_HWA=m
@@ -4465,6 +4652,7 @@ CONFIG_MEMSTICK=m
 #
 # CONFIG_MEMSTICK_UNSAFE_RESUME is not set
 CONFIG_MSPRO_BLOCK=m
+CONFIG_MS_BLOCK=m
 
 #
 # MemoryStick Host Controller Drivers
@@ -4490,14 +4678,15 @@ CONFIG_LEDS_LP55XX_COMMON=m
 CONFIG_LEDS_LP5521=m
 CONFIG_LEDS_LP5523=m
 CONFIG_LEDS_LP5562=m
+CONFIG_LEDS_LP8501=m
 CONFIG_LEDS_CLEVO_MAIL=m
 CONFIG_LEDS_PCA955X=m
-CONFIG_LEDS_PCA9633=m
+CONFIG_LEDS_PCA963X=m
+CONFIG_LEDS_PCA9685=m
 CONFIG_LEDS_BD2802=m
 CONFIG_LEDS_INTEL_SS4200=m
 CONFIG_LEDS_LT3593=m
 CONFIG_LEDS_DELL_NETBOOKS=m
-# CONFIG_LEDS_RENESAS_TPU is not set
 CONFIG_LEDS_TCA6507=m
 CONFIG_LEDS_LM355x=m
 CONFIG_LEDS_OT200=m
@@ -4571,7 +4760,9 @@ CONFIG_RTC_DRV_MAX6900=m
 CONFIG_RTC_DRV_RS5C372=m
 CONFIG_RTC_DRV_ISL1208=m
 CONFIG_RTC_DRV_ISL12022=m
+CONFIG_RTC_DRV_ISL12057=m
 CONFIG_RTC_DRV_X1205=m
+CONFIG_RTC_DRV_PCF2127=m
 CONFIG_RTC_DRV_PCF8523=m
 CONFIG_RTC_DRV_PCF8563=m
 CONFIG_RTC_DRV_PCF8583=m
@@ -4610,6 +4801,7 @@ CONFIG_RTC_DRV_DS2404=m
 #
 # on-CPU RTC drivers
 #
+CONFIG_RTC_DRV_MOXART=m
 
 #
 # HID Sensor RTC drivers
@@ -4623,8 +4815,9 @@ CONFIG_DMADEVICES=y
 #
 # CONFIG_INTEL_MID_DMAC is not set
 CONFIG_INTEL_IOATDMA=m
+CONFIG_DW_DMAC_CORE=m
 CONFIG_DW_DMAC=m
-# CONFIG_DW_DMAC_BIG_ENDIAN_IO is not set
+CONFIG_DW_DMAC_PCI=m
 CONFIG_TIMB_DMA=m
 CONFIG_PCH_DMA=m
 CONFIG_DMA_ENGINE=y
@@ -4635,17 +4828,18 @@ CONFIG_DMA_ACPI=y
 #
 CONFIG_ASYNC_TX_DMA=y
 # CONFIG_DMATEST is not set
+CONFIG_DMA_ENGINE_RAID=y
 CONFIG_DCA=m
 # CONFIG_AUXDISPLAY is not set
 CONFIG_UIO=m
 # CONFIG_UIO_CIF is not set
-# CONFIG_UIO_PDRV is not set
 # CONFIG_UIO_PDRV_GENIRQ is not set
 # CONFIG_UIO_DMEM_GENIRQ is not set
 CONFIG_UIO_AEC=m
 CONFIG_UIO_SERCOS3=m
 CONFIG_UIO_PCI_GENERIC=m
 # CONFIG_UIO_NETX is not set
+# CONFIG_UIO_MF624 is not set
 # CONFIG_VFIO is not set
 CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRTIO=y
@@ -4675,14 +4869,16 @@ CONFIG_USBIP_HOST=m
 # CONFIG_PRISM2_USB is not set
 CONFIG_ECHO=m
 # CONFIG_COMEDI is not set
-# CONFIG_ASUS_OLED is not set
 # CONFIG_PANEL is not set
 # CONFIG_R8187SE is not set
 # CONFIG_RTL8192U is not set
 # CONFIG_RTLLIB is not set
 # CONFIG_R8712U is not set
+# CONFIG_R8188EU is not set
+# CONFIG_R8821AE is not set
 CONFIG_RTS5139=m
 # CONFIG_RTS5139_DEBUG is not set
+# CONFIG_RTS5208 is not set
 # CONFIG_TRANZPORT is not set
 # CONFIG_IDE_PHISON is not set
 # CONFIG_LINE6_USB is not set
@@ -4757,10 +4953,7 @@ CONFIG_RTS5139=m
 # Triggers - standalone
 #
 # CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set
-# CONFIG_IIO_GPIO_TRIGGER is not set
-# CONFIG_IIO_SYSFS_TRIGGER is not set
 # CONFIG_IIO_SIMPLE_DUMMY is not set
-# CONFIG_ZSMALLOC is not set
 # CONFIG_WLAGS49_H2 is not set
 # CONFIG_WLAGS49_H25 is not set
 # CONFIG_FB_SM7XX is not set
@@ -4785,17 +4978,19 @@ CONFIG_RTS5139=m
 # CONFIG_ANDROID is not set
 # CONFIG_USB_WPAN_HCD is not set
 # CONFIG_WIMAX_GDM72XX is not set
-# CONFIG_CSR_WIFI is not set
+CONFIG_LTE_GDM724X=m
 # CONFIG_NET_VENDOR_SILICOM is not set
 # CONFIG_CED1401 is not set
 # CONFIG_DGRP is not set
 # CONFIG_FIREWIRE_SERIAL is not set
-# CONFIG_USB_DWC2 is not set
+# CONFIG_LUSTRE_FS is not set
+# CONFIG_XILLYBUS is not set
+# CONFIG_DGNC is not set
+# CONFIG_DGAP is not set
 CONFIG_X86_PLATFORM_DEVICES=y
 CONFIG_ACER_WMI=m
 CONFIG_ACERHDF=m
 CONFIG_ASUS_LAPTOP=m
-CONFIG_CHROMEOS_LAPTOP=m
 CONFIG_DELL_LAPTOP=m
 CONFIG_DELL_WMI=m
 CONFIG_DELL_WMI_AIO=m
@@ -4805,6 +5000,7 @@ CONFIG_FUJITSU_LAPTOP=m
 CONFIG_AMILO_RFKILL=m
 CONFIG_TC1100_WMI=m
 CONFIG_HP_ACCEL=m
+# CONFIG_HP_WIRELESS is not set
 CONFIG_HP_WMI=m
 CONFIG_MSI_LAPTOP=m
 CONFIG_PANASONIC_LAPTOP=m
@@ -4839,7 +5035,10 @@ CONFIG_MXM_WMI=m
 CONFIG_INTEL_OAKTRAIL=m
 CONFIG_SAMSUNG_Q10=m
 # CONFIG_APPLE_GMUX is not set
+CONFIG_INTEL_RST=m
+# CONFIG_INTEL_SMARTCONNECT is not set
 CONFIG_PVPANIC=m
+# CONFIG_CHROME_PLATFORMS is not set
 CONFIG_CLKDEV_LOOKUP=y
 CONFIG_HAVE_CLK_PREPARE=y
 CONFIG_COMMON_CLK=y
@@ -4847,7 +5046,7 @@ CONFIG_COMMON_CLK=y
 #
 # Common Clock Framework
 #
-# CONFIG_COMMON_CLK_DEBUG is not set
+# CONFIG_COMMON_CLK_SI5351 is not set
 
 #
 # Hardware Spinlock drivers
@@ -4885,6 +5084,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 #
 # Accelerometers
 #
+# CONFIG_BMA180 is not set
 # CONFIG_HID_SENSOR_ACCEL_3D is not set
 # CONFIG_IIO_ST_ACCEL_3AXIS is not set
 
@@ -4892,6 +5092,8 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 # Analog to digital converters
 #
 # CONFIG_MAX1363 is not set
+# CONFIG_MCP3422 is not set
+# CONFIG_NAU7802 is not set
 # CONFIG_TI_ADC081C is not set
 # CONFIG_VIPERBOARD_ADC is not set
 
@@ -4904,7 +5106,6 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 #
 CONFIG_HID_SENSOR_IIO_COMMON=m
 CONFIG_HID_SENSOR_IIO_TRIGGER=m
-# CONFIG_HID_SENSOR_ENUM_BASE_QUIRKS is not set
 
 #
 # Digital to analog converters
@@ -4934,6 +5135,11 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=m
 # CONFIG_IIO_ST_GYRO_3AXIS is not set
 # CONFIG_ITG3200 is not set
 
+#
+# Humidity sensors
+#
+# CONFIG_DHT11 is not set
+
 #
 # Inertial measurement units
 #
@@ -4943,21 +5149,60 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=m
 # Light sensors
 #
 # CONFIG_ADJD_S311 is not set
+# CONFIG_APDS9300 is not set
+# CONFIG_CM32181 is not set
+# CONFIG_CM36651 is not set
+# CONFIG_GP2AP020A00F is not set
+# CONFIG_HID_SENSOR_ALS is not set
 # CONFIG_SENSORS_LM3533 is not set
+# CONFIG_TCS3472 is not set
 # CONFIG_SENSORS_TSL2563 is not set
+# CONFIG_TSL4531 is not set
 # CONFIG_VCNL4000 is not set
-# CONFIG_HID_SENSOR_ALS is not set
 
 #
 # Magnetometer sensors
 #
 # CONFIG_AK8975 is not set
+# CONFIG_MAG3110 is not set
 # CONFIG_HID_SENSOR_MAGNETOMETER_3D is not set
 # CONFIG_IIO_ST_MAGN_3AXIS is not set
+
+#
+# Inclinometer sensors
+#
+# CONFIG_HID_SENSOR_INCLINOMETER_3D is not set
+
+#
+# Triggers - standalone
+#
+# CONFIG_IIO_INTERRUPT_TRIGGER is not set
+# CONFIG_IIO_SYSFS_TRIGGER is not set
+
+#
+# Pressure sensors
+#
+# CONFIG_MPL3115 is not set
+# CONFIG_IIO_ST_PRESS is not set
+
+#
+# Temperature sensors
+#
+# CONFIG_TMP006 is not set
+# CONFIG_NTB is not set
 # CONFIG_VME_BUS is not set
 # CONFIG_PWM is not set
 # CONFIG_IPACK_BUS is not set
-# CONFIG_RESET_CONTROLLER is not set
+CONFIG_RESET_CONTROLLER=y
+# CONFIG_FMC is not set
+
+#
+# PHY Subsystem
+#
+CONFIG_GENERIC_PHY=y
+# CONFIG_PHY_EXYNOS_MIPI_VIDEO is not set
+# CONFIG_BCM_KONA_USB2_PHY is not set
+# CONFIG_POWERCAP is not set
 
 #
 # Firmware Drivers
@@ -4969,6 +5214,7 @@ CONFIG_DELL_RBU=m
 CONFIG_DCDBAS=m
 CONFIG_DMIID=y
 CONFIG_DMI_SYSFS=y
+CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
 CONFIG_ISCSI_IBFT_FIND=y
 CONFIG_ISCSI_IBFT=m
 # CONFIG_GOOGLE_FIRMWARE is not set
@@ -4979,6 +5225,7 @@ CONFIG_ISCSI_IBFT=m
 CONFIG_EFI_VARS=y
 CONFIG_EFI_VARS_PSTORE=y
 # CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set
+CONFIG_UEFI_CPER=y
 
 #
 # File systems
@@ -5014,6 +5261,7 @@ CONFIG_BTRFS_FS_POSIX_ACL=y
 # CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set
 # CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
 # CONFIG_BTRFS_DEBUG is not set
+CONFIG_BTRFS_ASSERT=y
 # CONFIG_NILFS2_FS is not set
 CONFIG_FS_POSIX_ACL=y
 CONFIG_EXPORTFS=y
@@ -5034,7 +5282,6 @@ CONFIG_QUOTACTL=y
 CONFIG_AUTOFS4_FS=y
 CONFIG_FUSE_FS=m
 CONFIG_CUSE=m
-CONFIG_GENERIC_ACL=y
 
 #
 # Caches
@@ -5117,10 +5364,13 @@ CONFIG_NFS_V3_ACL=y
 CONFIG_NFS_V4=m
 # CONFIG_NFS_SWAP is not set
 CONFIG_NFS_V4_1=y
+CONFIG_NFS_V4_2=y
 CONFIG_PNFS_FILE_LAYOUT=m
 CONFIG_PNFS_BLOCK=m
 CONFIG_PNFS_OBJLAYOUT=m
 CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="ipfire.org"
+CONFIG_NFS_V4_1_MIGRATION=y
+CONFIG_NFS_V4_SECURITY_LABEL=y
 CONFIG_NFS_FSCACHE=y
 # CONFIG_NFS_USE_LEGACY_DNS is not set
 CONFIG_NFS_USE_KERNEL_DNS=y
@@ -5129,6 +5379,7 @@ CONFIG_NFSD_V2_ACL=y
 CONFIG_NFSD_V3=y
 CONFIG_NFSD_V3_ACL=y
 CONFIG_NFSD_V4=y
+CONFIG_NFSD_V4_SECURITY_LABEL=y
 # CONFIG_NFSD_FAULT_INJECTION is not set
 CONFIG_LOCKD=m
 CONFIG_LOCKD_V4=y
@@ -5213,64 +5464,92 @@ CONFIG_DLM=m
 # Kernel hacking
 #
 CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+
+#
+# printk and dmesg options
+#
 # CONFIG_PRINTK_TIME is not set
 CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
+# CONFIG_BOOT_PRINTK_DELAY is not set
+CONFIG_DYNAMIC_DEBUG=y
+
+#
+# Compile-time checks and compiler options
+#
+# CONFIG_DEBUG_INFO is not set
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 CONFIG_ENABLE_MUST_CHECK=y
 CONFIG_FRAME_WARN=2048
-# CONFIG_MAGIC_SYSRQ is not set
 CONFIG_STRIP_ASM_SYMS=y
 # CONFIG_READABLE_ASM is not set
 # CONFIG_UNUSED_SYMBOLS is not set
 CONFIG_DEBUG_FS=y
 CONFIG_HEADERS_CHECK=y
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_ARCH_WANT_FRAME_POINTERS=y
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+# CONFIG_MAGIC_SYSRQ is not set
 CONFIG_DEBUG_KERNEL=y
+
+#
+# Memory Debugging
+#
+# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_VIRTUAL is not set
+CONFIG_DEBUG_MEMORY_INIT=y
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
+# CONFIG_DEBUG_HIGHMEM is not set
+CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
+CONFIG_DEBUG_STACKOVERFLOW=y
+CONFIG_HAVE_ARCH_KMEMCHECK=y
 CONFIG_DEBUG_SHIRQ=y
+
+#
+# Debug Lockups and Hangs
+#
 CONFIG_LOCKUP_DETECTOR=y
 CONFIG_HARDLOCKUP_DETECTOR=y
 # CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set
 CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0
 # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
 CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+# CONFIG_DETECT_HUNG_TASK is not set
 # CONFIG_PANIC_ON_OOPS is not set
 CONFIG_PANIC_ON_OOPS_VALUE=0
-# CONFIG_DETECT_HUNG_TASK is not set
+CONFIG_PANIC_TIMEOUT=0
 CONFIG_SCHED_DEBUG=y
 CONFIG_SCHEDSTATS=y
 CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_SLUB_DEBUG_ON is not set
-# CONFIG_SLUB_STATS is not set
-CONFIG_HAVE_DEBUG_KMEMLEAK=y
-# CONFIG_DEBUG_KMEMLEAK is not set
+
+#
+# Lock Debugging (spinlocks, mutexes, etc...)
+#
 # CONFIG_DEBUG_RT_MUTEXES is not set
 # CONFIG_RT_MUTEX_TESTER is not set
 # CONFIG_DEBUG_SPINLOCK is not set
 # CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
 # CONFIG_DEBUG_LOCK_ALLOC is not set
 # CONFIG_PROVE_LOCKING is not set
 # CONFIG_LOCK_STAT is not set
 # CONFIG_DEBUG_ATOMIC_SLEEP is not set
 # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
 CONFIG_STACKTRACE=y
-# CONFIG_DEBUG_STACK_USAGE is not set
 # CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_HIGHMEM is not set
 CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_VIRTUAL is not set
 # CONFIG_DEBUG_WRITECOUNT is not set
-CONFIG_DEBUG_MEMORY_INIT=y
 CONFIG_DEBUG_LIST=y
-# CONFIG_TEST_LIST_SORT is not set
 # CONFIG_DEBUG_SG is not set
 # CONFIG_DEBUG_NOTIFIERS is not set
 # CONFIG_DEBUG_CREDENTIALS is not set
-CONFIG_ARCH_WANT_FRAME_POINTERS=y
-CONFIG_FRAME_POINTER=y
-# CONFIG_BOOT_PRINTK_DELAY is not set
 
 #
 # RCU Debugging
@@ -5280,16 +5559,11 @@ CONFIG_FRAME_POINTER=y
 CONFIG_RCU_CPU_STALL_TIMEOUT=60
 # CONFIG_RCU_CPU_STALL_INFO is not set
 # CONFIG_RCU_TRACE is not set
-# CONFIG_BACKTRACE_SELF_TEST is not set
 # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
-# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
-# CONFIG_DEBUG_PER_CPU_MAPS is not set
-# CONFIG_LKDTM is not set
 # CONFIG_NOTIFIER_ERROR_INJECTION is not set
 # CONFIG_FAULT_INJECTION is not set
 CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS=y
 # CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
-# CONFIG_DEBUG_PAGEALLOC is not set
 CONFIG_USER_STACKTRACE_SUPPORT=y
 CONFIG_NOP_TRACER=y
 CONFIG_HAVE_FUNCTION_TRACER=y
@@ -5332,24 +5606,32 @@ CONFIG_FTRACE_MCOUNT_RECORD=y
 # CONFIG_MMIOTRACE is not set
 CONFIG_RING_BUFFER_BENCHMARK=m
 # CONFIG_RING_BUFFER_STARTUP_TEST is not set
+
+#
+# Runtime Testing
+#
+# CONFIG_LKDTM is not set
+# CONFIG_TEST_LIST_SORT is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
 CONFIG_RBTREE_TEST=m
 # CONFIG_INTERVAL_TREE_TEST is not set
-# CONFIG_BUILD_DOCSRC is not set
-CONFIG_DYNAMIC_DEBUG=y
-# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_PERCPU_TEST is not set
 # CONFIG_ATOMIC64_SELFTEST is not set
 CONFIG_ASYNC_RAID6_TEST=m
+# CONFIG_TEST_STRING_HELPERS is not set
+# CONFIG_TEST_KSTRTOX is not set
+# CONFIG_BUILD_DOCSRC is not set
+# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_TEST_MODULE is not set
+# CONFIG_TEST_USER_COPY is not set
 # CONFIG_SAMPLES is not set
 CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_KGDB is not set
-CONFIG_HAVE_ARCH_KMEMCHECK=y
-# CONFIG_TEST_STRING_HELPERS is not set
-# CONFIG_TEST_KSTRTOX is not set
 CONFIG_STRICT_DEVMEM=y
 # CONFIG_X86_VERBOSE_BOOTUP is not set
 CONFIG_EARLY_PRINTK=y
 # CONFIG_EARLY_PRINTK_DBGP is not set
-CONFIG_DEBUG_STACKOVERFLOW=y
+CONFIG_EARLY_PRINTK_EFI=y
 # CONFIG_X86_PTDUMP is not set
 CONFIG_DEBUG_NX_TEST=m
 CONFIG_DOUBLEFAULT=y
@@ -5369,6 +5651,7 @@ CONFIG_DEBUG_BOOT_PARAMS=y
 # CONFIG_CPA_DEBUG is not set
 CONFIG_OPTIMIZE_INLINING=y
 # CONFIG_DEBUG_NMI_SELFTEST is not set
+# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set
 
 #
 # Security options
@@ -5427,6 +5710,7 @@ CONFIG_PAX_RANDMMAP=y
 #
 # Miscellaneous hardening features
 #
+CONFIG_PAX_MEMORY_SANITIZE=y
 CONFIG_PAX_MEMORY_STACKLEAK=y
 CONFIG_PAX_MEMORY_STRUCTLEAK=y
 # CONFIG_PAX_MEMORY_UDEREF is not set
@@ -5448,6 +5732,8 @@ CONFIG_GRKERNSEC_PROC_MEMMAP=y
 CONFIG_GRKERNSEC_BRUTE=y
 CONFIG_GRKERNSEC_MODHARDEN=y
 CONFIG_GRKERNSEC_HIDESYM=y
+CONFIG_GRKERNSEC_RANDSTRUCT=y
+CONFIG_GRKERNSEC_RANDSTRUCT_PERFORMANCE=y
 CONFIG_GRKERNSEC_KERN_LOCKOUT=y
 
 #
@@ -5507,12 +5793,12 @@ CONFIG_GRKERNSEC_DMESG=y
 CONFIG_GRKERNSEC_HARDEN_PTRACE=y
 CONFIG_GRKERNSEC_PTRACE_READEXEC=y
 CONFIG_GRKERNSEC_SETXID=y
+CONFIG_GRKERNSEC_HARDEN_IPC=y
 # CONFIG_GRKERNSEC_TPE is not set
 
 #
 # Network Protections
 #
-CONFIG_GRKERNSEC_RANDNET=y
 CONFIG_GRKERNSEC_BLACKHOLE=y
 CONFIG_GRKERNSEC_NO_SIMULT_CONNECT=y
 # CONFIG_GRKERNSEC_SOCKET is not set
@@ -5533,6 +5819,8 @@ CONFIG_GRKERNSEC_NO_SIMULT_CONNECT=y
 CONFIG_GRKERNSEC_FLOODTIME=10
 CONFIG_GRKERNSEC_FLOODBURST=6
 CONFIG_KEYS=y
+# CONFIG_PERSISTENT_KEYRINGS is not set
+# CONFIG_BIG_KEYS is not set
 # CONFIG_ENCRYPTED_KEYS is not set
 CONFIG_KEYS_DEBUG_PROC_KEYS=y
 CONFIG_SECURITY_DMESG_RESTRICT=y
@@ -5585,7 +5873,7 @@ CONFIG_CRYPTO_WORKQUEUE=y
 CONFIG_CRYPTO_CRYPTD=y
 CONFIG_CRYPTO_AUTHENC=m
 CONFIG_CRYPTO_TEST=m
-CONFIG_CRYPTO_ABLK_HELPER_X86=y
+CONFIG_CRYPTO_ABLK_HELPER=y
 CONFIG_CRYPTO_GLUE_HELPER_X86=m
 
 #
@@ -5621,6 +5909,7 @@ CONFIG_CRYPTO_CRC32C=y
 CONFIG_CRYPTO_CRC32C_INTEL=y
 CONFIG_CRYPTO_CRC32=y
 CONFIG_CRYPTO_CRC32_PCLMUL=m
+CONFIG_CRYPTO_CRCT10DIF=y
 CONFIG_CRYPTO_GHASH=m
 CONFIG_CRYPTO_MD4=m
 CONFIG_CRYPTO_MD5=y
@@ -5668,6 +5957,8 @@ CONFIG_CRYPTO_TWOFISH_586=m
 CONFIG_CRYPTO_DEFLATE=m
 CONFIG_CRYPTO_ZLIB=m
 CONFIG_CRYPTO_LZO=m
+CONFIG_CRYPTO_LZ4=m
+CONFIG_CRYPTO_LZ4HC=m
 
 #
 # Random Number Generation
@@ -5676,6 +5967,7 @@ CONFIG_CRYPTO_ANSI_CPRNG=m
 CONFIG_CRYPTO_USER_API=y
 CONFIG_CRYPTO_USER_API_HASH=y
 CONFIG_CRYPTO_USER_API_SKCIPHER=y
+CONFIG_CRYPTO_HASH_INFO=y
 CONFIG_CRYPTO_HW=y
 CONFIG_CRYPTO_DEV_PADLOCK=m
 CONFIG_CRYPTO_DEV_PADLOCK_AES=m
@@ -5683,6 +5975,9 @@ CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
 CONFIG_CRYPTO_DEV_GEODE=m
 CONFIG_CRYPTO_DEV_HIFN_795X=m
 CONFIG_CRYPTO_DEV_HIFN_795X_RNG=y
+CONFIG_CRYPTO_DEV_CCP=y
+CONFIG_CRYPTO_DEV_CCP_DD=m
+CONFIG_CRYPTO_DEV_CCP_CRYPTO=m
 CONFIG_ASYMMETRIC_KEY_TYPE=m
 CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
 CONFIG_PUBLIC_KEY_ALGO_RSA=m
@@ -5696,6 +5991,7 @@ CONFIG_KVM_MMIO=y
 CONFIG_KVM_ASYNC_PF=y
 CONFIG_HAVE_KVM_MSI=y
 CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y
+CONFIG_KVM_VFIO=y
 CONFIG_VIRTUALIZATION=y
 CONFIG_KVM=m
 CONFIG_KVM_INTEL=m
@@ -5712,10 +6008,12 @@ CONFIG_RAID6_PQ=m
 CONFIG_BITREVERSE=y
 CONFIG_GENERIC_STRNCPY_FROM_USER=y
 CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_NET_UTILS=y
 CONFIG_GENERIC_FIND_FIRST_BIT=y
 CONFIG_GENERIC_PCI_IOMAP=y
 CONFIG_GENERIC_IOMAP=y
 CONFIG_GENERIC_IO=y
+CONFIG_ARCH_HAS_FAST_MULTIPLIER=y
 CONFIG_CRC_CCITT=y
 CONFIG_CRC16=y
 CONFIG_CRC_T10DIF=y
@@ -5730,10 +6028,14 @@ CONFIG_CRC7=m
 CONFIG_LIBCRC32C=m
 CONFIG_CRC8=m
 CONFIG_AUDIT_GENERIC=y
+# CONFIG_RANDOM32_SELFTEST is not set
 CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=m
+CONFIG_ZLIB_DEFLATE=y
 CONFIG_LZO_COMPRESS=y
 CONFIG_LZO_DECOMPRESS=y
+CONFIG_LZ4_COMPRESS=m
+CONFIG_LZ4HC_COMPRESS=m
+CONFIG_LZ4_DECOMPRESS=y
 CONFIG_XZ_DEC=y
 CONFIG_XZ_DEC_X86=y
 CONFIG_XZ_DEC_POWERPC=y
@@ -5748,11 +6050,13 @@ CONFIG_DECOMPRESS_BZIP2=y
 CONFIG_DECOMPRESS_LZMA=y
 CONFIG_DECOMPRESS_XZ=y
 CONFIG_DECOMPRESS_LZO=y
+CONFIG_DECOMPRESS_LZ4=y
 CONFIG_GENERIC_ALLOCATOR=y
 CONFIG_TEXTSEARCH=y
 CONFIG_TEXTSEARCH_KMP=m
 CONFIG_TEXTSEARCH_BM=m
 CONFIG_TEXTSEARCH_FSM=m
+CONFIG_ASSOCIATIVE_ARRAY=y
 CONFIG_HAS_IOMEM=y
 CONFIG_HAS_IOPORT=y
 CONFIG_HAS_DMA=y
@@ -5768,3 +6072,7 @@ CONFIG_CORDIC=m
 CONFIG_MPILIB=m
 CONFIG_OID_REGISTRY=m
 CONFIG_UCS2_STRING=y
+CONFIG_FONT_SUPPORT=y
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
index f395f3116ed774983ea6d964d9ba1799346ec595..ff3a9eea7d7281c1384b5935f12a4f8c3ff0ae1f 100644 (file)
@@ -1,6 +1,6 @@
 #
 # Automatically generated file; DO NOT EDIT.
-# Linux/x86 3.10.40-ipfire Kernel Configuration
+# Linux/x86 3.14.22 Kernel Configuration
 #
 # CONFIG_64BIT is not set
 CONFIG_X86_32=y
@@ -28,6 +28,8 @@ CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK=y
 CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y
 CONFIG_ARCH_HIBERNATION_POSSIBLE=y
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y
+CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
 # CONFIG_ZONE_DMA32 is not set
 # CONFIG_AUDIT_ARCH is not set
 CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING=y
@@ -36,7 +38,6 @@ CONFIG_HAVE_INTEL_TXT=y
 CONFIG_X86_32_SMP=y
 CONFIG_X86_HT=y
 CONFIG_ARCH_HWEIGHT_CFLAGS="-fcall-saved-ecx -fcall-saved-edx"
-CONFIG_ARCH_CPU_PROBE_RELEASE=y
 CONFIG_ARCH_SUPPORTS_UPROBES=y
 CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
 CONFIG_IRQ_WORK=y
@@ -47,6 +48,7 @@ CONFIG_BUILDTIME_EXTABLE_SORT=y
 #
 CONFIG_INIT_ENV_ARG_LIMIT=32
 CONFIG_CROSS_COMPILE=""
+# CONFIG_COMPILE_TEST is not set
 CONFIG_LOCALVERSION=""
 # CONFIG_LOCALVERSION_AUTO is not set
 CONFIG_HAVE_KERNEL_GZIP=y
@@ -54,11 +56,13 @@ CONFIG_HAVE_KERNEL_BZIP2=y
 CONFIG_HAVE_KERNEL_LZMA=y
 CONFIG_HAVE_KERNEL_XZ=y
 CONFIG_HAVE_KERNEL_LZO=y
+CONFIG_HAVE_KERNEL_LZ4=y
 # CONFIG_KERNEL_GZIP is not set
 # CONFIG_KERNEL_BZIP2 is not set
 # CONFIG_KERNEL_LZMA is not set
 CONFIG_KERNEL_XZ=y
 # CONFIG_KERNEL_LZO is not set
+# CONFIG_KERNEL_LZ4 is not set
 CONFIG_DEFAULT_HOSTNAME="(none)"
 CONFIG_SWAP=y
 CONFIG_SYSVIPC=y
@@ -70,13 +74,10 @@ CONFIG_AUDIT=y
 CONFIG_AUDITSYSCALL=y
 CONFIG_AUDIT_WATCH=y
 CONFIG_AUDIT_TREE=y
-CONFIG_AUDIT_LOGINUID_IMMUTABLE=y
-CONFIG_HAVE_GENERIC_HARDIRQS=y
 
 #
 # IRQ subsystem
 #
-CONFIG_GENERIC_HARDIRQS=y
 CONFIG_GENERIC_IRQ_PROBE=y
 CONFIG_GENERIC_IRQ_SHOW=y
 CONFIG_GENERIC_PENDING_IRQ=y
@@ -153,6 +154,7 @@ CONFIG_BLK_CGROUP=y
 CONFIG_NAMESPACES=y
 CONFIG_UTS_NS=y
 CONFIG_IPC_NS=y
+CONFIG_USER_NS=y
 CONFIG_PID_NS=y
 CONFIG_NET_NS=y
 CONFIG_SCHED_AUTOGROUP=y
@@ -165,12 +167,12 @@ CONFIG_RD_BZIP2=y
 CONFIG_RD_LZMA=y
 CONFIG_RD_XZ=y
 CONFIG_RD_LZO=y
+CONFIG_RD_LZ4=y
 # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
 CONFIG_SYSCTL=y
 CONFIG_ANON_INODES=y
 CONFIG_HAVE_UID16=y
 CONFIG_SYSCTL_EXCEPTION_TRACE=y
-CONFIG_HOTPLUG=y
 CONFIG_HAVE_PCSPKR_PLATFORM=y
 CONFIG_EXPERT=y
 CONFIG_UID16=y
@@ -204,6 +206,8 @@ CONFIG_SLUB_DEBUG=y
 # CONFIG_SLAB is not set
 CONFIG_SLUB=y
 # CONFIG_SLOB is not set
+CONFIG_SLUB_CPU_PARTIAL=y
+# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
 # CONFIG_PROFILING is not set
 CONFIG_TRACEPOINTS=y
 CONFIG_HAVE_OPROFILE=y
@@ -221,7 +225,6 @@ CONFIG_HAVE_OPTPROBES=y
 CONFIG_HAVE_KPROBES_ON_FTRACE=y
 CONFIG_HAVE_ARCH_TRACEHOOK=y
 CONFIG_HAVE_DMA_ATTRS=y
-CONFIG_USE_GENERIC_SMP_HELPERS=y
 CONFIG_GENERIC_SMP_IDLE_THREAD=y
 CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
 CONFIG_HAVE_CLK=y
@@ -240,8 +243,14 @@ CONFIG_HAVE_CMPXCHG_DOUBLE=y
 CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
 CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
 CONFIG_SECCOMP_FILTER=y
+CONFIG_HAVE_CC_STACKPROTECTOR=y
+CONFIG_CC_STACKPROTECTOR=y
+# CONFIG_CC_STACKPROTECTOR_NONE is not set
+CONFIG_CC_STACKPROTECTOR_REGULAR=y
+# CONFIG_CC_STACKPROTECTOR_STRONG is not set
 CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
 CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
+CONFIG_HAVE_ARCH_SOFT_DIRTY=y
 CONFIG_MODULES_USE_ELF_REL=y
 CONFIG_CLONE_BACKWARDS=y
 CONFIG_OLD_SIGSUSPEND3=y
@@ -259,7 +268,7 @@ CONFIG_MODULES=y
 # CONFIG_MODULE_FORCE_LOAD is not set
 CONFIG_MODULE_UNLOAD=y
 # CONFIG_MODULE_FORCE_UNLOAD is not set
-# CONFIG_MODVERSIONS is not set
+CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_MODULE_SIG is not set
 CONFIG_STOP_MACHINE=y
@@ -269,12 +278,14 @@ CONFIG_BLK_DEV_BSG=y
 CONFIG_BLK_DEV_BSGLIB=y
 CONFIG_BLK_DEV_INTEGRITY=y
 CONFIG_BLK_DEV_THROTTLING=y
+# CONFIG_BLK_CMDLINE_PARSER is not set
 
 #
 # Partition Types
 #
 CONFIG_PARTITION_ADVANCED=y
 # CONFIG_ACORN_PARTITION is not set
+# CONFIG_AIX_PARTITION is not set
 # CONFIG_OSF_PARTITION is not set
 # CONFIG_AMIGA_PARTITION is not set
 # CONFIG_ATARI_PARTITION is not set
@@ -292,6 +303,7 @@ CONFIG_LDM_PARTITION=y
 # CONFIG_KARMA_PARTITION is not set
 CONFIG_EFI_PARTITION=y
 # CONFIG_SYSV68_PARTITION is not set
+# CONFIG_CMDLINE_PARTITION is not set
 
 #
 # IO Schedulers
@@ -312,6 +324,7 @@ CONFIG_INLINE_READ_UNLOCK=y
 CONFIG_INLINE_READ_UNLOCK_IRQ=y
 CONFIG_INLINE_WRITE_UNLOCK=y
 CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
 CONFIG_MUTEX_SPIN_ON_OWNER=y
 CONFIG_FREEZER=y
 
@@ -324,7 +337,7 @@ CONFIG_X86_MPPARSE=y
 CONFIG_X86_BIGSMP=y
 CONFIG_X86_EXTENDED_PLATFORM=y
 # CONFIG_X86_GOLDFISH is not set
-# CONFIG_X86_WANT_INTEL_MID is not set
+# CONFIG_X86_INTEL_MID is not set
 CONFIG_X86_INTEL_LPSS=y
 # CONFIG_X86_RDC321X is not set
 CONFIG_X86_32_NON_STANDARD=y
@@ -347,6 +360,7 @@ CONFIG_XEN_MAX_DOMAIN_MEMORY=64
 CONFIG_XEN_SAVE_RESTORE=y
 CONFIG_XEN_DEBUG_FS=y
 CONFIG_KVM_GUEST=y
+# CONFIG_KVM_DEBUG_FS is not set
 # CONFIG_LGUEST_GUEST is not set
 CONFIG_PARAVIRT_TIME_ACCOUNTING=y
 CONFIG_PARAVIRT_CLOCK=y
@@ -417,6 +431,8 @@ CONFIG_X86_MCE_THRESHOLD=y
 # CONFIG_X86_MCE_INJECT is not set
 CONFIG_X86_THERMAL_VECTOR=y
 CONFIG_VM86=y
+CONFIG_X86_16BIT=y
+CONFIG_X86_ESPFIX32=y
 CONFIG_TOSHIBA=m
 CONFIG_I8K=m
 # CONFIG_X86_REBOOTFIXUPS is not set
@@ -424,9 +440,8 @@ CONFIG_MICROCODE=m
 CONFIG_MICROCODE_INTEL=y
 CONFIG_MICROCODE_AMD=y
 CONFIG_MICROCODE_OLD_INTERFACE=y
-CONFIG_MICROCODE_INTEL_LIB=y
-CONFIG_MICROCODE_INTEL_EARLY=y
-CONFIG_MICROCODE_EARLY=y
+# CONFIG_MICROCODE_INTEL_EARLY is not set
+# CONFIG_MICROCODE_AMD_EARLY is not set
 # CONFIG_X86_MSR is not set
 CONFIG_X86_CPUID=y
 # CONFIG_NOHIGHMEM is not set
@@ -458,6 +473,7 @@ CONFIG_MEMORY_ISOLATION=y
 # CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
 CONFIG_PAGEFLAGS_EXTENDED=y
 CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK=y
 CONFIG_BALLOON_COMPACTION=y
 CONFIG_COMPACTION=y
 CONFIG_MIGRATION=y
@@ -476,6 +492,9 @@ CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
 CONFIG_CROSS_MEMORY_ATTACH=y
 CONFIG_CLEANCACHE=y
 # CONFIG_FRONTSWAP is not set
+# CONFIG_CMA is not set
+# CONFIG_ZBUD is not set
+# CONFIG_ZSMALLOC is not set
 CONFIG_HIGHPTE=y
 CONFIG_X86_CHECK_BIOS_CORRUPTION=y
 CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK=y
@@ -492,7 +511,6 @@ CONFIG_X86_SMAP=y
 CONFIG_EFI=y
 CONFIG_EFI_STUB=y
 CONFIG_SECCOMP=y
-CONFIG_CC_STACKPROTECTOR=y
 # CONFIG_HZ_100 is not set
 # CONFIG_HZ_250 is not set
 CONFIG_HZ_300=y
@@ -503,6 +521,7 @@ CONFIG_SCHED_HRTICK=y
 CONFIG_CRASH_DUMP=y
 CONFIG_PHYSICAL_START=0x400000
 CONFIG_RELOCATABLE=y
+# CONFIG_RANDOMIZE_BASE is not set
 CONFIG_X86_NEED_RELOCS=y
 CONFIG_PHYSICAL_ALIGN=0x400000
 CONFIG_HOTPLUG_CPU=y
@@ -517,8 +536,6 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
 CONFIG_SUSPEND=y
 CONFIG_SUSPEND_FREEZER=y
 CONFIG_HIBERNATE_CALLBACKS=y
-CONFIG_HIBERNATION=y
-CONFIG_PM_STD_PARTITION=""
 CONFIG_PM_SLEEP=y
 CONFIG_PM_SLEEP_SMP=y
 # CONFIG_PM_AUTOSLEEP is not set
@@ -527,19 +544,18 @@ CONFIG_PM_RUNTIME=y
 CONFIG_PM=y
 # CONFIG_PM_DEBUG is not set
 CONFIG_PM_CLK=y
+# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
 CONFIG_ACPI=y
 CONFIG_ACPI_SLEEP=y
 CONFIG_ACPI_PROCFS=y
 # CONFIG_ACPI_PROCFS_POWER is not set
 CONFIG_ACPI_EC_DEBUGFS=m
-# CONFIG_ACPI_PROC_EVENT is not set
 CONFIG_ACPI_AC=y
 CONFIG_ACPI_BATTERY=y
 CONFIG_ACPI_BUTTON=y
 CONFIG_ACPI_VIDEO=m
 CONFIG_ACPI_FAN=y
 CONFIG_ACPI_DOCK=y
-CONFIG_ACPI_I2C=m
 CONFIG_ACPI_PROCESSOR=y
 CONFIG_ACPI_IPMI=m
 CONFIG_ACPI_HOTPLUG_CPU=y
@@ -547,7 +563,6 @@ CONFIG_ACPI_PROCESSOR_AGGREGATOR=m
 CONFIG_ACPI_THERMAL=y
 # CONFIG_ACPI_CUSTOM_DSDT is not set
 CONFIG_ACPI_INITRD_TABLE_OVERRIDE=y
-CONFIG_ACPI_BLACKLIST_YEAR=1999
 # CONFIG_ACPI_DEBUG is not set
 CONFIG_ACPI_PCI_SLOT=y
 CONFIG_X86_PM_TIMER=y
@@ -562,6 +577,7 @@ CONFIG_ACPI_APEI_PCIEAER=y
 CONFIG_ACPI_APEI_MEMORY_FAILURE=y
 # CONFIG_ACPI_APEI_EINJ is not set
 # CONFIG_ACPI_APEI_ERST_DEBUG is not set
+CONFIG_ACPI_EXTLOG=m
 CONFIG_SFI=y
 CONFIG_X86_APM_BOOT=y
 CONFIG_APM=y
@@ -575,7 +591,6 @@ CONFIG_APM_CPU_IDLE=y
 # CPU Frequency scaling
 #
 CONFIG_CPU_FREQ=y
-CONFIG_CPU_FREQ_TABLE=y
 CONFIG_CPU_FREQ_GOV_COMMON=y
 CONFIG_CPU_FREQ_STAT=m
 CONFIG_CPU_FREQ_STAT_DETAILS=y
@@ -617,6 +632,10 @@ CONFIG_X86_LONGHAUL=m
 #
 CONFIG_X86_SPEEDSTEP_LIB=m
 CONFIG_X86_SPEEDSTEP_RELAXED_CAP_CHECK=y
+
+#
+# CPU Idle
+#
 CONFIG_CPU_IDLE=y
 # CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set
 CONFIG_CPU_IDLE_GOV_LADDER=y
@@ -649,7 +668,6 @@ CONFIG_PCIEASPM_DEFAULT=y
 # CONFIG_PCIEASPM_POWERSAVE is not set
 # CONFIG_PCIEASPM_PERFORMANCE is not set
 CONFIG_PCIE_PME=y
-CONFIG_ARCH_SUPPORTS_MSI=y
 CONFIG_PCI_MSI=y
 # CONFIG_PCI_DEBUG is not set
 # CONFIG_PCI_REALLOC_ENABLE_AUTO is not set
@@ -662,6 +680,10 @@ CONFIG_PCI_IOV=y
 # CONFIG_PCI_PASID is not set
 CONFIG_PCI_IOAPIC=y
 CONFIG_PCI_LABEL=y
+
+#
+# PCI host controller drivers
+#
 CONFIG_ISA_DMA_API=y
 CONFIG_ISA=y
 CONFIG_EISA=y
@@ -703,6 +725,7 @@ CONFIG_HOTPLUG_PCI_ACPI_IBM=m
 # CONFIG_HOTPLUG_PCI_CPCI is not set
 # CONFIG_HOTPLUG_PCI_SHPC is not set
 # CONFIG_RAPIDIO is not set
+CONFIG_X86_SYSFB=y
 
 #
 # Executable file formats / Emulations
@@ -715,7 +738,6 @@ CONFIG_HAVE_AOUT=y
 CONFIG_BINFMT_MISC=y
 CONFIG_COREDUMP=y
 CONFIG_HAVE_ATOMIC_IOMAP=y
-CONFIG_HAVE_TEXT_POKE_SMP=y
 CONFIG_NET=y
 
 #
@@ -752,7 +774,6 @@ CONFIG_IP_MROUTE=y
 CONFIG_IP_MROUTE_MULTIPLE_TABLES=y
 CONFIG_IP_PIMSM_V1=y
 CONFIG_IP_PIMSM_V2=y
-# CONFIG_ARPD is not set
 CONFIG_SYN_COOKIES=y
 CONFIG_NET_IPVTI=m
 CONFIG_INET_AH=m
@@ -785,7 +806,6 @@ CONFIG_DEFAULT_CUBIC=y
 CONFIG_DEFAULT_TCP_CONG="cubic"
 CONFIG_TCP_MD5SIG=y
 CONFIG_IPV6=y
-CONFIG_IPV6_PRIVACY=y
 CONFIG_IPV6_ROUTER_PREF=y
 CONFIG_IPV6_ROUTE_INFO=y
 CONFIG_IPV6_OPTIMISTIC_DAD=y
@@ -799,6 +819,7 @@ CONFIG_INET6_XFRM_MODE_TRANSPORT=m
 CONFIG_INET6_XFRM_MODE_TUNNEL=m
 CONFIG_INET6_XFRM_MODE_BEET=m
 CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
+CONFIG_IPV6_VTI=m
 CONFIG_IPV6_SIT=m
 CONFIG_IPV6_SIT_6RD=y
 CONFIG_IPV6_NDISC_NODETYPE=y
@@ -820,7 +841,7 @@ CONFIG_BRIDGE_NETFILTER=y
 #
 # Core Netfilter Configuration
 #
-CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK=y
 CONFIG_NETFILTER_NETLINK_ACCT=m
 CONFIG_NETFILTER_NETLINK_QUEUE=m
 CONFIG_NETFILTER_NETLINK_LOG=m
@@ -862,7 +883,22 @@ CONFIG_NF_NAT_FTP=m
 CONFIG_NF_NAT_IRC=m
 CONFIG_NF_NAT_SIP=m
 CONFIG_NF_NAT_TFTP=m
-CONFIG_NETFILTER_TPROXY=m
+CONFIG_NETFILTER_SYNPROXY=m
+CONFIG_NF_TABLES=y
+CONFIG_NF_TABLES_INET=m
+CONFIG_NFT_EXTHDR=m
+CONFIG_NFT_META=m
+CONFIG_NFT_CT=m
+CONFIG_NFT_RBTREE=m
+CONFIG_NFT_HASH=m
+CONFIG_NFT_COUNTER=m
+CONFIG_NFT_LOG=m
+CONFIG_NFT_LIMIT=m
+CONFIG_NFT_NAT=m
+CONFIG_NFT_QUEUE=m
+CONFIG_NFT_REJECT=m
+CONFIG_NFT_REJECT_INET=m
+CONFIG_NFT_COMPAT=m
 CONFIG_NETFILTER_XTABLES=y
 
 #
@@ -907,6 +943,7 @@ CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
 #
 CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
 CONFIG_NETFILTER_XT_MATCH_BPF=m
+CONFIG_NETFILTER_XT_MATCH_CGROUP=m
 CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
 CONFIG_NETFILTER_XT_MATCH_COMMENT=m
 CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
@@ -923,8 +960,10 @@ CONFIG_NETFILTER_XT_MATCH_ESP=m
 CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
 CONFIG_NETFILTER_XT_MATCH_HELPER=m
 CONFIG_NETFILTER_XT_MATCH_HL=m
+CONFIG_NETFILTER_XT_MATCH_IPCOMP=m
 CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
-# CONFIG_NETFILTER_XT_MATCH_IPVS is not set
+CONFIG_NETFILTER_XT_MATCH_IPVS=m
+CONFIG_NETFILTER_XT_MATCH_L2TP=m
 CONFIG_NETFILTER_XT_MATCH_LAYER7=m
 # CONFIG_NETFILTER_XT_MATCH_LAYER7_DEBUG is not set
 CONFIG_NETFILTER_XT_MATCH_LENGTH=m
@@ -959,7 +998,9 @@ CONFIG_IP_SET_HASH_IP=m
 CONFIG_IP_SET_HASH_IPPORT=m
 CONFIG_IP_SET_HASH_IPPORTIP=m
 CONFIG_IP_SET_HASH_IPPORTNET=m
+CONFIG_IP_SET_HASH_NETPORTNET=m
 CONFIG_IP_SET_HASH_NET=m
+CONFIG_IP_SET_HASH_NETNET=m
 CONFIG_IP_SET_HASH_NETPORT=m
 CONFIG_IP_SET_HASH_NETIFACE=m
 CONFIG_IP_SET_LIST_SET=m
@@ -1010,6 +1051,11 @@ CONFIG_IP_VS_PE_SIP=m
 CONFIG_NF_DEFRAG_IPV4=y
 CONFIG_NF_CONNTRACK_IPV4=y
 # CONFIG_NF_CONNTRACK_PROC_COMPAT is not set
+CONFIG_NF_TABLES_IPV4=m
+CONFIG_NFT_CHAIN_ROUTE_IPV4=m
+CONFIG_NFT_CHAIN_NAT_IPV4=m
+CONFIG_NFT_REJECT_IPV4=m
+CONFIG_NF_TABLES_ARP=m
 CONFIG_IP_NF_IPTABLES=y
 CONFIG_IP_NF_MATCH_AH=m
 CONFIG_IP_NF_MATCH_ECN=m
@@ -1017,6 +1063,7 @@ CONFIG_IP_NF_MATCH_RPFILTER=m
 CONFIG_IP_NF_MATCH_TTL=m
 CONFIG_IP_NF_FILTER=m
 CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_SYNPROXY=m
 # CONFIG_IP_NF_TARGET_ULOG is not set
 CONFIG_NF_NAT_IPV4=m
 CONFIG_IP_NF_TARGET_MASQUERADE=m
@@ -1042,6 +1089,10 @@ CONFIG_IP_NF_MATCH_IPP2P=m
 #
 CONFIG_NF_DEFRAG_IPV6=y
 CONFIG_NF_CONNTRACK_IPV6=y
+CONFIG_NF_TABLES_IPV6=m
+CONFIG_NFT_CHAIN_ROUTE_IPV6=m
+CONFIG_NFT_CHAIN_NAT_IPV6=m
+CONFIG_NFT_REJECT_IPV6=m
 CONFIG_IP6_NF_IPTABLES=y
 CONFIG_IP6_NF_MATCH_AH=m
 CONFIG_IP6_NF_MATCH_EUI64=m
@@ -1055,12 +1106,14 @@ CONFIG_IP6_NF_MATCH_RT=m
 CONFIG_IP6_NF_TARGET_HL=m
 CONFIG_IP6_NF_FILTER=m
 CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_TARGET_SYNPROXY=m
 CONFIG_IP6_NF_MANGLE=m
 CONFIG_IP6_NF_RAW=m
 CONFIG_IP6_NF_SECURITY=m
 CONFIG_NF_NAT_IPV6=m
 CONFIG_IP6_NF_TARGET_MASQUERADE=m
 CONFIG_IP6_NF_TARGET_NPT=m
+CONFIG_NF_TABLES_BRIDGE=m
 CONFIG_BRIDGE_NF_EBTABLES=m
 CONFIG_BRIDGE_EBT_BROUTE=m
 CONFIG_BRIDGE_EBT_T_FILTER=m
@@ -1085,7 +1138,6 @@ CONFIG_BRIDGE_EBT_LOG=m
 CONFIG_BRIDGE_EBT_NFLOG=m
 # CONFIG_IP_DCCP is not set
 CONFIG_IP_SCTP=m
-# CONFIG_SCTP_DBG_MSG is not set
 # CONFIG_SCTP_DBG_OBJCNT is not set
 # CONFIG_SCTP_DEFAULT_COOKIE_HMAC_MD5 is not set
 CONFIG_SCTP_DEFAULT_COOKIE_HMAC_SHA1=y
@@ -1127,6 +1179,7 @@ CONFIG_LLC=y
 # CONFIG_LAPB is not set
 # CONFIG_PHONET is not set
 # CONFIG_IEEE802154 is not set
+CONFIG_6LOWPAN_IPHC=m
 CONFIG_NET_SCHED=y
 
 #
@@ -1152,6 +1205,8 @@ CONFIG_NET_SCH_CHOKE=m
 CONFIG_NET_SCH_QFQ=m
 CONFIG_NET_SCH_CODEL=m
 CONFIG_NET_SCH_FQ_CODEL=m
+CONFIG_NET_SCH_FQ=m
+CONFIG_NET_SCH_HHF=m
 CONFIG_NET_SCH_PIE=m
 CONFIG_NET_SCH_INGRESS=m
 CONFIG_NET_SCH_PLUG=m
@@ -1171,6 +1226,7 @@ CONFIG_NET_CLS_RSVP=m
 CONFIG_NET_CLS_RSVP6=m
 CONFIG_NET_CLS_FLOW=m
 CONFIG_NET_CLS_CGROUP=m
+CONFIG_NET_CLS_BPF=m
 CONFIG_NET_EMATCH=y
 CONFIG_NET_EMATCH_STACK=32
 CONFIG_NET_EMATCH_CMP=m
@@ -1200,15 +1256,22 @@ CONFIG_BATMAN_ADV_DAT=y
 CONFIG_BATMAN_ADV_NC=y
 # CONFIG_BATMAN_ADV_DEBUG is not set
 CONFIG_OPENVSWITCH=m
+CONFIG_OPENVSWITCH_GRE=y
+CONFIG_OPENVSWITCH_VXLAN=y
 CONFIG_VSOCKETS=m
 CONFIG_VMWARE_VMCI_VSOCKETS=m
 CONFIG_NETLINK_MMAP=y
 CONFIG_NETLINK_DIAG=m
+CONFIG_NET_MPLS_GSO=m
+CONFIG_HSR=m
 CONFIG_RPS=y
 CONFIG_RFS_ACCEL=y
 CONFIG_XPS=y
-CONFIG_NETPRIO_CGROUP=m
+CONFIG_CGROUP_NET_PRIO=m
+CONFIG_CGROUP_NET_CLASSID=y
+CONFIG_NET_RX_BUSY_POLL=y
 CONFIG_BQL=y
+CONFIG_NET_FLOW_LIMIT=y
 
 #
 # Network testing
@@ -1325,6 +1388,7 @@ CONFIG_DMA_SHARED_BUFFER=y
 CONFIG_CONNECTOR=y
 CONFIG_PROC_EVENTS=y
 # CONFIG_MTD is not set
+CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
 CONFIG_PARPORT=m
 CONFIG_PARPORT_PC=m
 CONFIG_PARPORT_SERIAL=m
@@ -1346,10 +1410,10 @@ CONFIG_PNPBIOS=y
 # CONFIG_PNPBIOS_PROC_FS is not set
 CONFIG_PNPACPI=y
 CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_NULL_BLK is not set
 CONFIG_BLK_DEV_FD=m
 # CONFIG_PARIDE is not set
 CONFIG_BLK_DEV_PCIESSD_MTIP32XX=m
-CONFIG_BLK_CPQ_DA=m
 CONFIG_BLK_CPQ_CISS_DA=m
 # CONFIG_CISS_SCSI_TAPE is not set
 CONFIG_BLK_DEV_DAC960=m
@@ -1385,7 +1449,6 @@ CONFIG_SENSORS_LIS3LV02D=m
 CONFIG_DUMMY_IRQ=m
 CONFIG_IBM_ASM=m
 # CONFIG_PHANTOM is not set
-# CONFIG_INTEL_MID_PTI is not set
 # CONFIG_SGI_IOC4 is not set
 CONFIG_TIFM_CORE=m
 CONFIG_TIFM_7XX1=m
@@ -1437,6 +1500,14 @@ CONFIG_ALTERA_STAPL=m
 # CONFIG_INTEL_MEI is not set
 # CONFIG_INTEL_MEI_ME is not set
 CONFIG_VMWARE_VMCI=m
+
+#
+# Intel MIC Host Driver
+#
+
+#
+# Intel MIC Card Driver
+#
 CONFIG_HAVE_IDE=y
 # CONFIG_IDE is not set
 
@@ -1504,7 +1575,6 @@ CONFIG_AIC7XXX_RESET_DELAY_MS=5000
 CONFIG_AIC7XXX_DEBUG_ENABLE=y
 CONFIG_AIC7XXX_DEBUG_MASK=0
 CONFIG_AIC7XXX_REG_PRETTY_PRINT=y
-# CONFIG_SCSI_AIC7XXX_OLD is not set
 CONFIG_SCSI_AIC79XX=m
 CONFIG_AIC79XX_CMDS_PER_DEVICE=32
 CONFIG_AIC79XX_RESET_DELAY_MS=4000
@@ -1521,6 +1591,7 @@ CONFIG_SCSI_DPT_I2O=m
 CONFIG_SCSI_ADVANSYS=m
 CONFIG_SCSI_IN2000=m
 CONFIG_SCSI_ARCMSR=m
+CONFIG_SCSI_ESAS2R=m
 CONFIG_MEGARAID_NEWGEN=y
 CONFIG_MEGARAID_MM=m
 CONFIG_MEGARAID_MAILBOX=m
@@ -1646,6 +1717,7 @@ CONFIG_SATA_HIGHBANK=m
 CONFIG_SATA_MV=m
 CONFIG_SATA_NV=m
 CONFIG_SATA_PROMISE=m
+CONFIG_SATA_RCAR=m
 CONFIG_SATA_SIL=m
 CONFIG_SATA_SIS=m
 CONFIG_SATA_SVW=m
@@ -1729,14 +1801,14 @@ CONFIG_MD_MULTIPATH=m
 CONFIG_MD_FAULTY=m
 CONFIG_BCACHE=m
 # CONFIG_BCACHE_DEBUG is not set
-# CONFIG_BCACHE_EDEBUG is not set
 # CONFIG_BCACHE_CLOSURES_DEBUG is not set
 CONFIG_BLK_DEV_DM_BUILTIN=y
 CONFIG_BLK_DEV_DM=y
 # CONFIG_DM_DEBUG is not set
-CONFIG_DM_BUFIO=m
+CONFIG_DM_BUFIO=y
 CONFIG_DM_BIO_PRISON=m
 CONFIG_DM_PERSISTENT_DATA=m
+# CONFIG_DM_DEBUG_BLOCK_STACK_TRACING is not set
 CONFIG_DM_CRYPT=m
 CONFIG_DM_SNAPSHOT=y
 # CONFIG_DM_THIN_PROVISIONING is not set
@@ -1744,8 +1816,8 @@ CONFIG_DM_CACHE=m
 CONFIG_DM_CACHE_MQ=m
 CONFIG_DM_CACHE_CLEANER=m
 CONFIG_DM_MIRROR=y
-CONFIG_DM_RAID=m
 CONFIG_DM_LOG_USERSPACE=m
+CONFIG_DM_RAID=m
 CONFIG_DM_ZERO=y
 CONFIG_DM_MULTIPATH=m
 CONFIG_DM_MULTIPATH_QL=m
@@ -1754,6 +1826,7 @@ CONFIG_DM_MULTIPATH_ST=m
 CONFIG_DM_UEVENT=y
 # CONFIG_DM_FLAKEY is not set
 CONFIG_DM_VERITY=m
+CONFIG_DM_SWITCH=m
 # CONFIG_TARGET_CORE is not set
 CONFIG_FUSION=y
 CONFIG_FUSION_SPI=m
@@ -1784,12 +1857,12 @@ CONFIG_I2O_PROC=m
 CONFIG_MACINTOSH_DRIVERS=y
 # CONFIG_MAC_EMUMOUSEBTN is not set
 CONFIG_NETDEVICES=y
+CONFIG_MII=m
 CONFIG_NET_CORE=y
 CONFIG_BONDING=m
 CONFIG_DUMMY=m
 # CONFIG_EQUALIZER is not set
 # CONFIG_NET_FC is not set
-CONFIG_MII=m
 CONFIG_IFB=m
 # CONFIG_NET_TEAM is not set
 CONFIG_MACVLAN=m
@@ -1809,6 +1882,7 @@ CONFIG_IMQ_NUM_DEVS=2
 CONFIG_TUN=m
 CONFIG_VETH=m
 CONFIG_VIRTIO_NET=m
+CONFIG_NLMON=m
 CONFIG_SUNGEM_PHY=m
 # CONFIG_ARCNET is not set
 CONFIG_ATM_DRIVERS=y
@@ -1847,6 +1921,7 @@ CONFIG_ATM_SOLOS=m
 #
 CONFIG_VHOST_NET=m
 CONFIG_VHOST_RING=m
+CONFIG_VHOST=m
 
 #
 # Distributed Switch Architecture drivers
@@ -1876,6 +1951,7 @@ CONFIG_LANCE=m
 CONFIG_PCNET32=m
 CONFIG_PCMCIA_NMCLAN=m
 CONFIG_NI65=m
+CONFIG_NET_VENDOR_ARC=y
 CONFIG_NET_VENDOR_ATHEROS=y
 CONFIG_ATL2=m
 CONFIG_ATL1=m
@@ -1951,6 +2027,9 @@ CONFIG_IXGBE=m
 CONFIG_IXGBE_HWMON=y
 CONFIG_IXGBE_DCA=y
 CONFIG_IXGBEVF=m
+CONFIG_I40E=m
+CONFIG_I40E_VXLAN=y
+CONFIG_I40EVF=m
 CONFIG_NET_VENDOR_I825XX=y
 CONFIG_IP1000=m
 CONFIG_JME=m
@@ -1965,6 +2044,7 @@ CONFIG_NET_VENDOR_MELLANOX=y
 CONFIG_MLX4_EN=m
 CONFIG_MLX4_CORE=m
 CONFIG_MLX4_DEBUG=y
+# CONFIG_MLX5_CORE is not set
 CONFIG_NET_VENDOR_MICREL=y
 CONFIG_KS8842=m
 CONFIG_KS8851_MLL=m
@@ -2004,6 +2084,7 @@ CONFIG_8139TOO=m
 CONFIG_8139TOO_8129=y
 # CONFIG_8139_OLD_RX_RESET is not set
 CONFIG_R8169=m
+CONFIG_SH_ETH=m
 CONFIG_NET_VENDOR_RDC=y
 CONFIG_R6040=m
 CONFIG_NET_VENDOR_SEEQ=y
@@ -2019,6 +2100,8 @@ CONFIG_NET_VENDOR_SMSC=y
 CONFIG_SMC9194=m
 CONFIG_PCMCIA_SMC91C92=m
 CONFIG_EPIC100=m
+CONFIG_SMSC911X=m
+# CONFIG_SMSC911X_ARCH_HOOKS is not set
 CONFIG_SMSC9420=m
 CONFIG_NET_VENDOR_STMICRO=y
 CONFIG_STMMAC_ETH=m
@@ -2105,8 +2188,11 @@ CONFIG_USB_NET_AX88179_178A=m
 CONFIG_USB_NET_CDCETHER=m
 CONFIG_USB_NET_CDC_EEM=m
 CONFIG_USB_NET_CDC_NCM=m
+CONFIG_USB_NET_HUAWEI_CDC_NCM=m
 CONFIG_USB_NET_CDC_MBIM=m
 CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_SR9700=m
+CONFIG_USB_NET_SR9800=m
 CONFIG_USB_NET_SMSC75XX=m
 CONFIG_USB_NET_SMSC95XX=m
 CONFIG_USB_NET_GL620A=m
@@ -2166,7 +2252,9 @@ CONFIG_ATH9K=m
 CONFIG_ATH9K_PCI=y
 CONFIG_ATH9K_AHB=y
 # CONFIG_ATH9K_DEBUGFS is not set
+# CONFIG_ATH9K_WOW is not set
 # CONFIG_ATH9K_LEGACY_RATE_CONTROL is not set
+CONFIG_ATH9K_RFKILL=y
 CONFIG_ATH9K_HTC=m
 # CONFIG_ATH9K_HTC_DEBUGFS is not set
 CONFIG_CARL9170=m
@@ -2177,15 +2265,26 @@ CONFIG_CARL9170_WPC=y
 CONFIG_AR5523=m
 CONFIG_WIL6210=m
 CONFIG_WIL6210_ISR_COR=y
+CONFIG_WIL6210_TRACING=y
+CONFIG_ATH10K=m
+CONFIG_ATH10K_PCI=m
+# CONFIG_ATH10K_DEBUG is not set
+# CONFIG_ATH10K_DEBUGFS is not set
+# CONFIG_ATH10K_TRACING is not set
+CONFIG_WCN36XX=m
+# CONFIG_WCN36XX_DEBUGFS is not set
 CONFIG_B43=m
+CONFIG_B43_BCMA=y
 CONFIG_B43_SSB=y
 CONFIG_B43_PCI_AUTOSELECT=y
 CONFIG_B43_PCICORE_AUTOSELECT=y
 # CONFIG_B43_PCMCIA is not set
 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
@@ -2201,6 +2300,7 @@ 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_BRCMSMAC=m
 CONFIG_BRCMFMAC=m
 CONFIG_BRCMFMAC_SDIO=y
 # CONFIG_BRCMFMAC_USB is not set
@@ -2233,7 +2333,6 @@ CONFIG_IWLWIFI_OPMODE_MODULAR=y
 #
 # CONFIG_IWLWIFI_DEBUG is not set
 # CONFIG_IWLWIFI_DEVICE_TRACING is not set
-CONFIG_IWLWIFI_P2P=y
 CONFIG_IWLEGACY=m
 CONFIG_IWL4965=m
 CONFIG_IWL3945=m
@@ -2275,10 +2374,12 @@ CONFIG_RT73USB=m
 CONFIG_RT2800USB=m
 CONFIG_RT2800USB_RT33XX=y
 CONFIG_RT2800USB_RT35XX=y
+CONFIG_RT2800USB_RT3573=y
 CONFIG_RT2800USB_RT53XX=y
 CONFIG_RT2800USB_RT55XX=y
 CONFIG_RT2800USB_UNKNOWN=y
 CONFIG_RT2800_LIB=m
+CONFIG_RT2800_LIB_MMIO=m
 CONFIG_RT2X00_LIB_MMIO=m
 CONFIG_RT2X00_LIB_PCI=m
 CONFIG_RT2X00_LIB_USB=m
@@ -2287,14 +2388,17 @@ CONFIG_RT2X00_LIB_FIRMWARE=y
 CONFIG_RT2X00_LIB_CRYPTO=y
 CONFIG_RT2X00_LIB_LEDS=y
 # CONFIG_RT2X00_DEBUG is not set
-CONFIG_RTLWIFI=m
-# CONFIG_RTLWIFI_DEBUG is not set
+CONFIG_RTL_CARDS=m
 CONFIG_RTL8192CE=m
 CONFIG_RTL8192SE=m
 CONFIG_RTL8192DE=m
 CONFIG_RTL8723AE=m
 CONFIG_RTL8188EE=m
 CONFIG_RTL8192CU=m
+CONFIG_RTLWIFI=m
+CONFIG_RTLWIFI_PCI=m
+CONFIG_RTLWIFI_USB=m
+# CONFIG_RTLWIFI_DEBUG is not set
 CONFIG_RTL8192C_COMMON=m
 CONFIG_WL_TI=y
 CONFIG_WL1251=m
@@ -2310,6 +2414,8 @@ CONFIG_MWIFIEX=m
 CONFIG_MWIFIEX_SDIO=m
 CONFIG_MWIFIEX_PCIE=m
 CONFIG_MWIFIEX_USB=m
+CONFIG_CW1200=m
+CONFIG_CW1200_WLAN_SDIO=m
 
 #
 # Enable WiMAX (Networking options) to see the WiMAX drivers
@@ -2414,8 +2520,8 @@ CONFIG_HISAX_FRITZ_PCIPNP=m
 CONFIG_ISDN_CAPI=m
 CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON=y
 CONFIG_CAPI_TRACE=y
-CONFIG_ISDN_CAPI_MIDDLEWARE=y
 CONFIG_ISDN_CAPI_CAPI20=m
+CONFIG_ISDN_CAPI_MIDDLEWARE=y
 CONFIG_ISDN_CAPI_CAPIDRV=m
 
 #
@@ -2561,11 +2667,13 @@ CONFIG_INPUT_GPIO_ROTARY_ENCODER=m
 # CONFIG_INPUT_IMS_PCU is not set
 # CONFIG_INPUT_CMA3000 is not set
 CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y
+CONFIG_INPUT_IDEAPAD_SLIDEBAR=m
 
 #
 # Hardware I/O ports
 #
 CONFIG_SERIO=y
+CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y
 CONFIG_SERIO_I8042=y
 CONFIG_SERIO_SERPORT=y
 # CONFIG_SERIO_CT82C710 is not set
@@ -2576,6 +2684,7 @@ CONFIG_SERIO_RAW=m
 CONFIG_SERIO_ALTERA_PS2=m
 # CONFIG_SERIO_PS2MULT is not set
 CONFIG_SERIO_ARC_PS2=m
+CONFIG_HYPERV_KEYBOARD=m
 # CONFIG_GAMEPORT is not set
 
 #
@@ -2606,7 +2715,6 @@ CONFIG_N_HDLC=m
 CONFIG_N_GSM=m
 # CONFIG_TRACE_SINK is not set
 # CONFIG_DEVKMEM is not set
-# CONFIG_STALDRV is not set
 
 #
 # Serial drivers
@@ -2649,6 +2757,7 @@ CONFIG_SERIAL_ARC=m
 CONFIG_SERIAL_ARC_NR_PORTS=1
 CONFIG_SERIAL_RP2=m
 CONFIG_SERIAL_RP2_NR_UARTS=32
+CONFIG_SERIAL_FSL_LPUART=m
 # CONFIG_TTY_PRINTK is not set
 CONFIG_PRINTER=m
 CONFIG_LP_CONSOLE=y
@@ -2701,7 +2810,15 @@ CONFIG_I2C=m
 CONFIG_I2C_BOARDINFO=y
 CONFIG_I2C_COMPAT=y
 CONFIG_I2C_CHARDEV=m
-# CONFIG_I2C_MUX is not set
+CONFIG_I2C_MUX=m
+
+#
+# Multiplexer I2C Chip support
+#
+CONFIG_I2C_MUX_GPIO=m
+CONFIG_I2C_MUX_PCA9541=m
+CONFIG_I2C_MUX_PCA954x=m
+CONFIG_I2C_MUX_PINCTRL=m
 CONFIG_I2C_HELPER_AUTO=y
 CONFIG_I2C_SMBUS=m
 CONFIG_I2C_ALGOBIT=m
@@ -2746,7 +2863,6 @@ CONFIG_I2C_DESIGNWARE_PLATFORM=m
 # CONFIG_I2C_DESIGNWARE_PCI is not set
 # CONFIG_I2C_EG20T is not set
 # CONFIG_I2C_GPIO is not set
-# CONFIG_I2C_INTEL_MID is not set
 # CONFIG_I2C_OCORES is not set
 CONFIG_I2C_PCA_PLATFORM=m
 # CONFIG_I2C_PXA_PCI is not set
@@ -2759,6 +2875,7 @@ CONFIG_I2C_SIMTEC=m
 CONFIG_I2C_DIOLAN_U2C=m
 CONFIG_I2C_PARPORT=m
 CONFIG_I2C_PARPORT_LIGHT=m
+CONFIG_I2C_ROBOTFUZZ_OSIF=m
 # CONFIG_I2C_TAOS_EVM is not set
 CONFIG_I2C_TINY_USB=m
 CONFIG_I2C_VIPERBOARD=m
@@ -2773,11 +2890,6 @@ CONFIG_SCx200_ACB=m
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_BUS is not set
 # CONFIG_SPI is not set
-
-#
-# Qualcomm MSM SSBI bus support
-#
-# CONFIG_SSBI is not set
 CONFIG_HSI=m
 CONFIG_HSI_BOARDINFO=y
 
@@ -2813,9 +2925,18 @@ CONFIG_PTP_1588_CLOCK=m
 # Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
 #
 CONFIG_PTP_1588_CLOCK_PCH=m
+CONFIG_PINCTRL=y
+
+#
+# Pin controllers
+#
+# CONFIG_PINMUX is not set
+# CONFIG_PINCONF is not set
+# CONFIG_DEBUG_PINCTRL is not set
+CONFIG_PINCTRL_BAYTRAIL=y
 CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
-CONFIG_GPIO_DEVRES=y
 CONFIG_GPIOLIB=y
+CONFIG_GPIO_DEVRES=y
 CONFIG_GPIO_ACPI=y
 # CONFIG_DEBUG_GPIO is not set
 CONFIG_GPIO_SYSFS=y
@@ -2825,6 +2946,8 @@ CONFIG_GPIO_SYSFS=y
 #
 # CONFIG_GPIO_GENERIC_PLATFORM is not set
 # CONFIG_GPIO_IT8761E is not set
+CONFIG_GPIO_F7188X=m
+CONFIG_GPIO_SCH311X=m
 CONFIG_GPIO_TS5500=m
 CONFIG_GPIO_SCH=m
 CONFIG_GPIO_ICH=m
@@ -2845,7 +2968,7 @@ CONFIG_GPIO_ICH=m
 #
 # CONFIG_GPIO_CS5535 is not set
 # CONFIG_GPIO_AMD8111 is not set
-# CONFIG_GPIO_LANGWELL is not set
+# CONFIG_GPIO_INTEL_MID is not set
 # CONFIG_GPIO_PCH is not set
 # CONFIG_GPIO_ML_IOH is not set
 # CONFIG_GPIO_RDC321X is not set
@@ -2853,12 +2976,15 @@ CONFIG_GPIO_ICH=m
 #
 # SPI GPIO expanders:
 #
-# CONFIG_GPIO_MCP23S08 is not set
 
 #
 # AC97 GPIO expanders:
 #
 
+#
+# LPC GPIO expanders:
+#
+
 #
 # MODULbus GPIO expanders:
 #
@@ -2909,12 +3035,14 @@ CONFIG_GENERIC_ADC_BATTERY=m
 # CONFIG_BATTERY_BQ27x00 is not set
 # CONFIG_BATTERY_MAX17040 is not set
 # CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_CHARGER_ISP1704 is not set
 # CONFIG_CHARGER_MAX8903 is not set
 # CONFIG_CHARGER_LP8727 is not set
 # CONFIG_CHARGER_GPIO is not set
 # CONFIG_CHARGER_BQ2415X is not set
+# CONFIG_CHARGER_BQ24190 is not set
+# CONFIG_CHARGER_BQ24735 is not set
 # CONFIG_CHARGER_SMB347 is not set
-# CONFIG_BATTERY_GOLDFISH is not set
 CONFIG_POWER_RESET=y
 CONFIG_POWER_AVS=y
 CONFIG_HWMON=y
@@ -2954,10 +3082,12 @@ CONFIG_SENSORS_F71882FG=m
 CONFIG_SENSORS_F75375S=m
 CONFIG_SENSORS_FSCHMD=m
 CONFIG_SENSORS_G760A=m
+CONFIG_SENSORS_G762=m
 CONFIG_SENSORS_GL518SM=m
 CONFIG_SENSORS_GL520SM=m
 # CONFIG_SENSORS_GPIO_FAN is not set
 CONFIG_SENSORS_HIH6130=m
+CONFIG_SENSORS_HTU21=m
 CONFIG_SENSORS_CORETEMP=m
 CONFIG_SENSORS_IBMAEM=m
 CONFIG_SENSORS_IBMPEX=m
@@ -3061,9 +3191,14 @@ CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
 CONFIG_THERMAL_GOV_FAIR_SHARE=y
 CONFIG_THERMAL_GOV_STEP_WISE=y
 CONFIG_THERMAL_GOV_USER_SPACE=y
-CONFIG_CPU_THERMAL=y
 CONFIG_THERMAL_EMULATION=y
 CONFIG_INTEL_POWERCLAMP=m
+CONFIG_X86_PKG_TEMP_THERMAL=m
+CONFIG_ACPI_INT3403_THERMAL=m
+
+#
+# Texas Instruments thermal drivers
+#
 CONFIG_WATCHDOG=y
 CONFIG_WATCHDOG_CORE=y
 CONFIG_WATCHDOG_NOWAYOUT=y
@@ -3072,6 +3207,7 @@ CONFIG_WATCHDOG_NOWAYOUT=y
 # Watchdog Device Drivers
 #
 CONFIG_SOFT_WATCHDOG=m
+CONFIG_DW_WATCHDOG=m
 CONFIG_RETU_WATCHDOG=m
 CONFIG_ACQUIRE_WDT=m
 CONFIG_ADVANTECH_WDT=m
@@ -3111,6 +3247,7 @@ CONFIG_W83877F_WDT=m
 CONFIG_W83977F_WDT=m
 CONFIG_MACHZ_WDT=m
 CONFIG_SBC_EPX_C3_WATCHDOG=m
+CONFIG_MEN_A21_WDT=m
 CONFIG_XEN_WDT=m
 
 #
@@ -3154,7 +3291,14 @@ CONFIG_BCMA_POSSIBLE=y
 #
 # Broadcom specific AMBA
 #
-# CONFIG_BCMA is not set
+CONFIG_BCMA=m
+CONFIG_BCMA_BLOCKIO=y
+CONFIG_BCMA_HOST_PCI_POSSIBLE=y
+CONFIG_BCMA_HOST_PCI=y
+CONFIG_BCMA_HOST_SOC=y
+CONFIG_BCMA_DRIVER_GMAC_CMN=y
+CONFIG_BCMA_DRIVER_GPIO=y
+# CONFIG_BCMA_DEBUG is not set
 
 #
 # Multifunction device drivers
@@ -3167,6 +3311,7 @@ CONFIG_MFD_CS5535=m
 CONFIG_LPC_ICH=m
 CONFIG_LPC_SCH=m
 # CONFIG_MFD_JANZ_CMODIO is not set
+# CONFIG_MFD_KEMPLD is not set
 CONFIG_MFD_VIPERBOARD=m
 CONFIG_MFD_RETU=m
 # CONFIG_MFD_PCF50633 is not set
@@ -3179,6 +3324,7 @@ CONFIG_MFD_SM501_GPIO=y
 # CONFIG_ABX500_CORE is not set
 # CONFIG_MFD_SYSCON is not set
 # CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_MFD_LP3943 is not set
 # CONFIG_TPS6105X is not set
 # CONFIG_TPS65010 is not set
 # CONFIG_TPS6507X is not set
@@ -3218,7 +3364,6 @@ CONFIG_VIDEOBUF2_CORE=m
 CONFIG_VIDEOBUF2_MEMOPS=m
 CONFIG_VIDEOBUF2_DMA_CONTIG=m
 CONFIG_VIDEOBUF2_VMALLOC=m
-CONFIG_VIDEO_V4L2_INT_DEVICE=m
 CONFIG_DVB_CORE=m
 CONFIG_DVB_NET=y
 CONFIG_TTPCI_EEPROM=m
@@ -3301,6 +3446,7 @@ CONFIG_USB_GSPCA_SQ905=m
 CONFIG_USB_GSPCA_SQ905C=m
 CONFIG_USB_GSPCA_SQ930X=m
 CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_STK1135=m
 CONFIG_USB_GSPCA_STV0680=m
 CONFIG_USB_GSPCA_SUNPLUS=m
 CONFIG_USB_GSPCA_T613=m
@@ -3317,7 +3463,7 @@ CONFIG_VIDEO_CPIA2=m
 CONFIG_USB_ZR364XX=m
 CONFIG_USB_STKWEBCAM=m
 CONFIG_USB_S2255=m
-CONFIG_USB_SN9C102=m
+CONFIG_VIDEO_USBTV=m
 
 #
 # Analog TV USB devices
@@ -3329,8 +3475,9 @@ CONFIG_VIDEO_PVRUSB2_DVB=y
 CONFIG_VIDEO_HDPVR=m
 CONFIG_VIDEO_TLG2300=m
 CONFIG_VIDEO_USBVISION=m
-CONFIG_VIDEO_STK1160=m
+CONFIG_VIDEO_STK1160_COMMON=m
 CONFIG_VIDEO_STK1160_AC97=y
+CONFIG_VIDEO_STK1160=m
 
 #
 # Analog/digital TV USB devices
@@ -3399,6 +3546,7 @@ CONFIG_DVB_B2C2_FLEXCOP_USB=m
 # Webcam, TV (analog/digital) USB devices
 #
 CONFIG_VIDEO_EM28XX=m
+CONFIG_VIDEO_EM28XX_V4L2=m
 CONFIG_VIDEO_EM28XX_ALSA=m
 CONFIG_VIDEO_EM28XX_DVB=m
 CONFIG_VIDEO_EM28XX_RC=m
@@ -3440,6 +3588,7 @@ CONFIG_VIDEO_CX88=m
 CONFIG_VIDEO_CX88_ALSA=m
 CONFIG_VIDEO_CX88_BLACKBIRD=m
 CONFIG_VIDEO_CX88_DVB=m
+CONFIG_VIDEO_CX88_ENABLE_VP3054=y
 CONFIG_VIDEO_CX88_VP3054=m
 CONFIG_VIDEO_CX88_MPEG=m
 CONFIG_VIDEO_BT848=m
@@ -3475,12 +3624,15 @@ CONFIG_VIDEO_CAFE_CCIC=m
 # CONFIG_VIDEO_VIA_CAMERA is not set
 CONFIG_VIDEO_TIMBERDALE=m
 CONFIG_SOC_CAMERA=m
+CONFIG_SOC_CAMERA_SCALE_CROP=m
 CONFIG_SOC_CAMERA_PLATFORM=m
+CONFIG_VIDEO_RCAR_VIN=m
 CONFIG_VIDEO_SH_MOBILE_CSI2=m
 CONFIG_VIDEO_SH_MOBILE_CEU=m
 CONFIG_V4L_MEM2MEM_DRIVERS=y
 CONFIG_VIDEO_MEM2MEM_DEINTERLACE=m
 CONFIG_VIDEO_SH_VEU=m
+CONFIG_VIDEO_RENESAS_VSP1=m
 # CONFIG_V4L_TEST_DRIVERS is not set
 
 #
@@ -3508,7 +3660,6 @@ CONFIG_VIDEO_SAA7146=m
 CONFIG_VIDEO_SAA7146_VV=m
 CONFIG_SMS_SIANO_MDTV=m
 CONFIG_SMS_SIANO_RC=y
-# CONFIG_SMS_SIANO_DEBUGFS is not set
 
 #
 # Media ancillary drivers (tuners, sensors, i2c, frontends)
@@ -3581,7 +3732,12 @@ CONFIG_VIDEO_UPD64031A=m
 CONFIG_VIDEO_UPD64083=m
 
 #
-# Miscelaneous helper chips
+# Audio/Video compression chips
+#
+CONFIG_VIDEO_SAA6752HS=m
+
+#
+# Miscellaneous helper chips
 #
 CONFIG_VIDEO_M52790=m
 
@@ -3632,6 +3788,7 @@ CONFIG_MEDIA_TUNER_FC0013=m
 CONFIG_MEDIA_TUNER_TDA18212=m
 CONFIG_MEDIA_TUNER_E4000=m
 CONFIG_MEDIA_TUNER_FC2580=m
+CONFIG_MEDIA_TUNER_M88TS2022=m
 CONFIG_MEDIA_TUNER_TUA9001=m
 CONFIG_MEDIA_TUNER_IT913X=m
 CONFIG_MEDIA_TUNER_R820T=m
@@ -3643,6 +3800,7 @@ CONFIG_DVB_STB0899=m
 CONFIG_DVB_STB6100=m
 CONFIG_DVB_STV090x=m
 CONFIG_DVB_STV6110x=m
+CONFIG_DVB_M88DS3103=m
 
 #
 # Multistandard (cable + terrestrial) frontends
@@ -3673,7 +3831,7 @@ CONFIG_DVB_TUNER_CX24113=m
 CONFIG_DVB_TDA826X=m
 CONFIG_DVB_TUA6100=m
 CONFIG_DVB_CX24116=m
-CONFIG_DVB_M88DS3103=m
+CONFIG_DVB_CX24117=m
 CONFIG_DVB_M88DC2800=m
 CONFIG_DVB_SI21XX=m
 CONFIG_DVB_TS2020=m
@@ -3780,12 +3938,14 @@ CONFIG_AGP_SIS=y
 # CONFIG_AGP_SWORKS is not set
 CONFIG_AGP_VIA=y
 # CONFIG_AGP_EFFICEON is not set
+CONFIG_INTEL_GTT=y
 CONFIG_VGA_ARB=y
 CONFIG_VGA_ARB_MAX_GPUS=16
 CONFIG_VGA_SWITCHEROO=y
 CONFIG_DRM=m
 CONFIG_DRM_USB=m
 CONFIG_DRM_KMS_HELPER=m
+CONFIG_DRM_KMS_FB_HELPER=y
 # CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
 CONFIG_DRM_TTM=m
 
@@ -3806,6 +3966,9 @@ CONFIG_DRM_NOUVEAU_BACKLIGHT=y
 CONFIG_DRM_I810=m
 CONFIG_DRM_I915=m
 CONFIG_DRM_I915_KMS=y
+CONFIG_DRM_I915_FBDEV=y
+CONFIG_DRM_I915_PRELIMINARY_HW_SUPPORT=y
+# CONFIG_DRM_I915_UMS is not set
 CONFIG_DRM_MGA=m
 CONFIG_DRM_SIS=m
 CONFIG_DRM_VIA=m
@@ -3820,6 +3983,7 @@ CONFIG_DRM_AST=m
 CONFIG_DRM_MGAG200=m
 CONFIG_DRM_CIRRUS_QEMU=m
 CONFIG_DRM_QXL=m
+CONFIG_DRM_BOCHS=m
 CONFIG_VGASTATE=m
 CONFIG_VIDEO_OUTPUT_CONTROL=m
 CONFIG_HDMI=y
@@ -3860,6 +4024,7 @@ CONFIG_FB_VESA=y
 CONFIG_FB_EFI=y
 # CONFIG_FB_N411 is not set
 CONFIG_FB_HGA=m
+CONFIG_FB_OPENCORES=m
 # CONFIG_FB_S1D13XXX is not set
 # CONFIG_FB_NVIDIA is not set
 CONFIG_FB_RIVA=m
@@ -3917,6 +4082,7 @@ CONFIG_XEN_FBDEV_FRONTEND=m
 # CONFIG_FB_BROADSHEET is not set
 # CONFIG_FB_AUO_K190X is not set
 CONFIG_FB_HYPERV=m
+CONFIG_FB_SIMPLE=y
 # CONFIG_EXYNOS_VIDEO is not set
 CONFIG_BACKLIGHT_LCD_SUPPORT=y
 CONFIG_LCD_CLASS_DEVICE=m
@@ -3929,9 +4095,12 @@ CONFIG_BACKLIGHT_APPLE=m
 # CONFIG_BACKLIGHT_SAHARA is not set
 # CONFIG_BACKLIGHT_ADP8860 is not set
 # CONFIG_BACKLIGHT_ADP8870 is not set
-# CONFIG_BACKLIGHT_LM3630 is not set
+# CONFIG_BACKLIGHT_LM3630A is not set
 # CONFIG_BACKLIGHT_LM3639 is not set
 # CONFIG_BACKLIGHT_LP855X is not set
+# CONFIG_BACKLIGHT_GPIO is not set
+# CONFIG_BACKLIGHT_LV5207LP is not set
+# CONFIG_BACKLIGHT_BD6107 is not set
 
 #
 # Console display driver support
@@ -3943,9 +4112,6 @@ CONFIG_DUMMY_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
 # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-# CONFIG_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
 CONFIG_LOGO=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
@@ -3969,6 +4135,7 @@ CONFIG_SND_SEQUENCER_OSS=y
 CONFIG_SND_HRTIMER=m
 CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
 CONFIG_SND_DYNAMIC_MINORS=y
+CONFIG_SND_MAX_CARDS=32
 # CONFIG_SND_SUPPORT_OLD_API is not set
 CONFIG_SND_VERBOSE_PROCFS=y
 CONFIG_SND_VERBOSE_PRINTK=y
@@ -4038,7 +4205,6 @@ CONFIG_SND_SSCAPE=m
 CONFIG_SND_WAVEFRONT=m
 CONFIG_SND_MSND_PINNACLE=m
 CONFIG_SND_MSND_CLASSIC=m
-CONFIG_SND_TEA575X=m
 CONFIG_SND_PCI=y
 CONFIG_SND_AD1889=m
 CONFIG_SND_ALS300=m
@@ -4085,9 +4251,7 @@ CONFIG_SND_ENS1371=m
 CONFIG_SND_ES1938=m
 CONFIG_SND_ES1968=m
 CONFIG_SND_ES1968_INPUT=y
-CONFIG_SND_ES1968_RADIO=y
 CONFIG_SND_FM801=m
-CONFIG_SND_FM801_TEA575X_BOOL=y
 CONFIG_SND_HDA_INTEL=m
 CONFIG_SND_HDA_PREALLOC_SIZE=64
 CONFIG_SND_HDA_HWDEP=y
@@ -4096,19 +4260,20 @@ CONFIG_SND_HDA_INPUT_BEEP=y
 CONFIG_SND_HDA_INPUT_BEEP_MODE=1
 CONFIG_SND_HDA_INPUT_JACK=y
 # CONFIG_SND_HDA_PATCH_LOADER is not set
-CONFIG_SND_HDA_CODEC_REALTEK=y
-CONFIG_SND_HDA_CODEC_ANALOG=y
-CONFIG_SND_HDA_CODEC_SIGMATEL=y
-CONFIG_SND_HDA_CODEC_VIA=y
-CONFIG_SND_HDA_CODEC_HDMI=y
-CONFIG_SND_HDA_CODEC_CIRRUS=y
-CONFIG_SND_HDA_CODEC_CONEXANT=y
-CONFIG_SND_HDA_CODEC_CA0110=y
-CONFIG_SND_HDA_CODEC_CA0132=y
+CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_ANALOG=m
+CONFIG_SND_HDA_CODEC_SIGMATEL=m
+CONFIG_SND_HDA_CODEC_VIA=m
+CONFIG_SND_HDA_CODEC_HDMI=m
+CONFIG_SND_HDA_I915=y
+CONFIG_SND_HDA_CODEC_CIRRUS=m
+CONFIG_SND_HDA_CODEC_CONEXANT=m
+CONFIG_SND_HDA_CODEC_CA0110=m
+CONFIG_SND_HDA_CODEC_CA0132=m
 # CONFIG_SND_HDA_CODEC_CA0132_DSP is not set
-CONFIG_SND_HDA_CODEC_CMEDIA=y
-CONFIG_SND_HDA_CODEC_SI3054=y
-CONFIG_SND_HDA_GENERIC=y
+CONFIG_SND_HDA_CODEC_CMEDIA=m
+CONFIG_SND_HDA_CODEC_SI3054=m
+CONFIG_SND_HDA_GENERIC=m
 CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0
 CONFIG_SND_HDSP=m
 CONFIG_SND_HDSPM=m
@@ -4144,8 +4309,10 @@ CONFIG_SND_USB_CAIAQ=m
 CONFIG_SND_USB_CAIAQ_INPUT=y
 CONFIG_SND_USB_US122L=m
 CONFIG_SND_USB_6FIRE=m
+CONFIG_SND_USB_HIFACE=m
 CONFIG_SND_FIREWIRE=y
 CONFIG_SND_FIREWIRE_LIB=m
+# CONFIG_SND_DICE is not set
 CONFIG_SND_FIREWIRE_SPEAKERS=m
 # CONFIG_SND_ISIGHT is not set
 # CONFIG_SND_SCS1X is not set
@@ -4181,8 +4348,10 @@ CONFIG_HID_CYPRESS=y
 # CONFIG_HID_DRAGONRISE is not set
 # CONFIG_HID_EMS_FF is not set
 # CONFIG_HID_ELECOM is not set
+# CONFIG_HID_ELO is not set
 CONFIG_HID_EZKEY=y
 # CONFIG_HID_HOLTEK is not set
+# CONFIG_HID_HUION is not set
 CONFIG_HID_KEYTOUCH=m
 CONFIG_HID_KYE=y
 # CONFIG_HID_UCLOGIC is not set
@@ -4214,7 +4383,6 @@ CONFIG_HID_PICOLCD_LCD=y
 CONFIG_HID_PICOLCD_LEDS=y
 CONFIG_HID_PICOLCD_CIR=y
 # CONFIG_HID_PRIMAX is not set
-# CONFIG_HID_PS3REMOTE is not set
 CONFIG_HID_ROCCAT=m
 CONFIG_HID_SAITEK=m
 CONFIG_HID_SAMSUNG=m
@@ -4231,6 +4399,7 @@ CONFIG_HID_THINGM=m
 # CONFIG_HID_THRUSTMASTER is not set
 # CONFIG_HID_WACOM is not set
 # CONFIG_HID_WIIMOTE is not set
+# CONFIG_HID_XINMO is not set
 # CONFIG_HID_ZEROPLUS is not set
 CONFIG_HID_ZYDACRON=m
 CONFIG_HID_SENSOR_HUB=m
@@ -4246,9 +4415,7 @@ CONFIG_USB_HIDDEV=y
 # I2C HID support
 #
 CONFIG_I2C_HID=m
-CONFIG_USB_ARCH_HAS_OHCI=y
-CONFIG_USB_ARCH_HAS_EHCI=y
-CONFIG_USB_ARCH_HAS_XHCI=y
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
 CONFIG_USB_SUPPORT=y
 CONFIG_USB_COMMON=y
 CONFIG_USB_ARCH_HAS_HCD=y
@@ -4261,7 +4428,7 @@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 #
 CONFIG_USB_DEFAULT_PERSIST=y
 # CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_OTG is not set
+CONFIG_USB_OTG=y
 # CONFIG_USB_OTG_WHITELIST is not set
 # CONFIG_USB_OTG_BLACKLIST_HUB is not set
 CONFIG_USB_MON=m
@@ -4275,7 +4442,6 @@ CONFIG_USB_WUSB_CBAF=m
 # CONFIG_USB_C67X00_HCD is not set
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_PLATFORM=m
-# CONFIG_USB_XHCI_HCD_DEBUGGING is not set
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_ROOT_HUB_TT=y
 CONFIG_USB_EHCI_TT_NEWSCHED=y
@@ -4285,11 +4451,11 @@ CONFIG_USB_EHCI_HCD_PLATFORM=y
 # CONFIG_USB_ISP116X_HCD is not set
 # CONFIG_USB_ISP1760_HCD is not set
 CONFIG_USB_ISP1362_HCD=m
+# CONFIG_USB_FUSBH200_HCD is not set
+# CONFIG_USB_FOTG210_HCD is not set
 CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD_PCI=m
 CONFIG_USB_OHCI_HCD_PLATFORM=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_UHCI_HCD=y
 # CONFIG_USB_U132_HCD is not set
 CONFIG_USB_SL811_HCD=m
@@ -4298,7 +4464,9 @@ CONFIG_USB_SL811_HCD_ISO=y
 # CONFIG_USB_R8A66597_HCD is not set
 CONFIG_USB_WHCI_HCD=m
 CONFIG_USB_HWA_HCD=m
+CONFIG_USB_HCD_BCMA=m
 CONFIG_USB_HCD_SSB=m
+# CONFIG_USB_HCD_TEST_MODE is not set
 
 #
 # USB Device Class drivers
@@ -4337,9 +4505,22 @@ CONFIG_USB_STORAGE_ENE_UB6250=m
 #
 CONFIG_USB_MDC800=m
 CONFIG_USB_MICROTEK=m
+# CONFIG_USB_MUSB_HDRC is not set
 CONFIG_USB_DWC3=m
 CONFIG_USB_DWC3_HOST=y
+
+#
+# Platform Glue Driver Support
+#
+# CONFIG_USB_DWC3_EXYNOS is not set
+CONFIG_USB_DWC3_PCI=m
+CONFIG_USB_DWC3_KEYSTONE=m
+
+#
+# Debugging features
+#
 # CONFIG_USB_DWC3_DEBUG is not set
+# CONFIG_USB_DWC2 is not set
 CONFIG_USB_CHIPIDEA=m
 # CONFIG_USB_CHIPIDEA_HOST is not set
 # CONFIG_USB_CHIPIDEA_DEBUG is not set
@@ -4350,6 +4531,7 @@ CONFIG_USB_CHIPIDEA=m
 CONFIG_USB_USS720=m
 CONFIG_USB_SERIAL=m
 CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_SIMPLE=m
 CONFIG_USB_SERIAL_AIRCABLE=m
 CONFIG_USB_SERIAL_ARK3116=m
 CONFIG_USB_SERIAL_BELKIN=m
@@ -4360,7 +4542,6 @@ CONFIG_USB_SERIAL_CP210X=m
 CONFIG_USB_SERIAL_CYPRESS_M8=m
 # CONFIG_USB_SERIAL_EMPEG is not set
 CONFIG_USB_SERIAL_FTDI_SIO=m
-CONFIG_USB_SERIAL_FUNSOFT=m
 CONFIG_USB_SERIAL_VISOR=m
 CONFIG_USB_SERIAL_IPAQ=m
 CONFIG_USB_SERIAL_IR=m
@@ -4379,16 +4560,14 @@ CONFIG_USB_SERIAL_MCT_U232=m
 CONFIG_USB_SERIAL_MOS7720=m
 CONFIG_USB_SERIAL_MOS7715_PARPORT=y
 CONFIG_USB_SERIAL_MOS7840=m
-CONFIG_USB_SERIAL_MOTOROLA=m
+CONFIG_USB_SERIAL_MXUPORT=m
 # CONFIG_USB_SERIAL_NAVMAN is not set
 CONFIG_USB_SERIAL_PL2303=m
 CONFIG_USB_SERIAL_OTI6858=m
 CONFIG_USB_SERIAL_QCAUX=m
 CONFIG_USB_SERIAL_QUALCOMM=m
 CONFIG_USB_SERIAL_SPCP8X5=m
-# CONFIG_USB_SERIAL_HP4X is not set
 # CONFIG_USB_SERIAL_SAFE is not set
-CONFIG_USB_SERIAL_SIEMENS_MPI=m
 CONFIG_USB_SERIAL_SIERRAWIRELESS=m
 # CONFIG_USB_SERIAL_SYMBOL is not set
 # CONFIG_USB_SERIAL_TI is not set
@@ -4398,9 +4577,7 @@ CONFIG_USB_SERIAL_WWAN=m
 CONFIG_USB_SERIAL_OPTION=m
 # CONFIG_USB_SERIAL_OMNINET is not set
 # CONFIG_USB_SERIAL_OPTICON is not set
-# CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set
 # CONFIG_USB_SERIAL_XSENS_MT is not set
-# CONFIG_USB_SERIAL_ZIO is not set
 # CONFIG_USB_SERIAL_WISHBONE is not set
 CONFIG_USB_SERIAL_ZTE=m
 CONFIG_USB_SERIAL_SSU100=m
@@ -4429,6 +4606,7 @@ CONFIG_USB_SISUSBVGA_CON=y
 # CONFIG_USB_TRANCEVIBRATOR is not set
 CONFIG_USB_IOWARRIOR=m
 # CONFIG_USB_TEST is not set
+CONFIG_USB_EHSET_TEST_FIXTURE=m
 # CONFIG_USB_ISIGHTFW is not set
 CONFIG_USB_YUREX=m
 CONFIG_USB_EZUSB_FX2=m
@@ -4438,7 +4616,18 @@ CONFIG_USB_SPEEDTOUCH=m
 CONFIG_USB_CXACRU=m
 CONFIG_USB_UEAGLEATM=m
 CONFIG_USB_XUSBATM=m
-# CONFIG_USB_PHY is not set
+
+#
+# USB Physical Layer drivers
+#
+CONFIG_USB_PHY=y
+CONFIG_USB_OTG_FSM=m
+# CONFIG_NOP_USB_XCEIV is not set
+# CONFIG_SAMSUNG_USB2PHY is not set
+# CONFIG_SAMSUNG_USB3PHY is not set
+# CONFIG_USB_GPIO_VBUS is not set
+# CONFIG_USB_ISP1301 is not set
+# CONFIG_USB_RCAR_PHY is not set
 # CONFIG_USB_GADGET is not set
 CONFIG_UWB=m
 CONFIG_UWB_HWA=m
@@ -4484,6 +4673,7 @@ CONFIG_MEMSTICK=m
 #
 # CONFIG_MEMSTICK_UNSAFE_RESUME is not set
 CONFIG_MSPRO_BLOCK=m
+CONFIG_MS_BLOCK=m
 
 #
 # MemoryStick Host Controller Drivers
@@ -4509,14 +4699,15 @@ CONFIG_LEDS_LP55XX_COMMON=m
 CONFIG_LEDS_LP5521=m
 CONFIG_LEDS_LP5523=m
 CONFIG_LEDS_LP5562=m
+CONFIG_LEDS_LP8501=m
 CONFIG_LEDS_CLEVO_MAIL=m
 CONFIG_LEDS_PCA955X=m
-CONFIG_LEDS_PCA9633=m
+CONFIG_LEDS_PCA963X=m
+CONFIG_LEDS_PCA9685=m
 CONFIG_LEDS_BD2802=m
 CONFIG_LEDS_INTEL_SS4200=m
 CONFIG_LEDS_LT3593=m
 CONFIG_LEDS_DELL_NETBOOKS=m
-# CONFIG_LEDS_RENESAS_TPU is not set
 CONFIG_LEDS_TCA6507=m
 CONFIG_LEDS_LM355x=m
 CONFIG_LEDS_OT200=m
@@ -4590,7 +4781,9 @@ CONFIG_RTC_DRV_MAX6900=m
 CONFIG_RTC_DRV_RS5C372=m
 CONFIG_RTC_DRV_ISL1208=m
 CONFIG_RTC_DRV_ISL12022=m
+CONFIG_RTC_DRV_ISL12057=m
 CONFIG_RTC_DRV_X1205=m
+CONFIG_RTC_DRV_PCF2127=m
 CONFIG_RTC_DRV_PCF8523=m
 CONFIG_RTC_DRV_PCF8563=m
 CONFIG_RTC_DRV_PCF8583=m
@@ -4629,6 +4822,7 @@ CONFIG_RTC_DRV_DS2404=m
 #
 # on-CPU RTC drivers
 #
+CONFIG_RTC_DRV_MOXART=m
 
 #
 # HID Sensor RTC drivers
@@ -4642,8 +4836,9 @@ CONFIG_DMADEVICES=y
 #
 # CONFIG_INTEL_MID_DMAC is not set
 CONFIG_INTEL_IOATDMA=m
+CONFIG_DW_DMAC_CORE=m
 CONFIG_DW_DMAC=m
-# CONFIG_DW_DMAC_BIG_ENDIAN_IO is not set
+CONFIG_DW_DMAC_PCI=m
 CONFIG_TIMB_DMA=m
 CONFIG_PCH_DMA=m
 CONFIG_DMA_ENGINE=y
@@ -4654,17 +4849,18 @@ CONFIG_DMA_ACPI=y
 #
 CONFIG_ASYNC_TX_DMA=y
 # CONFIG_DMATEST is not set
+CONFIG_DMA_ENGINE_RAID=y
 CONFIG_DCA=m
 # CONFIG_AUXDISPLAY is not set
 CONFIG_UIO=m
 # CONFIG_UIO_CIF is not set
-# CONFIG_UIO_PDRV is not set
 # CONFIG_UIO_PDRV_GENIRQ is not set
 # CONFIG_UIO_DMEM_GENIRQ is not set
 CONFIG_UIO_AEC=m
 CONFIG_UIO_SERCOS3=m
 CONFIG_UIO_PCI_GENERIC=m
 # CONFIG_UIO_NETX is not set
+# CONFIG_UIO_MF624 is not set
 # CONFIG_VFIO is not set
 CONFIG_VIRT_DRIVERS=y
 CONFIG_VIRTIO=y
@@ -4715,14 +4911,16 @@ CONFIG_USBIP_HOST=m
 # CONFIG_PRISM2_USB is not set
 CONFIG_ECHO=m
 # CONFIG_COMEDI is not set
-# CONFIG_ASUS_OLED is not set
 # CONFIG_PANEL is not set
 # CONFIG_R8187SE is not set
 # CONFIG_RTL8192U is not set
 # CONFIG_RTLLIB is not set
 # CONFIG_R8712U is not set
+# CONFIG_R8188EU is not set
+# CONFIG_R8821AE is not set
 CONFIG_RTS5139=m
 # CONFIG_RTS5139_DEBUG is not set
+# CONFIG_RTS5208 is not set
 # CONFIG_TRANZPORT is not set
 # CONFIG_IDE_PHISON is not set
 # CONFIG_LINE6_USB is not set
@@ -4797,10 +4995,7 @@ CONFIG_RTS5139=m
 # Triggers - standalone
 #
 # CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set
-# CONFIG_IIO_GPIO_TRIGGER is not set
-# CONFIG_IIO_SYSFS_TRIGGER is not set
 # CONFIG_IIO_SIMPLE_DUMMY is not set
-# CONFIG_ZSMALLOC is not set
 # CONFIG_WLAGS49_H2 is not set
 # CONFIG_WLAGS49_H25 is not set
 # CONFIG_FB_SM7XX is not set
@@ -4825,17 +5020,19 @@ CONFIG_RTS5139=m
 # CONFIG_ANDROID is not set
 # CONFIG_USB_WPAN_HCD is not set
 # CONFIG_WIMAX_GDM72XX is not set
-# CONFIG_CSR_WIFI is not set
+CONFIG_LTE_GDM724X=m
 # CONFIG_NET_VENDOR_SILICOM is not set
 # CONFIG_CED1401 is not set
 # CONFIG_DGRP is not set
 # CONFIG_FIREWIRE_SERIAL is not set
-# CONFIG_USB_DWC2 is not set
+# CONFIG_LUSTRE_FS is not set
+# CONFIG_XILLYBUS is not set
+# CONFIG_DGNC is not set
+# CONFIG_DGAP is not set
 CONFIG_X86_PLATFORM_DEVICES=y
 CONFIG_ACER_WMI=m
 CONFIG_ACERHDF=m
 CONFIG_ASUS_LAPTOP=m
-CONFIG_CHROMEOS_LAPTOP=m
 CONFIG_DELL_LAPTOP=m
 CONFIG_DELL_WMI=m
 CONFIG_DELL_WMI_AIO=m
@@ -4845,6 +5042,7 @@ CONFIG_FUJITSU_LAPTOP=m
 CONFIG_AMILO_RFKILL=m
 CONFIG_TC1100_WMI=m
 CONFIG_HP_ACCEL=m
+# CONFIG_HP_WIRELESS is not set
 CONFIG_HP_WMI=m
 CONFIG_MSI_LAPTOP=m
 CONFIG_PANASONIC_LAPTOP=m
@@ -4879,7 +5077,10 @@ CONFIG_MXM_WMI=m
 CONFIG_INTEL_OAKTRAIL=m
 CONFIG_SAMSUNG_Q10=m
 # CONFIG_APPLE_GMUX is not set
+CONFIG_INTEL_RST=m
+# CONFIG_INTEL_SMARTCONNECT is not set
 CONFIG_PVPANIC=m
+# CONFIG_CHROME_PLATFORMS is not set
 CONFIG_CLKDEV_LOOKUP=y
 CONFIG_HAVE_CLK_PREPARE=y
 CONFIG_COMMON_CLK=y
@@ -4887,7 +5088,7 @@ CONFIG_COMMON_CLK=y
 #
 # Common Clock Framework
 #
-# CONFIG_COMMON_CLK_DEBUG is not set
+# CONFIG_COMMON_CLK_SI5351 is not set
 
 #
 # Hardware Spinlock drivers
@@ -4925,6 +5126,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 #
 # Accelerometers
 #
+# CONFIG_BMA180 is not set
 # CONFIG_HID_SENSOR_ACCEL_3D is not set
 # CONFIG_IIO_ST_ACCEL_3AXIS is not set
 
@@ -4932,6 +5134,8 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 # Analog to digital converters
 #
 # CONFIG_MAX1363 is not set
+# CONFIG_MCP3422 is not set
+# CONFIG_NAU7802 is not set
 # CONFIG_TI_ADC081C is not set
 # CONFIG_VIPERBOARD_ADC is not set
 
@@ -4944,7 +5148,6 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
 #
 CONFIG_HID_SENSOR_IIO_COMMON=m
 CONFIG_HID_SENSOR_IIO_TRIGGER=m
-# CONFIG_HID_SENSOR_ENUM_BASE_QUIRKS is not set
 
 #
 # Digital to analog converters
@@ -4974,6 +5177,11 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=m
 # CONFIG_IIO_ST_GYRO_3AXIS is not set
 # CONFIG_ITG3200 is not set
 
+#
+# Humidity sensors
+#
+# CONFIG_DHT11 is not set
+
 #
 # Inertial measurement units
 #
@@ -4983,21 +5191,60 @@ CONFIG_HID_SENSOR_IIO_TRIGGER=m
 # Light sensors
 #
 # CONFIG_ADJD_S311 is not set
+# CONFIG_APDS9300 is not set
+# CONFIG_CM32181 is not set
+# CONFIG_CM36651 is not set
+# CONFIG_GP2AP020A00F is not set
+# CONFIG_HID_SENSOR_ALS is not set
 # CONFIG_SENSORS_LM3533 is not set
+# CONFIG_TCS3472 is not set
 # CONFIG_SENSORS_TSL2563 is not set
+# CONFIG_TSL4531 is not set
 # CONFIG_VCNL4000 is not set
-# CONFIG_HID_SENSOR_ALS is not set
 
 #
 # Magnetometer sensors
 #
 # CONFIG_AK8975 is not set
+# CONFIG_MAG3110 is not set
 # CONFIG_HID_SENSOR_MAGNETOMETER_3D is not set
 # CONFIG_IIO_ST_MAGN_3AXIS is not set
+
+#
+# Inclinometer sensors
+#
+# CONFIG_HID_SENSOR_INCLINOMETER_3D is not set
+
+#
+# Triggers - standalone
+#
+# CONFIG_IIO_INTERRUPT_TRIGGER is not set
+# CONFIG_IIO_SYSFS_TRIGGER is not set
+
+#
+# Pressure sensors
+#
+# CONFIG_MPL3115 is not set
+# CONFIG_IIO_ST_PRESS is not set
+
+#
+# Temperature sensors
+#
+# CONFIG_TMP006 is not set
+# CONFIG_NTB is not set
 # CONFIG_VME_BUS is not set
 # CONFIG_PWM is not set
 # CONFIG_IPACK_BUS is not set
-# CONFIG_RESET_CONTROLLER is not set
+CONFIG_RESET_CONTROLLER=y
+# CONFIG_FMC is not set
+
+#
+# PHY Subsystem
+#
+CONFIG_GENERIC_PHY=y
+# CONFIG_PHY_EXYNOS_MIPI_VIDEO is not set
+# CONFIG_BCM_KONA_USB2_PHY is not set
+# CONFIG_POWERCAP is not set
 
 #
 # Firmware Drivers
@@ -5009,6 +5256,7 @@ CONFIG_DELL_RBU=m
 CONFIG_DCDBAS=m
 CONFIG_DMIID=y
 CONFIG_DMI_SYSFS=y
+CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK=y
 CONFIG_ISCSI_IBFT_FIND=y
 CONFIG_ISCSI_IBFT=m
 # CONFIG_GOOGLE_FIRMWARE is not set
@@ -5019,6 +5267,7 @@ CONFIG_ISCSI_IBFT=m
 CONFIG_EFI_VARS=y
 CONFIG_EFI_VARS_PSTORE=y
 # CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE is not set
+CONFIG_UEFI_CPER=y
 
 #
 # File systems
@@ -5054,6 +5303,7 @@ CONFIG_BTRFS_FS_POSIX_ACL=y
 # CONFIG_BTRFS_FS_CHECK_INTEGRITY is not set
 # CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set
 # CONFIG_BTRFS_DEBUG is not set
+CONFIG_BTRFS_ASSERT=y
 # CONFIG_NILFS2_FS is not set
 CONFIG_FS_POSIX_ACL=y
 CONFIG_EXPORTFS=y
@@ -5074,7 +5324,6 @@ CONFIG_QUOTACTL=y
 CONFIG_AUTOFS4_FS=y
 CONFIG_FUSE_FS=m
 CONFIG_CUSE=m
-CONFIG_GENERIC_ACL=y
 
 #
 # Caches
@@ -5157,10 +5406,13 @@ CONFIG_NFS_V3_ACL=y
 CONFIG_NFS_V4=m
 # CONFIG_NFS_SWAP is not set
 CONFIG_NFS_V4_1=y
+CONFIG_NFS_V4_2=y
 CONFIG_PNFS_FILE_LAYOUT=m
 CONFIG_PNFS_BLOCK=m
 CONFIG_PNFS_OBJLAYOUT=m
 CONFIG_NFS_V4_1_IMPLEMENTATION_ID_DOMAIN="ipfire.org"
+CONFIG_NFS_V4_1_MIGRATION=y
+CONFIG_NFS_V4_SECURITY_LABEL=y
 CONFIG_NFS_FSCACHE=y
 # CONFIG_NFS_USE_LEGACY_DNS is not set
 CONFIG_NFS_USE_KERNEL_DNS=y
@@ -5169,6 +5421,7 @@ CONFIG_NFSD_V2_ACL=y
 CONFIG_NFSD_V3=y
 CONFIG_NFSD_V3_ACL=y
 CONFIG_NFSD_V4=y
+CONFIG_NFSD_V4_SECURITY_LABEL=y
 # CONFIG_NFSD_FAULT_INJECTION is not set
 CONFIG_LOCKD=m
 CONFIG_LOCKD_V4=y
@@ -5253,64 +5506,92 @@ CONFIG_DLM=m
 # Kernel hacking
 #
 CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+
+#
+# printk and dmesg options
+#
 # CONFIG_PRINTK_TIME is not set
 CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
+# CONFIG_BOOT_PRINTK_DELAY is not set
+CONFIG_DYNAMIC_DEBUG=y
+
+#
+# Compile-time checks and compiler options
+#
+# CONFIG_DEBUG_INFO is not set
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 CONFIG_ENABLE_MUST_CHECK=y
 CONFIG_FRAME_WARN=2048
-# CONFIG_MAGIC_SYSRQ is not set
 CONFIG_STRIP_ASM_SYMS=y
 # CONFIG_READABLE_ASM is not set
 # CONFIG_UNUSED_SYMBOLS is not set
 CONFIG_DEBUG_FS=y
 CONFIG_HEADERS_CHECK=y
 # CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_ARCH_WANT_FRAME_POINTERS=y
+CONFIG_FRAME_POINTER=y
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+# CONFIG_MAGIC_SYSRQ is not set
 CONFIG_DEBUG_KERNEL=y
+
+#
+# Memory Debugging
+#
+# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_VIRTUAL is not set
+CONFIG_DEBUG_MEMORY_INIT=y
+# CONFIG_DEBUG_PER_CPU_MAPS is not set
+# CONFIG_DEBUG_HIGHMEM is not set
+CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
+CONFIG_DEBUG_STACKOVERFLOW=y
+CONFIG_HAVE_ARCH_KMEMCHECK=y
 CONFIG_DEBUG_SHIRQ=y
+
+#
+# Debug Lockups and Hangs
+#
 CONFIG_LOCKUP_DETECTOR=y
 CONFIG_HARDLOCKUP_DETECTOR=y
 # CONFIG_BOOTPARAM_HARDLOCKUP_PANIC is not set
 CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE=0
 # CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
 CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+# CONFIG_DETECT_HUNG_TASK is not set
 # CONFIG_PANIC_ON_OOPS is not set
 CONFIG_PANIC_ON_OOPS_VALUE=0
-# CONFIG_DETECT_HUNG_TASK is not set
+CONFIG_PANIC_TIMEOUT=0
 CONFIG_SCHED_DEBUG=y
 CONFIG_SCHEDSTATS=y
 CONFIG_TIMER_STATS=y
-# CONFIG_DEBUG_OBJECTS is not set
-# CONFIG_SLUB_DEBUG_ON is not set
-# CONFIG_SLUB_STATS is not set
-CONFIG_HAVE_DEBUG_KMEMLEAK=y
-# CONFIG_DEBUG_KMEMLEAK is not set
+
+#
+# Lock Debugging (spinlocks, mutexes, etc...)
+#
 # CONFIG_DEBUG_RT_MUTEXES is not set
 # CONFIG_RT_MUTEX_TESTER is not set
 # CONFIG_DEBUG_SPINLOCK is not set
 # CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
 # CONFIG_DEBUG_LOCK_ALLOC is not set
 # CONFIG_PROVE_LOCKING is not set
 # CONFIG_LOCK_STAT is not set
 # CONFIG_DEBUG_ATOMIC_SLEEP is not set
 # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
 CONFIG_STACKTRACE=y
-# CONFIG_DEBUG_STACK_USAGE is not set
 # CONFIG_DEBUG_KOBJECT is not set
-# CONFIG_DEBUG_HIGHMEM is not set
 CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
-# CONFIG_DEBUG_VM is not set
-# CONFIG_DEBUG_VIRTUAL is not set
 # CONFIG_DEBUG_WRITECOUNT is not set
-CONFIG_DEBUG_MEMORY_INIT=y
 CONFIG_DEBUG_LIST=y
-# CONFIG_TEST_LIST_SORT is not set
 # CONFIG_DEBUG_SG is not set
 # CONFIG_DEBUG_NOTIFIERS is not set
 # CONFIG_DEBUG_CREDENTIALS is not set
-CONFIG_ARCH_WANT_FRAME_POINTERS=y
-CONFIG_FRAME_POINTER=y
-# CONFIG_BOOT_PRINTK_DELAY is not set
 
 #
 # RCU Debugging
@@ -5320,16 +5601,11 @@ CONFIG_FRAME_POINTER=y
 CONFIG_RCU_CPU_STALL_TIMEOUT=60
 # CONFIG_RCU_CPU_STALL_INFO is not set
 # CONFIG_RCU_TRACE is not set
-# CONFIG_BACKTRACE_SELF_TEST is not set
 # CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
-# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
-# CONFIG_DEBUG_PER_CPU_MAPS is not set
-# CONFIG_LKDTM is not set
 # CONFIG_NOTIFIER_ERROR_INJECTION is not set
 # CONFIG_FAULT_INJECTION is not set
 CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS=y
 # CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
-# CONFIG_DEBUG_PAGEALLOC is not set
 CONFIG_USER_STACKTRACE_SUPPORT=y
 CONFIG_NOP_TRACER=y
 CONFIG_HAVE_FUNCTION_TRACER=y
@@ -5372,24 +5648,32 @@ CONFIG_FTRACE_MCOUNT_RECORD=y
 # CONFIG_MMIOTRACE is not set
 CONFIG_RING_BUFFER_BENCHMARK=m
 # CONFIG_RING_BUFFER_STARTUP_TEST is not set
+
+#
+# Runtime Testing
+#
+# CONFIG_LKDTM is not set
+# CONFIG_TEST_LIST_SORT is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
 CONFIG_RBTREE_TEST=m
 # CONFIG_INTERVAL_TREE_TEST is not set
-# CONFIG_BUILD_DOCSRC is not set
-CONFIG_DYNAMIC_DEBUG=y
-# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_PERCPU_TEST is not set
 # CONFIG_ATOMIC64_SELFTEST is not set
 CONFIG_ASYNC_RAID6_TEST=m
+# CONFIG_TEST_STRING_HELPERS is not set
+# CONFIG_TEST_KSTRTOX is not set
+# CONFIG_BUILD_DOCSRC is not set
+# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_TEST_MODULE is not set
+# CONFIG_TEST_USER_COPY is not set
 # CONFIG_SAMPLES is not set
 CONFIG_HAVE_ARCH_KGDB=y
 # CONFIG_KGDB is not set
-CONFIG_HAVE_ARCH_KMEMCHECK=y
-# CONFIG_TEST_STRING_HELPERS is not set
-# CONFIG_TEST_KSTRTOX is not set
 CONFIG_STRICT_DEVMEM=y
 # CONFIG_X86_VERBOSE_BOOTUP is not set
 CONFIG_EARLY_PRINTK=y
 # CONFIG_EARLY_PRINTK_DBGP is not set
-CONFIG_DEBUG_STACKOVERFLOW=y
+CONFIG_EARLY_PRINTK_EFI=y
 # CONFIG_X86_PTDUMP is not set
 CONFIG_DEBUG_NX_TEST=m
 CONFIG_DOUBLEFAULT=y
@@ -5409,6 +5693,7 @@ CONFIG_DEBUG_BOOT_PARAMS=y
 # CONFIG_CPA_DEBUG is not set
 CONFIG_OPTIMIZE_INLINING=y
 # CONFIG_DEBUG_NMI_SELFTEST is not set
+# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set
 
 #
 # Security options
@@ -5466,6 +5751,7 @@ CONFIG_PAX_RANDMMAP=y
 #
 # Miscellaneous hardening features
 #
+CONFIG_PAX_MEMORY_SANITIZE=y
 CONFIG_PAX_MEMORY_STACKLEAK=y
 CONFIG_PAX_MEMORY_STRUCTLEAK=y
 CONFIG_PAX_REFCOUNT=y
@@ -5486,6 +5772,8 @@ CONFIG_GRKERNSEC_PROC_MEMMAP=y
 CONFIG_GRKERNSEC_BRUTE=y
 CONFIG_GRKERNSEC_MODHARDEN=y
 CONFIG_GRKERNSEC_HIDESYM=y
+CONFIG_GRKERNSEC_RANDSTRUCT=y
+CONFIG_GRKERNSEC_RANDSTRUCT_PERFORMANCE=y
 CONFIG_GRKERNSEC_KERN_LOCKOUT=y
 
 #
@@ -5545,12 +5833,12 @@ CONFIG_GRKERNSEC_DMESG=y
 CONFIG_GRKERNSEC_HARDEN_PTRACE=y
 CONFIG_GRKERNSEC_PTRACE_READEXEC=y
 CONFIG_GRKERNSEC_SETXID=y
+CONFIG_GRKERNSEC_HARDEN_IPC=y
 # CONFIG_GRKERNSEC_TPE is not set
 
 #
 # Network Protections
 #
-CONFIG_GRKERNSEC_RANDNET=y
 CONFIG_GRKERNSEC_BLACKHOLE=y
 CONFIG_GRKERNSEC_NO_SIMULT_CONNECT=y
 # CONFIG_GRKERNSEC_SOCKET is not set
@@ -5571,6 +5859,8 @@ CONFIG_GRKERNSEC_NO_SIMULT_CONNECT=y
 CONFIG_GRKERNSEC_FLOODTIME=10
 CONFIG_GRKERNSEC_FLOODBURST=6
 CONFIG_KEYS=y
+# CONFIG_PERSISTENT_KEYRINGS is not set
+# CONFIG_BIG_KEYS is not set
 # CONFIG_ENCRYPTED_KEYS is not set
 CONFIG_KEYS_DEBUG_PROC_KEYS=y
 CONFIG_SECURITY_DMESG_RESTRICT=y
@@ -5623,7 +5913,7 @@ CONFIG_CRYPTO_WORKQUEUE=y
 CONFIG_CRYPTO_CRYPTD=y
 CONFIG_CRYPTO_AUTHENC=m
 CONFIG_CRYPTO_TEST=m
-CONFIG_CRYPTO_ABLK_HELPER_X86=y
+CONFIG_CRYPTO_ABLK_HELPER=y
 CONFIG_CRYPTO_GLUE_HELPER_X86=m
 
 #
@@ -5659,6 +5949,7 @@ CONFIG_CRYPTO_CRC32C=y
 CONFIG_CRYPTO_CRC32C_INTEL=y
 CONFIG_CRYPTO_CRC32=y
 CONFIG_CRYPTO_CRC32_PCLMUL=m
+CONFIG_CRYPTO_CRCT10DIF=y
 CONFIG_CRYPTO_GHASH=m
 CONFIG_CRYPTO_MD4=m
 CONFIG_CRYPTO_MD5=y
@@ -5706,6 +5997,8 @@ CONFIG_CRYPTO_TWOFISH_586=m
 CONFIG_CRYPTO_DEFLATE=m
 CONFIG_CRYPTO_ZLIB=m
 CONFIG_CRYPTO_LZO=m
+CONFIG_CRYPTO_LZ4=m
+CONFIG_CRYPTO_LZ4HC=m
 
 #
 # Random Number Generation
@@ -5714,11 +6007,15 @@ CONFIG_CRYPTO_ANSI_CPRNG=m
 CONFIG_CRYPTO_USER_API=y
 CONFIG_CRYPTO_USER_API_HASH=y
 CONFIG_CRYPTO_USER_API_SKCIPHER=y
+CONFIG_CRYPTO_HASH_INFO=y
 CONFIG_CRYPTO_HW=y
 CONFIG_CRYPTO_DEV_PADLOCK=m
 CONFIG_CRYPTO_DEV_PADLOCK_AES=m
 CONFIG_CRYPTO_DEV_PADLOCK_SHA=m
 CONFIG_CRYPTO_DEV_GEODE=m
+CONFIG_CRYPTO_DEV_CCP=y
+CONFIG_CRYPTO_DEV_CCP_DD=m
+CONFIG_CRYPTO_DEV_CCP_CRYPTO=m
 CONFIG_ASYMMETRIC_KEY_TYPE=m
 CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=m
 CONFIG_PUBLIC_KEY_ALGO_RSA=m
@@ -5732,6 +6029,7 @@ CONFIG_KVM_MMIO=y
 CONFIG_KVM_ASYNC_PF=y
 CONFIG_HAVE_KVM_MSI=y
 CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y
+CONFIG_KVM_VFIO=y
 CONFIG_VIRTUALIZATION=y
 CONFIG_KVM=m
 CONFIG_KVM_INTEL=m
@@ -5748,10 +6046,12 @@ CONFIG_RAID6_PQ=m
 CONFIG_BITREVERSE=y
 CONFIG_GENERIC_STRNCPY_FROM_USER=y
 CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_NET_UTILS=y
 CONFIG_GENERIC_FIND_FIRST_BIT=y
 CONFIG_GENERIC_PCI_IOMAP=y
 CONFIG_GENERIC_IOMAP=y
 CONFIG_GENERIC_IO=y
+CONFIG_ARCH_HAS_FAST_MULTIPLIER=y
 CONFIG_CRC_CCITT=y
 CONFIG_CRC16=y
 CONFIG_CRC_T10DIF=y
@@ -5766,10 +6066,14 @@ CONFIG_CRC7=m
 CONFIG_LIBCRC32C=m
 CONFIG_CRC8=m
 CONFIG_AUDIT_GENERIC=y
+# CONFIG_RANDOM32_SELFTEST is not set
 CONFIG_ZLIB_INFLATE=y
-CONFIG_ZLIB_DEFLATE=m
+CONFIG_ZLIB_DEFLATE=y
 CONFIG_LZO_COMPRESS=y
 CONFIG_LZO_DECOMPRESS=y
+CONFIG_LZ4_COMPRESS=m
+CONFIG_LZ4HC_COMPRESS=m
+CONFIG_LZ4_DECOMPRESS=y
 CONFIG_XZ_DEC=y
 CONFIG_XZ_DEC_X86=y
 CONFIG_XZ_DEC_POWERPC=y
@@ -5784,11 +6088,13 @@ CONFIG_DECOMPRESS_BZIP2=y
 CONFIG_DECOMPRESS_LZMA=y
 CONFIG_DECOMPRESS_XZ=y
 CONFIG_DECOMPRESS_LZO=y
+CONFIG_DECOMPRESS_LZ4=y
 CONFIG_GENERIC_ALLOCATOR=y
 CONFIG_TEXTSEARCH=y
 CONFIG_TEXTSEARCH_KMP=m
 CONFIG_TEXTSEARCH_BM=m
 CONFIG_TEXTSEARCH_FSM=m
+CONFIG_ASSOCIATIVE_ARRAY=y
 CONFIG_HAS_IOMEM=y
 CONFIG_HAS_IOPORT=y
 CONFIG_HAS_DMA=y
@@ -5804,3 +6110,7 @@ CONFIG_CORDIC=m
 CONFIG_MPILIB=m
 CONFIG_OID_REGISTRY=m
 CONFIG_UCS2_STRING=y
+CONFIG_FONT_SUPPORT=y
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
index 31fe5fdaae9b6b3a9127765efe880a9fe709317d..d34a8f5986bbdfa727b6caad1950e2798a8d931b 100644 (file)
@@ -7058,6 +7058,7 @@ usr/lib/locale
 #usr/share/i18n/locales/eu_ES@euro
 #usr/share/i18n/locales/fa_IR
 #usr/share/i18n/locales/fi_FI
+#usr/share/i18n/locales/fi_FI.orig
 #usr/share/i18n/locales/fi_FI@euro
 #usr/share/i18n/locales/fil_PH
 #usr/share/i18n/locales/fo_FO
index e6ce913364665af4def76f791aadca529861b70c..aec585728f6efa975ea21ce000d893f130fd23ae 100644 (file)
@@ -16,7 +16,9 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/serpent-sse2-i586.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/crypto/twofish-i586.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/kernel
-#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/microcode.ko
+#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/cpu
+#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/cpu/microcode
+#lib/modules/KVER-ipfire/kernel/arch/x86/kernel/cpu/microcode/microcode.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/kernel/test_nx.ko
 #lib/modules/KVER-ipfire/kernel/arch/x86/kvm
 #lib/modules/KVER-ipfire/kernel/arch/x86/kvm/kvm-amd.ko
@@ -61,6 +63,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/crypto/gcm.ko
 #lib/modules/KVER-ipfire/kernel/crypto/ghash-generic.ko
 #lib/modules/KVER-ipfire/kernel/crypto/khazad.ko
+#lib/modules/KVER-ipfire/kernel/crypto/lz4.ko
+#lib/modules/KVER-ipfire/kernel/crypto/lz4hc.ko
 #lib/modules/KVER-ipfire/kernel/crypto/lzo.ko
 #lib/modules/KVER-ipfire/kernel/crypto/md4.ko
 #lib/modules/KVER-ipfire/kernel/crypto/michael_mic.ko
@@ -87,7 +91,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/crypto/zlib.ko
 #lib/modules/KVER-ipfire/kernel/drivers
 #lib/modules/KVER-ipfire/kernel/drivers/acpi
-#lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_i2c.ko
+#lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_extlog.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_ipmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/acpi_pad.ko
 #lib/modules/KVER-ipfire/kernel/drivers/acpi/custom_method.ko
@@ -154,6 +158,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_nv.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_promise.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_qstor.ko
+#lib/modules/KVER-ipfire/kernel/drivers/ata/sata_rcar.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_sil.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_sil24.ko
 #lib/modules/KVER-ipfire/kernel/drivers/ata/sata_sis.ko
@@ -181,10 +186,11 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/base
 #lib/modules/KVER-ipfire/kernel/drivers/base/regmap
 #lib/modules/KVER-ipfire/kernel/drivers/base/regmap/regmap-i2c.ko
+#lib/modules/KVER-ipfire/kernel/drivers/bcma
+#lib/modules/KVER-ipfire/kernel/drivers/bcma/bcma.ko
 #lib/modules/KVER-ipfire/kernel/drivers/block
 #lib/modules/KVER-ipfire/kernel/drivers/block/DAC960.ko
 #lib/modules/KVER-ipfire/kernel/drivers/block/cciss.ko
-#lib/modules/KVER-ipfire/kernel/drivers/block/cpqarray.ko
 #lib/modules/KVER-ipfire/kernel/drivers/block/cryptoloop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/block/floppy.ko
 #lib/modules/KVER-ipfire/kernel/drivers/block/mtip32xx
@@ -249,7 +255,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/gx-suspmod.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/longhaul.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/longrun.ko
-#lib/modules/KVER-ipfire/kernel/drivers/cpufreq/mperf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/p4-clockmod.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/pcc-cpufreq.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/powernow-k6.ko
@@ -259,6 +264,9 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/speedstep-lib.ko
 #lib/modules/KVER-ipfire/kernel/drivers/cpufreq/speedstep-smi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/crypto
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/ccp
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/ccp/ccp-crypto.ko
+#lib/modules/KVER-ipfire/kernel/drivers/crypto/ccp/ccp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/crypto/geode-aes.ko
 #lib/modules/KVER-ipfire/kernel/drivers/crypto/hifn_795x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/crypto/padlock-aes.ko
@@ -266,7 +274,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/dca
 #lib/modules/KVER-ipfire/kernel/drivers/dca/dca.ko
 #lib/modules/KVER-ipfire/kernel/drivers/dma
-#lib/modules/KVER-ipfire/kernel/drivers/dma/dw_dmac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/dma/dw
+#lib/modules/KVER-ipfire/kernel/drivers/dma/dw/dw_dmac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/dma/dw/dw_dmac_core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/dma/dw/dw_dmac_pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/dma/ioat
 #lib/modules/KVER-ipfire/kernel/drivers/dma/ioat/ioatdma.ko
 #lib/modules/KVER-ipfire/kernel/drivers/dma/pch_dma.ko
@@ -304,6 +315,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/ast
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/ast/ast.ko
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/bochs
+#lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/bochs/bochs-drm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/cirrus
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/cirrus/cirrus.ko
 #lib/modules/KVER-ipfire/kernel/drivers/gpu/drm/drm.ko
@@ -364,6 +377,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat-kovaplus.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat-lua.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat-pyra.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat-ryos.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat-savu.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-roccat.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hid/hid-saitek.ko
@@ -424,9 +438,11 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/fam15h_power.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/fschmd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/g760a.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/g762.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/gl518sm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/gl520sm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/hih6130.ko
+#lib/modules/KVER-ipfire/kernel/drivers/hwmon/htu21.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/hwmon-vid.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/i5k_amb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/hwmon/ibmaem.ko
@@ -530,6 +546,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-parport.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-pca-platform.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-piix4.ko
+#lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-robotfuzz-osif.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-scmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-simtec.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/i2c-sis5595.ko
@@ -542,7 +559,13 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/busses/scx200_acb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-dev.ko
+#lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-mux.ko
 #lib/modules/KVER-ipfire/kernel/drivers/i2c/i2c-smbus.ko
+#lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes
+#lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/i2c-mux-gpio.ko
+#lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/i2c-mux-pca9541.ko
+#lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/i2c-mux-pca954x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/i2c/muxes/i2c-mux-pinctrl.ko
 #lib/modules/KVER-ipfire/kernel/drivers/iio
 #lib/modules/KVER-ipfire/kernel/drivers/iio/common
 #lib/modules/KVER-ipfire/kernel/drivers/iio/common/hid-sensors
@@ -562,6 +585,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/input/misc/ati_remote2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/misc/atlas_btns.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/misc/cm109.ko
+#lib/modules/KVER-ipfire/kernel/drivers/input/misc/ideapad_slidebar.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/misc/keyspan_remote.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/misc/pcspkr.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/misc/powermate.ko
@@ -581,6 +605,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/input/serio
 #lib/modules/KVER-ipfire/kernel/drivers/input/serio/altera_ps2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/serio/arc_ps2.ko
+#lib/modules/KVER-ipfire/kernel/drivers/input/serio/hyperv-keyboard.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/serio/serio_raw.ko
 #lib/modules/KVER-ipfire/kernel/drivers/input/sparse-keymap.ko
 #lib/modules/KVER-ipfire/kernel/drivers/isdn
@@ -651,11 +676,13 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp5523.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp5562.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp55xx-common.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lp8501.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-lt3593.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-ot200.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca9532.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca955x.ko
-#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca9633.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca963x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/leds/leds-pca9685.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-ss4200.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/leds-tca6507.ko
 #lib/modules/KVER-ipfire/kernel/drivers/leds/trigger
@@ -672,7 +699,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/md/bcache
 #lib/modules/KVER-ipfire/kernel/drivers/md/bcache/bcache.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-bio-prison.ko
-#lib/modules/KVER-ipfire/kernel/drivers/md/dm-bufio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-cache-cleaner.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-cache-mq.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-cache.ko
@@ -683,6 +709,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-raid.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-round-robin.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-service-time.ko
+#lib/modules/KVER-ipfire/kernel/drivers/md/dm-switch.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/dm-verity.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/faulty.ko
 #lib/modules/KVER-ipfire/kernel/drivers/md/linear.ko
@@ -723,6 +750,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24110.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24113.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24116.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24117.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cx24123.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/cxd2820r.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dib0070.ko
@@ -737,6 +765,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/drxk.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/ds3000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dvb-pll.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/dvbsky_m88ds3103.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/ec100.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/isl6405.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/dvb-frontends/isl6421.ko
@@ -820,6 +849,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/mt9v011.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/ov7670.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/saa6588.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/i2c/saa6752hs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/saa7110.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/saa7115.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/i2c/saa7127.ko
@@ -900,7 +930,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/pt1
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/pt1/earth-pt1.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134
-#lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa6752hs.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134-alsa.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134-dvb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/pci/saa7134/saa7134-empress.ko
@@ -931,12 +960,16 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/platform/marvell-ccic/cafe_ccic.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/platform/sh_veu.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera
+#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/rcar_vin.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/sh_mobile_ceu_camera.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/sh_mobile_csi2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_camera.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_camera_platform.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_mediabus.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/platform/soc_camera/soc_scale_crop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/platform/timblogiw.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/platform/vsp1
+#lib/modules/KVER-ipfire/kernel/drivers/media/platform/vsp1/vsp1.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ati_remote.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/ene_ir.ko
@@ -977,6 +1010,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-budget-ci-old.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-cinergy-1400.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-cinergy.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-delock-61959.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dib0700-nec.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-dib0700-rc5.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-digitalnow-tinytwin.ko
@@ -1039,6 +1073,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-reddo.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-snapstream-firefly.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-streamzap.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-su3000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-tbs-nec.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-technisat-usb2.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/rc/keymaps/rc-terratec-cinergy-xs.ko
@@ -1071,6 +1106,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/fc0012.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/fc0013.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/fc2580.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/tuners/m88ts2022.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/max2165.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mc44s803.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/tuners/mt2060.ko
@@ -1154,6 +1190,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/em28xx/em28xx-alsa.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/em28xx/em28xx-dvb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/em28xx/em28xx-rc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/em28xx/em28xx-v4l.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/em28xx/em28xx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gl860
@@ -1193,6 +1230,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_sq905c.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_sq930x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_stk014.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_stk1135.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_stv0680.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_sunplus.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/gspca/gspca_t613.ko
@@ -1216,8 +1254,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/s2255/s2255drv.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/siano
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/siano/smsusb.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/usb/sn9c102
-#lib/modules/KVER-ipfire/kernel/drivers/media/usb/sn9c102/sn9c102.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/stk1160
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/stk1160/stk1160.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/stkwebcam
@@ -1233,6 +1269,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/ttusb-dec
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/ttusb-dec/ttusb_dec.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/ttusb-dec/ttusbdecfe.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/usbtv
+#lib/modules/KVER-ipfire/kernel/drivers/media/usb/usbtv/usbtv.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/usbvision
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/usbvision/usbvision.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/usb/uvc
@@ -1242,7 +1280,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/tuner.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/v4l2-common.ko
-#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/v4l2-int-device.ko
+#lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/v4l2-dv-timings.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/v4l2-mem2mem.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-core.ko
 #lib/modules/KVER-ipfire/kernel/drivers/media/v4l2-core/videobuf-dma-contig.ko
@@ -1257,6 +1295,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/memstick
 #lib/modules/KVER-ipfire/kernel/drivers/memstick/core
 #lib/modules/KVER-ipfire/kernel/drivers/memstick/core/memstick.ko
+#lib/modules/KVER-ipfire/kernel/drivers/memstick/core/ms_block.ko
 #lib/modules/KVER-ipfire/kernel/drivers/memstick/core/mspro_block.ko
 #lib/modules/KVER-ipfire/kernel/drivers/memstick/host
 #lib/modules/KVER-ipfire/kernel/drivers/memstick/host/jmb38x_ms.ko
@@ -1440,6 +1479,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e1000/e1000.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e1000e
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/i40e
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/i40e/i40e.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/i40evf
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/i40evf/i40evf.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/igb
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/igb/igb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/intel/igbvf
@@ -1493,6 +1536,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/realtek/8139too.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/realtek/atp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/realtek/r8169.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/renesas
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/renesas/sh_eth.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/sfc
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/sfc/sfc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/silan
@@ -1504,6 +1549,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/smsc/epic100.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/smsc/smc9194.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/smsc/smc91c92_cs.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/smsc/smsc911x.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/smsc/smsc9420.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro
 #lib/modules/KVER-ipfire/kernel/drivers/net/ethernet/stmicro/stmmac
@@ -1534,6 +1580,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/mdio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/mii.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/netconsole.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/nlmon.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/amd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/phy/at803x.ko
@@ -1580,6 +1627,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/dm9601.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/gl620a.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/hso.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/usb/huawei_cdc_ncm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/int51x1.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/ipheth.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/kalmia.ko
@@ -1596,6 +1644,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/sierra_net.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/smsc75xx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/smsc95xx.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/usb/sr9700.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/usb/sr9800.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/usbnet.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/usb/zaurus.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/veth.ko
@@ -1612,6 +1662,9 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ar5523
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ar5523/ar5523.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ath.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ath10k
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ath10k/ath10k_core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ath10k/ath10k_pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ath5k
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ath5k/ath5k.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ath9k
@@ -1621,6 +1674,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/ath9k/ath9k_hw.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/carl9170
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/carl9170/carl9170.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/wcn36xx
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/wcn36xx/wcn36xx.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/wil6210
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ath/wil6210/wil6210.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/atmel.ko
@@ -1633,8 +1688,13 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmfmac
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmfmac/brcmfmac.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmsmac
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmsmac/brcmsmac.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmutil
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/brcm80211/brcmutil/brcmutil.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cw1200
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cw1200/cw1200_core.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/cw1200/cw1200_wlan_sdio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap/hostap.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/hostap/hostap_cs.ko
@@ -1689,6 +1749,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800lib.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800mmio.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko
@@ -1717,6 +1778,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8192se/rtl8192se.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8723ae
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl8723ae/rtl8723ae.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl_pci.ko
+#lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtl_usb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/rtlwifi/rtlwifi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti
 #lib/modules/KVER-ipfire/kernel/drivers/net/wireless/ti/wl1251
@@ -1762,7 +1825,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/asus-laptop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/asus-nb-wmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/asus-wmi.ko
-#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/chromeos_laptop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/classmate-laptop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/compal-laptop.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/dell-laptop.ko
@@ -1775,6 +1837,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/hp-wmi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/hp_accel.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/ideapad-laptop.ko
+#lib/modules/KVER-ipfire/kernel/drivers/platform/x86/intel-rst.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/intel_ips.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/intel_oaktrail.ko
 #lib/modules/KVER-ipfire/kernel/drivers/platform/x86/msi-laptop.ko
@@ -1814,12 +1877,15 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-fm3130.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-hid-sensor-time.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-isl12022.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-isl12057.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-isl1208.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-m41t80.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-m48t35.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-m48t59.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-max6900.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-moxart.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-msm6242.ko
+#lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf2127.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf8523.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf8563.ko
 #lib/modules/KVER-ipfire/kernel/drivers/rtc/rtc-pcf8583.ko
@@ -1880,6 +1946,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/dpt_i2o.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/dtc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/eata.ko
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/esas2r
+#lib/modules/KVER-ipfire/kernel/drivers/scsi/esas2r/esas2r.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/fcoe
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/fcoe/fcoe.ko
 #lib/modules/KVER-ipfire/kernel/drivers/scsi/fcoe/libfcoe.ko
@@ -1976,6 +2044,9 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/staging/echo/echo.ko
 #lib/modules/KVER-ipfire/kernel/drivers/staging/et131x
 #lib/modules/KVER-ipfire/kernel/drivers/staging/et131x/et131x.ko
+#lib/modules/KVER-ipfire/kernel/drivers/staging/gdm724x
+#lib/modules/KVER-ipfire/kernel/drivers/staging/gdm724x/gdmtty.ko
+#lib/modules/KVER-ipfire/kernel/drivers/staging/gdm724x/gdmulte.ko
 #lib/modules/KVER-ipfire/kernel/drivers/staging/rts5139
 #lib/modules/KVER-ipfire/kernel/drivers/staging/rts5139/rts5139.ko
 #lib/modules/KVER-ipfire/kernel/drivers/staging/slicoss
@@ -1985,7 +2056,9 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/staging/usbip/usbip-host.ko
 #lib/modules/KVER-ipfire/kernel/drivers/staging/usbip/vhci-hcd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/thermal
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/int3403_thermal.ko
 #lib/modules/KVER-ipfire/kernel/drivers/thermal/intel_powerclamp.ko
+#lib/modules/KVER-ipfire/kernel/drivers/thermal/x86_pkg_temp_thermal.ko
 #lib/modules/KVER-ipfire/kernel/drivers/tty
 #lib/modules/KVER-ipfire/kernel/drivers/tty/cyclades.ko
 #lib/modules/KVER-ipfire/kernel/drivers/tty/n_gsm.ko
@@ -1997,6 +2070,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/tty/serial/8250
 #lib/modules/KVER-ipfire/kernel/drivers/tty/serial/8250/8250_dw.ko
 #lib/modules/KVER-ipfire/kernel/drivers/tty/serial/arc_uart.ko
+#lib/modules/KVER-ipfire/kernel/drivers/tty/serial/fsl_lpuart.ko
 #lib/modules/KVER-ipfire/kernel/drivers/tty/serial/jsm
 #lib/modules/KVER-ipfire/kernel/drivers/tty/serial/jsm/jsm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/tty/serial/rp2.ko
@@ -2017,20 +2091,20 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/usb/atm/usbatm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/atm/xusbatm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea
-#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci13xxx_msm.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci13xxx_pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc_msm.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/chipidea/ci_hdrc_pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/class
 #lib/modules/KVER-ipfire/kernel/drivers/usb/class/cdc-acm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/class/cdc-wdm.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/class/usblp.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/class/usbtmc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3
-#lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3/dwc3-exynos.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3/dwc3-omap.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3/dwc3-keystone.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3/dwc3-pci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/dwc3/dwc3.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/host
+#lib/modules/KVER-ipfire/kernel/drivers/usb/host/bcma-hcd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/host/hwa-hc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/host/isp1362-hcd.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/host/sl811-hcd.ko
@@ -2042,6 +2116,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/usb/image/microtek.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/adutux.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/misc/ehset.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/emi26.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/emi62.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/ezusb.ko
@@ -2057,6 +2132,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/usb/misc/yurex.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/mon
 #lib/modules/KVER-ipfire/kernel/drivers/usb/mon/usbmon.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/phy
+#lib/modules/KVER-ipfire/kernel/drivers/usb/phy/phy-fsm-usb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/aircable.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/ark3116.ko
@@ -2067,7 +2144,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/digi_acceleport.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/f81232.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/ftdi_sio.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/funsoft.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/io_edgeport.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/io_ti.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/ipaq.ko
@@ -2079,17 +2155,17 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/mct_u232.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/mos7720.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/mos7840.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/moto_modem.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/mxuport.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/option.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/oti6858.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/pl2303.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/qcaux.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/qcserial.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/quatech2.ko
-#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/siemens_mpi.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/sierra.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/spcp8x5.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/ssu100.ko
+#lib/modules/KVER-ipfire/kernel/drivers/usb/serial/usb-serial-simple.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/usb_wwan.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/usbserial.ko
 #lib/modules/KVER-ipfire/kernel/drivers/usb/serial/visor.ko
@@ -2124,6 +2200,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/uwb/whc-rc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/uwb/whci.ko
 #lib/modules/KVER-ipfire/kernel/drivers/vhost
+#lib/modules/KVER-ipfire/kernel/drivers/vhost/vhost.ko
 #lib/modules/KVER-ipfire/kernel/drivers/vhost/vhost_net.ko
 #lib/modules/KVER-ipfire/kernel/drivers/vhost/vringh.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video
@@ -2157,6 +2234,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_base.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/matrox/matroxfb_misc.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/neofb.ko
+#lib/modules/KVER-ipfire/kernel/drivers/video/ocfb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/output.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/pm2fb.ko
 #lib/modules/KVER-ipfire/kernel/drivers/video/pm3fb.ko
@@ -2209,6 +2287,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/alim1535_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/alim7101_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/cpu5wdt.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/dw_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/eurotechwdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/f71808e_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/geodewdt.ko
@@ -2222,6 +2301,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/it8712f_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/it87_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/machzwd.ko
+#lib/modules/KVER-ipfire/kernel/drivers/watchdog/mena21_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/nv_tco.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/pc87413_wdt.ko
 #lib/modules/KVER-ipfire/kernel/drivers/watchdog/pcwd_pci.ko
@@ -2353,6 +2433,9 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/lib/crc7.ko
 #lib/modules/KVER-ipfire/kernel/lib/crc8.ko
 #lib/modules/KVER-ipfire/kernel/lib/libcrc32c.ko
+#lib/modules/KVER-ipfire/kernel/lib/lz4
+#lib/modules/KVER-ipfire/kernel/lib/lz4/lz4_compress.ko
+#lib/modules/KVER-ipfire/kernel/lib/lz4/lz4hc_compress.ko
 #lib/modules/KVER-ipfire/kernel/lib/mpi
 #lib/modules/KVER-ipfire/kernel/lib/mpi/mpi.ko
 #lib/modules/KVER-ipfire/kernel/lib/oid_registry.ko
@@ -2362,8 +2445,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/lib/ts_bm.ko
 #lib/modules/KVER-ipfire/kernel/lib/ts_fsm.ko
 #lib/modules/KVER-ipfire/kernel/lib/ts_kmp.ko
-#lib/modules/KVER-ipfire/kernel/lib/zlib_deflate
-#lib/modules/KVER-ipfire/kernel/lib/zlib_deflate/zlib_deflate.ko
 #lib/modules/KVER-ipfire/kernel/net
 #lib/modules/KVER-ipfire/kernel/net/802
 #lib/modules/KVER-ipfire/kernel/net/802/garp.ko
@@ -2409,8 +2490,13 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebtable_filter.ko
 #lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebtable_nat.ko
 #lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/ebtables.ko
+#lib/modules/KVER-ipfire/kernel/net/bridge/netfilter/nf_tables_bridge.ko
 #lib/modules/KVER-ipfire/kernel/net/core
 #lib/modules/KVER-ipfire/kernel/net/core/netprio_cgroup.ko
+#lib/modules/KVER-ipfire/kernel/net/hsr
+#lib/modules/KVER-ipfire/kernel/net/hsr/hsr.ko
+#lib/modules/KVER-ipfire/kernel/net/ieee802154
+#lib/modules/KVER-ipfire/kernel/net/ieee802154/6lowpan_iphc.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4
 #lib/modules/KVER-ipfire/kernel/net/ipv4/ah4.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/esp4.ko
@@ -2429,6 +2515,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_ECN.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_MASQUERADE.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_REJECT.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_SYNPROXY.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_ah.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_ipp2p.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/ipt_rpfilter.ko
@@ -2442,6 +2529,11 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_pptp.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_proto_gre.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_nat_snmp_basic.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_tables_arp.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nf_tables_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_chain_nat_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_chain_route_ipv4.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv4/netfilter/nft_reject_ipv4.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_bic.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_diag.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv4/tcp_highspeed.ko
@@ -2465,12 +2557,14 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/ipv6/esp6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/ip6_gre.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/ip6_tunnel.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/ip6_vti.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/ipcomp6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/mip6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6t_MASQUERADE.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6t_NPT.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6t_REJECT.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6t_SYNPROXY.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6t_ah.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6t_eui64.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6t_frag.ko
@@ -2485,6 +2579,10 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6table_raw.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/ip6table_security.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_nat_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nf_tables_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_chain_nat_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_chain_route_ipv6.ko
+#lib/modules/KVER-ipfire/kernel/net/ipv6/netfilter/nft_reject_ipv6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/sit.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/tunnel6.ko
 #lib/modules/KVER-ipfire/kernel/net/ipv6/xfrm6_mode_beet.ko
@@ -2515,7 +2613,9 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_ipportnet.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_net.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_netiface.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_netnet.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_netport.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_hash_netportnet.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipset/ip_set_list_set.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs
 #lib/modules/KVER-ipfire/kernel/net/netfilter/ipvs/ip_vs.ko
@@ -2556,13 +2656,28 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_proto_udplite.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_sip.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nf_nat_tftp.ko
-#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_tproxy_core.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_synproxy_core.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_tables.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nf_tables_inet.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink_acct.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink_cthelper.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink_cttimeout.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink_log.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/nfnetlink_queue.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_compat.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_counter.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_ct.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_exthdr.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_hash.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_limit.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_log.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_meta.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_nat.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_queue.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_rbtree.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_reject.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/nft_reject_inet.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_AUDIT.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_CHECKSUM.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_CLASSIFY.ko
@@ -2588,6 +2703,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_TRACE.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_addrtype.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_bpf.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_cgroup.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_cluster.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_comment.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_connbytes.ko
@@ -2604,7 +2720,9 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_hashlimit.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_helper.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_hl.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_ipcomp.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_iprange.ko
+#lib/modules/KVER-ipfire/kernel/net/netfilter/xt_l2tp.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_layer7.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_length.ko
 #lib/modules/KVER-ipfire/kernel/net/netfilter/xt_limit.ko
@@ -2649,6 +2767,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/sched/act_simple.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/act_skbedit.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_basic.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/cls_bpf.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_cgroup.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_flow.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/cls_fw.ko
@@ -2669,9 +2788,11 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_codel.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_drr.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_dsmark.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/sch_fq.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_fq_codel.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_gred.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_hfsc.ko
+#lib/modules/KVER-ipfire/kernel/net/sched/sch_hhf.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_htb.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_ingress.ko
 #lib/modules/KVER-ipfire/kernel/net/sched/sch_mqprio.ko
@@ -2724,7 +2845,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/sound/core/seq/snd-seq.ko
 #lib/modules/KVER-ipfire/kernel/sound/core/snd-hrtimer.ko
 #lib/modules/KVER-ipfire/kernel/sound/core/snd-hwdep.ko
-#lib/modules/KVER-ipfire/kernel/sound/core/snd-page-alloc.ko
 #lib/modules/KVER-ipfire/kernel/sound/core/snd-pcm.ko
 #lib/modules/KVER-ipfire/kernel/sound/core/snd-rawmidi.ko
 #lib/modules/KVER-ipfire/kernel/sound/core/snd-timer.ko
@@ -2751,6 +2871,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/sound/drivers/vx
 #lib/modules/KVER-ipfire/kernel/sound/drivers/vx/snd-vx-lib.ko
 #lib/modules/KVER-ipfire/kernel/sound/firewire
+#lib/modules/KVER-ipfire/kernel/sound/firewire/snd-dice.ko
 #lib/modules/KVER-ipfire/kernel/sound/firewire/snd-firewire-lib.ko
 #lib/modules/KVER-ipfire/kernel/sound/firewire/snd-firewire-speakers.ko
 #lib/modules/KVER-ipfire/kernel/sound/i2c
@@ -2759,7 +2880,6 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/sound/i2c/other/snd-ak4114.ko
 #lib/modules/KVER-ipfire/kernel/sound/i2c/other/snd-ak4xxx-adda.ko
 #lib/modules/KVER-ipfire/kernel/sound/i2c/other/snd-pt2258.ko
-#lib/modules/KVER-ipfire/kernel/sound/i2c/other/snd-tea575x-tuner.ko
 #lib/modules/KVER-ipfire/kernel/sound/i2c/snd-cs8427.ko
 #lib/modules/KVER-ipfire/kernel/sound/i2c/snd-i2c.ko
 #lib/modules/KVER-ipfire/kernel/sound/i2c/snd-tea6330t.ko
@@ -2861,6 +2981,7 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/sound/pci/hda/snd-hda-codec-cirrus.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/hda/snd-hda-codec-cmedia.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/hda/snd-hda-codec-conexant.ko
+#lib/modules/KVER-ipfire/kernel/sound/pci/hda/snd-hda-codec-generic.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/hda/snd-hda-codec-hdmi.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/hda/snd-hda-codec-idt.ko
 #lib/modules/KVER-ipfire/kernel/sound/pci/hda/snd-hda-codec-realtek.ko
@@ -2933,6 +3054,8 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/kernel/sound/usb/6fire/snd-usb-6fire.ko
 #lib/modules/KVER-ipfire/kernel/sound/usb/caiaq
 #lib/modules/KVER-ipfire/kernel/sound/usb/caiaq/snd-usb-caiaq.ko
+#lib/modules/KVER-ipfire/kernel/sound/usb/hiface
+#lib/modules/KVER-ipfire/kernel/sound/usb/hiface/snd-usb-hiface.ko
 #lib/modules/KVER-ipfire/kernel/sound/usb/misc
 #lib/modules/KVER-ipfire/kernel/sound/usb/misc/snd-ua101.ko
 #lib/modules/KVER-ipfire/kernel/sound/usb/snd-usb-audio.ko
@@ -2953,4 +3076,3 @@ lib/modules/KVER-ipfire
 #lib/modules/KVER-ipfire/modules.symbols.bin
 #lib/modules/KVER-ipfire/source
 sbin/gen_init_cpio
-boot/initramfs-KVER-ipfire.img
index deaa97f4019b3ee57d104c21913a7a194b56853d..804a61043068f17b04036f827b817a2664e9fa22 100644 (file)
 #usr/include/drm/i810_drm.h
 #usr/include/drm/i915_drm.h
 #usr/include/drm/mga_drm.h
+#usr/include/drm/msm_drm.h
 #usr/include/drm/nouveau_drm.h
 #usr/include/drm/qxl_drm.h
 #usr/include/drm/r128_drm.h
 #usr/include/linux/ax25.h
 #usr/include/linux/b1lli.h
 #usr/include/linux/baycom.h
+#usr/include/linux/bcm933xx_hcs.h
 #usr/include/linux/bfs_fs.h
 #usr/include/linux/binfmts.h
 #usr/include/linux/blkpg.h
 #usr/include/linux/kvm.h
 #usr/include/linux/kvm_para.h
 #usr/include/linux/l2tp.h
+#usr/include/linux/libc-compat.h
 #usr/include/linux/limits.h
 #usr/include/linux/llc.h
 #usr/include/linux/loop.h
 #usr/include/linux/mei.h
 #usr/include/linux/mempolicy.h
 #usr/include/linux/meye.h
+#usr/include/linux/mic_common.h
+#usr/include/linux/mic_ioctl.h
 #usr/include/linux/mii.h
 #usr/include/linux/minix_fs.h
 #usr/include/linux/mman.h
 #usr/include/linux/netfilter/nf_conntrack_tcp.h
 #usr/include/linux/netfilter/nf_conntrack_tuple_common.h
 #usr/include/linux/netfilter/nf_nat.h
+#usr/include/linux/netfilter/nf_tables.h
+#usr/include/linux/netfilter/nf_tables_compat.h
 #usr/include/linux/netfilter/nfnetlink.h
 #usr/include/linux/netfilter/nfnetlink_acct.h
 #usr/include/linux/netfilter/nfnetlink_compat.h
 #usr/include/linux/netfilter/xt_CONNSECMARK.h
 #usr/include/linux/netfilter/xt_CT.h
 #usr/include/linux/netfilter/xt_DSCP.h
+#usr/include/linux/netfilter/xt_HMARK.h
 #usr/include/linux/netfilter/xt_IDLETIMER.h
 #usr/include/linux/netfilter/xt_LED.h
 #usr/include/linux/netfilter/xt_LOG.h
 #usr/include/linux/netfilter/xt_TPROXY.h
 #usr/include/linux/netfilter/xt_addrtype.h
 #usr/include/linux/netfilter/xt_bpf.h
+#usr/include/linux/netfilter/xt_cgroup.h
 #usr/include/linux/netfilter/xt_cluster.h
 #usr/include/linux/netfilter/xt_comment.h
 #usr/include/linux/netfilter/xt_connbytes.h
 #usr/include/linux/netfilter/xt_esp.h
 #usr/include/linux/netfilter/xt_hashlimit.h
 #usr/include/linux/netfilter/xt_helper.h
+#usr/include/linux/netfilter/xt_ipcomp.h
 #usr/include/linux/netfilter/xt_iprange.h
 #usr/include/linux/netfilter/xt_ipvs.h
+#usr/include/linux/netfilter/xt_l2tp.h
 #usr/include/linux/netfilter/xt_layer7.h
 #usr/include/linux/netfilter/xt_length.h
 #usr/include/linux/netfilter/xt_limit.h
 #usr/include/linux/netfilter/xt_rateest.h
 #usr/include/linux/netfilter/xt_realm.h
 #usr/include/linux/netfilter/xt_recent.h
+#usr/include/linux/netfilter/xt_rpfilter.h
 #usr/include/linux/netfilter/xt_sctp.h
 #usr/include/linux/netfilter/xt_set.h
 #usr/include/linux/netfilter/xt_socket.h
 #usr/include/linux/nfsd/stats.h
 #usr/include/linux/nl80211.h
 #usr/include/linux/nubus.h
+#usr/include/linux/nvme.h
 #usr/include/linux/nvram.h
 #usr/include/linux/omap3isp.h
 #usr/include/linux/omapfb.h
 #usr/include/linux/taskstats.h
 #usr/include/linux/tc_act
 #usr/include/linux/tc_act/tc_csum.h
+#usr/include/linux/tc_act/tc_defact.h
 #usr/include/linux/tc_act/tc_gact.h
 #usr/include/linux/tc_act/tc_ipt.h
 #usr/include/linux/tc_act/tc_mirred.h
 #usr/include/linux/x25.h
 #usr/include/linux/xattr.h
 #usr/include/linux/xfrm.h
+#usr/include/linux/zorro.h
+#usr/include/linux/zorro_ids.h
 #usr/include/mtd
 #usr/include/mtd/inftl-user.h
 #usr/include/mtd/mtd-abi.h
 #usr/include/sound/compress_offload.h
 #usr/include/sound/compress_params.h
 #usr/include/sound/emu10k1.h
+#usr/include/sound/firewire.h
 #usr/include/sound/hdsp.h
 #usr/include/sound/hdspm.h
 #usr/include/sound/sb16_csp.h
 #usr/include/video/uvesafb.h
 #usr/include/xen
 #usr/include/xen/evtchn.h
+#usr/include/xen/gntalloc.h
+#usr/include/xen/gntdev.h
 #usr/include/xen/privcmd.h
diff --git a/config/rootfiles/common/i586/linux-initrd b/config/rootfiles/common/i586/linux-initrd
new file mode 100644 (file)
index 0000000..5679550
--- /dev/null
@@ -0,0 +1 @@
+#boot/initramfs-KVER-ipfire.img
diff --git a/config/rootfiles/common/i586/linux-initrd-pae b/config/rootfiles/common/i586/linux-initrd-pae
new file mode 100644 (file)
index 0000000..083efc2
--- /dev/null
@@ -0,0 +1 @@
+#boot/initramfs-KVER-ipfire-pae.img
index 60e0403d06e4d1def44d0d44881e1c8643c48fad..19f458ca68df82d14781f8e11d44001acc1040f8 100644 (file)
@@ -14,7 +14,9 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto/serpent-sse2-i586.ko
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/crypto/twofish-i586.ko
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel
-#lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel/microcode.ko
+#lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel/cpu
+#lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel/cpu/microcode
+#lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel/cpu/microcode/microcode.ko
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/kernel/test_nx.ko
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/kvm
 #lib/modules/KVER-ipfire-pae/kernel/arch/x86/kvm/kvm-amd.ko
@@ -57,6 +59,8 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/crypto/gcm.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/ghash-generic.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/khazad.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/lz4.ko
+#lib/modules/KVER-ipfire-pae/kernel/crypto/lz4hc.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/lzo.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/md4.ko
 #lib/modules/KVER-ipfire-pae/kernel/crypto/michael_mic.ko
@@ -83,7 +87,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/crypto/zlib.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers
 #lib/modules/KVER-ipfire-pae/kernel/drivers/acpi
-#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/acpi_i2c.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/acpi_extlog.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/acpi_ipmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/acpi_pad.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/acpi/custom_method.ko
@@ -150,6 +154,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_nv.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_promise.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_qstor.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_rcar.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_sil.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_sil24.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/ata/sata_sis.ko
@@ -177,10 +182,11 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/base
 #lib/modules/KVER-ipfire-pae/kernel/drivers/base/regmap
 #lib/modules/KVER-ipfire-pae/kernel/drivers/base/regmap/regmap-i2c.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/bcma
+#lib/modules/KVER-ipfire-pae/kernel/drivers/bcma/bcma.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/block
 #lib/modules/KVER-ipfire-pae/kernel/drivers/block/DAC960.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/block/cciss.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/block/cpqarray.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/block/cryptoloop.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/block/floppy.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/block/mtip32xx
@@ -247,7 +253,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/gx-suspmod.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/longhaul.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/longrun.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/mperf.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/p4-clockmod.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/pcc-cpufreq.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/powernow-k6.ko
@@ -257,13 +262,19 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/speedstep-lib.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/cpufreq/speedstep-smi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/crypto
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/ccp
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/ccp/ccp-crypto.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/ccp/ccp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/geode-aes.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/padlock-aes.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/crypto/padlock-sha.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/dca
 #lib/modules/KVER-ipfire-pae/kernel/drivers/dca/dca.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/dma
-#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/dw_dmac.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/dw
+#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/dw/dw_dmac.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/dw/dw_dmac_core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/dma/dw/dw_dmac_pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/dma/ioat
 #lib/modules/KVER-ipfire-pae/kernel/drivers/dma/ioat/ioatdma.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/dma/pch_dma.ko
@@ -292,14 +303,18 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/firmware/edd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/firmware/iscsi_ibft.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpio
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-f7188x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-ich.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-sch.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-sch311x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-ts5500.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpio/gpio-viperboard.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/ast
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/ast/ast.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/bochs
+#lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/bochs/bochs-drm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/cirrus
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/cirrus/cirrus.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/gpu/drm/drm.ko
@@ -360,6 +375,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat-kovaplus.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat-lua.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat-pyra.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat-ryos.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat-savu.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-roccat.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hid/hid-saitek.ko
@@ -420,9 +436,11 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/fam15h_power.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/fschmd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/g760a.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/g762.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/gl518sm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/gl520sm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/hih6130.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/htu21.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/hwmon-vid.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/i5k_amb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/hwmon/ibmaem.ko
@@ -526,6 +544,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-parport.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-pca-platform.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-piix4.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-robotfuzz-osif.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-scmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-simtec.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/i2c-sis5595.ko
@@ -538,7 +557,13 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/busses/scx200_acb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/i2c-core.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/i2c-dev.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/i2c-mux.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/i2c-smbus.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/muxes
+#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/muxes/i2c-mux-gpio.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/muxes/i2c-mux-pca9541.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/muxes/i2c-mux-pca954x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/i2c/muxes/i2c-mux-pinctrl.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/iio
 #lib/modules/KVER-ipfire-pae/kernel/drivers/iio/common
 #lib/modules/KVER-ipfire-pae/kernel/drivers/iio/common/hid-sensors
@@ -558,6 +583,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/ati_remote2.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/atlas_btns.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/cm109.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/ideapad_slidebar.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/keyspan_remote.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/pcspkr.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/misc/powermate.ko
@@ -577,6 +603,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/serio
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/serio/altera_ps2.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/serio/arc_ps2.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/input/serio/hyperv-keyboard.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/serio/serio_raw.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/input/sparse-keymap.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/isdn
@@ -647,11 +674,13 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp5523.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp5562.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp55xx-common.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lp8501.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-lt3593.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-ot200.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-pca9532.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-pca955x.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-pca9633.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-pca963x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-pca9685.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-ss4200.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/leds-tca6507.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/leds/trigger
@@ -668,7 +697,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/bcache
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/bcache/bcache.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-bio-prison.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-bufio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-cache-cleaner.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-cache-mq.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-cache.ko
@@ -679,6 +707,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-raid.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-round-robin.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-service-time.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-switch.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/dm-verity.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/faulty.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/md/linear.ko
@@ -719,6 +748,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx24110.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx24113.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx24116.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx24117.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cx24123.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/cxd2820r.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dib0070.ko
@@ -733,6 +763,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/drxk.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/ds3000.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dvb-pll.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/dvbsky_m88ds3103.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/ec100.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/isl6405.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/dvb-frontends/isl6421.ko
@@ -816,6 +847,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/mt9v011.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/ov7670.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/saa6588.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/saa6752hs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/saa7110.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/saa7115.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/i2c/saa7127.ko
@@ -896,7 +928,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/pt1
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/pt1/earth-pt1.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134/saa6752hs.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134/saa7134-alsa.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134/saa7134-dvb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/pci/saa7134/saa7134-empress.ko
@@ -927,12 +958,16 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/marvell-ccic/cafe_ccic.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/sh_veu.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/rcar_vin.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/sh_mobile_ceu_camera.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/sh_mobile_csi2.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/soc_camera.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/soc_camera_platform.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/soc_mediabus.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/soc_camera/soc_scale_crop.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/timblogiw.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/vsp1
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/platform/vsp1/vsp1.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ati_remote.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/ene_ir.ko
@@ -973,6 +1008,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-budget-ci-old.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-cinergy-1400.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-cinergy.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-delock-61959.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-dib0700-nec.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-dib0700-rc5.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-digitalnow-tinytwin.ko
@@ -1035,6 +1071,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-reddo.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-snapstream-firefly.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-streamzap.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-su3000.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-tbs-nec.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-technisat-usb2.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/rc/keymaps/rc-terratec-cinergy-xs.ko
@@ -1067,6 +1104,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/fc0012.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/fc0013.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/fc2580.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/m88ts2022.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/max2165.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mc44s803.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/tuners/mt2060.ko
@@ -1150,6 +1188,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/em28xx/em28xx-alsa.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/em28xx/em28xx-dvb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/em28xx/em28xx-rc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/em28xx/em28xx-v4l.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/em28xx/em28xx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gl860
@@ -1189,6 +1228,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_sq905c.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_sq930x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_stk014.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_stk1135.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_stv0680.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_sunplus.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/gspca/gspca_t613.ko
@@ -1212,8 +1252,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/s2255/s2255drv.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/siano
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/siano/smsusb.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/sn9c102
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/sn9c102/sn9c102.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/stk1160
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/stk1160/stk1160.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/stkwebcam
@@ -1229,6 +1267,8 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/ttusb-dec
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/ttusb-dec/ttusb_dec.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/ttusb-dec/ttusbdecfe.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/usbtv
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/usbtv/usbtv.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/usbvision
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/usbvision/usbvision.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/usb/uvc
@@ -1238,7 +1278,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/tuner.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/v4l2-common.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/v4l2-int-device.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/v4l2-dv-timings.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/v4l2-mem2mem.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf-core.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/media/v4l2-core/videobuf-dma-contig.ko
@@ -1253,6 +1293,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/memstick
 #lib/modules/KVER-ipfire-pae/kernel/drivers/memstick/core
 #lib/modules/KVER-ipfire-pae/kernel/drivers/memstick/core/memstick.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/memstick/core/ms_block.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/memstick/core/mspro_block.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/memstick/host
 #lib/modules/KVER-ipfire-pae/kernel/drivers/memstick/host/jmb38x_ms.ko
@@ -1436,6 +1477,10 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/e1000/e1000.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/e1000e
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/i40e
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/i40e/i40e.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/i40evf
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/i40evf/i40evf.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/igb
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/igb/igb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/intel/igbvf
@@ -1489,6 +1534,8 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/realtek/8139too.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/realtek/atp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/realtek/r8169.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/renesas
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/renesas/sh_eth.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/sfc
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/sfc/sfc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/silan
@@ -1500,6 +1547,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/smsc/epic100.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/smsc/smc9194.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/smsc/smc91c92_cs.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/smsc/smsc911x.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/smsc/smsc9420.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/stmicro
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/ethernet/stmicro/stmmac
@@ -1530,6 +1578,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/mdio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/mii.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/netconsole.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/nlmon.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/amd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/phy/at803x.ko
@@ -1576,6 +1625,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/dm9601.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/gl620a.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/hso.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/huawei_cdc_ncm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/int51x1.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/ipheth.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/kalmia.ko
@@ -1592,6 +1642,8 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/sierra_net.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/smsc75xx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/smsc95xx.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/sr9700.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/sr9800.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/usbnet.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/usb/zaurus.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/veth.ko
@@ -1608,6 +1660,9 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ar5523
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ar5523/ar5523.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ath.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ath10k
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ath10k/ath10k_core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ath10k/ath10k_pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ath5k
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ath5k/ath5k.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ath9k
@@ -1617,6 +1672,8 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/ath9k/ath9k_hw.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/carl9170
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/carl9170/carl9170.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/wcn36xx
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/wcn36xx/wcn36xx.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/wil6210
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ath/wil6210/wil6210.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/atmel.ko
@@ -1629,8 +1686,13 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211/brcmfmac
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211/brcmfmac/brcmfmac.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211/brcmsmac
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211/brcmsmac/brcmsmac.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211/brcmutil
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/brcm80211/brcmutil/brcmutil.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/cw1200
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/cw1200/cw1200_core.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/cw1200/cw1200_wlan_sdio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/hostap
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/hostap/hostap.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/hostap/hostap_cs.ko
@@ -1685,6 +1747,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2500pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2500usb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2800lib.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2800mmio.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2800pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2800usb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rt2x00/rt2x00lib.ko
@@ -1713,6 +1776,8 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8192se/rtl8192se.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8723ae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl8723ae/rtl8723ae.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl_pci.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtl_usb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/rtlwifi/rtlwifi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti
 #lib/modules/KVER-ipfire-pae/kernel/drivers/net/wireless/ti/wl1251
@@ -1762,7 +1827,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/asus-laptop.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/asus-nb-wmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/asus-wmi.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/chromeos_laptop.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/classmate-laptop.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/compal-laptop.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/dell-laptop.ko
@@ -1775,6 +1839,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/hp-wmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/hp_accel.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/ideapad-laptop.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/intel-rst.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/intel_ips.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/intel_oaktrail.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/platform/x86/msi-laptop.ko
@@ -1814,12 +1879,15 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-fm3130.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-hid-sensor-time.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-isl12022.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-isl12057.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-isl1208.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-m41t80.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-m48t35.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-m48t59.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-max6900.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-moxart.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-msm6242.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-pcf2127.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-pcf8523.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-pcf8563.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/rtc/rtc-pcf8583.ko
@@ -1880,6 +1948,8 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/dpt_i2o.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/dtc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/eata.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/esas2r
+#lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/esas2r/esas2r.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/fcoe
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/fcoe/fcoe.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/scsi/fcoe/libfcoe.ko
@@ -1976,6 +2046,9 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging/echo/echo.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging/et131x
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging/et131x/et131x.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/gdm724x
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/gdm724x/gdmtty.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/staging/gdm724x/gdmulte.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging/rts5139
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging/rts5139/rts5139.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging/slicoss
@@ -1985,7 +2058,9 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging/usbip/usbip-host.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/staging/usbip/vhci-hcd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/thermal
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/int3403_thermal.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/intel_powerclamp.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/thermal/x86_pkg_temp_thermal.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/tty
 #lib/modules/KVER-ipfire-pae/kernel/drivers/tty/cyclades.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/tty/n_gsm.ko
@@ -1997,6 +2072,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/8250
 #lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/8250/8250_dw.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/arc_uart.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/fsl_lpuart.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/jsm
 #lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/jsm/jsm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/tty/serial/rp2.ko
@@ -2017,22 +2093,23 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/atm/usbatm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/atm/xusbatm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/chipidea
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/chipidea/ci13xxx_msm.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/chipidea/ci13xxx_pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/chipidea/ci_hdrc.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/chipidea/ci_hdrc_msm.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/chipidea/ci_hdrc_pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/class
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/class/cdc-acm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/class/cdc-wdm.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/class/usblp.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/class/usbtmc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/dwc3
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/dwc3/dwc3-exynos.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/dwc3/dwc3-omap.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/dwc3/dwc3-keystone.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/dwc3/dwc3-pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/dwc3/dwc3.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/bcma-hcd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/hwa-hc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/isp1362-hcd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/ohci-pci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/sl811-hcd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/ssb-hcd.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/host/whci
@@ -2042,6 +2119,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/image/microtek.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/adutux.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/ehset.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/emi26.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/emi62.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/ezusb.ko
@@ -2057,6 +2135,8 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/misc/yurex.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/mon
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/mon/usbmon.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/phy
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/phy/phy-fsm-usb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/aircable.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/ark3116.ko
@@ -2067,7 +2147,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/digi_acceleport.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/f81232.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/ftdi_sio.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/funsoft.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/io_edgeport.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/io_ti.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/ipaq.ko
@@ -2079,17 +2158,17 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/mct_u232.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/mos7720.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/mos7840.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/moto_modem.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/mxuport.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/option.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/oti6858.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/pl2303.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/qcaux.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/qcserial.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/quatech2.ko
-#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/siemens_mpi.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/sierra.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/spcp8x5.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/ssu100.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/usb-serial-simple.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/usb_wwan.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/usbserial.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/usb/serial/visor.ko
@@ -2124,6 +2203,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/uwb/whc-rc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/uwb/whci.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/vhost
+#lib/modules/KVER-ipfire-pae/kernel/drivers/vhost/vhost.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/vhost/vhost_net.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/vhost/vringh.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video
@@ -2157,6 +2237,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox/matroxfb_base.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/matrox/matroxfb_misc.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/neofb.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/video/ocfb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/output.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/pm2fb.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/video/pm3fb.ko
@@ -2210,6 +2291,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/alim1535_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/alim7101_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/cpu5wdt.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/dw_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/eurotechwdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/f71808e_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/geodewdt.ko
@@ -2223,6 +2305,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/it8712f_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/it87_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/machzwd.ko
+#lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/mena21_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/nv_tco.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/pc87413_wdt.ko
 #lib/modules/KVER-ipfire-pae/kernel/drivers/watchdog/pcwd_pci.ko
@@ -2365,6 +2448,9 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/lib/crc7.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib/crc8.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib/libcrc32c.ko
+#lib/modules/KVER-ipfire-pae/kernel/lib/lz4
+#lib/modules/KVER-ipfire-pae/kernel/lib/lz4/lz4_compress.ko
+#lib/modules/KVER-ipfire-pae/kernel/lib/lz4/lz4hc_compress.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib/mpi
 #lib/modules/KVER-ipfire-pae/kernel/lib/mpi/mpi.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib/oid_registry.ko
@@ -2374,8 +2460,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/lib/ts_bm.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib/ts_fsm.ko
 #lib/modules/KVER-ipfire-pae/kernel/lib/ts_kmp.ko
-#lib/modules/KVER-ipfire-pae/kernel/lib/zlib_deflate
-#lib/modules/KVER-ipfire-pae/kernel/lib/zlib_deflate/zlib_deflate.ko
 #lib/modules/KVER-ipfire-pae/kernel/net
 #lib/modules/KVER-ipfire-pae/kernel/net/802
 #lib/modules/KVER-ipfire-pae/kernel/net/802/garp.ko
@@ -2421,8 +2505,13 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/ebtable_filter.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/ebtable_nat.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/ebtables.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/bridge/netfilter/nf_tables_bridge.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/core
 #lib/modules/KVER-ipfire-pae/kernel/net/core/netprio_cgroup.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/hsr
+#lib/modules/KVER-ipfire-pae/kernel/net/hsr/hsr.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ieee802154
+#lib/modules/KVER-ipfire-pae/kernel/net/ieee802154/6lowpan_iphc.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/ah4.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/esp4.ko
@@ -2441,6 +2530,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_ECN.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_MASQUERADE.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_REJECT.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_SYNPROXY.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_ah.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_ipp2p.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/ipt_rpfilter.ko
@@ -2454,6 +2544,11 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_pptp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_proto_gre.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_nat_snmp_basic.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_tables_arp.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nf_tables_ipv4.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nft_chain_nat_ipv4.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nft_chain_route_ipv4.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv4/netfilter/nft_reject_ipv4.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_bic.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_diag.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv4/tcp_highspeed.ko
@@ -2477,12 +2572,14 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/esp6.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ip6_gre.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ip6_tunnel.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ip6_vti.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/ipcomp6.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/mip6.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6t_MASQUERADE.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6t_NPT.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6t_REJECT.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6t_SYNPROXY.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6t_ah.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6t_eui64.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6t_frag.ko
@@ -2497,6 +2594,10 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6table_raw.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/ip6table_security.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nf_nat_ipv6.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nf_tables_ipv6.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nft_chain_nat_ipv6.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nft_chain_route_ipv6.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/ipv6/netfilter/nft_reject_ipv6.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/sit.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/tunnel6.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/ipv6/xfrm6_mode_beet.ko
@@ -2527,7 +2628,9 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_ipportnet.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_net.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_netiface.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_netnet.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_netport.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_hash_netportnet.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipset/ip_set_list_set.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/ipvs/ip_vs.ko
@@ -2568,13 +2671,26 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_proto_udplite.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_sip.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_nat_tftp.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_tproxy_core.ko
-#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nfnetlink.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_synproxy_core.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nf_tables_inet.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nfnetlink_acct.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nfnetlink_cthelper.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nfnetlink_cttimeout.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nfnetlink_log.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nfnetlink_queue.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_compat.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_counter.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_ct.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_exthdr.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_hash.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_limit.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_log.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_meta.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_nat.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_queue.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_rbtree.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_reject.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/nft_reject_inet.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_AUDIT.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_CHECKSUM.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_CLASSIFY.ko
@@ -2600,6 +2716,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_TRACE.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_addrtype.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_bpf.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_cgroup.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_cluster.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_comment.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_connbytes.ko
@@ -2616,7 +2733,10 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_hashlimit.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_helper.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_hl.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_ipcomp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_iprange.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_ipvs.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_l2tp.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_layer7.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_length.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/netfilter/xt_limit.ko
@@ -2661,6 +2781,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/act_simple.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/act_skbedit.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_basic.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_bpf.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_cgroup.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_flow.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/cls_fw.ko
@@ -2681,9 +2802,11 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_codel.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_drr.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_dsmark.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_fq.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_fq_codel.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_gred.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_hfsc.ko
+#lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_hhf.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_htb.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_ingress.ko
 #lib/modules/KVER-ipfire-pae/kernel/net/sched/sch_mqprio.ko
@@ -2736,7 +2859,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/sound/core/seq/snd-seq.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/core/snd-hrtimer.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/core/snd-hwdep.ko
-#lib/modules/KVER-ipfire-pae/kernel/sound/core/snd-page-alloc.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/core/snd-pcm.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/core/snd-rawmidi.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/core/snd-timer.ko
@@ -2771,7 +2893,6 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/sound/i2c/other/snd-ak4114.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/i2c/other/snd-ak4xxx-adda.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/i2c/other/snd-pt2258.ko
-#lib/modules/KVER-ipfire-pae/kernel/sound/i2c/other/snd-tea575x-tuner.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/i2c/snd-cs8427.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/i2c/snd-i2c.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/i2c/snd-tea6330t.ko
@@ -2873,6 +2994,7 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/sound/pci/hda/snd-hda-codec-cirrus.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/pci/hda/snd-hda-codec-cmedia.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/pci/hda/snd-hda-codec-conexant.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/pci/hda/snd-hda-codec-generic.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/pci/hda/snd-hda-codec-hdmi.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/pci/hda/snd-hda-codec-idt.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/pci/hda/snd-hda-codec-realtek.ko
@@ -2945,6 +3067,8 @@ lib/modules/KVER-ipfire-pae
 #lib/modules/KVER-ipfire-pae/kernel/sound/usb/6fire/snd-usb-6fire.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/usb/caiaq
 #lib/modules/KVER-ipfire-pae/kernel/sound/usb/caiaq/snd-usb-caiaq.ko
+#lib/modules/KVER-ipfire-pae/kernel/sound/usb/hiface
+#lib/modules/KVER-ipfire-pae/kernel/sound/usb/hiface/snd-usb-hiface.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/usb/misc
 #lib/modules/KVER-ipfire-pae/kernel/sound/usb/misc/snd-ua101.ko
 #lib/modules/KVER-ipfire-pae/kernel/sound/usb/snd-usb-audio.ko
index 14e463e2bf5d1bb7ec5f38531511094c7aafa8a1..00e83e7c8a6107f26bc8c25b51cb4a6b27275cb8 100644 (file)
@@ -30,7 +30,7 @@ endif
 
 VERSUFIX=ipfire$(KCFG)
 
-VER        = 1.4
+VER        = 6aa62a2c320b04f55fdfe0ed015c3d9b48997239
 
 THISAPP    = cryptodev-linux-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -46,7 +46,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 7b0ac1c0a88d8fbe7316db02f21666e6
+$(DL_FILE)_MD5 = ddf7876487c876f6676ef0e050e9d204
 
 install : $(TARGET)
 
index 10a42ee766c09fa764e571fc9a68bbb5effbcc34..d23369c569b88da2e81b11df8feeff411c9d9a36 100644 (file)
@@ -25,9 +25,9 @@
 include Config
 
 VERSUFIX = ipfire$(KCFG)
-MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net/e1000e
+MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net/ethernet/intel/e1000e
 
-VER        = 3.0.4
+VER        = 3.1.0.2
 
 THISAPP    = e1000e-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -43,7 +43,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 2d8364cd2043ef5c71291a4ca8b8084e
+$(DL_FILE)_MD5 = b8d770160691edd247a90070f45642ce
 
 install : $(TARGET)
 
index aeaace26e4bae40dff9129b3e53dc5501f31f53b..f660d5cee00c4d8cfdc5594f84e881ce7bd97be9 100644 (file)
@@ -127,8 +127,11 @@ ifeq "$(MACHINE_TYPE)" "arm"
 endif
 
        # Install IPFire
+ifneq "$(MACHINE_TYPE)" "arm"
        tar -x --lzma -C $(MNThdd)/ -f /install/cdrom/distro.img
-
+else
+       tar -x -C $(MNThdd)/ -f /install/cdrom/distro.img
+endif
        echo "LANGUAGE=en" >> $(MNThdd)/var/ipfire/main/settings
        echo "HOSTNAME=$(SNAME)" >> $(MNThdd)/var/ipfire/main/settings
        echo "THEME=ipfire" >> $(MNThdd)/var/ipfire/main/settings
diff --git a/lfs/igb b/lfs/igb
index b8aadc48b66f414024bd35d06fcacc34effda492..fa762e093f20b773405d5da8332db85493067670 100644 (file)
--- a/lfs/igb
+++ b/lfs/igb
@@ -27,7 +27,7 @@ include Config
 VERSUFIX   = ipfire$(KCFG)
 MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net/ethernet/intel/igb/
 
-VER        = 5.1.2
+VER        = 5.2.9.3
 
 THISAPP    = igb-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -43,7 +43,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = c222b04f7e43afffc105d0d0db60c6c0
+$(DL_FILE)_MD5 = 814395d3b76090f378002bddecfd2dfc
 
 install : $(TARGET)
 
diff --git a/lfs/ixgbe b/lfs/ixgbe
new file mode 100644 (file)
index 0000000..00dd320
--- /dev/null
+++ b/lfs/ixgbe
@@ -0,0 +1,85 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2014  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
+
+VERSUFIX   = ipfire$(KCFG)
+MODPATH = /lib/modules/$(KVER)-$(VERSUFIX)/kernel/drivers/net/ethernet/intel/ixgbe
+
+VER        = 3.21.2
+
+THISAPP    = ixgbe-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
+DL_FROM    = $(URL_IPFIRE)
+DIR_APP    = $(DIR_SRC)/$(THISAPP)
+TARGET     = $(DIR_INFO)/$(THISAPP)-kmod-$(KVER)-$(VERSUFIX)
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+objects = $(DL_FILE)
+
+$(DL_FILE) = $(DL_FROM)/$(DL_FILE)
+
+$(DL_FILE)_MD5 = dc635736d7e0ef5373131753f6609f38
+
+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)
+       #Save original ixgbe module
+       -mv $(MODPATH)/ixgbe.ko \
+           $(MODPATH)/ixgbe.ko.org
+       @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+       cd $(DIR_APP)/src && make BUILD_KERNEL=$(KVER)-$(VERSUFIX)
+       cd $(DIR_APP)/src && install -m 644 ixgbe.ko $(MODPATH)
+       @rm -rf $(DIR_APP)
+       @$(POSTBUILD)
index f11bd5ff01b4a2adaa9c6296411ccae7460dff53..bcbdeb0ffa5ea05b38fb27e2859dbf3340d2a572 100644 (file)
--- a/lfs/linux
+++ b/lfs/linux
 
 include Config
 
-VER        = 3.10.44
+VER        = 3.14.22
 
-RPI_PATCHES = linux-3.10.38-grsec-1b49b45
-GRS_PATCHES = grsecurity-2.9.1-3.10.44-ipfire1.patch.xz
+RPI_PATCHES = 3.14.22-grsec-ipfire1
+A7M_PATCHES = 3.14.22-grsec-ipfire1
+GRS_PATCHES = grsecurity-3.0-3.14.22-201410192047.patch.xz
 
 THISAPP    = linux-$(VER)
 DL_FILE    = linux-$(VER).tar.xz
@@ -36,7 +37,7 @@ DIR_APP    = $(DIR_SRC)/$(THISAPP)
 CFLAGS     =
 CXXFLAGS   =
 
-PAK_VER    = 51
+PAK_VER    = 52
 DEPS      = ""
 
 VERSUFIX=ipfire$(KCFG)
@@ -67,16 +68,19 @@ endif
 ###############################################################################
 objects =$(DL_FILE) \
        rpi-patches-$(RPI_PATCHES).patch.xz \
+       arm7-multi-patches-$(A7M_PATCHES).patch.xz \
        $(GRS_PATCHES)
 
 
-$(DL_FILE)                             = $(URL_IPFIRE)/$(DL_FILE)
-rpi-patches-$(RPI_PATCHES).patch.xz    = $(URL_IPFIRE)/rpi-patches-$(RPI_PATCHES).patch.xz
-$(GRS_PATCHES)                         = $(URL_IPFIRE)/$(GRS_PATCHES)
+$(DL_FILE)                                     = $(URL_IPFIRE)/$(DL_FILE)
+rpi-patches-$(RPI_PATCHES).patch.xz            = $(URL_IPFIRE)/rpi-patches-$(RPI_PATCHES).patch.xz
+arm7-multi-patches-$(A7M_PATCHES).patch.xz     = $(URL_IPFIRE)/arm7-multi-patches-$(A7M_PATCHES).patch.xz
+$(GRS_PATCHES)                                 = $(URL_IPFIRE)/$(GRS_PATCHES)
 
-$(DL_FILE)_MD5                         = 8a4006eff3bbd8aff58fe4b443223e7a
-rpi-patches-$(RPI_PATCHES).patch.xz_MD5        = a7408e8bad57b4b2cb677dd5a0bfb7ff
-$(GRS_PATCHES)_MD5                     = 07e5d812146063ed5b2ce49d0d24099b
+$(DL_FILE)_MD5                                 = cb00fadd0a720cc2d1690792e72e0134
+rpi-patches-$(RPI_PATCHES).patch.xz_MD5                = 75adff006d9dbc9be76e6c44eb80698f
+arm7-multi-patches-$(A7M_PATCHES).patch.xz_MD5 = 06cdc33ba0c28b4b5ec876d8f8297b82
+$(GRS_PATCHES)_MD5                             = a63b899587068885951e762ad53f5b50
 
 install : $(TARGET)
 
@@ -112,16 +116,13 @@ $(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.10.30-imq.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.22-imq.patch
 
        # ipp2p 0.8.2-ipfire
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10-ipp2p-0.8.2-ipfire.patch
 
        # Layer7-patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10-layer7-filter.patch
-
-       # pie packet scheduler
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.39-pie_packet_sch.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14-layer7-filter.patch
 
        # Grsecurity-patches
 ifneq "$(KCFG)" "-headers"
@@ -130,17 +131,15 @@ ifneq "$(KCFG)" "-headers"
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.7-disable-compat_vdso.patch
 endif
 
-       # Remove ACPI Blacklist message
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6-silence-acpi-blacklist.patch
-
        # DVB Patches
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.9-dvbsky-wot2.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.22-dvbsky.patch
        cd $(DIR_APP) && patch -Np2 < $(DIR_SRC)/src/patches/v4l-dvb_fix_tua6034_pll.patch
 
        # Wlan Patches
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/compat-drivers-3.8.3-ath_ignore_eeprom_regdomain.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.34-iwlwifi-noibss_only_on_radar_chan.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.14.22-iwlwifi-noibss_only_on_radar_chan.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.37-rt2800usb_add_dlink_dwa137_usbid.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.55-rt2800usb-change_queue_warn_to_debug.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.39-add_libertas_uap.patch
 
        # mISDN Patches
@@ -160,81 +159,15 @@ endif
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.2.33_ipg-fix-driver-name.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-2.6.32.27_mcs7830-fix-driver-name.patch
 
-       # Moschip 7830 link detection
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.y-usbnet_mcs7830_rework_link_detect.patch
-
-
 ifeq "$(KCFG)" "-kirkwood"
-       # Add dreamplug,guruplug and icy 62x0  support on ARM-kirkwood
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.10-arm_kirkwood_setups.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.10-mv_cesa_disable_failing_hmac_sha1.patch
 endif
 
 ifeq "$(KCFG)" "-multi"
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10.27-fs-exec-atomic64-operand-requires-impossible-reload.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-3.10-smsc95xx-add_mac_addr_param.patch
 
-       # Patchset for Omap (beagle/panda).
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/0002-omap2-twl-common-Add-default-power-configuration.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/sakoman/0001-OMAP-DSS2-add-bootarg-for-selecting-svideo.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/sakoman/0002-video-add-timings-for-hd720.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/expansion/0001-Beagle-expansion-add-buddy-param-for-expansionboard-.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/expansion/0002-Beagle-expansion-add-zippy.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/expansion/0003-Beagle-expansion-add-zippy2.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/expansion/0004-Beagle-expansion-add-trainer.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/expansion/0005-Beagle-expansion-add-CircuitCo-ulcd-Support.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/expansion/0006-Beagle-expansion-add-wifi.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/expansion/0007-Beagle-expansion-add-beaglefpga.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/expansion/0008-Beagle-expansion-add-spidev.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/expansion/0009-Beagle-expansion-add-Aptina-li5m03-camera.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/expansion/0010-Beagle-expansion-add-LSR-COM6L-Adapter-Board.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/expansion/0011-Beagle-expansion-LSR-COM6L-Adapter-Board-also-initia.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/0001-meego-modedb-add-Toshiba-LTA070B220F-800x480-support.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/0002-backlight-Add-TLC59108-backlight-control-driver.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/0003-tlc59108-adjust-for-beagleboard-uLCD7.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/0004-zeroMAP-Open-your-eyes.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/0005-ARM-OMAP-Beagle-use-TWL4030-generic-reset-script.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/beagle/0006-DSS2-use-DSI-PLL-for-DPI-with-OMAP3.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/panda/0001-panda-fix-wl12xx-regulator.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/panda/0002-ti-st-st-kim-fixing-firmware-path.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/panda/0003-Panda-expansion-add-spidev.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/panda/0004-HACK-PandaES-disable-cpufreq-so-board-will-boot.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/panda/0006-ARM-hw_breakpoint-Enable-debug-powerdown-only-if-sys.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/panda/0007-Revert-regulator-twl-Remove-TWL6030_FIXED_RESOURCE.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/panda/0008-Revert-regulator-twl-Remove-another-unused-variable-.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/panda/0009-Revert-regulator-twl-Remove-references-to-the-twl403.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/panda/0010-Revert-regulator-twl-Remove-references-to-32kHz-cloc.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/panda/0011-panda-spidev-setup-pinmux.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/omap/sgx/0001-arm-Export-cache-flush-management-symbols-when-MULTI.patch
-
-       # Patchset for Wandboard.
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/dts/0001-imx6qdl-wandboard-dts-backport.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/dts/0002-ARM-dts-imx6qdl-wandboard-add-gpio-lines-to-wandboar.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/dts/0003-ARM-dts-imx6qdl-wandboard-Add-support-for-i2c1.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/dts/0004-ARM-dts-wandboard-add-binding-for-wand-rfkill-driver.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/dts/0005-ARM-dts-imx6qdl-add-pcie-device-node.patch
-
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0001-i2c-imx-retry-on-NAK.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0002-i.MX6-Wandboard-add-CKO1-clock-output.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0003-thermal-add-imx-thermal-driver-support.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0004-ARM-i.MX6-Wandboard-add-wifi-bt-rfkill-driver.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0005-Add-IMX6Q-AHCI-support.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0006-imx-Add-IMX53-AHCI-support.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0007-imx6-enable-sata-clk-if-SATA_AHCI_PLATFORM.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0008-ARM-imx6q-update-the-sata-bits-definitions-of-gpr13.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0009-ahci_imx-add-ahci-sata-support-on-imx-platforms.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0010-ahci_imx-depend-on-CONFIG_MFD_SYSCON.patch
-       cd $(DIR_APP) && patch -Np0 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0011-add-pcie-designware.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0012-pcie-backport-fixes.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0013-of-pci-Provide-support-for-parsing-PCI-DT-ranges-pro.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0014-ARM-imx6q-Add-PCIe-bits-to-GPR-syscon-definition.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0015-PCI-imx6-Add-support-for-i.MX6-PCIe-controller.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0016-imx6-pci-tweaks.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0017-ARM-imx-Add-LVDS-general-purpose-clocks-to-i.MX6Q.patch
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/wandboard/imx/0018-ARM-imx6q-clock-and-Kconfig-update-for-PCIe-support.patch
-
-       # Patchset for Compulab Utilite.
-       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/kernel/utilite/linux-3.10-compulab-utilite-support.patch
+       # Apply Arm7-multiarch kernel patches.
+       cd $(DIR_APP) && xzcat $(DIR_DL)/arm7-multi-patches-$(A7M_PATCHES).patch.xz | patch -Np1
 endif
 
 ifeq "$(KCFG)" "-rpi"
@@ -293,16 +226,6 @@ ifeq "$(MACHINE_TYPE)" "arm"
                        done
 endif
 
-       # Create initramfs images
-       dracut --force --verbose --strip --xz /boot/initramfs-$(KVER)-$(VERSUFIX).img $(KVER)-$(VERSUFIX)
-
-ifeq "$(KCFG)" "-kirkwood"
-       cd /boot && mkimage -A arm -T ramdisk -C lzma -d initramfs-$(KVER)-$(VERSUFIX).img uInit-$(VERSUFIX)
-endif
-
-ifeq "$(KCFG)" "-multi"
-       cd /boot && mkimage -A arm -T ramdisk -C lzma -d initramfs-$(KVER)-$(VERSUFIX).img uInit-$(VERSUFIX)
-endif
 
 ifeq "$(LASTKERNEL)" "1"
        # Only do this once
@@ -331,5 +254,9 @@ ifeq "$(LASTKERNEL)" "1"
 endif
 endif
 
+       #force new build of external modules and initrd if the kernel was rebuild
+       -rm -f /usr/src/log/*-kmod-$(VER)-$(VERSUFIX)
+       -rm -f /usr/src/log/linux-initrd-$(VER)-$(VERSUFIX)
+
        @rm -rf $(DIR_SRC)/patch-o-matic* $(DIR_SRC)/iptables* $(DIR_SRC)/squashfs* $(DIR_SRC)/netfilter-layer7-*
        @$(POSTBUILD)
diff --git a/lfs/linux-initrd b/lfs/linux-initrd
new file mode 100644 (file)
index 0000000..1b048b5
--- /dev/null
@@ -0,0 +1,70 @@
+###############################################################################
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2014  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
+
+VER        = $(KVER)
+
+THISAPP    = linux-initrd-$(VER)
+
+VERSUFIX=ipfire$(KCFG)
+
+TARGET = $(DIR_INFO)/$(THISAPP)-$(VERSUFIX)
+
+###############################################################################
+# Top-level Rules
+###############################################################################
+
+install : $(TARGET)
+
+check : $(patsubst %,$(DIR_CHK)/%,$(objects))
+
+download :$(patsubst %,$(DIR_DL)/%,$(objects))
+
+md5 : $(subst %,%_MD5,$(objects))
+
+dist:
+       @$(PAK)
+
+###############################################################################
+# Installation Details
+###############################################################################
+
+$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
+       @$(PREBUILD)
+
+       # rebuild module deps
+       depmod -a $(KVER)-$(VERSUFIX)
+
+       # Create initramfs images
+       dracut --force --verbose --strip --xz /boot/initramfs-$(KVER)-$(VERSUFIX).img $(KVER)-$(VERSUFIX)
+
+ifeq "$(KCFG)" "-kirkwood"
+       cd /boot && mkimage -A arm -T ramdisk -C lzma -d initramfs-$(KVER)-$(VERSUFIX).img uInit-$(VERSUFIX)
+endif
+
+ifeq "$(KCFG)" "-multi"
+       cd /boot && mkimage -A arm -T ramdisk -C lzma -d initramfs-$(KVER)-$(VERSUFIX).img uInit-$(VERSUFIX)
+endif
+       @$(POSTBUILD)
diff --git a/make.sh b/make.sh
index b54499d33adfce2c35b4fab4651a9edb8718887b..3121fdd31a611931796b7d1b93b1e841d8bc1876 100755 (executable)
--- a/make.sh
+++ b/make.sh
@@ -418,6 +418,8 @@ buildipfire() {
 #              ipfiremake r8101                        KCFG="-pae"
                ipfiremake e1000e                       KCFG="-pae"
                ipfiremake igb                          KCFG="-pae"
+               ipfiremake ixgbe                        KCFG="-pae"
+               ipfiremake linux-initrd                 KCFG="-pae"
 
                # x86 kernel build
                ipfiremake linux                        KCFG=""
@@ -431,6 +433,8 @@ buildipfire() {
 #              ipfiremake r8101                        KCFG=""
                ipfiremake e1000e                       KCFG=""
                ipfiremake igb                          KCFG=""
+               ipfiremake ixgbe                        KCFG=""
+               ipfiremake linux-initrd                 KCFG=""
                ;;
 
        armv5tel)
@@ -440,12 +444,15 @@ buildipfire() {
 #              ipfiremake mISDN                        KCFG="-rpi" NOPCI=1
                ipfiremake cryptodev                    KCFG="-rpi"
 #              ipfiremake compat-drivers               KCFG="-rpi"
+               ipfiremake linux-initrd                 KCFG="-rpi"
 
                # arm multi platform (Panda, Wandboard ...) kernel build
                ipfiremake linux                        KCFG="-multi"
                ipfiremake cryptodev                    KCFG="-multi"
                ipfiremake e1000e                       KCFG="-multi"
                ipfiremake igb                          KCFG="-multi"
+               ipfiremake ixgbe                        KCFG="-multi"
+               ipfiremake linux-initrd                 KCFG="-multi"
 
                # arm-kirkwood (Dreamplug, ICY-Box ...) kernel build
                ipfiremake linux                        KCFG="-kirkwood"
@@ -456,8 +463,10 @@ buildipfire() {
 #              ipfiremake r8169                        KCFG="-kirkwood"
 #              ipfiremake r8168                        KCFG="-kirkwood"
 #              ipfiremake r8101                        KCFG="-kirkwood"
-#              ipfiremake e1000e                       KCFG="-kirkwood"
+               ipfiremake e1000e                       KCFG="-kirkwood"
                ipfiremake igb                          KCFG="-kirkwood"
+               ipfiremake ixgbe                        KCFG="-kirkwood"
+               ipfiremake linux-initrd                 KCFG="-kirkwood"
                ;;
   esac
   ipfiremake pkg-config
diff --git a/src/patches/linux-3.10.55-rt2800usb-change_queue_warn_to_debug.patch b/src/patches/linux-3.10.55-rt2800usb-change_queue_warn_to_debug.patch
new file mode 100644 (file)
index 0000000..a03642d
--- /dev/null
@@ -0,0 +1,30 @@
+diff -Naur linux-3.10.55.org/drivers/net/wireless/rt2x00/rt2800usb.c linux-3.10.55/drivers/net/wireless/rt2x00/rt2800usb.c
+--- linux-3.10.55.org/drivers/net/wireless/rt2x00/rt2800usb.c  2014-09-17 18:04:18.000000000 +0200
++++ linux-3.10.55/drivers/net/wireless/rt2x00/rt2800usb.c      2014-10-05 19:25:25.070972490 +0200
+@@ -128,7 +128,7 @@
+       tout = time_after(jiffies, entry->last_action + msecs_to_jiffies(100));
+       if (unlikely(tout))
+-              rt2x00_warn(entry->queue->rt2x00dev,
++              rt2x00_dbg(entry->queue->rt2x00dev,
+                           "TX status timeout for entry %d in queue %d\n",
+                           entry->entry_idx, entry->queue->qid);
+       return tout;
+@@ -569,7 +569,7 @@
+               queue = rt2x00queue_get_tx_queue(rt2x00dev, qid);
+               if (unlikely(rt2x00queue_empty(queue))) {
+-                      rt2x00_warn(rt2x00dev, "Got TX status for an empty queue %u, dropping\n",
++                      rt2x00_dbg(rt2x00dev, "Got TX status for an empty queue %u, dropping\n",
+                                   qid);
+                       break;
+               }
+@@ -578,7 +578,7 @@
+               if (unlikely(test_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags) ||
+                            !test_bit(ENTRY_DATA_STATUS_PENDING, &entry->flags))) {
+-                      rt2x00_warn(rt2x00dev, "Data pending for entry %u in queue %u\n",
++                      rt2x00_dbg(rt2x00dev, "Data pending for entry %u in queue %u\n",
+                                   entry->entry_idx, qid);
+                       break;
+               }
diff --git a/src/patches/linux-3.10.57-mmc_add_eMMC_5.x.patch b/src/patches/linux-3.10.57-mmc_add_eMMC_5.x.patch
new file mode 100644 (file)
index 0000000..7fa4330
--- /dev/null
@@ -0,0 +1,12 @@
+diff -Naur linux-3.10.57.org/drivers/mmc/core/mmc.c linux-3.10.57/drivers/mmc/core/mmc.c
+--- linux-3.10.57.org/drivers/mmc/core/mmc.c   2014-10-09 21:18:54.000000000 +0200
++++ linux-3.10.57/drivers/mmc/core/mmc.c       2014-10-11 09:20:02.225472403 +0200
+@@ -293,7 +293,7 @@
+       }
+       card->ext_csd.rev = ext_csd[EXT_CSD_REV];
+-      if (card->ext_csd.rev > 6) {
++      if (card->ext_csd.rev > 7) {
+               pr_err("%s: unrecognised EXT_CSD revision %d\n",
+                       mmc_hostname(card->host), card->ext_csd.rev);
+               err = -EINVAL;
diff --git a/src/patches/linux-3.14-layer7-filter.patch b/src/patches/linux-3.14-layer7-filter.patch
new file mode 100644 (file)
index 0000000..ba799f7
--- /dev/null
@@ -0,0 +1,2165 @@
+diff -Naur linux-3.14.22.org/include/linux/netfilter/xt_layer7.h linux-3.14.22/include/linux/netfilter/xt_layer7.h
+--- linux-3.14.22.org/include/linux/netfilter/xt_layer7.h      1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.22/include/linux/netfilter/xt_layer7.h  2014-10-24 15:33:21.281274380 +0200
+@@ -0,0 +1,14 @@
++#ifndef _XT_LAYER7_H
++#define _XT_LAYER7_H
++
++#define MAX_PATTERN_LEN 8192
++#define MAX_PROTOCOL_LEN 256
++
++struct xt_layer7_info {
++    char protocol[MAX_PROTOCOL_LEN];
++    char pattern[MAX_PATTERN_LEN];
++    u_int8_t invert;
++    u_int8_t pkt;
++};
++
++#endif /* _XT_LAYER7_H */
+diff -Naur linux-3.14.22.org/include/net/netfilter/nf_conntrack.h linux-3.14.22/include/net/netfilter/nf_conntrack.h
+--- linux-3.14.22.org/include/net/netfilter/nf_conntrack.h     2014-10-15 08:42:04.000000000 +0200
++++ linux-3.14.22/include/net/netfilter/nf_conntrack.h 2014-10-24 15:33:21.281274380 +0200
+@@ -105,6 +105,22 @@
+       struct net *ct_net;
+ #endif
++#if defined(CONFIG_NETFILTER_XT_MATCH_LAYER7) || \
++    defined(CONFIG_NETFILTER_XT_MATCH_LAYER7_MODULE)
++      struct {
++              /*
++               * e.g. "http". NULL before decision. "unknown" after decision
++               * if no match.
++               */
++              char *app_proto;
++              /*
++               * application layer data so far. NULL after match decision.
++               */
++              char *app_data;
++              unsigned int app_data_len;
++      } layer7;
++#endif
++
+       /* Storage reserved for other modules, must be the last member */
+       union nf_conntrack_proto proto;
+ };
+diff -Naur linux-3.14.22.org/include/uapi/linux/netfilter/Kbuild linux-3.14.22/include/uapi/linux/netfilter/Kbuild
+--- linux-3.14.22.org/include/uapi/linux/netfilter/Kbuild      2014-10-15 08:42:04.000000000 +0200
++++ linux-3.14.22/include/uapi/linux/netfilter/Kbuild  2014-10-24 15:34:39.721663344 +0200
+@@ -59,6 +59,7 @@
+ header-y += xt_iprange.h
+ header-y += xt_ipvs.h
+ header-y += xt_l2tp.h
++header-y += xt_layer7.h
+ header-y += xt_length.h
+ header-y += xt_limit.h
+ header-y += xt_mac.h
+diff -Naur linux-3.14.22.org/net/netfilter/Kconfig linux-3.14.22/net/netfilter/Kconfig
+--- linux-3.14.22.org/net/netfilter/Kconfig    2014-10-15 08:42:04.000000000 +0200
++++ linux-3.14.22/net/netfilter/Kconfig        2014-10-24 15:33:21.281274380 +0200
+@@ -1153,6 +1153,26 @@
+       To compile it as a module, choose M here. If unsure, say N.
++config NETFILTER_XT_MATCH_LAYER7
++      tristate '"layer7" match support'
++      depends on NETFILTER_XTABLES
++      depends on NETFILTER_ADVANCED
++      depends on NF_CONNTRACK
++      help
++        Say Y if you want to be able to classify connections (and their
++        packets) based on regular expression matching of their application
++        layer data.   This is one way to classify applications such as
++        peer-to-peer filesharing systems that do not always use the same
++        port.
++
++        To compile it as a module, choose M here.  If unsure, say N.
++
++config NETFILTER_XT_MATCH_LAYER7_DEBUG
++      bool 'Layer 7 debugging output'
++      depends on NETFILTER_XT_MATCH_LAYER7
++      help
++        Say Y to get lots of debugging output.
++
+ config NETFILTER_XT_MATCH_LENGTH
+       tristate '"length" match support'
+       depends on NETFILTER_ADVANCED
+@@ -1347,6 +1367,12 @@
+         To compile it as a module, choose M here.  If unsure, say N.
++config NETFILTER_XT_MATCH_LAYER7_DEBUG
++      bool 'Layer 7 debugging output'
++      depends on NETFILTER_XT_MATCH_LAYER7
++      help
++        Say Y to get lots of debugging output.
++
+ config NETFILTER_XT_MATCH_STATISTIC
+       tristate '"statistic" match support'
+       depends on NETFILTER_ADVANCED
+diff -Naur linux-3.14.22.org/net/netfilter/Makefile linux-3.14.22/net/netfilter/Makefile
+--- linux-3.14.22.org/net/netfilter/Makefile   2014-10-15 08:42:04.000000000 +0200
++++ linux-3.14.22/net/netfilter/Makefile       2014-10-24 15:33:21.281274380 +0200
+@@ -158,6 +158,7 @@
+ obj-$(CONFIG_NETFILTER_XT_MATCH_SCTP) += xt_sctp.o
+ obj-$(CONFIG_NETFILTER_XT_MATCH_SOCKET) += xt_socket.o
+ obj-$(CONFIG_NETFILTER_XT_MATCH_STATE) += xt_state.o
++obj-$(CONFIG_NETFILTER_XT_MATCH_LAYER7) += xt_layer7.o
+ obj-$(CONFIG_NETFILTER_XT_MATCH_STATISTIC) += xt_statistic.o
+ obj-$(CONFIG_NETFILTER_XT_MATCH_STRING) += xt_string.o
+ obj-$(CONFIG_NETFILTER_XT_MATCH_TCPMSS) += xt_tcpmss.o
+diff -Naur linux-3.14.22.org/net/netfilter/nf_conntrack_core.c linux-3.14.22/net/netfilter/nf_conntrack_core.c
+--- linux-3.14.22.org/net/netfilter/nf_conntrack_core.c        2014-10-15 08:42:04.000000000 +0200
++++ linux-3.14.22/net/netfilter/nf_conntrack_core.c    2014-10-24 15:33:21.281274380 +0200
+@@ -220,6 +220,13 @@
+        * too. */
+       nf_ct_remove_expectations(ct);
++#if defined(CONFIG_NETFILTER_XT_MATCH_LAYER7) || defined(CONFIG_NETFILTER_XT_MATCH_LAYER7_MODULE)
++      if(ct->layer7.app_proto)
++              kfree(ct->layer7.app_proto);
++      if(ct->layer7.app_data)
++              kfree(ct->layer7.app_data);
++#endif
++
+       /* We overload first tuple to link into unconfirmed or dying list.*/
+       BUG_ON(hlist_nulls_unhashed(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode));
+       hlist_nulls_del_rcu(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode);
+diff -Naur linux-3.14.22.org/net/netfilter/nf_conntrack_standalone.c linux-3.14.22/net/netfilter/nf_conntrack_standalone.c
+--- linux-3.14.22.org/net/netfilter/nf_conntrack_standalone.c  2014-10-15 08:42:04.000000000 +0200
++++ linux-3.14.22/net/netfilter/nf_conntrack_standalone.c      2014-10-24 15:33:21.285274399 +0200
+@@ -240,6 +240,12 @@
+       if (ct_show_delta_time(s, ct))
+               goto release;
++#if defined(CONFIG_NETFILTER_XT_MATCH_LAYER7) || defined(CONFIG_NETFILTER_XT_MATCH_LAYER7_MODULE)
++      if(ct->layer7.app_proto &&
++           seq_printf(s, "l7proto=%s ", ct->layer7.app_proto))
++              return -ENOSPC;
++#endif
++
+       if (seq_printf(s, "use=%u\n", atomic_read(&ct->ct_general.use)))
+               goto release;
+diff -Naur linux-3.14.22.org/net/netfilter/regexp/regexp.c linux-3.14.22/net/netfilter/regexp/regexp.c
+--- linux-3.14.22.org/net/netfilter/regexp/regexp.c    1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.22/net/netfilter/regexp/regexp.c        2014-10-24 15:33:21.285274399 +0200
+@@ -0,0 +1,1197 @@
++/*
++ * regcomp and regexec -- regsub and regerror are elsewhere
++ * @(#)regexp.c       1.3 of 18 April 87
++ *
++ *    Copyright (c) 1986 by University of Toronto.
++ *    Written by Henry Spencer.  Not derived from licensed software.
++ *
++ *    Permission is granted to anyone to use this software for any
++ *    purpose on any computer system, and to redistribute it freely,
++ *    subject to the following restrictions:
++ *
++ *    1. The author is not responsible for the consequences of use of
++ *            this software, no matter how awful, even if they arise
++ *            from defects in it.
++ *
++ *    2. The origin of this software must not be misrepresented, either
++ *            by explicit claim or by omission.
++ *
++ *    3. Altered versions must be plainly marked as such, and must not
++ *            be misrepresented as being the original software.
++ *
++ * Beware that some of this code is subtly aware of the way operator
++ * precedence is structured in regular expressions.  Serious changes in
++ * regular-expression syntax might require a total rethink.
++ *
++ * This code was modified by Ethan Sommer to work within the kernel
++ * (it now uses kmalloc etc..)
++ *
++ * Modified slightly by Matthew Strait to use more modern C.
++ */
++
++#include "regexp.h"
++#include "regmagic.h"
++
++/* added by ethan and matt.  Lets it work in both kernel and user space.
++(So iptables can use it, for instance.)  Yea, it goes both ways... */
++#if __KERNEL__
++  #define malloc(foo) kmalloc(foo,GFP_ATOMIC)
++#else
++  #define printk(format,args...) printf(format,##args)
++#endif
++
++void regerror(char * s)
++{
++        printk("<3>Regexp: %s\n", s);
++        /* NOTREACHED */
++}
++
++/*
++ * The "internal use only" fields in regexp.h are present to pass info from
++ * compile to execute that permits the execute phase to run lots faster on
++ * simple cases.  They are:
++ *
++ * regstart   char that must begin a match; '\0' if none obvious
++ * reganch    is the match anchored (at beginning-of-line only)?
++ * regmust    string (pointer into program) that match must include, or NULL
++ * regmlen    length of regmust string
++ *
++ * Regstart and reganch permit very fast decisions on suitable starting points
++ * for a match, cutting down the work a lot.  Regmust permits fast rejection
++ * of lines that cannot possibly match.  The regmust tests are costly enough
++ * that regcomp() supplies a regmust only if the r.e. contains something
++ * potentially expensive (at present, the only such thing detected is * or +
++ * at the start of the r.e., which can involve a lot of backup).  Regmlen is
++ * supplied because the test in regexec() needs it and regcomp() is computing
++ * it anyway.
++ */
++
++/*
++ * Structure for regexp "program".  This is essentially a linear encoding
++ * of a nondeterministic finite-state machine (aka syntax charts or
++ * "railroad normal form" in parsing technology).  Each node is an opcode
++ * plus a "next" pointer, possibly plus an operand.  "Next" pointers of
++ * all nodes except BRANCH implement concatenation; a "next" pointer with
++ * a BRANCH on both ends of it is connecting two alternatives.  (Here we
++ * have one of the subtle syntax dependencies:  an individual BRANCH (as
++ * opposed to a collection of them) is never concatenated with anything
++ * because of operator precedence.)  The operand of some types of node is
++ * a literal string; for others, it is a node leading into a sub-FSM.  In
++ * particular, the operand of a BRANCH node is the first node of the branch.
++ * (NB this is *not* a tree structure:  the tail of the branch connects
++ * to the thing following the set of BRANCHes.)  The opcodes are:
++ */
++
++/* definition number  opnd?   meaning */
++#define       END     0       /* no   End of program. */
++#define       BOL     1       /* no   Match "" at beginning of line. */
++#define       EOL     2       /* no   Match "" at end of line. */
++#define       ANY     3       /* no   Match any one character. */
++#define       ANYOF   4       /* str  Match any character in this string. */
++#define       ANYBUT  5       /* str  Match any character not in this string. */
++#define       BRANCH  6       /* node Match this alternative, or the next... */
++#define       BACK    7       /* no   Match "", "next" ptr points backward. */
++#define       EXACTLY 8       /* str  Match this string. */
++#define       NOTHING 9       /* no   Match empty string. */
++#define       STAR    10      /* node Match this (simple) thing 0 or more times. */
++#define       PLUS    11      /* node Match this (simple) thing 1 or more times. */
++#define       OPEN    20      /* no   Mark this point in input as start of #n. */
++                      /*      OPEN+1 is number 1, etc. */
++#define       CLOSE   30      /* no   Analogous to OPEN. */
++
++/*
++ * Opcode notes:
++ *
++ * BRANCH     The set of branches constituting a single choice are hooked
++ *            together with their "next" pointers, since precedence prevents
++ *            anything being concatenated to any individual branch.  The
++ *            "next" pointer of the last BRANCH in a choice points to the
++ *            thing following the whole choice.  This is also where the
++ *            final "next" pointer of each individual branch points; each
++ *            branch starts with the operand node of a BRANCH node.
++ *
++ * BACK               Normal "next" pointers all implicitly point forward; BACK
++ *            exists to make loop structures possible.
++ *
++ * STAR,PLUS  '?', and complex '*' and '+', are implemented as circular
++ *            BRANCH structures using BACK.  Simple cases (one character
++ *            per match) are implemented with STAR and PLUS for speed
++ *            and to minimize recursive plunges.
++ *
++ * OPEN,CLOSE ...are numbered at compile time.
++ */
++
++/*
++ * A node is one char of opcode followed by two chars of "next" pointer.
++ * "Next" pointers are stored as two 8-bit pieces, high order first.  The
++ * value is a positive offset from the opcode of the node containing it.
++ * An operand, if any, simply follows the node.  (Note that much of the
++ * code generation knows about this implicit relationship.)
++ *
++ * Using two bytes for the "next" pointer is vast overkill for most things,
++ * but allows patterns to get big without disasters.
++ */
++#define       OP(p)   (*(p))
++#define       NEXT(p) (((*((p)+1)&0377)<<8) + (*((p)+2)&0377))
++#define       OPERAND(p)      ((p) + 3)
++
++/*
++ * See regmagic.h for one further detail of program structure.
++ */
++
++
++/*
++ * Utility definitions.
++ */
++#ifndef CHARBITS
++#define       UCHARAT(p)      ((int)*(unsigned char *)(p))
++#else
++#define       UCHARAT(p)      ((int)*(p)&CHARBITS)
++#endif
++
++#define       FAIL(m) { regerror(m); return(NULL); }
++#define       ISMULT(c)       ((c) == '*' || (c) == '+' || (c) == '?')
++#define       META    "^$.[()|?+*\\"
++
++/*
++ * Flags to be passed up and down.
++ */
++#define       HASWIDTH        01      /* Known never to match null string. */
++#define       SIMPLE          02      /* Simple enough to be STAR/PLUS operand. */
++#define       SPSTART         04      /* Starts with * or +. */
++#define       WORST           0       /* Worst case. */
++
++/*
++ * Global work variables for regcomp().
++ */
++struct match_globals {
++char *reginput;               /* String-input pointer. */
++char *regbol;         /* Beginning of input, for ^ check. */
++char **regstartp;     /* Pointer to startp array. */
++char **regendp;               /* Ditto for endp. */
++char *regparse;               /* Input-scan pointer. */
++int regnpar;          /* () count. */
++char regdummy;
++char *regcode;                /* Code-emit pointer; &regdummy = don't. */
++long regsize;         /* Code size. */
++};
++
++/*
++ * Forward declarations for regcomp()'s friends.
++ */
++#ifndef STATIC
++#define       STATIC  static
++#endif
++STATIC char *reg(struct match_globals *g, int paren,int *flagp);
++STATIC char *regbranch(struct match_globals *g, int *flagp);
++STATIC char *regpiece(struct match_globals *g, int *flagp);
++STATIC char *regatom(struct match_globals *g, int *flagp);
++STATIC char *regnode(struct match_globals *g, char op);
++STATIC char *regnext(struct match_globals *g, char *p);
++STATIC void regc(struct match_globals *g, char b);
++STATIC void reginsert(struct match_globals *g, char op, char *opnd);
++STATIC void regtail(struct match_globals *g, char *p, char *val);
++STATIC void regoptail(struct match_globals *g, char *p, char *val);
++
++
++__kernel_size_t my_strcspn(const char *s1,const char *s2)
++{
++        char *scan1;
++        char *scan2;
++        int count;
++
++        count = 0;
++        for (scan1 = (char *)s1; *scan1 != '\0'; scan1++) {
++                for (scan2 = (char *)s2; *scan2 != '\0';)       /* ++ moved down. */
++                        if (*scan1 == *scan2++)
++                                return(count);
++                count++;
++        }
++        return(count);
++}
++
++/*
++ - regcomp - compile a regular expression into internal code
++ *
++ * We can't allocate space until we know how big the compiled form will be,
++ * but we can't compile it (and thus know how big it is) until we've got a
++ * place to put the code.  So we cheat:  we compile it twice, once with code
++ * generation turned off and size counting turned on, and once "for real".
++ * This also means that we don't allocate space until we are sure that the
++ * thing really will compile successfully, and we never have to move the
++ * code and thus invalidate pointers into it.  (Note that it has to be in
++ * one piece because free() must be able to free it all.)
++ *
++ * Beware that the optimization-preparation code in here knows about some
++ * of the structure of the compiled regexp.
++ */
++regexp *
++regcomp(char *exp,int *patternsize)
++{
++      register regexp *r;
++      register char *scan;
++      register char *longest;
++      register int len;
++      int flags;
++      struct match_globals g;
++      
++      /* commented out by ethan
++         extern char *malloc();
++      */
++
++      if (exp == NULL)
++              FAIL("NULL argument");
++
++      /* First pass: determine size, legality. */
++      g.regparse = exp;
++      g.regnpar = 1;
++      g.regsize = 0L;
++      g.regcode = &g.regdummy;
++      regc(&g, MAGIC);
++      if (reg(&g, 0, &flags) == NULL)
++              return(NULL);
++
++      /* Small enough for pointer-storage convention? */
++      if (g.regsize >= 32767L)                /* Probably could be 65535L. */
++              FAIL("regexp too big");
++
++      /* Allocate space. */
++      *patternsize=sizeof(regexp) + (unsigned)g.regsize;
++      r = (regexp *)malloc(sizeof(regexp) + (unsigned)g.regsize);
++      if (r == NULL)
++              FAIL("out of space");
++
++      /* Second pass: emit code. */
++      g.regparse = exp;
++      g.regnpar = 1;
++      g.regcode = r->program;
++      regc(&g, MAGIC);
++      if (reg(&g, 0, &flags) == NULL)
++              return(NULL);
++
++      /* Dig out information for optimizations. */
++      r->regstart = '\0';     /* Worst-case defaults. */
++      r->reganch = 0;
++      r->regmust = NULL;
++      r->regmlen = 0;
++      scan = r->program+1;                    /* First BRANCH. */
++      if (OP(regnext(&g, scan)) == END) {             /* Only one top-level choice. */
++              scan = OPERAND(scan);
++
++              /* Starting-point info. */
++              if (OP(scan) == EXACTLY)
++                      r->regstart = *OPERAND(scan);
++              else if (OP(scan) == BOL)
++                      r->reganch++;
++
++              /*
++               * If there's something expensive in the r.e., find the
++               * longest literal string that must appear and make it the
++               * regmust.  Resolve ties in favor of later strings, since
++               * the regstart check works with the beginning of the r.e.
++               * and avoiding duplication strengthens checking.  Not a
++               * strong reason, but sufficient in the absence of others.
++               */
++              if (flags&SPSTART) {
++                      longest = NULL;
++                      len = 0;
++                      for (; scan != NULL; scan = regnext(&g, scan))
++                              if (OP(scan) == EXACTLY && strlen(OPERAND(scan)) >= len) {
++                                      longest = OPERAND(scan);
++                                      len = strlen(OPERAND(scan));
++                              }
++                      r->regmust = longest;
++                      r->regmlen = len;
++              }
++      }
++
++      return(r);
++}
++
++/*
++ - reg - regular expression, i.e. main body or parenthesized thing
++ *
++ * Caller must absorb opening parenthesis.
++ *
++ * Combining parenthesis handling with the base level of regular expression
++ * is a trifle forced, but the need to tie the tails of the branches to what
++ * follows makes it hard to avoid.
++ */
++static char *
++reg(struct match_globals *g, int paren, int *flagp /* Parenthesized? */ )
++{
++      register char *ret;
++      register char *br;
++      register char *ender;
++      register int parno = 0; /* 0 makes gcc happy */
++      int flags;
++
++      *flagp = HASWIDTH;      /* Tentatively. */
++
++      /* Make an OPEN node, if parenthesized. */
++      if (paren) {
++              if (g->regnpar >= NSUBEXP)
++                      FAIL("too many ()");
++              parno = g->regnpar;
++              g->regnpar++;
++              ret = regnode(g, OPEN+parno);
++      } else
++              ret = NULL;
++
++      /* Pick up the branches, linking them together. */
++      br = regbranch(g, &flags);
++      if (br == NULL)
++              return(NULL);
++      if (ret != NULL)
++              regtail(g, ret, br);    /* OPEN -> first. */
++      else
++              ret = br;
++      if (!(flags&HASWIDTH))
++              *flagp &= ~HASWIDTH;
++      *flagp |= flags&SPSTART;
++      while (*g->regparse == '|') {
++              g->regparse++;
++              br = regbranch(g, &flags);
++              if (br == NULL)
++                      return(NULL);
++              regtail(g, ret, br);    /* BRANCH -> BRANCH. */
++              if (!(flags&HASWIDTH))
++                      *flagp &= ~HASWIDTH;
++              *flagp |= flags&SPSTART;
++      }
++
++      /* Make a closing node, and hook it on the end. */
++      ender = regnode(g, (paren) ? CLOSE+parno : END);        
++      regtail(g, ret, ender);
++
++      /* Hook the tails of the branches to the closing node. */
++      for (br = ret; br != NULL; br = regnext(g, br))
++              regoptail(g, br, ender);
++
++      /* Check for proper termination. */
++      if (paren && *g->regparse++ != ')') {
++              FAIL("unmatched ()");
++      } else if (!paren && *g->regparse != '\0') {
++              if (*g->regparse == ')') {
++                      FAIL("unmatched ()");
++              } else
++                      FAIL("junk on end");    /* "Can't happen". */
++              /* NOTREACHED */
++      }
++
++      return(ret);
++}
++
++/*
++ - regbranch - one alternative of an | operator
++ *
++ * Implements the concatenation operator.
++ */
++static char *
++regbranch(struct match_globals *g, int *flagp)
++{
++      register char *ret;
++      register char *chain;
++      register char *latest;
++      int flags;
++
++      *flagp = WORST;         /* Tentatively. */
++
++      ret = regnode(g, BRANCH);
++      chain = NULL;
++      while (*g->regparse != '\0' && *g->regparse != '|' && *g->regparse != ')') {
++              latest = regpiece(g, &flags);
++              if (latest == NULL)
++                      return(NULL);
++              *flagp |= flags&HASWIDTH;
++              if (chain == NULL)      /* First piece. */
++                      *flagp |= flags&SPSTART;
++              else
++                      regtail(g, chain, latest);
++              chain = latest;
++      }
++      if (chain == NULL)      /* Loop ran zero times. */
++              (void) regnode(g, NOTHING);
++
++      return(ret);
++}
++
++/*
++ - regpiece - something followed by possible [*+?]
++ *
++ * Note that the branching code sequences used for ? and the general cases
++ * of * and + are somewhat optimized:  they use the same NOTHING node as
++ * both the endmarker for their branch list and the body of the last branch.
++ * It might seem that this node could be dispensed with entirely, but the
++ * endmarker role is not redundant.
++ */
++static char *
++regpiece(struct match_globals *g, int *flagp)
++{
++      register char *ret;
++      register char op;
++      register char *next;
++      int flags;
++
++      ret = regatom(g, &flags);
++      if (ret == NULL)
++              return(NULL);
++
++      op = *g->regparse;
++      if (!ISMULT(op)) {
++              *flagp = flags;
++              return(ret);
++      }
++
++      if (!(flags&HASWIDTH) && op != '?')
++              FAIL("*+ operand could be empty");
++      *flagp = (op != '+') ? (WORST|SPSTART) : (WORST|HASWIDTH);
++
++      if (op == '*' && (flags&SIMPLE))
++              reginsert(g, STAR, ret);
++      else if (op == '*') {
++              /* Emit x* as (x&|), where & means "self". */
++              reginsert(g, BRANCH, ret);                      /* Either x */
++              regoptail(g, ret, regnode(g, BACK));            /* and loop */
++              regoptail(g, ret, ret);                 /* back */
++              regtail(g, ret, regnode(g, BRANCH));            /* or */
++              regtail(g, ret, regnode(g, NOTHING));           /* null. */
++      } else if (op == '+' && (flags&SIMPLE))
++              reginsert(g, PLUS, ret);
++      else if (op == '+') {
++              /* Emit x+ as x(&|), where & means "self". */
++              next = regnode(g, BRANCH);                      /* Either */
++              regtail(g, ret, next);
++              regtail(g, regnode(g, BACK), ret);              /* loop back */
++              regtail(g, next, regnode(g, BRANCH));           /* or */
++              regtail(g, ret, regnode(g, NOTHING));           /* null. */
++      } else if (op == '?') {
++              /* Emit x? as (x|) */
++              reginsert(g, BRANCH, ret);                      /* Either x */
++              regtail(g, ret, regnode(g, BRANCH));            /* or */
++              next = regnode(g, NOTHING);             /* null. */
++              regtail(g, ret, next);
++              regoptail(g, ret, next);
++      }
++      g->regparse++;
++      if (ISMULT(*g->regparse))
++              FAIL("nested *?+");
++
++      return(ret);
++}
++
++/*
++ - regatom - the lowest level
++ *
++ * Optimization:  gobbles an entire sequence of ordinary characters so that
++ * it can turn them into a single node, which is smaller to store and
++ * faster to run.  Backslashed characters are exceptions, each becoming a
++ * separate node; the code is simpler that way and it's not worth fixing.
++ */
++static char *
++regatom(struct match_globals *g, int *flagp)
++{
++      register char *ret;
++      int flags;
++
++      *flagp = WORST;         /* Tentatively. */
++
++      switch (*g->regparse++) {
++      case '^':
++              ret = regnode(g, BOL);
++              break;
++      case '$':
++              ret = regnode(g, EOL);
++              break;
++      case '.':
++              ret = regnode(g, ANY);
++              *flagp |= HASWIDTH|SIMPLE;
++              break;
++      case '[': {
++                      register int class;
++                      register int classend;
++
++                      if (*g->regparse == '^') {      /* Complement of range. */
++                              ret = regnode(g, ANYBUT);
++                              g->regparse++;
++                      } else
++                              ret = regnode(g, ANYOF);
++                      if (*g->regparse == ']' || *g->regparse == '-')
++                              regc(g, *g->regparse++);
++                      while (*g->regparse != '\0' && *g->regparse != ']') {
++                              if (*g->regparse == '-') {
++                                      g->regparse++;
++                                      if (*g->regparse == ']' || *g->regparse == '\0')
++                                              regc(g, '-');
++                                      else {
++                                              class = UCHARAT(g->regparse-2)+1;
++                                              classend = UCHARAT(g->regparse);
++                                              if (class > classend+1)
++                                                      FAIL("invalid [] range");
++                                              for (; class <= classend; class++)
++                                                      regc(g, class);
++                                              g->regparse++;
++                                      }
++                              } else
++                                      regc(g, *g->regparse++);
++                      }
++                      regc(g, '\0');
++                      if (*g->regparse != ']')
++                              FAIL("unmatched []");
++                      g->regparse++;
++                      *flagp |= HASWIDTH|SIMPLE;
++              }
++              break;
++      case '(':
++              ret = reg(g, 1, &flags);
++              if (ret == NULL)
++                      return(NULL);
++              *flagp |= flags&(HASWIDTH|SPSTART);
++              break;
++      case '\0':
++      case '|':
++      case ')':
++              FAIL("internal urp");   /* Supposed to be caught earlier. */
++              break;
++      case '?':
++      case '+':
++      case '*':
++              FAIL("?+* follows nothing");
++              break;
++      case '\\':
++              if (*g->regparse == '\0')
++                      FAIL("trailing \\");
++              ret = regnode(g, EXACTLY);
++              regc(g, *g->regparse++);
++              regc(g, '\0');
++              *flagp |= HASWIDTH|SIMPLE;
++              break;
++      default: {
++                      register int len;
++                      register char ender;
++
++                      g->regparse--;
++                      len = my_strcspn((const char *)g->regparse, (const char *)META);
++                      if (len <= 0)
++                              FAIL("internal disaster");
++                      ender = *(g->regparse+len);
++                      if (len > 1 && ISMULT(ender))
++                              len--;          /* Back off clear of ?+* operand. */
++                      *flagp |= HASWIDTH;
++                      if (len == 1)
++                              *flagp |= SIMPLE;
++                      ret = regnode(g, EXACTLY);
++                      while (len > 0) {
++                              regc(g, *g->regparse++);
++                              len--;
++                      }
++                      regc(g, '\0');
++              }
++              break;
++      }
++
++      return(ret);
++}
++
++/*
++ - regnode - emit a node
++ */
++static char *                 /* Location. */
++regnode(struct match_globals *g, char op)
++{
++      register char *ret;
++      register char *ptr;
++
++      ret = g->regcode;
++      if (ret == &g->regdummy) {
++              g->regsize += 3;
++              return(ret);
++      }
++
++      ptr = ret;
++      *ptr++ = op;
++      *ptr++ = '\0';          /* Null "next" pointer. */
++      *ptr++ = '\0';
++      g->regcode = ptr;
++
++      return(ret);
++}
++
++/*
++ - regc - emit (if appropriate) a byte of code
++ */
++static void
++regc(struct match_globals *g, char b)
++{
++      if (g->regcode != &g->regdummy)
++              *g->regcode++ = b;
++      else
++              g->regsize++;
++}
++
++/*
++ - reginsert - insert an operator in front of already-emitted operand
++ *
++ * Means relocating the operand.
++ */
++static void
++reginsert(struct match_globals *g, char op, char* opnd)
++{
++      register char *src;
++      register char *dst;
++      register char *place;
++
++      if (g->regcode == &g->regdummy) {
++              g->regsize += 3;
++              return;
++      }
++
++      src = g->regcode;
++      g->regcode += 3;
++      dst = g->regcode;
++      while (src > opnd)
++              *--dst = *--src;
++
++      place = opnd;           /* Op node, where operand used to be. */
++      *place++ = op;
++      *place++ = '\0';
++      *place++ = '\0';
++}
++
++/*
++ - regtail - set the next-pointer at the end of a node chain
++ */
++static void
++regtail(struct match_globals *g, char *p, char *val)
++{
++      register char *scan;
++      register char *temp;
++      register int offset;
++
++      if (p == &g->regdummy)
++              return;
++
++      /* Find last node. */
++      scan = p;
++      for (;;) {
++              temp = regnext(g, scan);
++              if (temp == NULL)
++                      break;
++              scan = temp;
++      }
++
++      if (OP(scan) == BACK)
++              offset = scan - val;
++      else
++              offset = val - scan;
++      *(scan+1) = (offset>>8)&0377;
++      *(scan+2) = offset&0377;
++}
++
++/*
++ - regoptail - regtail on operand of first argument; nop if operandless
++ */
++static void
++regoptail(struct match_globals *g, char *p, char *val)
++{
++      /* "Operandless" and "op != BRANCH" are synonymous in practice. */
++      if (p == NULL || p == &g->regdummy || OP(p) != BRANCH)
++              return;
++      regtail(g, OPERAND(p), val);
++}
++
++/*
++ * regexec and friends
++ */
++
++
++/*
++ * Forwards.
++ */
++STATIC int regtry(struct match_globals *g, regexp *prog, char *string);
++STATIC int regmatch(struct match_globals *g, char *prog);
++STATIC int regrepeat(struct match_globals *g, char *p);
++
++#ifdef DEBUG
++int regnarrate = 0;
++void regdump();
++STATIC char *regprop(char *op);
++#endif
++
++/*
++ - regexec - match a regexp against a string
++ */
++int
++regexec(regexp *prog, char *string)
++{
++      register char *s;
++      struct match_globals g;
++
++      /* Be paranoid... */
++      if (prog == NULL || string == NULL) {
++              printk("<3>Regexp: NULL parameter\n");
++              return(0);
++      }
++
++      /* Check validity of program. */
++      if (UCHARAT(prog->program) != MAGIC) {
++              printk("<3>Regexp: corrupted program\n");
++              return(0);
++      }
++
++      /* If there is a "must appear" string, look for it. */
++      if (prog->regmust != NULL) {
++              s = string;
++              while ((s = strchr(s, prog->regmust[0])) != NULL) {
++                      if (strncmp(s, prog->regmust, prog->regmlen) == 0)
++                              break;  /* Found it. */
++                      s++;
++              }
++              if (s == NULL)  /* Not present. */
++                      return(0);
++      }
++
++      /* Mark beginning of line for ^ . */
++      g.regbol = string;
++
++      /* Simplest case:  anchored match need be tried only once. */
++      if (prog->reganch)
++              return(regtry(&g, prog, string));
++
++      /* Messy cases:  unanchored match. */
++      s = string;
++      if (prog->regstart != '\0')
++              /* We know what char it must start with. */
++              while ((s = strchr(s, prog->regstart)) != NULL) {
++                      if (regtry(&g, prog, s))
++                              return(1);
++                      s++;
++              }
++      else
++              /* We don't -- general case. */
++              do {
++                      if (regtry(&g, prog, s))
++                              return(1);
++              } while (*s++ != '\0');
++
++      /* Failure. */
++      return(0);
++}
++
++/*
++ - regtry - try match at specific point
++ */
++static int                    /* 0 failure, 1 success */
++regtry(struct match_globals *g, regexp *prog, char *string)
++{
++      register int i;
++      register char **sp;
++      register char **ep;
++
++      g->reginput = string;
++      g->regstartp = prog->startp;
++      g->regendp = prog->endp;
++
++      sp = prog->startp;
++      ep = prog->endp;
++      for (i = NSUBEXP; i > 0; i--) {
++              *sp++ = NULL;
++              *ep++ = NULL;
++      }
++      if (regmatch(g, prog->program + 1)) {
++              prog->startp[0] = string;
++              prog->endp[0] = g->reginput;
++              return(1);
++      } else
++              return(0);
++}
++
++/*
++ - regmatch - main matching routine
++ *
++ * Conceptually the strategy is simple:  check to see whether the current
++ * node matches, call self recursively to see whether the rest matches,
++ * and then act accordingly.  In practice we make some effort to avoid
++ * recursion, in particular by going through "ordinary" nodes (that don't
++ * need to know whether the rest of the match failed) by a loop instead of
++ * by recursion.
++ */
++static int                    /* 0 failure, 1 success */
++regmatch(struct match_globals *g, char *prog)
++{
++      register char *scan = prog; /* Current node. */
++      char *next;                 /* Next node. */
++
++#ifdef DEBUG
++      if (scan != NULL && regnarrate)
++              fprintf(stderr, "%s(\n", regprop(scan));
++#endif
++      while (scan != NULL) {
++#ifdef DEBUG
++              if (regnarrate)
++                      fprintf(stderr, "%s...\n", regprop(scan));
++#endif
++              next = regnext(g, scan);
++
++              switch (OP(scan)) {
++              case BOL:
++                      if (g->reginput != g->regbol)
++                              return(0);
++                      break;
++              case EOL:
++                      if (*g->reginput != '\0')
++                              return(0);
++                      break;
++              case ANY:
++                      if (*g->reginput == '\0')
++                              return(0);
++                      g->reginput++;
++                      break;
++              case EXACTLY: {
++                              register int len;
++                              register char *opnd;
++
++                              opnd = OPERAND(scan);
++                              /* Inline the first character, for speed. */
++                              if (*opnd != *g->reginput)
++                                      return(0);
++                              len = strlen(opnd);
++                              if (len > 1 && strncmp(opnd, g->reginput, len) != 0)
++                                      return(0);
++                              g->reginput += len;
++                      }
++                      break;
++              case ANYOF:
++                      if (*g->reginput == '\0' || strchr(OPERAND(scan), *g->reginput) == NULL)
++                              return(0);
++                      g->reginput++;
++                      break;
++              case ANYBUT:
++                      if (*g->reginput == '\0' || strchr(OPERAND(scan), *g->reginput) != NULL)
++                              return(0);
++                      g->reginput++;
++                      break;
++              case NOTHING:
++              case BACK:
++                      break;
++              case OPEN+1:
++              case OPEN+2:
++              case OPEN+3:
++              case OPEN+4:
++              case OPEN+5:
++              case OPEN+6:
++              case OPEN+7:
++              case OPEN+8:
++              case OPEN+9: {
++                              register int no;
++                              register char *save;
++
++                              no = OP(scan) - OPEN;
++                              save = g->reginput;
++
++                              if (regmatch(g, next)) {
++                                      /*
++                                       * Don't set startp if some later
++                                       * invocation of the same parentheses
++                                       * already has.
++                                       */
++                                      if (g->regstartp[no] == NULL)
++                                              g->regstartp[no] = save;
++                                      return(1);
++                              } else
++                                      return(0);
++                      }
++                      break;
++              case CLOSE+1:
++              case CLOSE+2:
++              case CLOSE+3:
++              case CLOSE+4:
++              case CLOSE+5:
++              case CLOSE+6:
++              case CLOSE+7:
++              case CLOSE+8:
++              case CLOSE+9:
++                      {
++                              register int no;
++                              register char *save;
++
++                              no = OP(scan) - CLOSE;
++                              save = g->reginput;
++
++                              if (regmatch(g, next)) {
++                                      /*
++                                       * Don't set endp if some later
++                                       * invocation of the same parentheses
++                                       * already has.
++                                       */
++                                      if (g->regendp[no] == NULL)
++                                              g->regendp[no] = save;
++                                      return(1);
++                              } else
++                                      return(0);
++                      }
++                      break;
++              case BRANCH: {
++                              register char *save;
++
++                              if (OP(next) != BRANCH)         /* No choice. */
++                                      next = OPERAND(scan);   /* Avoid recursion. */
++                              else {
++                                      do {
++                                              save = g->reginput;
++                                              if (regmatch(g, OPERAND(scan)))
++                                                      return(1);
++                                              g->reginput = save;
++                                              scan = regnext(g, scan);
++                                      } while (scan != NULL && OP(scan) == BRANCH);
++                                      return(0);
++                                      /* NOTREACHED */
++                              }
++                      }
++                      break;
++              case STAR:
++              case PLUS: {
++                              register char nextch;
++                              register int no;
++                              register char *save;
++                              register int min;
++
++                              /*
++                               * Lookahead to avoid useless match attempts
++                               * when we know what character comes next.
++                               */
++                              nextch = '\0';
++                              if (OP(next) == EXACTLY)
++                                      nextch = *OPERAND(next);
++                              min = (OP(scan) == STAR) ? 0 : 1;
++                              save = g->reginput;
++                              no = regrepeat(g, OPERAND(scan));
++                              while (no >= min) {
++                                      /* If it could work, try it. */
++                                      if (nextch == '\0' || *g->reginput == nextch)
++                                              if (regmatch(g, next))
++                                                      return(1);
++                                      /* Couldn't or didn't -- back up. */
++                                      no--;
++                                      g->reginput = save + no;
++                              }
++                              return(0);
++                      }
++                      break;
++              case END:
++                      return(1);      /* Success! */
++                      break;
++              default:
++                      printk("<3>Regexp: memory corruption\n");
++                      return(0);
++                      break;
++              }
++
++              scan = next;
++      }
++
++      /*
++       * We get here only if there's trouble -- normally "case END" is
++       * the terminating point.
++       */
++      printk("<3>Regexp: corrupted pointers\n");
++      return(0);
++}
++
++/*
++ - regrepeat - repeatedly match something simple, report how many
++ */
++static int
++regrepeat(struct match_globals *g, char *p)
++{
++      register int count = 0;
++      register char *scan;
++      register char *opnd;
++
++      scan = g->reginput;
++      opnd = OPERAND(p);
++      switch (OP(p)) {
++      case ANY:
++              count = strlen(scan);
++              scan += count;
++              break;
++      case EXACTLY:
++              while (*opnd == *scan) {
++                      count++;
++                      scan++;
++              }
++              break;
++      case ANYOF:
++              while (*scan != '\0' && strchr(opnd, *scan) != NULL) {
++                      count++;
++                      scan++;
++              }
++              break;
++      case ANYBUT:
++              while (*scan != '\0' && strchr(opnd, *scan) == NULL) {
++                      count++;
++                      scan++;
++              }
++              break;
++      default:                /* Oh dear.  Called inappropriately. */
++              printk("<3>Regexp: internal foulup\n");
++              count = 0;      /* Best compromise. */
++              break;
++      }
++      g->reginput = scan;
++
++      return(count);
++}
++
++/*
++ - regnext - dig the "next" pointer out of a node
++ */
++static char*
++regnext(struct match_globals *g, char *p)
++{
++      register int offset;
++
++      if (p == &g->regdummy)
++              return(NULL);
++
++      offset = NEXT(p);
++      if (offset == 0)
++              return(NULL);
++
++      if (OP(p) == BACK)
++              return(p-offset);
++      else
++              return(p+offset);
++}
++
++#ifdef DEBUG
++
++STATIC char *regprop();
++
++/*
++ - regdump - dump a regexp onto stdout in vaguely comprehensible form
++ */
++void
++regdump(regexp *r)
++{
++      register char *s;
++      register char op = EXACTLY;     /* Arbitrary non-END op. */
++      register char *next;
++      /* extern char *strchr(); */
++
++
++      s = r->program + 1;
++      while (op != END) {     /* While that wasn't END last time... */
++              op = OP(s);
++              printf("%2d%s", s-r->program, regprop(s));      /* Where, what. */
++              next = regnext(s);
++              if (next == NULL)               /* Next ptr. */
++                      printf("(0)");
++              else
++                      printf("(%d)", (s-r->program)+(next-s));
++              s += 3;
++              if (op == ANYOF || op == ANYBUT || op == EXACTLY) {
++                      /* Literal string, where present. */
++                      while (*s != '\0') {
++                              putchar(*s);
++                              s++;
++                      }
++                      s++;
++              }
++              putchar('\n');
++      }
++
++      /* Header fields of interest. */
++      if (r->regstart != '\0')
++              printf("start `%c' ", r->regstart);
++      if (r->reganch)
++              printf("anchored ");
++      if (r->regmust != NULL)
++              printf("must have \"%s\"", r->regmust);
++      printf("\n");
++}
++
++/*
++ - regprop - printable representation of opcode
++ */
++static char *
++regprop(char *op)
++{
++#define BUFLEN 50
++      register char *p;
++      static char buf[BUFLEN];
++
++      strcpy(buf, ":");
++
++      switch (OP(op)) {
++      case BOL:
++              p = "BOL";
++              break;
++      case EOL:
++              p = "EOL";
++              break;
++      case ANY:
++              p = "ANY";
++              break;
++      case ANYOF:
++              p = "ANYOF";
++              break;
++      case ANYBUT:
++              p = "ANYBUT";
++              break;
++      case BRANCH:
++              p = "BRANCH";
++              break;
++      case EXACTLY:
++              p = "EXACTLY";
++              break;
++      case NOTHING:
++              p = "NOTHING";
++              break;
++      case BACK:
++              p = "BACK";
++              break;
++      case END:
++              p = "END";
++              break;
++      case OPEN+1:
++      case OPEN+2:
++      case OPEN+3:
++      case OPEN+4:
++      case OPEN+5:
++      case OPEN+6:
++      case OPEN+7:
++      case OPEN+8:
++      case OPEN+9:
++              snprintf(buf+strlen(buf),BUFLEN-strlen(buf), "OPEN%d", OP(op)-OPEN);
++              p = NULL;
++              break;
++      case CLOSE+1:
++      case CLOSE+2:
++      case CLOSE+3:
++      case CLOSE+4:
++      case CLOSE+5:
++      case CLOSE+6:
++      case CLOSE+7:
++      case CLOSE+8:
++      case CLOSE+9:
++              snprintf(buf+strlen(buf),BUFLEN-strlen(buf), "CLOSE%d", OP(op)-CLOSE);
++              p = NULL;
++              break;
++      case STAR:
++              p = "STAR";
++              break;
++      case PLUS:
++              p = "PLUS";
++              break;
++      default:
++              printk("<3>Regexp: corrupted opcode\n");
++              break;
++      }
++      if (p != NULL)
++              strncat(buf, p, BUFLEN-strlen(buf));
++      return(buf);
++}
++#endif
++
++
+diff -Naur linux-3.14.22.org/net/netfilter/regexp/regexp.h linux-3.14.22/net/netfilter/regexp/regexp.h
+--- linux-3.14.22.org/net/netfilter/regexp/regexp.h    1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.22/net/netfilter/regexp/regexp.h        2014-10-24 15:33:21.285274399 +0200
+@@ -0,0 +1,41 @@
++/*
++ * Definitions etc. for regexp(3) routines.
++ *
++ * Caveat:  this is V8 regexp(3) [actually, a reimplementation thereof],
++ * not the System V one.
++ */
++
++#ifndef REGEXP_H
++#define REGEXP_H
++
++
++/*
++http://www.opensource.apple.com/darwinsource/10.3/expect-1/expect/expect.h ,
++which contains a version of this library, says:
++
++ *
++ * NSUBEXP must be at least 10, and no greater than 117 or the parser
++ * will not work properly.
++ *
++
++However, it looks rather like this library is limited to 10.  If you think
++otherwise, let us know.
++*/
++
++#define NSUBEXP  10
++typedef struct regexp {
++      char *startp[NSUBEXP];
++      char *endp[NSUBEXP];
++      char regstart;          /* Internal use only. */
++      char reganch;           /* Internal use only. */
++      char *regmust;          /* Internal use only. */
++      int regmlen;            /* Internal use only. */
++      char program[1];        /* Unwarranted chumminess with compiler. */
++} regexp;
++
++regexp * regcomp(char *exp, int *patternsize);
++int regexec(regexp *prog, char *string);
++void regsub(regexp *prog, char *source, char *dest);
++void regerror(char *s);
++
++#endif
+diff -Naur linux-3.14.22.org/net/netfilter/regexp/regmagic.h linux-3.14.22/net/netfilter/regexp/regmagic.h
+--- linux-3.14.22.org/net/netfilter/regexp/regmagic.h  1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.22/net/netfilter/regexp/regmagic.h      2014-10-24 15:33:21.285274399 +0200
+@@ -0,0 +1,5 @@
++/*
++ * The first byte of the regexp internal "program" is actually this magic
++ * number; the start node begins in the second byte.
++ */
++#define       MAGIC   0234
+diff -Naur linux-3.14.22.org/net/netfilter/regexp/regsub.c linux-3.14.22/net/netfilter/regexp/regsub.c
+--- linux-3.14.22.org/net/netfilter/regexp/regsub.c    1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.22/net/netfilter/regexp/regsub.c        2014-10-24 15:33:21.285274399 +0200
+@@ -0,0 +1,95 @@
++/*
++ * regsub
++ * @(#)regsub.c       1.3 of 2 April 86
++ *
++ *    Copyright (c) 1986 by University of Toronto.
++ *    Written by Henry Spencer.  Not derived from licensed software.
++ *
++ *    Permission is granted to anyone to use this software for any
++ *    purpose on any computer system, and to redistribute it freely,
++ *    subject to the following restrictions:
++ *
++ *    1. The author is not responsible for the consequences of use of
++ *            this software, no matter how awful, even if they arise
++ *            from defects in it.
++ *
++ *    2. The origin of this software must not be misrepresented, either
++ *            by explicit claim or by omission.
++ *
++ *    3. Altered versions must be plainly marked as such, and must not
++ *            be misrepresented as being the original software.
++ *
++ *
++ * This code was modified by Ethan Sommer to work within the kernel
++ * (it now uses kmalloc etc..)
++ *
++ */
++#include "regexp.h"
++#include "regmagic.h"
++#include <linux/string.h>
++
++
++#ifndef CHARBITS
++#define       UCHARAT(p)      ((int)*(unsigned char *)(p))
++#else
++#define       UCHARAT(p)      ((int)*(p)&CHARBITS)
++#endif
++
++#if 0
++//void regerror(char * s)
++//{
++//        printk("regexp(3): %s", s);
++//        /* NOTREACHED */
++//}
++#endif
++
++/*
++ - regsub - perform substitutions after a regexp match
++ */
++void
++regsub(regexp * prog, char * source, char * dest)
++{
++      register char *src;
++      register char *dst;
++      register char c;
++      register int no;
++      register int len;
++      
++      /* Not necessary and gcc doesn't like it -MLS */
++      /*extern char *strncpy();*/
++
++      if (prog == NULL || source == NULL || dest == NULL) {
++              regerror("NULL parm to regsub");
++              return;
++      }
++      if (UCHARAT(prog->program) != MAGIC) {
++              regerror("damaged regexp fed to regsub");
++              return;
++      }
++
++      src = source;
++      dst = dest;
++      while ((c = *src++) != '\0') {
++              if (c == '&')
++                      no = 0;
++              else if (c == '\\' && '0' <= *src && *src <= '9')
++                      no = *src++ - '0';
++              else
++                      no = -1;
++
++              if (no < 0) {   /* Ordinary character. */
++                      if (c == '\\' && (*src == '\\' || *src == '&'))
++                              c = *src++;
++                      *dst++ = c;
++              } else if (prog->startp[no] != NULL && prog->endp[no] != NULL) {
++                      len = prog->endp[no] - prog->startp[no];
++                      (void) strncpy(dst, prog->startp[no], len);
++                      dst += len;
++                      if (len != 0 && *(dst-1) == '\0') {     /* strncpy hit NUL. */
++                              regerror("damaged match string");
++                              return;
++                      }
++              }
++      }
++      *dst++ = '\0';
++}
+diff -Naur linux-3.14.22.org/net/netfilter/xt_layer7.c linux-3.14.22/net/netfilter/xt_layer7.c
+--- linux-3.14.22.org/net/netfilter/xt_layer7.c        1970-01-01 01:00:00.000000000 +0100
++++ linux-3.14.22/net/netfilter/xt_layer7.c    2014-10-24 15:33:21.285274399 +0200
+@@ -0,0 +1,665 @@
++/*
++  Kernel module to match application layer (OSI layer 7) data in connections.
++
++  http://l7-filter.sf.net
++
++  (C) 2003-2009 Matthew Strait and Ethan Sommer.
++
++  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.
++  http://www.gnu.org/licenses/gpl.txt
++
++  Based on ipt_string.c (C) 2000 Emmanuel Roger <winfield@freegates.be>,
++  xt_helper.c (C) 2002 Harald Welte and cls_layer7.c (C) 2003 Matthew Strait,
++  Ethan Sommer, Justin Levandoski.
++*/
++
++#include <linux/spinlock.h>
++#include <linux/version.h>
++#include <net/ip.h>
++#include <net/tcp.h>
++#include <linux/module.h>
++#include <linux/seq_file.h>
++#include <linux/skbuff.h>
++#include <linux/netfilter.h>
++#include <net/netfilter/nf_conntrack.h>
++#include <net/netfilter/nf_conntrack_core.h>
++#include <net/netfilter/nf_conntrack_extend.h>
++#include <net/netfilter/nf_conntrack_acct.h>
++#include <linux/netfilter/x_tables.h>
++#include <linux/netfilter/xt_layer7.h>
++#include <linux/ctype.h>
++#include <linux/proc_fs.h>
++
++#include "regexp/regexp.c"
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Matthew Strait <quadong@users.sf.net>, Ethan Sommer <sommere@users.sf.net>");
++MODULE_DESCRIPTION("iptables application layer match module");
++MODULE_ALIAS("ipt_layer7");
++MODULE_VERSION("2.21");
++
++static int maxdatalen = 2048; // this is the default
++module_param(maxdatalen, int, 0444);
++MODULE_PARM_DESC(maxdatalen, "maximum bytes of data looked at by l7-filter");
++#ifdef CONFIG_NETFILTER_XT_MATCH_LAYER7_DEBUG
++      #define DPRINTK(format,args...) printk(format,##args)
++#else
++      #define DPRINTK(format,args...)
++#endif
++
++/* Number of packets whose data we look at.
++This can be modified through /proc/net/layer7_numpackets */
++static int num_packets = 10;
++
++static struct pattern_cache {
++      char * regex_string;
++      regexp * pattern;
++      struct pattern_cache * next;
++} * first_pattern_cache = NULL;
++
++DEFINE_SPINLOCK(l7_lock);
++
++static int total_acct_packets(struct nf_conn *ct)
++{
++      struct nf_conn_counter *acct;
++
++      BUG_ON(ct == NULL);
++      acct = nf_conn_acct_find(ct);
++      if (!acct)
++              return 0;
++      return (atomic64_read(&acct[IP_CT_DIR_ORIGINAL].packets) + atomic64_read(&acct[IP_CT_DIR_REPLY].packets));
++}
++
++#ifdef CONFIG_IP_NF_MATCH_LAYER7_DEBUG
++/* Converts an unfriendly string into a friendly one by
++replacing unprintables with periods and all whitespace with " ". */
++static char * friendly_print(unsigned char * s)
++{
++      char * f = kmalloc(strlen(s) + 1, GFP_ATOMIC);
++      int i;
++
++      if(!f) {
++              if (net_ratelimit())
++                      printk(KERN_ERR "layer7: out of memory in "
++                                      "friendly_print, bailing.\n");
++              return NULL;
++      }
++
++      for(i = 0; i < strlen(s); i++){
++              if(isprint(s[i]) && s[i] < 128) f[i] = s[i];
++              else if(isspace(s[i]))          f[i] = ' ';
++              else                            f[i] = '.';
++      }
++      f[i] = '\0';
++      return f;
++}
++
++static char dec2hex(int i)
++{
++      switch (i) {
++              case 0 ... 9:
++                      return (i + '0');
++                      break;
++              case 10 ... 15:
++                      return (i - 10 + 'a');
++                      break;
++              default:
++                      if (net_ratelimit())
++                              printk("layer7: Problem in dec2hex\n");
++                      return '\0';
++      }
++}
++
++static char * hex_print(unsigned char * s)
++{
++      char * g = kmalloc(strlen(s)*3 + 1, GFP_ATOMIC);
++      int i;
++
++      if(!g) {
++             if (net_ratelimit())
++                      printk(KERN_ERR "layer7: out of memory in hex_print, "
++                                      "bailing.\n");
++             return NULL;
++      }
++
++      for(i = 0; i < strlen(s); i++) {
++              g[i*3    ] = dec2hex(s[i]/16);
++              g[i*3 + 1] = dec2hex(s[i]%16);
++              g[i*3 + 2] = ' ';
++      }
++      g[i*3] = '\0';
++
++      return g;
++}
++#endif // DEBUG
++
++/* Use instead of regcomp.  As we expect to be seeing the same regexps over and
++over again, it make sense to cache the results. */
++static regexp * compile_and_cache(const char * regex_string, 
++                                  const char * protocol)
++{
++      struct pattern_cache * node               = first_pattern_cache;
++      struct pattern_cache * last_pattern_cache = first_pattern_cache;
++      struct pattern_cache * tmp;
++      unsigned int len;
++
++      while (node != NULL) {
++              if (!strcmp(node->regex_string, regex_string))
++              return node->pattern;
++
++              last_pattern_cache = node;/* points at the last non-NULL node */
++              node = node->next;
++      }
++
++      /* If we reach the end of the list, then we have not yet cached
++         the pattern for this regex. Let's do that now.
++         Be paranoid about running out of memory to avoid list corruption. */
++      tmp = kmalloc(sizeof(struct pattern_cache), GFP_ATOMIC);
++
++      if(!tmp) {
++              if (net_ratelimit())
++                      printk(KERN_ERR "layer7: out of memory in "
++                                      "compile_and_cache, bailing.\n");
++              return NULL;
++      }
++
++      tmp->regex_string  = kmalloc(strlen(regex_string) + 1, GFP_ATOMIC);
++      tmp->pattern       = kmalloc(sizeof(struct regexp),    GFP_ATOMIC);
++      tmp->next = NULL;
++
++      if(!tmp->regex_string || !tmp->pattern) {
++              if (net_ratelimit())
++                      printk(KERN_ERR "layer7: out of memory in "
++                                      "compile_and_cache, bailing.\n");
++              kfree(tmp->regex_string);
++              kfree(tmp->pattern);
++              kfree(tmp);
++              return NULL;
++      }
++
++      /* Ok.  The new node is all ready now. */
++      node = tmp;
++
++      if(first_pattern_cache == NULL) /* list is empty */
++              first_pattern_cache = node; /* make node the beginning */
++      else
++              last_pattern_cache->next = node; /* attach node to the end */
++
++      /* copy the string and compile the regex */
++      len = strlen(regex_string);
++      DPRINTK("About to compile this: \"%s\"\n", regex_string);
++      node->pattern = regcomp((char *)regex_string, &len);
++      if ( !node->pattern ) {
++              if (net_ratelimit())
++                      printk(KERN_ERR "layer7: Error compiling regexp "
++                                      "\"%s\" (%s)\n", 
++                                      regex_string, protocol);
++              /* pattern is now cached as NULL, so we won't try again. */
++      }
++
++      strcpy(node->regex_string, regex_string);
++      return node->pattern;
++}
++
++static int can_handle(const struct sk_buff *skb)
++{
++      struct iphdr iphdr_tmp;
++      struct iphdr *iphdr;
++      int offset;
++
++      if (!ip_hdr(skb))
++              return 0;
++
++      offset = ((uintptr_t)ip_hdr(skb)) - ((uintptr_t)skb->data);
++
++      iphdr = skb_header_pointer(skb, offset, sizeof(*iphdr), &iphdr_tmp);
++      if (!iphdr)
++              return 0;
++
++      if (iphdr->protocol == IPPROTO_TCP ||
++          iphdr->protocol == IPPROTO_UDP ||
++          iphdr->protocol == IPPROTO_ICMP)
++              return 1;
++
++      return 0;
++}
++
++static int app_data_offset(const struct sk_buff *skb)
++{
++      int offset;
++      struct iphdr iphdr_tmp;
++      struct iphdr *iphdr;
++      struct tcphdr tcphdr_tmp;
++      struct tcphdr *tcphdr;
++
++      if (!ip_hdr(skb))
++              return -1;
++
++      offset = ((uintptr_t)ip_hdr(skb)) - ((uintptr_t)skb->data);
++
++      iphdr = skb_header_pointer(skb, offset, sizeof(*iphdr), &iphdr_tmp);
++      if (!iphdr)
++              return -1;
++
++      offset += iphdr->ihl * 4;
++
++      if (iphdr->protocol == IPPROTO_TCP) {
++              tcphdr = skb_header_pointer(skb, offset, sizeof(*tcphdr),
++                                          &tcphdr_tmp);
++              if (!tcphdr)
++                      return -1;
++
++              offset += tcphdr->doff * 4;
++
++              return offset;
++      }
++
++      if (iphdr->protocol == IPPROTO_UDP)
++              return offset + 8;
++
++      if (iphdr->protocol == IPPROTO_ICMP)
++              return offset + 8;
++
++      if (net_ratelimit())
++              pr_err(KERN_ERR "layer7: tried to handle unknown protocol!\n");
++
++      return offset + 8; /* something reasonable */
++}
++
++/* handles whether there's a match when we aren't appending data anymore */
++static int match_no_append(struct nf_conn * conntrack, 
++                           struct nf_conn * master_conntrack, 
++                           enum ip_conntrack_info ctinfo,
++                           enum ip_conntrack_info master_ctinfo,
++                           const struct xt_layer7_info * info)
++{
++      /* If we're in here, throw the app data away */
++      if(master_conntrack->layer7.app_data != NULL) {
++
++      #ifdef CONFIG_IP_NF_MATCH_LAYER7_DEBUG
++              if(!master_conntrack->layer7.app_proto) {
++                      char * f = 
++                        friendly_print(master_conntrack->layer7.app_data);
++                      char * g = 
++                        hex_print(master_conntrack->layer7.app_data);
++                      DPRINTK("\nl7-filter gave up after %d bytes "
++                              "(%d packets):\n%s\n",
++                              strlen(f), total_acct_packets(master_conntrack), f);
++                      kfree(f);
++                      DPRINTK("In hex: %s\n", g);
++                      kfree(g);
++              }
++      #endif
++
++              kfree(master_conntrack->layer7.app_data);
++              master_conntrack->layer7.app_data = NULL; /* don't free again */
++      }
++
++      if(master_conntrack->layer7.app_proto){
++              /* Here child connections set their .app_proto (for /proc) */
++              if(!conntrack->layer7.app_proto) {
++                      conntrack->layer7.app_proto = 
++                        kmalloc(strlen(master_conntrack->layer7.app_proto)+1, 
++                          GFP_ATOMIC);
++                      if(!conntrack->layer7.app_proto){
++                              if (net_ratelimit())
++                                      printk(KERN_ERR "layer7: out of memory "
++                                                      "in match_no_append, "
++                                                      "bailing.\n");
++                              return 1;
++                      }
++                      strcpy(conntrack->layer7.app_proto, 
++                              master_conntrack->layer7.app_proto);
++              }
++
++              return (!strcmp(master_conntrack->layer7.app_proto, 
++                              info->protocol));
++      }
++      else {
++              /* If not classified, set to "unknown" to distinguish from
++              connections that are still being tested. */
++              master_conntrack->layer7.app_proto = 
++                      kmalloc(strlen("unknown")+1, GFP_ATOMIC);
++              if(!master_conntrack->layer7.app_proto){
++                      if (net_ratelimit())
++                              printk(KERN_ERR "layer7: out of memory in "
++                                              "match_no_append, bailing.\n");
++                      return 1;
++              }
++              strcpy(master_conntrack->layer7.app_proto, "unknown");
++              return 0;
++      }
++}
++
++/* add the new app data to the conntrack.  Return number of bytes added. */
++static int add_datastr(char *target, int offset, char *app_data, int len)
++{
++      int length = 0, i;
++      if (!target) return 0;
++
++      /* Strip nulls. Make everything lower case (our regex lib doesn't
++      do case insensitivity).  Add it to the end of the current data. */
++      for(i = 0; i < maxdatalen-offset-1 && i < len; i++) {
++              if(app_data[i] != '\0') {
++                      /* the kernel version of tolower mungs 'upper ascii' */
++                      target[length+offset] =
++                              isascii(app_data[i])? 
++                                      tolower(app_data[i]) : app_data[i];
++                      length++;
++              }
++      }
++      target[length+offset] = '\0';
++
++      return length;
++}
++
++/* add the new app data to the buffer.  Return number of bytes added. */
++static int add_data(char *target, int offset, const struct sk_buff *skb)
++{
++      int length, length_sum = 0;
++      int data_start = app_data_offset(skb);
++      int remaining = skb->len - data_start;
++      int to_copy;
++      uint8_t buf[512];
++      uint8_t *data;
++
++      while ((offset < maxdatalen - 1) && (remaining > 0)) {
++              to_copy = min_t(int, remaining, sizeof(buf));
++
++              data = skb_header_pointer(skb, data_start, to_copy, buf);
++              length = add_datastr(target, offset, data, to_copy);
++
++              remaining -= to_copy;
++              data_start += to_copy;
++              offset += length;
++              length_sum += length;
++      }
++
++      return length_sum;
++}
++
++/* add the new app data to the conntrack.  Return number of bytes added. */
++static int add_data_conntrack(struct nf_conn *master_conntrack,
++                            const struct sk_buff *skb)
++{
++      int length;
++
++      length = add_data(master_conntrack->layer7.app_data,
++                        master_conntrack->layer7.app_data_len, skb);
++      master_conntrack->layer7.app_data_len += length;
++
++      return length;
++}
++
++/* taken from drivers/video/modedb.c */
++static int my_atoi(const char *s)
++{
++      int val = 0;
++
++      for (;; s++) {
++              switch (*s) {
++                      case '0'...'9':
++                      val = 10*val+(*s-'0');
++                      break;
++              default:
++                      return val;
++              }
++      }
++}
++
++static int layer7_numpackets_proc_show(struct seq_file *s, void *p) {
++      seq_printf(s, "%d\n", num_packets);
++
++      return 0;
++}
++
++static int layer7_numpackets_proc_open(struct inode *inode, struct file *file) {
++      return single_open(file, layer7_numpackets_proc_show, NULL);
++}
++
++/* Read in num_packets from userland */
++static ssize_t layer7_numpackets_write_proc(struct file* file, const char __user *buffer,
++              size_t count, loff_t *data) {
++      char value[1024];
++      int new_num_packets;
++
++      if (copy_from_user(&value, buffer, sizeof(value)))
++              return -EFAULT;
++
++      new_num_packets = my_atoi(value);
++
++      if ((new_num_packets < 1) || (new_num_packets > 99)) {
++              printk(KERN_WARNING "layer7: numpackets must be between 1 and 99\n");
++              return -EFAULT;
++      }
++
++      num_packets = new_num_packets;
++
++      return count;
++}
++
++static bool match(const struct sk_buff *skbin, struct xt_action_param *par)
++{
++      /* sidestep const without getting a compiler warning... */
++      struct sk_buff *skb = (struct sk_buff *)skbin;
++
++      const struct xt_layer7_info * info = par->matchinfo;
++
++      enum ip_conntrack_info master_ctinfo, ctinfo;
++      struct nf_conn *master_conntrack, *conntrack;
++      unsigned char *tmp_data;
++      unsigned int pattern_result;
++      regexp * comppattern;
++
++      /* Be paranoid/incompetent - lock the entire match function. */
++      spin_lock_bh(&l7_lock);
++
++      if (!can_handle(skbin)) {
++              DPRINTK("layer7: This is some protocol I can't handle.\n");
++              spin_unlock_bh(&l7_lock);
++              return info->invert;
++      }
++
++      /* Treat parent & all its children together as one connection, except
++      for the purpose of setting conntrack->layer7.app_proto in the actual
++      connection. This makes /proc/net/ip_conntrack more satisfying. */
++      conntrack = nf_ct_get(skbin, &ctinfo);
++      master_conntrack = nf_ct_get(skbin, &master_ctinfo);
++      if (!conntrack || !master_conntrack) {
++              DPRINTK("layer7: couldn't get conntrack.\n");
++              spin_unlock_bh(&l7_lock);
++              return info->invert;
++      }
++
++      /* Try to get a master conntrack (and its master etc) for FTP, etc. */
++      while (master_ct(master_conntrack) != NULL)
++              master_conntrack = master_ct(master_conntrack);
++
++      /* if we've classified it or seen too many packets */
++      if(!info->pkt && (total_acct_packets(master_conntrack) > num_packets ||
++         master_conntrack->layer7.app_proto)) {
++
++              pattern_result = match_no_append(conntrack, master_conntrack, 
++                                               ctinfo, master_ctinfo, info);
++
++              /* skb->cb[0] == seen. Don't do things twice if there are 
++              multiple l7 rules. I'm not sure that using cb for this purpose 
++              is correct, even though it says "put your private variables 
++              there". But it doesn't look like it is being used for anything
++              else in the skbs that make it here. */
++              skb->cb[0] = 1; /* marking it seen here's probably irrelevant */
++
++              spin_unlock_bh(&l7_lock);
++              return (pattern_result ^ info->invert);
++      }
++
++      /* the return value gets checked later, when we're ready to use it */
++      comppattern = compile_and_cache(info->pattern, info->protocol);
++
++      if (info->pkt) {
++              tmp_data = kmalloc(maxdatalen, GFP_ATOMIC);
++              if(!tmp_data){
++                      if (net_ratelimit())
++                              printk(KERN_ERR "layer7: out of memory in match, bailing.\n");
++                      return info->invert;
++              }
++
++              tmp_data[0] = '\0';
++              add_data(tmp_data, 0, skbin);
++              pattern_result = ((comppattern && regexec(comppattern, tmp_data)) ? 1 : 0);
++
++              kfree(tmp_data);
++              tmp_data = NULL;
++              spin_unlock_bh(&l7_lock);
++
++              return (pattern_result ^ info->invert);
++      }
++
++      /* On the first packet of a connection, allocate space for app data */
++      if(total_acct_packets(master_conntrack) == 1 && !skb->cb[0] && 
++         !master_conntrack->layer7.app_data){
++              master_conntrack->layer7.app_data = 
++                      kmalloc(maxdatalen, GFP_ATOMIC);
++              if(!master_conntrack->layer7.app_data){
++                      if (net_ratelimit())
++                              printk(KERN_ERR "layer7: out of memory in "
++                                              "match, bailing.\n");
++                      spin_unlock_bh(&l7_lock);
++                      return info->invert;
++              }
++
++              master_conntrack->layer7.app_data[0] = '\0';
++      }
++
++      /* Can be here, but unallocated, if numpackets is increased near
++      the beginning of a connection */
++      if(master_conntrack->layer7.app_data == NULL){
++              spin_unlock_bh(&l7_lock);
++              return info->invert; /* unmatched */
++      }
++
++      if(!skb->cb[0]){
++              int newbytes;
++              newbytes = add_data_conntrack(master_conntrack, skb);
++
++              if(newbytes == 0) { /* didn't add any data */
++                      skb->cb[0] = 1;
++                      /* Didn't match before, not going to match now */
++                      spin_unlock_bh(&l7_lock);
++                      return info->invert;
++              }
++      }
++
++      /* If looking for "unknown", then never match.  "Unknown" means that
++      we've given up; we're still trying with these packets. */
++      if(!strcmp(info->protocol, "unknown")) {
++              pattern_result = 0;
++      /* If looking for "unset", then always match. "Unset" means that we
++      haven't yet classified the connection. */
++      } else if(!strcmp(info->protocol, "unset")) {
++              pattern_result = 2;
++              DPRINTK("layer7: matched unset: not yet classified "
++                      "(%d/%d packets)\n",
++                        total_acct_packets(master_conntrack), num_packets);
++      /* If the regexp failed to compile, don't bother running it */
++      } else if(comppattern && 
++                regexec(comppattern, master_conntrack->layer7.app_data)){
++              DPRINTK("layer7: matched %s\n", info->protocol);
++              pattern_result = 1;
++      } else pattern_result = 0;
++
++      if(pattern_result == 1) {
++              master_conntrack->layer7.app_proto = 
++                      kmalloc(strlen(info->protocol)+1, GFP_ATOMIC);
++              if(!master_conntrack->layer7.app_proto){
++                      if (net_ratelimit())
++                              printk(KERN_ERR "layer7: out of memory in "
++                                              "match, bailing.\n");
++                      spin_unlock_bh(&l7_lock);
++                      return (pattern_result ^ info->invert);
++              }
++              strcpy(master_conntrack->layer7.app_proto, info->protocol);
++      } else if(pattern_result > 1) { /* cleanup from "unset" */
++              pattern_result = 1;
++      }
++
++      /* mark the packet seen */
++      skb->cb[0] = 1;
++
++      spin_unlock_bh(&l7_lock);
++      return (pattern_result ^ info->invert);
++}
++
++// load nf_conntrack_ipv4
++static int check(const struct xt_mtchk_param *par)
++{
++        if (nf_ct_l3proto_try_module_get(par->match->family) < 0) {
++                printk(KERN_WARNING "can't load conntrack support for "
++                                    "proto=%d\n", par->match->family);
++              return -EINVAL;
++      }
++      return 0;
++}
++
++
++static void destroy(const struct xt_mtdtor_param *par)
++{
++      nf_ct_l3proto_module_put(par->match->family);
++}
++
++static struct xt_match xt_layer7_match[] __read_mostly = {
++{
++      .name           = "layer7",
++      .family         = AF_INET,
++      .checkentry     = check,
++      .match          = match,
++      .destroy        = destroy,
++      .matchsize      = sizeof(struct xt_layer7_info),
++      .me             = THIS_MODULE
++}
++};
++
++static const struct file_operations layer7_numpackets_proc_fops = {
++      .owner   = THIS_MODULE,
++      .open    = layer7_numpackets_proc_open,
++      .read    = seq_read,
++      .llseek  = seq_lseek,
++      .release = single_release,
++      .write   = layer7_numpackets_write_proc,
++};
++
++static int __init xt_layer7_init(void)
++{
++      need_conntrack();
++
++      // Register proc interface
++      proc_create_data("layer7_numpackets", 0644,
++              init_net.proc_net, &layer7_numpackets_proc_fops, NULL);
++
++      if(maxdatalen < 1) {
++              printk(KERN_WARNING "layer7: maxdatalen can't be < 1, "
++                      "using 1\n");
++              maxdatalen = 1;
++      }
++      /* This is not a hard limit.  It's just here to prevent people from
++      bringing their slow machines to a grinding halt. */
++      else if(maxdatalen > 65536) {
++              printk(KERN_WARNING "layer7: maxdatalen can't be > 65536, "
++                      "using 65536\n");
++              maxdatalen = 65536;
++      }
++      return xt_register_matches(xt_layer7_match,
++                                 ARRAY_SIZE(xt_layer7_match));
++}
++
++static void __exit xt_layer7_fini(void)
++{
++      remove_proc_entry("layer7_numpackets", init_net.proc_net);
++      xt_unregister_matches(xt_layer7_match, ARRAY_SIZE(xt_layer7_match));
++}
++
++module_init(xt_layer7_init);
++module_exit(xt_layer7_fini);
diff --git a/src/patches/linux-3.14.22-dvbsky.patch b/src/patches/linux-3.14.22-dvbsky.patch
new file mode 100644 (file)
index 0000000..00180c4
--- /dev/null
@@ -0,0 +1,6558 @@
+diff --git a/drivers/media/dvb-frontends/Kconfig b/drivers/media/dvb-frontends/Kconfig
+index dd12a1e..969cd15 100644
+--- a/drivers/media/dvb-frontends/Kconfig
++++ b/drivers/media/dvb-frontends/Kconfig
+@@ -726,6 +726,20 @@ config DVB_TDA665x
+         Currently supported tuners:
+         * Panasonic ENV57H12D5 (ET-50DT)
++config DVB_DVBSKY_M88DS3103
++      tristate "Montage M88DS3103 based(DVBSky)"
++      depends on DVB_CORE && I2C
++      default m if !MEDIA_SUBDRV_AUTOSELECT
++      help
++        A DVB-S/S2 tuner module. Say Y when you want to support this frontend.
++
++config DVB_M88DC2800
++      tristate "Montage M88DC2800 based"
++      depends on DVB_CORE && I2C
++      default m if !MEDIA_SUBDRV_AUTOSELECT
++      help
++        A DVB-C tuner module. Say Y when you want to support this frontend.
++
+ config DVB_IX2505V
+       tristate "Sharp IX2505V silicon tuner"
+       depends on DVB_CORE && I2C
+diff --git a/drivers/media/dvb-frontends/Makefile b/drivers/media/dvb-frontends/Makefile
+index 0c75a6a..37c57f9 100644
+--- a/drivers/media/dvb-frontends/Makefile
++++ b/drivers/media/dvb-frontends/Makefile
+@@ -106,3 +106,5 @@ obj-$(CONFIG_DVB_RTL2832) += rtl2832.o
+ obj-$(CONFIG_DVB_M88RS2000) += m88rs2000.o
+ obj-$(CONFIG_DVB_AF9033) += af9033.o
++obj-$(CONFIG_DVB_DVBSKY_M88DS3103) += dvbsky_m88ds3103.o
++obj-$(CONFIG_DVB_M88DC2800) += m88dc2800.o
+diff --git a/drivers/media/dvb-frontends/dvbsky_m88ds3103.c b/drivers/media/dvb-frontends/dvbsky_m88ds3103.c
+new file mode 100644
+index 0000000..5ad1157
+--- /dev/null
++++ b/drivers/media/dvb-frontends/dvbsky_m88ds3103.c
+@@ -0,0 +1,1723 @@
++/*
++    Montage Technology M88DS3103/M88TS2022 - DVBS/S2 Satellite demod/tuner driver
++
++    Copyright (C) 2011 Max nibble<nibble.max@gmail.com>
++    Copyright (C) 2010 Montage Technology<www.montage-tech.com>
++    Copyright (C) 2009 Konstantin Dimitrov.
++
++    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.
++
++    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, write to the Free Software
++    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++
++#include <linux/slab.h>
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/init.h>
++#include <linux/firmware.h>
++
++#include "dvb_frontend.h"
++#include "dvbsky_m88ds3103.h"
++#include "dvbsky_m88ds3103_priv.h"
++
++static int debug;
++module_param(debug, int, 0644);
++MODULE_PARM_DESC(debug, "Activates frontend debugging (default:0)");
++
++#define dprintk(args...) \
++      do { \
++              if (debug) \
++                      printk(KERN_INFO "m88ds3103: " args); \
++      } while (0)
++
++#define _AUTO_S2_
++
++/*demod register operations.*/
++static int m88ds3103_writereg(struct m88ds3103_state *state, int reg, int data)
++{
++      u8 buf[] = { reg, data };
++      struct i2c_msg msg = { .addr = state->config->demod_address,
++              .flags = 0, .buf = buf, .len = 2 };
++      int err;
++
++      if (debug > 1)
++              printk("m88ds3103: %s: write reg 0x%02x, value 0x%02x\n",
++                      __func__, reg, data);
++
++      err = i2c_transfer(state->i2c, &msg, 1);
++      if (err != 1) {
++              printk(KERN_ERR "%s: writereg error(err == %i, reg == 0x%02x,"
++                       " value == 0x%02x)\n", __func__, err, reg, data);
++              return -EREMOTEIO;
++      }
++      return 0;
++}
++
++static int m88ds3103_readreg(struct m88ds3103_state *state, u8 reg)
++{
++      int ret;
++      u8 b0[] = { reg };
++      u8 b1[] = { 0 };
++      struct i2c_msg msg[] = {
++              { .addr = state->config->demod_address, .flags = 0,
++                      .buf = b0, .len = 1 },
++              { .addr = state->config->demod_address, .flags = I2C_M_RD,
++                      .buf = b1, .len = 1 }
++      };
++      ret = i2c_transfer(state->i2c, msg, 2);
++
++      if (ret != 2) {
++              printk(KERN_ERR "%s: reg=0x%x (error=%d)\n",
++                      __func__, reg, ret);
++              return ret;
++      }
++
++      if (debug > 1)
++              printk(KERN_INFO "m88ds3103: read reg 0x%02x, value 0x%02x\n",
++                      reg, b1[0]);
++
++      return b1[0];
++}
++
++/*tuner register operations.*/
++static int m88ds3103_tuner_writereg(struct m88ds3103_state *state, int reg, int data)
++{
++      u8 buf[] = { reg, data };
++      struct i2c_msg msg = { .addr = 0x60,
++              .flags = 0, .buf = buf, .len = 2 };
++      int err;
++
++      m88ds3103_writereg(state, 0x03, 0x11);
++      err = i2c_transfer(state->i2c, &msg, 1);
++      
++      if (err != 1) {
++              printk("%s: writereg error(err == %i, reg == 0x%02x,"
++                       " value == 0x%02x)\n", __func__, err, reg, data);
++              return -EREMOTEIO;
++      }
++
++      return 0;
++}
++
++static int m88ds3103_tuner_readreg(struct m88ds3103_state *state, u8 reg)
++{
++      int ret;
++      u8 b0[] = { reg };
++      u8 b1[] = { 0 };
++      struct i2c_msg msg[] = {
++              { .addr = 0x60, .flags = 0,
++                      .buf = b0, .len = 1 },
++              { .addr = 0x60, .flags = I2C_M_RD,
++                      .buf = b1, .len = 1 }
++      };
++
++      m88ds3103_writereg(state, 0x03, (0x11 + state->config->tuner_readstops));       
++      ret = i2c_transfer(state->i2c, msg, 2);
++
++      if (ret != 2) {
++              printk(KERN_ERR "%s: reg=0x%x(error=%d)\n", __func__, reg, ret);
++              return ret;
++      }
++
++      return b1[0];
++}
++
++/* Bulk demod I2C write, for firmware download. */
++static int m88ds3103_writeregN(struct m88ds3103_state *state, int reg,
++                              const u8 *data, u16 len)
++{
++      int ret = -EREMOTEIO;
++      struct i2c_msg msg;
++      u8 *buf;
++
++      buf = kmalloc(len + 1, GFP_KERNEL);
++      if (buf == NULL) {
++              printk("Unable to kmalloc\n");
++              ret = -ENOMEM;
++              goto error;
++      }
++
++      *(buf) = reg;
++      memcpy(buf + 1, data, len);
++
++      msg.addr = state->config->demod_address;
++      msg.flags = 0;
++      msg.buf = buf;
++      msg.len = len + 1;
++
++      if (debug > 1)
++              printk(KERN_INFO "m88ds3103: %s:  write regN 0x%02x, len = %d\n",
++                      __func__, reg, len);
++
++      ret = i2c_transfer(state->i2c, &msg, 1);
++      if (ret != 1) {
++              printk(KERN_ERR "%s: writereg error(err == %i, reg == 0x%02x\n",
++                       __func__, ret, reg);
++              ret = -EREMOTEIO;
++      }
++      
++error:
++      kfree(buf);
++
++      return ret;
++}
++
++static int m88ds3103_load_firmware(struct dvb_frontend *fe)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      const struct firmware *fw;
++      int i, ret = 0;
++
++      dprintk("%s()\n", __func__);
++              
++      if (state->skip_fw_load)
++              return 0;
++      /* Load firmware */
++      /* request the firmware, this will block until someone uploads it */    
++      if(state->demod_id == DS3000_ID){
++              printk(KERN_INFO "%s: Waiting for firmware upload (%s)...\n", __func__,
++                              DS3000_DEFAULT_FIRMWARE);               
++              ret = request_firmware(&fw, DS3000_DEFAULT_FIRMWARE,
++                                      state->i2c->dev.parent);
++      }else if(state->demod_id == DS3103_ID){
++              printk(KERN_INFO "%s: Waiting for firmware upload (%s)...\n", __func__,
++                              DS3103_DEFAULT_FIRMWARE);
++              ret = request_firmware(&fw, DS3103_DEFAULT_FIRMWARE,
++                                      state->i2c->dev.parent);
++      }
++      
++      printk(KERN_INFO "%s: Waiting for firmware upload(2)...\n", __func__);
++      if (ret) {
++              printk(KERN_ERR "%s: No firmware uploaded (timeout or file not "
++                              "found?)\n", __func__);
++              return ret;
++      }
++
++      /* Make sure we don't recurse back through here during loading */
++      state->skip_fw_load = 1;
++
++      dprintk("Firmware is %zu bytes (%02x %02x .. %02x %02x)\n",
++                      fw->size,
++                      fw->data[0],
++                      fw->data[1],
++                      fw->data[fw->size - 2],
++                      fw->data[fw->size - 1]);
++                      
++      /* stop internal mcu. */
++      m88ds3103_writereg(state, 0xb2, 0x01);
++      /* split firmware to download.*/
++      for(i = 0; i < FW_DOWN_LOOP; i++){
++              ret = m88ds3103_writeregN(state, 0xb0, &(fw->data[FW_DOWN_SIZE*i]), FW_DOWN_SIZE);
++              if(ret != 1) break;             
++      }
++      /* start internal mcu. */
++      if(ret == 1)
++              m88ds3103_writereg(state, 0xb2, 0x00);
++              
++      release_firmware(fw);
++
++      dprintk("%s: Firmware upload %s\n", __func__,
++                      ret == 1 ? "complete" : "failed");
++
++      if(ret == 1) ret = 0;
++      
++      /* Ensure firmware is always loaded if required */
++      state->skip_fw_load = 0;
++
++      return ret;
++}
++
++
++static int m88ds3103_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      u8 data;
++
++      dprintk("%s(%d)\n", __func__, voltage);
++
++      dprintk("m88ds3103:pin_ctrl = (%02x)\n", state->config->pin_ctrl);
++      
++      if(state->config->set_voltage)
++              state->config->set_voltage(fe, voltage);
++      
++      data = m88ds3103_readreg(state, 0xa2);
++      
++        if(state->config->pin_ctrl & 0x80){ /*If control pin is assigned.*/
++              data &= ~0x03; /* bit0 V/H, bit1 off/on */
++              if(state->config->pin_ctrl & 0x02)
++                   data |= 0x02;
++
++              switch (voltage) {
++              case SEC_VOLTAGE_18:
++                   if((state->config->pin_ctrl & 0x01) == 0)
++                        data |= 0x01;
++                   break;
++              case SEC_VOLTAGE_13:
++                   if(state->config->pin_ctrl & 0x01)
++                        data |= 0x01;
++                   break;
++              case SEC_VOLTAGE_OFF:
++                   if(state->config->pin_ctrl & 0x02)
++                         data &= ~0x02;                       
++                   else
++                         data |= 0x02;
++                   break;
++               }
++        }
++
++      m88ds3103_writereg(state, 0xa2, data);
++
++      return 0;
++}
++
++static int m88ds3103_read_status(struct dvb_frontend *fe, fe_status_t* status)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      int lock = 0;
++      
++      *status = 0;
++      
++      switch (state->delivery_system){
++      case SYS_DVBS:
++              lock = m88ds3103_readreg(state, 0xd1);
++              dprintk("%s: SYS_DVBS status=%x.\n", __func__, lock);
++              
++              if ((lock & 0x07) == 0x07){
++                      /*if((m88ds3103_readreg(state, 0x0d) & 0x07) == 0x07)*/
++                              *status = FE_HAS_SIGNAL | FE_HAS_CARRIER 
++                                      | FE_HAS_VITERBI | FE_HAS_SYNC | FE_HAS_LOCK;
++                      
++              }
++              break;
++      case SYS_DVBS2:
++              lock = m88ds3103_readreg(state, 0x0d);
++              dprintk("%s: SYS_DVBS2 status=%x.\n", __func__, lock);
++
++              if ((lock & 0x8f) == 0x8f)
++                      *status = FE_HAS_SIGNAL | FE_HAS_CARRIER 
++                              | FE_HAS_VITERBI | FE_HAS_SYNC | FE_HAS_LOCK;
++                      
++              break;
++      default:
++              break;
++      }
++
++      return 0;
++}
++
++static int m88ds3103_read_ber(struct dvb_frontend *fe, u32* ber)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      u8 tmp1, tmp2, tmp3;
++      u32 ldpc_frame_cnt, pre_err_packags, code_rate_fac = 0;
++
++      dprintk("%s()\n", __func__);
++
++      switch (state->delivery_system) {
++      case SYS_DVBS:
++              m88ds3103_writereg(state, 0xf9, 0x04);
++              tmp3 = m88ds3103_readreg(state, 0xf8);
++              if ((tmp3&0x10) == 0){
++                      tmp1 = m88ds3103_readreg(state, 0xf7);
++                      tmp2 = m88ds3103_readreg(state, 0xf6);
++                      tmp3 |= 0x10;
++                      m88ds3103_writereg(state, 0xf8, tmp3);
++                      state->preBer = (tmp1<<8) | tmp2;
++              }
++              break;
++      case SYS_DVBS2:
++              tmp1 = m88ds3103_readreg(state, 0x7e) & 0x0f;
++              switch(tmp1){
++              case 0: code_rate_fac = 16008 - 80; break;
++              case 1: code_rate_fac = 21408 - 80; break;
++              case 2: code_rate_fac = 25728 - 80; break;
++              case 3: code_rate_fac = 32208 - 80; break;
++              case 4: code_rate_fac = 38688 - 80; break;
++              case 5: code_rate_fac = 43040 - 80; break;
++              case 6: code_rate_fac = 48408 - 80; break;
++              case 7: code_rate_fac = 51648 - 80; break;
++              case 8: code_rate_fac = 53840 - 80; break;
++              case 9: code_rate_fac = 57472 - 80; break;
++              case 10: code_rate_fac = 58192 - 80; break;
++              }
++              
++              tmp1 = m88ds3103_readreg(state, 0xd7) & 0xff;
++              tmp2 = m88ds3103_readreg(state, 0xd6) & 0xff;
++              tmp3 = m88ds3103_readreg(state, 0xd5) & 0xff;           
++              ldpc_frame_cnt = (tmp1 << 16) | (tmp2 << 8) | tmp3;
++
++              tmp1 = m88ds3103_readreg(state, 0xf8) & 0xff;
++              tmp2 = m88ds3103_readreg(state, 0xf7) & 0xff;
++              pre_err_packags = tmp1<<8 | tmp2;
++              
++              if (ldpc_frame_cnt > 1000){
++                      m88ds3103_writereg(state, 0xd1, 0x01);
++                      m88ds3103_writereg(state, 0xf9, 0x01);
++                      m88ds3103_writereg(state, 0xf9, 0x00);
++                      m88ds3103_writereg(state, 0xd1, 0x00);
++                      state->preBer = pre_err_packags;
++              }                               
++              break;
++      default:
++              break;
++      }
++      *ber = state->preBer;
++      
++      return 0;
++}
++
++static int m88ds3103_read_signal_strength(struct dvb_frontend *fe,
++                                              u16 *signal_strength)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      u16 gain;
++      u8 gain1, gain2, gain3 = 0;
++
++      dprintk("%s()\n", __func__);
++
++      gain1 = m88ds3103_tuner_readreg(state, 0x3d) & 0x1f;
++      dprintk("%s: gain1 = 0x%02x \n", __func__, gain1);
++      
++      if (gain1 > 15) gain1 = 15;
++      gain2 = m88ds3103_tuner_readreg(state, 0x21) & 0x1f;
++      dprintk("%s: gain2 = 0x%02x \n", __func__, gain2);
++      
++      if(state->tuner_id == TS2022_ID){
++              gain3 = (m88ds3103_tuner_readreg(state, 0x66)>>3) & 0x07;
++              dprintk("%s: gain3 = 0x%02x \n", __func__, gain3);
++              
++              if (gain2 > 16) gain2 = 16;
++              if (gain2 < 2) gain2 = 2;                       
++              if (gain3 > 6) gain3 = 6;
++      }else{
++              if (gain2 > 13) gain2 = 13;
++              gain3 = 0;
++      }
++
++      gain = gain1*23 + gain2*35 + gain3*29;
++      *signal_strength = 60000 - gain*55;
++
++      return 0;
++}
++
++
++static int m88ds3103_read_snr(struct dvb_frontend *fe, u16 *p_snr)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      u8 val, npow1, npow2, spow1, cnt;
++      u16 tmp, snr;
++      u32 npow, spow, snr_total;      
++      static const u16 mes_log10[] ={
++              0,      3010,   4771,   6021,   6990,   7781,   8451,   9031,   9542,   10000,
++              10414,  10792,  11139,  11461,  11761,  12041,  12304,  12553,  12788,  13010,
++              13222,  13424,  13617,  13802,  13979,  14150,  14314,  14472,  14624,  14771,
++              14914,  15052,  15185,  15315,  15441,  15563,  15682,  15798,  15911,  16021,
++              16128,  16232,  16335,  16435,  16532,  16628,  16721,  16812,  16902,  16990,
++              17076,  17160,  17243,  17324,  17404,  17482,  17559,  17634,  17709,  17782,
++              17853,  17924,  17993,  18062,  18129,  18195,  18261,  18325,  18388,  18451,
++              18513,  18573,  18633,  18692,  18751,  18808,  18865,  18921,  18976,  19031
++      };
++      static const u16 mes_loge[] ={
++              0,      6931,   10986,  13863,  16094,  17918,  19459,  20794,  21972,  23026,
++              23979,  24849,  25649,  26391,  27081,  27726,  28332,  28904,  29444,  29957,
++              30445,  30910,  31355,  31781,  32189,  32581,  32958,  33322,  33673,  34012,
++              34340,  34657,
++      };
++
++      dprintk("%s()\n", __func__);
++
++      snr = 0;
++      
++      switch (state->delivery_system){
++      case SYS_DVBS:
++              cnt = 10; snr_total = 0;
++              while(cnt > 0){
++                      val = m88ds3103_readreg(state, 0xff);
++                      snr_total += val;
++                      cnt--;
++              }
++              tmp = (u16)(snr_total/80);
++              if(tmp > 0){
++                      if (tmp > 32) tmp = 32;
++                      snr = (mes_loge[tmp - 1] * 100) / 45;
++              }else{
++                      snr = 0;
++              }
++              break;
++      case SYS_DVBS2:
++              cnt  = 10; npow = 0; spow = 0;
++              while(cnt >0){
++                      npow1 = m88ds3103_readreg(state, 0x8c) & 0xff;
++                      npow2 = m88ds3103_readreg(state, 0x8d) & 0xff;
++                      npow += (((npow1 & 0x3f) + (u16)(npow2 << 6)) >> 2);
++
++                      spow1 = m88ds3103_readreg(state, 0x8e) & 0xff;
++                      spow += ((spow1 * spow1) >> 1);
++                      cnt--;
++              }
++              npow /= 10; spow /= 10;
++              if(spow == 0){
++                      snr = 0;
++              }else if(npow == 0){
++                      snr = 19;
++              }else{
++                      if(spow > npow){
++                              tmp = (u16)(spow / npow);
++                              if (tmp > 80) tmp = 80;
++                              snr = mes_log10[tmp - 1]*3;
++                      }else{
++                              tmp = (u16)(npow / spow);
++                              if (tmp > 80) tmp = 80;
++                              snr = -(mes_log10[tmp - 1] / 1000);
++                      }
++              }                       
++              break;
++      default:
++              break;
++      }
++      *p_snr = snr;
++
++      return 0;
++}
++
++
++static int m88ds3103_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      u8 tmp1, tmp2, tmp3, data;
++
++      dprintk("%s()\n", __func__);
++
++      switch (state->delivery_system) {
++      case SYS_DVBS:
++              data = m88ds3103_readreg(state, 0xf8);
++              data |= 0x40;
++              m88ds3103_writereg(state, 0xf8, data);          
++              tmp1 = m88ds3103_readreg(state, 0xf5);
++              tmp2 = m88ds3103_readreg(state, 0xf4);
++              *ucblocks = (tmp1 <<8) | tmp2;          
++              data &= ~0x20;
++              m88ds3103_writereg(state, 0xf8, data);
++              data |= 0x20;
++              m88ds3103_writereg(state, 0xf8, data);
++              data &= ~0x40;
++              m88ds3103_writereg(state, 0xf8, data);
++              break;
++      case SYS_DVBS2:
++              tmp1 = m88ds3103_readreg(state, 0xda);
++              tmp2 = m88ds3103_readreg(state, 0xd9);
++              tmp3 = m88ds3103_readreg(state, 0xd8);
++              *ucblocks = (tmp1 <<16)|(tmp2 <<8)|tmp3;
++              data = m88ds3103_readreg(state, 0xd1);
++              data |= 0x01;
++              m88ds3103_writereg(state, 0xd1, data);
++              data &= ~0x01;
++              m88ds3103_writereg(state, 0xd1, data);
++              break;
++      default:
++              break;
++      }
++      return 0;
++}
++
++static int m88ds3103_set_tone(struct dvb_frontend *fe, fe_sec_tone_mode_t tone)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      u8 data_a1, data_a2;
++
++      dprintk("%s(%d)\n", __func__, tone);
++      if ((tone != SEC_TONE_ON) && (tone != SEC_TONE_OFF)) {
++              printk(KERN_ERR "%s: Invalid, tone=%d\n", __func__, tone);
++              return -EINVAL;
++      }
++
++      data_a1 = m88ds3103_readreg(state, 0xa1);
++      data_a2 = m88ds3103_readreg(state, 0xa2);
++      if(state->demod_id == DS3103_ID)
++              data_a2 &= 0xdf; /* Normal mode */
++      switch (tone) {
++      case SEC_TONE_ON:
++              dprintk("%s: SEC_TONE_ON\n", __func__);
++              data_a1 |= 0x04;
++              data_a1 &= ~0x03;
++              data_a1 &= ~0x40;
++              data_a2 &= ~0xc0;
++              break;
++      case SEC_TONE_OFF:
++              dprintk("%s: SEC_TONE_OFF\n", __func__);
++              data_a2 &= ~0xc0;
++              data_a2 |= 0x80;
++              break;
++      }
++      m88ds3103_writereg(state, 0xa2, data_a2);
++      m88ds3103_writereg(state, 0xa1, data_a1);
++      return 0;
++}
++
++static int m88ds3103_send_diseqc_msg(struct dvb_frontend *fe,
++                              struct dvb_diseqc_master_cmd *d)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      int i, ret = 0;
++      u8 tmp, time_out;
++
++      /* Dump DiSEqC message */
++      if (debug) {
++              printk(KERN_INFO "m88ds3103: %s(", __func__);
++              for (i = 0 ; i < d->msg_len ;) {
++                      printk(KERN_INFO "0x%02x", d->msg[i]);
++                      if (++i < d->msg_len)
++                              printk(KERN_INFO ", ");
++              }
++      }
++
++      tmp = m88ds3103_readreg(state, 0xa2);
++      tmp &= ~0xc0;
++      if(state->demod_id == DS3103_ID)
++              tmp &= ~0x20;
++      m88ds3103_writereg(state, 0xa2, tmp);
++      
++      for (i = 0; i < d->msg_len; i ++)
++              m88ds3103_writereg(state, (0xa3+i), d->msg[i]);
++
++      tmp = m88ds3103_readreg(state, 0xa1);   
++      tmp &= ~0x38;
++      tmp &= ~0x40;
++      tmp |= ((d->msg_len-1) << 3) | 0x07;
++      tmp &= ~0x80;
++      m88ds3103_writereg(state, 0xa1, tmp);
++      /*      1.5 * 9 * 8     = 108ms */
++      time_out = 150;
++      while (time_out > 0){
++              msleep(10);
++              time_out -= 10;
++              tmp = m88ds3103_readreg(state, 0xa1);           
++              if ((tmp & 0x40) == 0)
++                      break;
++      }
++      if (time_out == 0){
++              tmp = m88ds3103_readreg(state, 0xa1);
++              tmp &= ~0x80;
++              tmp |= 0x40;
++              m88ds3103_writereg(state, 0xa1, tmp);
++              ret = 1;
++      }
++      tmp = m88ds3103_readreg(state, 0xa2);
++      tmp &= ~0xc0;
++      tmp |= 0x80;
++      m88ds3103_writereg(state, 0xa2, tmp);   
++      return ret;
++}
++
++
++static int m88ds3103_diseqc_send_burst(struct dvb_frontend *fe,
++                                      fe_sec_mini_cmd_t burst)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      u8      val, time_out;
++      
++      dprintk("%s()\n", __func__);
++
++      val = m88ds3103_readreg(state, 0xa2);
++      val &= ~0xc0;
++      if(state->demod_id == DS3103_ID)
++              val &= 0xdf; /* Normal mode */
++      m88ds3103_writereg(state, 0xa2, val);
++      /* DiSEqC burst */
++      if (burst == SEC_MINI_B)
++              m88ds3103_writereg(state, 0xa1, 0x01);
++      else
++              m88ds3103_writereg(state, 0xa1, 0x02);
++
++      msleep(13);
++
++      time_out = 5;
++      do{
++              val = m88ds3103_readreg(state, 0xa1);
++              if ((val & 0x40) == 0)
++                      break;
++              msleep(1);
++              time_out --;
++      } while (time_out > 0);
++
++      val = m88ds3103_readreg(state, 0xa2);
++      val &= ~0xc0;
++      val |= 0x80;
++      m88ds3103_writereg(state, 0xa2, val);
++      
++      return 0;
++}
++
++static void m88ds3103_release(struct dvb_frontend *fe)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++
++      dprintk("%s\n", __func__);
++      kfree(state);
++}
++
++static int m88ds3103_check_id(struct m88ds3103_state *state)
++{
++      int val_00, val_01;
++      
++      /*check demod id*/
++      val_01 = m88ds3103_readreg(state, 0x01);
++      printk(KERN_INFO "DS3000 chip version: %x attached.\n", val_01);
++                      
++      if(val_01 == 0xD0)
++              state->demod_id = DS3103_ID;
++      else if(val_01 == 0xC0)
++              state->demod_id = DS3000_ID;
++      else
++              state->demod_id = UNKNOW_ID;
++              
++      /*check tuner id*/
++      val_00 = m88ds3103_tuner_readreg(state, 0x00);
++      printk(KERN_INFO "TS202x chip version[1]: %x attached.\n", val_00);
++      val_00 &= 0x03;
++      if(val_00 == 0)
++      {
++              m88ds3103_tuner_writereg(state, 0x00, 0x01);
++              msleep(3);              
++      }
++      m88ds3103_tuner_writereg(state, 0x00, 0x03);
++      msleep(5);
++      
++      val_00 = m88ds3103_tuner_readreg(state, 0x00);
++      printk(KERN_INFO "TS202x chip version[2]: %x attached.\n", val_00);
++      val_00 &= 0xff;
++      if((val_00 == 0x01) || (val_00 == 0x41) || (val_00 == 0x81))
++              state->tuner_id = TS2020_ID;
++      else if(((val_00 & 0xc0)== 0xc0) || (val_00 == 0x83))
++              state->tuner_id = TS2022_ID;
++      else
++              state->tuner_id = UNKNOW_ID;
++                      
++      return state->demod_id; 
++}
++
++static struct dvb_frontend_ops m88ds3103_ops;
++static int m88ds3103_initilaze(struct dvb_frontend *fe);
++
++struct dvb_frontend *dvbsky_m88ds3103_attach(const struct dvbsky_m88ds3103_config *config,
++                                  struct i2c_adapter *i2c)
++{
++      struct m88ds3103_state *state = NULL;
++
++      dprintk("%s\n", __func__);
++
++      /* allocate memory for the internal state */
++      state = kzalloc(sizeof(struct m88ds3103_state), GFP_KERNEL);
++      if (state == NULL) {
++              printk(KERN_ERR "Unable to kmalloc\n");
++              goto error2;
++      }
++
++      state->config = config;
++      state->i2c = i2c;
++      state->preBer = 0xffff;
++      state->delivery_system = SYS_DVBS; /*Default to DVB-S.*/
++      
++      /* check demod id */
++      if(m88ds3103_check_id(state) == UNKNOW_ID){
++              printk(KERN_ERR "Unable to find Montage chip\n");
++              goto error3;
++      }
++
++      memcpy(&state->frontend.ops, &m88ds3103_ops,
++                      sizeof(struct dvb_frontend_ops));
++      state->frontend.demodulator_priv = state;
++      
++      m88ds3103_initilaze(&state->frontend);
++      
++      return &state->frontend;
++
++error3:
++      kfree(state);
++error2:
++      return NULL;
++}
++EXPORT_SYMBOL(dvbsky_m88ds3103_attach);
++
++static int m88ds3103_set_carrier_offset(struct dvb_frontend *fe,
++                                      s32 carrier_offset_khz)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      s32 tmp;
++
++      tmp = carrier_offset_khz;
++      tmp *= 65536;
++      
++      tmp = (2*tmp + MT_FE_MCLK_KHZ) / (2*MT_FE_MCLK_KHZ);
++
++      if (tmp < 0)
++              tmp += 65536;
++
++      m88ds3103_writereg(state, 0x5f, tmp >> 8);
++      m88ds3103_writereg(state, 0x5e, tmp & 0xff);
++
++      return 0;
++}
++
++static int m88ds3103_set_symrate(struct dvb_frontend *fe)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      struct dtv_frontend_properties *c = &fe->dtv_property_cache;
++      u16 value;
++      
++      value = (((c->symbol_rate / 1000) << 15) + (MT_FE_MCLK_KHZ / 4)) / (MT_FE_MCLK_KHZ / 2);
++      m88ds3103_writereg(state, 0x61, value & 0x00ff);
++      m88ds3103_writereg(state, 0x62, (value & 0xff00) >> 8);
++
++      return 0;
++}
++
++static int m88ds3103_set_CCI(struct dvb_frontend *fe)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      u8 tmp;
++
++      tmp = m88ds3103_readreg(state, 0x56);
++      tmp &= ~0x01;
++      m88ds3103_writereg(state, 0x56, tmp);
++
++      tmp = m88ds3103_readreg(state, 0x76);
++      tmp &= ~0x80;
++      m88ds3103_writereg(state, 0x76, tmp);
++
++      return 0;
++}
++
++static int m88ds3103_init_reg(struct m88ds3103_state *state, const u8 *p_reg_tab, u32 size)
++{
++      u32 i;
++      
++      for(i = 0; i < size; i+=2)
++              m88ds3103_writereg(state, p_reg_tab[i], p_reg_tab[i+1]);
++              
++      return 0;
++}
++
++static int m88ds3103_get_locked_sym_rate(struct m88ds3103_state *state, u32 *sym_rate_KSs)
++{
++      u16     tmp;
++      u32     sym_rate_tmp;
++      u8      val_0x6d, val_0x6e;
++
++      val_0x6d = m88ds3103_readreg(state, 0x6d);
++      val_0x6e = m88ds3103_readreg(state, 0x6e);
++
++      tmp = (u16)((val_0x6e<<8) | val_0x6d);
++
++      sym_rate_tmp = (u32)(tmp * MT_FE_MCLK_KHZ);
++      sym_rate_tmp = (u32)(sym_rate_tmp / (1<<16));
++      *sym_rate_KSs = sym_rate_tmp;
++
++      return 0;
++}
++
++static int m88ds3103_get_channel_info(struct m88ds3103_state *state, u8 *p_mode, u8 *p_coderate)
++{
++      u8      tmp, val_0x7E;
++
++      if(state->delivery_system == SYS_DVBS2){
++              val_0x7E = m88ds3103_readreg(state, 0x7e);
++              tmp = (u8)((val_0x7E&0xC0) >> 6);
++              *p_mode = tmp;
++              tmp = (u8)(val_0x7E & 0x0f);
++              *p_coderate = tmp;
++      } else {
++              *p_mode = 0;
++              tmp = m88ds3103_readreg(state, 0xe6);           
++              tmp = (u8)(tmp >> 5);
++              *p_coderate = tmp;
++      }
++      
++      return 0;
++}
++
++static int m88ds3103_set_clock_ratio(struct m88ds3103_state *state)
++{
++      u8      val, mod_fac, tmp1, tmp2;
++      u32     input_datarate, locked_sym_rate_KSs;
++      u32 MClk_KHz = 96000;
++      u8 mod_mode, code_rate, divid_ratio = 0;
++
++      locked_sym_rate_KSs = 0;
++      m88ds3103_get_locked_sym_rate(state, &locked_sym_rate_KSs);
++      if(locked_sym_rate_KSs == 0)
++              return 0;
++
++      m88ds3103_get_channel_info(state, &mod_mode, &code_rate);
++
++      if (state->delivery_system == SYS_DVBS2)
++      {
++              switch(mod_mode) {
++                      case 1: mod_fac = 3; break;
++                      case 2: mod_fac = 4; break;
++                      case 3: mod_fac = 5; break;
++                      default: mod_fac = 2; break;
++              }
++
++              switch(code_rate) {
++                      case 0: input_datarate = locked_sym_rate_KSs*mod_fac/8/4; break;
++                      case 1: input_datarate = locked_sym_rate_KSs*mod_fac/8/3;       break;
++                      case 2: input_datarate = locked_sym_rate_KSs*mod_fac*2/8/5;     break;
++                      case 3: input_datarate = locked_sym_rate_KSs*mod_fac/8/2;       break;
++                      case 4: input_datarate = locked_sym_rate_KSs*mod_fac*3/8/5;     break;
++                      case 5: input_datarate = locked_sym_rate_KSs*mod_fac*2/8/3;     break;
++                      case 6: input_datarate = locked_sym_rate_KSs*mod_fac*3/8/4;     break;
++                      case 7: input_datarate = locked_sym_rate_KSs*mod_fac*4/8/5;     break;
++                      case 8: input_datarate = locked_sym_rate_KSs*mod_fac*5/8/6;     break;
++                      case 9: input_datarate = locked_sym_rate_KSs*mod_fac*8/8/9;     break;
++                      case 10: input_datarate = locked_sym_rate_KSs*mod_fac*9/8/10; break;
++                      default: input_datarate = locked_sym_rate_KSs*mod_fac*2/8/3; break;
++              }
++
++              if(state->demod_id == DS3000_ID)
++                      input_datarate = input_datarate * 115 / 100;
++
++              if(input_datarate < 4800)  {tmp1 = 15;tmp2 = 15;} //4.8MHz         TS clock
++              else if(input_datarate < 4966)  {tmp1 = 14;tmp2 = 15;} //4.966MHz  TS clock
++              else if(input_datarate < 5143)  {tmp1 = 14;tmp2 = 14;} //5.143MHz  TS clock
++              else if(input_datarate < 5333)  {tmp1 = 13;tmp2 = 14;} //5.333MHz  TS clock
++              else if(input_datarate < 5538)  {tmp1 = 13;tmp2 = 13;} //5.538MHz  TS clock
++              else if(input_datarate < 5760)  {tmp1 = 12;tmp2 = 13;} //5.76MHz   TS clock       allan 0809
++              else if(input_datarate < 6000)  {tmp1 = 12;tmp2 = 12;} //6MHz      TS clock
++              else if(input_datarate < 6260)  {tmp1 = 11;tmp2 = 12;} //6.26MHz   TS clock
++              else if(input_datarate < 6545)  {tmp1 = 11;tmp2 = 11;} //6.545MHz  TS clock
++              else if(input_datarate < 6857)  {tmp1 = 10;tmp2 = 11;} //6.857MHz  TS clock
++              else if(input_datarate < 7200)  {tmp1 = 10;tmp2 = 10;} //7.2MHz    TS clock
++              else if(input_datarate < 7578)  {tmp1 = 9;tmp2 = 10;}  //7.578MHz  TS clock
++              else if(input_datarate < 8000)  {tmp1 = 9;tmp2 = 9;}   //8MHz      TS clock
++              else if(input_datarate < 8470)  {tmp1 = 8;tmp2 = 9;}   //8.47MHz   TS clock
++              else if(input_datarate < 9000)  {tmp1 = 8;tmp2 = 8;}   //9MHz      TS clock
++              else if(input_datarate < 9600)  {tmp1 = 7;tmp2 = 8;}   //9.6MHz    TS clock
++              else if(input_datarate < 10285) {tmp1 = 7;tmp2 = 7;}   //10.285MHz TS clock
++              else if(input_datarate < 12000) {tmp1 = 6;tmp2 = 6;}   //12MHz     TS clock
++              else if(input_datarate < 14400) {tmp1 = 5;tmp2 = 5;}   //14.4MHz   TS clock
++              else if(input_datarate < 18000) {tmp1 = 4;tmp2 = 4;}   //18MHz     TS clock
++              else                                                    {tmp1 = 3;tmp2 = 3;}   //24MHz     TS clock
++
++              if(state->demod_id == DS3000_ID) {
++                      val = (u8)((tmp1<<4) + tmp2);
++                      m88ds3103_writereg(state, 0xfe, val);
++              } else {
++                      tmp1 = m88ds3103_readreg(state, 0x22);
++                      tmp2 = m88ds3103_readreg(state, 0x24);
++
++                      tmp1 >>= 6;
++                      tmp1 &= 0x03;
++                      tmp2 >>= 6;
++                      tmp2 &= 0x03;
++
++                      if((tmp1 == 0x00) && (tmp2 == 0x01))
++                              MClk_KHz = 144000;
++                      else if((tmp1 == 0x00) && (tmp2 == 0x03))
++                              MClk_KHz = 72000;
++                      else if((tmp1 == 0x01) && (tmp2 == 0x01))
++                              MClk_KHz = 115200;
++                      else if((tmp1 == 0x02) && (tmp2 == 0x01))
++                              MClk_KHz = 96000;
++                      else if((tmp1 == 0x03) && (tmp2 == 0x00))
++                              MClk_KHz = 192000;
++                      else
++                              return 0;
++
++                      if(input_datarate < 5200) /*Max. 2011-12-23 11:55*/
++                              input_datarate = 5200;
++                              
++                      if(input_datarate != 0)
++                              divid_ratio = (u8)(MClk_KHz / input_datarate);
++                      else
++                              divid_ratio = 0xFF;
++
++                      if(divid_ratio > 128)
++                              divid_ratio = 128;
++
++                      if(divid_ratio < 2)
++                              divid_ratio = 2;
++
++                      tmp1 = (u8)(divid_ratio / 2);
++                      tmp2 = (u8)(divid_ratio / 2);
++
++                      if((divid_ratio % 2) != 0)
++                              tmp2 += 1;
++
++                      tmp1 -= 1;
++                      tmp2 -= 1;
++
++                      tmp1 &= 0x3f;
++                      tmp2 &= 0x3f;
++
++                      val = m88ds3103_readreg(state, 0xfe);
++                      val &= 0xF0;
++                      val |= (tmp2 >> 2) & 0x0f;
++                      m88ds3103_writereg(state, 0xfe, val);
++
++                      val = (u8)((tmp2 & 0x03) << 6); 
++                      val |= tmp1;
++                      m88ds3103_writereg(state, 0xea, val);
++              }
++      } else {
++              mod_fac = 2;
++
++              switch(code_rate) {
++                      case 4: input_datarate = locked_sym_rate_KSs*mod_fac/2/8;       break;
++                      case 3: input_datarate = locked_sym_rate_KSs*mod_fac*2/3/8;     break;
++                      case 2: input_datarate = locked_sym_rate_KSs*mod_fac*3/4/8;     break;
++                      case 1: input_datarate = locked_sym_rate_KSs*mod_fac*5/6/8;     break;
++                      case 0: input_datarate = locked_sym_rate_KSs*mod_fac*7/8/8;     break;
++                      default: input_datarate = locked_sym_rate_KSs*mod_fac*3/4/8;    break;
++              }
++
++              if(state->demod_id == DS3000_ID)
++                      input_datarate = input_datarate * 115 / 100;
++
++              if(input_datarate < 6857)               {tmp1 = 7;tmp2 = 7;} //6.857MHz     TS clock
++              else if(input_datarate < 7384)  {tmp1 = 6;tmp2 = 7;} //7.384MHz     TS clock
++              else if(input_datarate < 8000)  {tmp1 = 6;tmp2 = 6;} //8MHz             TS clock
++              else if(input_datarate < 8727)  {tmp1 = 5;tmp2 = 6;} //8.727MHz         TS clock
++              else if(input_datarate < 9600)  {tmp1 = 5;tmp2 = 5;} //9.6MHz           TS clock
++              else if(input_datarate < 10666) {tmp1 = 4;tmp2 = 5;} //10.666MHz        TS clock
++              else if(input_datarate < 12000) {tmp1 = 4;tmp2 = 4;} //12MHz            TS clock
++              else if(input_datarate < 13714) {tmp1 = 3;tmp2 = 4;} //13.714MHz        TS clock
++              else if(input_datarate < 16000) {tmp1 = 3;tmp2 = 3;} //16MHz            TS clock
++              else if(input_datarate < 19200) {tmp1 = 2;tmp2 = 3;} //19.2MHz          TS clock
++              else                                                    {tmp1 = 2;tmp2 = 2;} //24MHz            TS clock
++
++              if(state->demod_id == DS3000_ID) {
++                      val = m88ds3103_readreg(state, 0xfe);
++                      val &= 0xc0;
++                      val |= ((u8)((tmp1<<3) + tmp2));
++                      m88ds3103_writereg(state, 0xfe, val);
++              } else {
++                      if(input_datarate < 5200) /*Max. 2011-12-23 11:55*/
++                              input_datarate = 5200;
++                      
++                      if(input_datarate != 0)
++                              divid_ratio = (u8)(MClk_KHz / input_datarate);
++                      else
++                              divid_ratio = 0xFF;
++
++                      if(divid_ratio > 128)
++                              divid_ratio = 128;
++
++                      if(divid_ratio < 2)
++                              divid_ratio = 2;
++
++                      tmp1 = (u8)(divid_ratio / 2);
++                      tmp2 = (u8)(divid_ratio / 2);
++
++                      if((divid_ratio % 2) != 0)
++                              tmp2 += 1;
++
++                      tmp1 -= 1;
++                      tmp2 -= 1;
++
++                      tmp1 &= 0x3f;
++                      tmp2 &= 0x3f;
++
++                      val = m88ds3103_readreg(state, 0xfe);
++                      val &= 0xF0;
++                      val |= (tmp2 >> 2) & 0x0f;
++                      m88ds3103_writereg(state, 0xfe, val);
++                      
++                      val = (u8)((tmp2 & 0x03) << 6);
++                      val |= tmp1;
++                      m88ds3103_writereg(state, 0xea, val);
++              }
++      }
++      return 0;
++}
++
++static int m88ds3103_demod_connect(struct dvb_frontend *fe, s32 carrier_offset_khz) 
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      struct dtv_frontend_properties *c = &fe->dtv_property_cache;
++      u16 value;
++      u8 val1,val2,data;
++      
++      dprintk("connect delivery system = %d\n", state->delivery_system);
++      
++      /* ds3000 global reset */
++      m88ds3103_writereg(state, 0x07, 0x80);
++      m88ds3103_writereg(state, 0x07, 0x00);
++      /* ds3000 build-in uC reset */
++      m88ds3103_writereg(state, 0xb2, 0x01);
++      /* ds3000 software reset */
++      m88ds3103_writereg(state, 0x00, 0x01);
++
++      switch (state->delivery_system) {
++      case SYS_DVBS:
++              /* initialise the demod in DVB-S mode */
++              if(state->demod_id == DS3000_ID){
++                      m88ds3103_init_reg(state, ds3000_dvbs_init_tab, sizeof(ds3000_dvbs_init_tab));
++                      
++                      value = m88ds3103_readreg(state, 0xfe);
++                      value &= 0xc0;
++                      value |= 0x1b;
++                      m88ds3103_writereg(state, 0xfe, value);
++                      
++                      if(state->config->ci_mode)
++                              val1 = 0x80;
++                      else if(state->config->ts_mode)
++                              val1 = 0x60;
++                      else
++                              val1 = 0x20;
++                      m88ds3103_writereg(state, 0xfd, val1);
++                      
++              }else if(state->demod_id == DS3103_ID){
++                      m88ds3103_init_reg(state, ds3103_dvbs_init_tab, sizeof(ds3103_dvbs_init_tab));
++                      
++                      /* set ts clock */
++                      if(state->config->ci_mode == 2){
++                              val1 = 6; val2 = 6;
++                      }else if(state->config->ts_mode == 0)   {
++                              val1 = 3; val2 = 3;
++                      }else{
++                              val1 = 0; val2 = 0;
++                      }
++                      val1 -= 1; val2 -= 1;
++                      val1 &= 0x3f; val2 &= 0x3f;
++                      data = m88ds3103_readreg(state, 0xfe);
++                      data &= 0xf0;
++                      data |= (val2 >> 2) & 0x0f;
++                      m88ds3103_writereg(state, 0xfe, data);
++                      data = (val2 & 0x03) << 6;
++                      data |= val1;
++                      m88ds3103_writereg(state, 0xea, data);
++                      
++                      m88ds3103_writereg(state, 0x4d, 0xfd & m88ds3103_readreg(state, 0x4d));
++                      m88ds3103_writereg(state, 0x30, 0xef & m88ds3103_readreg(state, 0x30));
++                      
++                      /* set master clock */
++                      val1 = m88ds3103_readreg(state, 0x22);
++                      val2 = m88ds3103_readreg(state, 0x24);
++                      
++                      val1 &= 0x3f;
++                      val2 &= 0x3f;
++                      val1 |= 0x80;
++                      val2 |= 0x40;
++
++                      m88ds3103_writereg(state, 0x22, val1);
++                      m88ds3103_writereg(state, 0x24, val2);  
++                      
++                      if(state->config->ci_mode){
++                              if(state->config->ci_mode == 2)
++                                      val1 = 0x43;
++                              else
++                                      val1 = 0x03;
++                      }
++                      else if(state->config->ts_mode)
++                              val1 = 0x06;
++                      else
++                              val1 = 0x42;
++                      m88ds3103_writereg(state, 0xfd, val1);          
++              }
++              break;
++      case SYS_DVBS2:
++              /* initialise the demod in DVB-S2 mode */
++              if(state->demod_id == DS3000_ID){
++                      m88ds3103_init_reg(state, ds3000_dvbs2_init_tab, sizeof(ds3000_dvbs2_init_tab));
++              
++                      if (c->symbol_rate >= 30000000)
++                              m88ds3103_writereg(state, 0xfe, 0x54);
++                      else
++                              m88ds3103_writereg(state, 0xfe, 0x98);
++                                                              
++              }else if(state->demod_id == DS3103_ID){
++                      m88ds3103_init_reg(state, ds3103_dvbs2_init_tab, sizeof(ds3103_dvbs2_init_tab));
++
++                      /* set ts clock */
++                      if(state->config->ci_mode == 2){
++                              val1 = 6; val2 = 6;
++                      }else if(state->config->ts_mode == 0){
++                              val1 = 5; val2 = 4;
++                      }else{
++                              val1 = 0; val2 = 0;
++                      }
++                      val1 -= 1; val2 -= 1;
++                      val1 &= 0x3f; val2 &= 0x3f;
++                      data = m88ds3103_readreg(state, 0xfe);
++                      data &= 0xf0;
++                      data |= (val2 >> 2) & 0x0f;
++                      m88ds3103_writereg(state, 0xfe, data);
++                      data = (val2 & 0x03) << 6;
++                      data |= val1;
++                      m88ds3103_writereg(state, 0xea, data);
++                      
++                      m88ds3103_writereg(state, 0x4d, 0xfd & m88ds3103_readreg(state, 0x4d));
++                      m88ds3103_writereg(state, 0x30, 0xef & m88ds3103_readreg(state, 0x30));
++                      
++                      /* set master clock */
++                      val1 = m88ds3103_readreg(state, 0x22);
++                      val2 = m88ds3103_readreg(state, 0x24);
++                      
++                      val1 &= 0x3f;
++                      val2 &= 0x3f;
++                      if((state->config->ci_mode == 2) || (state->config->ts_mode == 1)){
++                              val1 |= 0x80;
++                              val2 |= 0x40;
++                      }else{
++                              if (c->symbol_rate >= 28000000){
++                                      val1 |= 0xc0;
++                              }else if (c->symbol_rate >= 18000000){
++                                      val2 |= 0x40;
++                              }else{
++                                      val1 |= 0x80;
++                                      val2 |= 0x40;
++                              }                               
++                      }
++                      m88ds3103_writereg(state, 0x22, val1);
++                      m88ds3103_writereg(state, 0x24, val2);                                  
++              }
++              
++              if(state->config->ci_mode){
++                      if(state->config->ci_mode == 2)
++                              val1 = 0x43;
++                      else
++                              val1 = 0x03;
++              }
++              else if(state->config->ts_mode)
++                      val1 = 0x06;
++              else
++                      val1 = 0x42;
++              m88ds3103_writereg(state, 0xfd, val1);
++              
++              break;
++      default:
++              return 1;
++      }
++      /* disable 27MHz clock output */
++      m88ds3103_writereg(state, 0x29, 0x80);
++      /* enable ac coupling */
++      m88ds3103_writereg(state, 0x25, 0x8a);
++
++      if ((c->symbol_rate / 1000) <= 3000){
++              m88ds3103_writereg(state, 0xc3, 0x08); /* 8 * 32 * 100 / 64 = 400*/
++              m88ds3103_writereg(state, 0xc8, 0x20);
++              m88ds3103_writereg(state, 0xc4, 0x08); /* 8 * 0 * 100 / 128 = 0*/
++              m88ds3103_writereg(state, 0xc7, 0x00);
++      }else if((c->symbol_rate / 1000) <= 10000){
++              m88ds3103_writereg(state, 0xc3, 0x08); /* 8 * 16 * 100 / 64 = 200*/
++              m88ds3103_writereg(state, 0xc8, 0x10);
++              m88ds3103_writereg(state, 0xc4, 0x08); /* 8 * 0 * 100 / 128 = 0*/
++              m88ds3103_writereg(state, 0xc7, 0x00);
++      }else{
++              m88ds3103_writereg(state, 0xc3, 0x08); /* 8 * 6 * 100 / 64 = 75*/
++              m88ds3103_writereg(state, 0xc8, 0x06);
++              m88ds3103_writereg(state, 0xc4, 0x08); /* 8 * 0 * 100 / 128 = 0*/
++              m88ds3103_writereg(state, 0xc7, 0x00);
++      }
++
++      m88ds3103_set_symrate(fe);
++      
++      m88ds3103_set_CCI(fe);
++
++      m88ds3103_set_carrier_offset(fe, carrier_offset_khz);
++              
++      /* ds3000 out of software reset */
++      m88ds3103_writereg(state, 0x00, 0x00);
++      /* start ds3000 build-in uC */
++      m88ds3103_writereg(state, 0xb2, 0x00);  
++      
++      return 0;
++}
++
++static int m88ds3103_set_frontend(struct dvb_frontend *fe)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      struct dtv_frontend_properties *c = &fe->dtv_property_cache;
++
++      int i;
++      fe_status_t status;
++      u8 lpf_mxdiv, mlpf_max, mlpf_min, nlpf, div4, capCode, changePLL;
++      s32 offset_khz, lpf_offset_KHz;
++      u16 value, ndiv, N, lpf_coeff;
++      u32 f3db, gdiv28, realFreq;
++      u8 RFgain;
++
++      dprintk("%s() ", __func__);
++      dprintk("c frequency = %d\n", c->frequency);
++      dprintk("symbol rate = %d\n", c->symbol_rate);
++      dprintk("delivery system = %d\n", c->delivery_system);
++      
++      realFreq = c->frequency;
++      lpf_offset_KHz = 0;
++      if(c->symbol_rate < 5000000){
++              lpf_offset_KHz = FREQ_OFFSET_AT_SMALL_SYM_RATE_KHz;
++              realFreq += FREQ_OFFSET_AT_SMALL_SYM_RATE_KHz;
++      }
++      
++      if (state->config->set_ts_params)
++              state->config->set_ts_params(fe, 0);
++
++      div4 = 0;
++      RFgain = 0;
++      if(state->tuner_id == TS2022_ID){
++              m88ds3103_tuner_writereg(state, 0x10, 0x0a);
++              m88ds3103_tuner_writereg(state, 0x11, 0x40);
++              if (realFreq < 1103000) {
++                      m88ds3103_tuner_writereg(state, 0x10, 0x1b);
++                      div4 = 1;
++                      ndiv = (realFreq * (6 + 8) * 4)/MT_FE_CRYSTAL_KHZ;                              
++              }else {
++                      ndiv = (realFreq * (6 + 8) * 2)/MT_FE_CRYSTAL_KHZ;
++              }
++              ndiv = ndiv + ndiv%2;
++              if(ndiv < 4095)
++                      N = ndiv - 1024;
++              else if (ndiv < 6143)
++                      N = ndiv + 1024;
++              else
++                      N = ndiv + 3072;        
++              
++              m88ds3103_tuner_writereg(state, 0x01, (N & 0x3f00) >> 8);                                                                                       
++      }else{
++              m88ds3103_tuner_writereg(state, 0x10, 0x00);                    
++              if (realFreq < 1146000){
++                      m88ds3103_tuner_writereg(state, 0x10, 0x11);
++                      div4 = 1;
++                      ndiv = (realFreq * (6 + 8) * 4) / MT_FE_CRYSTAL_KHZ;
++              }else{
++                      m88ds3103_tuner_writereg(state, 0x10, 0x01);
++                      ndiv = (realFreq * (6 + 8) * 2) / MT_FE_CRYSTAL_KHZ;
++              }
++              ndiv = ndiv + ndiv%2;
++              N = ndiv - 1024;
++              m88ds3103_tuner_writereg(state, 0x01, (N>>8)&0x0f);
++      }
++      /* set pll */
++      m88ds3103_tuner_writereg(state, 0x02, N & 0x00ff);
++      m88ds3103_tuner_writereg(state, 0x03, 0x06);
++      m88ds3103_tuner_writereg(state, 0x51, 0x0f);
++      m88ds3103_tuner_writereg(state, 0x51, 0x1f);
++      m88ds3103_tuner_writereg(state, 0x50, 0x10);
++      m88ds3103_tuner_writereg(state, 0x50, 0x00);    
++
++      if(state->tuner_id == TS2022_ID){
++              if(( realFreq >= 1650000 ) && (realFreq <= 1850000)){
++                      msleep(5);
++                      value = m88ds3103_tuner_readreg(state, 0x14);
++                      value &= 0x7f;
++                      if(value < 64){
++                              m88ds3103_tuner_writereg(state, 0x10, 0x82);
++                              m88ds3103_tuner_writereg(state, 0x11, 0x6f);
++
++                              m88ds3103_tuner_writereg(state, 0x51, 0x0f);
++                              m88ds3103_tuner_writereg(state, 0x51, 0x1f);
++                              m88ds3103_tuner_writereg(state, 0x50, 0x10);
++                              m88ds3103_tuner_writereg(state, 0x50, 0x00);
++                      }
++              }
++              msleep(5);
++              value = m88ds3103_tuner_readreg(state, 0x14);
++              value &= 0x1f;
++
++              if(value > 19){
++                      value = m88ds3103_tuner_readreg(state, 0x10);
++                      value &= 0x1d;
++                      m88ds3103_tuner_writereg(state, 0x10, value);
++              }                               
++      }else{
++              msleep(5);
++              value = m88ds3103_tuner_readreg(state, 0x66);
++              changePLL = (((value & 0x80) >> 7) != div4);
++
++              if(changePLL){
++                      m88ds3103_tuner_writereg(state, 0x10, 0x11);
++                      div4 = 1;
++                      ndiv = (realFreq * (6 + 8) * 4)/MT_FE_CRYSTAL_KHZ;
++                      ndiv = ndiv + ndiv%2;
++                      N = ndiv - 1024;
++                                      
++                      m88ds3103_tuner_writereg(state, 0x01, (N>>8) & 0x0f);
++                      m88ds3103_tuner_writereg(state, 0x02, N & 0xff);
++                      
++                      m88ds3103_tuner_writereg(state, 0x51, 0x0f);
++                      m88ds3103_tuner_writereg(state, 0x51, 0x1f);
++                      m88ds3103_tuner_writereg(state, 0x50, 0x10);
++                      m88ds3103_tuner_writereg(state, 0x50, 0x00);
++              }               
++      }
++      /*set the RF gain*/
++      if(state->tuner_id == TS2020_ID)
++              m88ds3103_tuner_writereg(state, 0x60, 0x79);
++                      
++      m88ds3103_tuner_writereg(state, 0x51, 0x17);
++      m88ds3103_tuner_writereg(state, 0x51, 0x1f);
++      m88ds3103_tuner_writereg(state, 0x50, 0x08);
++      m88ds3103_tuner_writereg(state, 0x50, 0x00);
++      msleep(5);
++
++      if(state->tuner_id == TS2020_ID){
++              RFgain = m88ds3103_tuner_readreg(state, 0x3d);
++              RFgain &= 0x0f;
++              if(RFgain < 15){
++                      if(RFgain < 4) 
++                              RFgain = 0;
++                      else
++                              RFgain = RFgain -3;
++                      value = ((RFgain << 3) | 0x01) & 0x79;
++                      m88ds3103_tuner_writereg(state, 0x60, value);
++                      m88ds3103_tuner_writereg(state, 0x51, 0x17);
++                      m88ds3103_tuner_writereg(state, 0x51, 0x1f);
++                      m88ds3103_tuner_writereg(state, 0x50, 0x08);
++                      m88ds3103_tuner_writereg(state, 0x50, 0x00);
++              }
++      }
++      
++      /* set the LPF */
++      if(state->tuner_id == TS2022_ID){
++              m88ds3103_tuner_writereg(state, 0x25, 0x00);
++              m88ds3103_tuner_writereg(state, 0x27, 0x70);
++              m88ds3103_tuner_writereg(state, 0x41, 0x09);
++              m88ds3103_tuner_writereg(state, 0x08, 0x0b);
++      }
++
++      f3db = ((c->symbol_rate / 1000) *135) / 200 + 2000;
++      f3db += lpf_offset_KHz;
++      if (f3db < 7000)
++              f3db = 7000;
++      if (f3db > 40000)
++              f3db = 40000;
++                      
++      gdiv28 = (MT_FE_CRYSTAL_KHZ / 1000 * 1694 + 500) / 1000;
++      m88ds3103_tuner_writereg(state, 0x04, gdiv28 & 0xff);
++      m88ds3103_tuner_writereg(state, 0x51, 0x1b);
++      m88ds3103_tuner_writereg(state, 0x51, 0x1f);
++      m88ds3103_tuner_writereg(state, 0x50, 0x04);
++      m88ds3103_tuner_writereg(state, 0x50, 0x00);
++      msleep(5);
++
++      value = m88ds3103_tuner_readreg(state, 0x26);
++      capCode = value & 0x3f;
++      if(state->tuner_id == TS2022_ID){
++              m88ds3103_tuner_writereg(state, 0x41, 0x0d);
++
++              m88ds3103_tuner_writereg(state, 0x51, 0x1b);
++              m88ds3103_tuner_writereg(state, 0x51, 0x1f);
++              m88ds3103_tuner_writereg(state, 0x50, 0x04);
++              m88ds3103_tuner_writereg(state, 0x50, 0x00);
++
++              msleep(2);
++
++              value = m88ds3103_tuner_readreg(state, 0x26);
++              value &= 0x3f;
++              value = (capCode + value) / 2;          
++      }
++      else
++              value = capCode;
++              
++      gdiv28 = gdiv28 * 207 / (value * 2 + 151);      
++      mlpf_max = gdiv28 * 135 / 100;
++      mlpf_min = gdiv28 * 78 / 100;
++      if (mlpf_max > 63)
++              mlpf_max = 63;
++
++      if(state->tuner_id == TS2022_ID)
++              lpf_coeff = 3200;
++      else
++              lpf_coeff = 2766;
++              
++      nlpf = (f3db * gdiv28 * 2 / lpf_coeff / (MT_FE_CRYSTAL_KHZ / 1000)  + 1) / 2 ;  
++      if (nlpf > 23) nlpf = 23;
++      if (nlpf < 1) nlpf = 1;
++
++      lpf_mxdiv = (nlpf * (MT_FE_CRYSTAL_KHZ / 1000) * lpf_coeff * 2 / f3db + 1) / 2;
++
++      if (lpf_mxdiv < mlpf_min){
++              nlpf++;
++              lpf_mxdiv = (nlpf * (MT_FE_CRYSTAL_KHZ / 1000) * lpf_coeff * 2  / f3db + 1) / 2;
++      }
++
++      if (lpf_mxdiv > mlpf_max)
++              lpf_mxdiv = mlpf_max;
++
++      m88ds3103_tuner_writereg(state, 0x04, lpf_mxdiv);
++      m88ds3103_tuner_writereg(state, 0x06, nlpf);
++      m88ds3103_tuner_writereg(state, 0x51, 0x1b);
++      m88ds3103_tuner_writereg(state, 0x51, 0x1f);
++      m88ds3103_tuner_writereg(state, 0x50, 0x04);
++      m88ds3103_tuner_writereg(state, 0x50, 0x00);
++      msleep(5);
++      
++      if(state->tuner_id == TS2022_ID){
++              msleep(2);
++              value = m88ds3103_tuner_readreg(state, 0x26);
++              capCode = value & 0x3f;
++
++              m88ds3103_tuner_writereg(state, 0x41, 0x09);
++
++              m88ds3103_tuner_writereg(state, 0x51, 0x1b);
++              m88ds3103_tuner_writereg(state, 0x51, 0x1f);
++              m88ds3103_tuner_writereg(state, 0x50, 0x04);
++              m88ds3103_tuner_writereg(state, 0x50, 0x00);
++
++              msleep(2);
++              value = m88ds3103_tuner_readreg(state, 0x26);
++              value &= 0x3f;
++              value = (capCode + value) / 2;
++
++              value = value | 0x80;
++              m88ds3103_tuner_writereg(state, 0x25, value);
++              m88ds3103_tuner_writereg(state, 0x27, 0x30);
++
++              m88ds3103_tuner_writereg(state, 0x08, 0x09);            
++      }
++
++      /* Set the BB gain */
++      m88ds3103_tuner_writereg(state, 0x51, 0x1e);
++      m88ds3103_tuner_writereg(state, 0x51, 0x1f);
++      m88ds3103_tuner_writereg(state, 0x50, 0x01);
++      m88ds3103_tuner_writereg(state, 0x50, 0x00);
++      if(state->tuner_id == TS2020_ID){
++              if(RFgain == 15){
++                      msleep(40);
++                      value = m88ds3103_tuner_readreg(state, 0x21);
++                      value &= 0x0f;
++                      if(value < 3){
++                              m88ds3103_tuner_writereg(state, 0x60, 0x61);
++                              m88ds3103_tuner_writereg(state, 0x51, 0x17);
++                              m88ds3103_tuner_writereg(state, 0x51, 0x1f);
++                              m88ds3103_tuner_writereg(state, 0x50, 0x08);
++                              m88ds3103_tuner_writereg(state, 0x50, 0x00);
++                      }                       
++              }
++      }
++      msleep(60);
++      
++      offset_khz = (ndiv) * MT_FE_CRYSTAL_KHZ
++              / (6 + 8) / (div4 + 1) / 2 - realFreq;
++
++      m88ds3103_demod_connect(fe, offset_khz+lpf_offset_KHz);
++
++      for (i = 0; i < 30 ; i++) {
++              m88ds3103_read_status(fe, &status);
++              if (status & FE_HAS_LOCK){
++                      break;
++                }
++              msleep(20);
++      }
++
++#ifdef _AUTO_S2_      
++      if((status & FE_HAS_LOCK) == 0){
++              state->delivery_system = (state->delivery_system == SYS_DVBS) ? SYS_DVBS2 : SYS_DVBS;
++              m88ds3103_demod_connect(fe, offset_khz);
++      
++              for (i = 0; i < 30 ; i++) {
++                      m88ds3103_read_status(fe, &status);
++                      if (status & FE_HAS_LOCK){
++                              break;
++                      }
++                      msleep(20);
++              }
++      }
++#else 
++      state->delivery_system = c->delivery_system;
++#endif        
++      if (status & FE_HAS_LOCK){
++              if(state->config->ci_mode == 2)
++                      m88ds3103_set_clock_ratio(state);
++              if(state->config->start_ctrl){
++                      if(state->first_lock == 0){
++                              state->config->start_ctrl(fe);
++                              state->first_lock = 1;  
++                      }
++              }               
++      }
++              
++      return 0;
++}
++
++static int m88ds3103_tune(struct dvb_frontend *fe,
++                      bool re_tune,
++                      unsigned int mode_flags,
++                      unsigned int *delay,
++                      fe_status_t *status)
++{     
++      *delay = HZ / 5;
++      
++      dprintk("%s() ", __func__);
++      dprintk("re_tune = %d\n", re_tune);
++      
++      if (re_tune) {
++              int ret = m88ds3103_set_frontend(fe);
++              if (ret)
++                      return ret;
++      }
++      
++      return m88ds3103_read_status(fe, status);
++}
++
++static enum dvbfe_algo m88ds3103_get_algo(struct dvb_frontend *fe)
++{
++      return DVBFE_ALGO_HW;
++}
++ 
++ /*
++ * Power config will reset and load initial firmware if required
++ */
++static int m88ds3103_initilaze(struct dvb_frontend *fe)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      int ret;
++
++      dprintk("%s()\n", __func__);
++      /* hard reset */
++      m88ds3103_writereg(state, 0x07, 0x80);
++      m88ds3103_writereg(state, 0x07, 0x00);
++      msleep(1);
++      
++      m88ds3103_writereg(state, 0x08, 0x01 | m88ds3103_readreg(state, 0x08));
++      msleep(1);
++
++      if(state->tuner_id == TS2020_ID){
++              /* TS2020 init */
++              m88ds3103_tuner_writereg(state, 0x42, 0x73);
++              msleep(2);
++              m88ds3103_tuner_writereg(state, 0x05, 0x01);
++              m88ds3103_tuner_writereg(state, 0x62, 0xb5);
++              m88ds3103_tuner_writereg(state, 0x07, 0x02);
++              m88ds3103_tuner_writereg(state, 0x08, 0x01);
++      }
++      else if(state->tuner_id == TS2022_ID){
++              /* TS2022 init */
++              m88ds3103_tuner_writereg(state, 0x62, 0x6c);
++              msleep(2);
++              m88ds3103_tuner_writereg(state, 0x42, 0x6c);
++              msleep(2);
++              m88ds3103_tuner_writereg(state, 0x7d, 0x9d);
++              m88ds3103_tuner_writereg(state, 0x7c, 0x9a);
++              m88ds3103_tuner_writereg(state, 0x7a, 0x76);
++
++              m88ds3103_tuner_writereg(state, 0x3b, 0x01);
++              m88ds3103_tuner_writereg(state, 0x63, 0x88);
++
++              m88ds3103_tuner_writereg(state, 0x61, 0x85);
++              m88ds3103_tuner_writereg(state, 0x22, 0x30);
++              m88ds3103_tuner_writereg(state, 0x30, 0x40);
++              m88ds3103_tuner_writereg(state, 0x20, 0x23);
++              m88ds3103_tuner_writereg(state, 0x24, 0x02);
++              m88ds3103_tuner_writereg(state, 0x12, 0xa0);    
++      }
++              
++      if(state->demod_id == DS3103_ID){
++              m88ds3103_writereg(state, 0x07, 0xe0);
++              m88ds3103_writereg(state, 0x07, 0x00);
++              msleep(1);              
++      }
++      m88ds3103_writereg(state, 0xb2, 0x01);
++      
++      /* Load the firmware if required */
++      ret = m88ds3103_load_firmware(fe);
++      if (ret != 0){
++              printk(KERN_ERR "%s: Unable initialize firmware\n", __func__);
++              return ret;
++      }
++      if(state->demod_id == DS3103_ID){
++              m88ds3103_writereg(state, 0x4d, 0xfd & m88ds3103_readreg(state, 0x4d));
++              m88ds3103_writereg(state, 0x30, 0xef & m88ds3103_readreg(state, 0x30));         
++      }
++
++      return 0;
++}
++
++/*
++ * Initialise or wake up device
++ */
++static int m88ds3103_initfe(struct dvb_frontend *fe)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++      u8 val;
++
++      dprintk("%s()\n", __func__);
++
++      /* 1st step to wake up demod */
++      m88ds3103_writereg(state, 0x08, 0x01 | m88ds3103_readreg(state, 0x08));
++      m88ds3103_writereg(state, 0x04, 0xfe & m88ds3103_readreg(state, 0x04));
++      m88ds3103_writereg(state, 0x23, 0xef & m88ds3103_readreg(state, 0x23));
++      
++      /* 2nd step to wake up tuner */
++      val = m88ds3103_tuner_readreg(state, 0x00) & 0xff;
++      if((val & 0x01) == 0){
++              m88ds3103_tuner_writereg(state, 0x00, 0x01);
++              msleep(50);
++      }
++      m88ds3103_tuner_writereg(state, 0x00, 0x03);
++      msleep(50);
++      
++      return 0;       
++}
++
++/* Put device to sleep */
++static int m88ds3103_sleep(struct dvb_frontend *fe)
++{
++      struct m88ds3103_state *state = fe->demodulator_priv;
++
++      dprintk("%s()\n", __func__);
++      
++      /* 1st step to sleep tuner */
++      m88ds3103_tuner_writereg(state, 0x00, 0x00);
++      
++      /* 2nd step to sleep demod */
++      m88ds3103_writereg(state, 0x08, 0xfe & m88ds3103_readreg(state, 0x08));
++      m88ds3103_writereg(state, 0x04, 0x01 | m88ds3103_readreg(state, 0x04));
++      m88ds3103_writereg(state, 0x23, 0x10 | m88ds3103_readreg(state, 0x23));
++      
++
++      return 0;
++}
++
++static struct dvb_frontend_ops m88ds3103_ops = {
++      .delsys = { SYS_DVBS, SYS_DVBS2},
++      .info = {
++              .name = "Montage DS3103/TS2022",
++              .type = FE_QPSK,
++              .frequency_min = 950000,
++              .frequency_max = 2150000,
++              .frequency_stepsize = 1011, /* kHz for QPSK frontends */
++              .frequency_tolerance = 5000,
++              .symbol_rate_min = 1000000,
++              .symbol_rate_max = 45000000,
++              .caps = FE_CAN_INVERSION_AUTO |
++                      FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
++                      FE_CAN_FEC_4_5 | FE_CAN_FEC_5_6 | FE_CAN_FEC_6_7 |
++                      FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
++                      FE_CAN_2G_MODULATION |
++                      FE_CAN_QPSK | FE_CAN_RECOVER
++      },
++
++      .release = m88ds3103_release,
++
++      .init = m88ds3103_initfe,
++      .sleep = m88ds3103_sleep,
++      .read_status = m88ds3103_read_status,
++      .read_ber = m88ds3103_read_ber,
++      .read_signal_strength = m88ds3103_read_signal_strength,
++      .read_snr = m88ds3103_read_snr,
++      .read_ucblocks = m88ds3103_read_ucblocks,
++      .set_tone = m88ds3103_set_tone,
++      .set_voltage = m88ds3103_set_voltage,
++      .diseqc_send_master_cmd = m88ds3103_send_diseqc_msg,
++      .diseqc_send_burst = m88ds3103_diseqc_send_burst,
++      .get_frontend_algo = m88ds3103_get_algo,
++      .tune = m88ds3103_tune,
++      .set_frontend = m88ds3103_set_frontend,
++};
++
++MODULE_DESCRIPTION("DVB Frontend module for Montage DS3103/TS2022 hardware");
++MODULE_AUTHOR("Max nibble");
++MODULE_LICENSE("GPL");
+diff --git a/drivers/media/dvb-frontends/dvbsky_m88ds3103.h b/drivers/media/dvb-frontends/dvbsky_m88ds3103.h
+new file mode 100644
+index 0000000..e2358d6
+--- /dev/null
++++ b/drivers/media/dvb-frontends/dvbsky_m88ds3103.h
+@@ -0,0 +1,54 @@
++/*
++    Montage Technology M88DS3103/M88TS2022 - DVBS/S2 Satellite demod/tuner driver
++
++    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.
++
++    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, write to the Free Software
++    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++
++#ifndef DVBSKY_M88DS3103_H
++#define DVBSKY_M88DS3103_H
++
++#include <linux/kconfig.h>
++#include <linux/dvb/frontend.h>
++
++struct dvbsky_m88ds3103_config {
++      /* the demodulator's i2c address */
++      u8 demod_address;
++      u8 ci_mode;
++      u8 pin_ctrl;
++      u8 ts_mode; /* 0: Parallel, 1: Serial */
++      u8 tuner_readstops;
++
++      /* Set device param to start dma */
++      int (*set_ts_params)(struct dvb_frontend *fe, int is_punctured);
++    /* Start to transfer data */
++    int (*start_ctrl)(struct dvb_frontend *fe);
++    /* Set LNB voltage */
++    int (*set_voltage)(struct dvb_frontend* fe, fe_sec_voltage_t voltage);
++};
++
++#if IS_ENABLED(CONFIG_DVB_DVBSKY_M88DS3103)
++extern struct dvb_frontend *dvbsky_m88ds3103_attach(
++       const struct dvbsky_m88ds3103_config *config,
++       struct i2c_adapter *i2c);
++#else
++static inline struct dvb_frontend *dvbsky_m88ds3103_attach(
++       const struct dvbsky_m88ds3103_config *config,
++       struct i2c_adapter *i2c)
++{
++      printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
++      return NULL;
++}
++#endif /* CONFIG_DVB_DVBSKY_M88DS3103 */
++#endif /* DVBSKY_M88DS3103_H */
+diff --git a/drivers/media/dvb-frontends/dvbsky_m88ds3103_priv.h b/drivers/media/dvb-frontends/dvbsky_m88ds3103_priv.h
+new file mode 100644
+index 0000000..9966931
+--- /dev/null
++++ b/drivers/media/dvb-frontends/dvbsky_m88ds3103_priv.h
+@@ -0,0 +1,403 @@
++/*
++    Montage Technology M88DS3103/M88TS2022 - DVBS/S2 Satellite demod/tuner driver
++
++    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.
++
++    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, write to the Free Software
++    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++
++#ifndef DVBSKY_M88DS3103_PRIV_H
++#define DVBSKY_M88DS3103_PRIV_H
++
++#define FW_DOWN_SIZE 32
++#define FW_DOWN_LOOP (8192/FW_DOWN_SIZE)
++#define DS3103_DEFAULT_FIRMWARE "dvb-fe-ds3103.fw"
++#define DS3000_DEFAULT_FIRMWARE "dvb-fe-ds300x.fw"
++#define MT_FE_MCLK_KHZ 96000 /* in kHz */
++#define MT_FE_CRYSTAL_KHZ   27000 /* in kHz */
++#define FREQ_OFFSET_AT_SMALL_SYM_RATE_KHz 3000
++#define DS3000_ID     0x3000
++#define DS3103_ID     0x3103
++#define TS2020_ID     0x2020
++#define TS2022_ID     0x2022
++#define UNKNOW_ID     0x0000
++
++struct m88ds3103_state {
++      struct i2c_adapter *i2c;
++      const struct dvbsky_m88ds3103_config *config;
++      
++      struct dvb_frontend frontend;
++      
++      u32 preBer;
++      u8 skip_fw_load;        
++      u8 first_lock; /* The first time of signal lock */
++      u16 demod_id; /* demod chip type */
++      u16 tuner_id; /* tuner chip type */
++      fe_delivery_system_t delivery_system;
++};
++
++/* For M88DS3103 demod dvbs mode.*/
++static u8 ds3103_dvbs_init_tab[] = {
++      0x23, 0x07,
++      0x08, 0x03,
++      0x0c, 0x02,
++      0x21, 0x54,
++      0x25, 0x82,
++      0x27, 0x31,
++      0x30, 0x08,
++      0x31, 0x40,
++      0x32, 0x32,
++      0x33, 0x35,
++      0x35, 0xff,
++      0x3a, 0x00,
++      0x37, 0x10,
++      0x38, 0x10,
++      0x39, 0x02,
++      0x42, 0x60,
++      0x4a, 0x80,
++      0x4b, 0x04,
++      0x4d, 0x91,
++      0x5d, 0xc8,
++      0x50, 0x36,
++      0x51, 0x36,
++      0x52, 0x36,
++      0x53, 0x36,
++      0x63, 0x0f,
++      0x64, 0x30,
++      0x65, 0x40,
++      0x68, 0x26,
++      0x69, 0x4c,
++      0x70, 0x20,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x40,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x60,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x80,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0xa0,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x1f,
++      0x76, 0x38,
++      0x77, 0xa6,
++      0x78, 0x0c,
++      0x79, 0x80,
++      0x7f, 0x14,
++      0x7c, 0x00,
++      0xae, 0x82,
++      0x80, 0x64,
++      0x81, 0x66,
++      0x82, 0x44,
++      0x85, 0x04,
++      0xcd, 0xf4,
++      0x90, 0x33,
++      0xa0, 0x44,
++      0xc0, 0x08,
++      0xc3, 0x10,
++      0xc4, 0x08,
++      0xc5, 0xf0,
++      0xc6, 0xff,
++      0xc7, 0x00,
++      0xc8, 0x1a,
++      0xc9, 0x80,
++      0xe0, 0xf8,
++      0xe6, 0x8b,
++      0xd0, 0x40,
++      0xf8, 0x20,
++      0xfa, 0x0f,
++      0x00, 0x00,
++      0xbd, 0x01,
++      0xb8, 0x00,
++};
++/* For M88DS3103 demod dvbs2 mode.*/
++static u8 ds3103_dvbs2_init_tab[] = {
++      0x23, 0x07,
++      0x08, 0x07,
++      0x0c, 0x02,
++      0x21, 0x54,
++      0x25, 0x82,
++      0x27, 0x31,
++      0x30, 0x08,
++      0x32, 0x32,
++      0x33, 0x35,
++      0x35, 0xff,
++      0x3a, 0x00,
++      0x37, 0x10,
++      0x38, 0x10,
++      0x39, 0x02,
++      0x42, 0x60,
++      0x4a, 0x80,
++      0x4b, 0x04,
++      0x4d, 0x91,
++      0x5d, 0xc8,
++      0x50, 0x36,
++      0x51, 0x36,
++      0x52, 0x36,
++      0x53, 0x36,
++      0x63, 0x0f,
++      0x64, 0x10,
++      0x65, 0x20,
++      0x68, 0x46,
++      0x69, 0xcd,
++      0x70, 0x20,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x40,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x60,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x80,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0xa0,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x1f,
++      0x76, 0x38,
++      0x77, 0xa6,
++      0x78, 0x0c,
++      0x79, 0x80,
++      0x7f, 0x14,
++      0x85, 0x08,
++      0xcd, 0xf4,
++      0x90, 0x33,
++      0x86, 0x00,
++      0x87, 0x0f,
++      0x89, 0x00,
++      0x8b, 0x44,
++      0x8c, 0x66,
++      0x9d, 0xc1,
++      0x8a, 0x10,
++      0xad, 0x40,
++      0xa0, 0x44,
++      0xc0, 0x08,
++      0xc1, 0x10,
++      0xc2, 0x08,
++      0xc3, 0x10,
++      0xc4, 0x08,
++      0xc5, 0xf0,
++      0xc6, 0xff,
++      0xc7, 0x00,
++      0xc8, 0x1a,
++      0xc9, 0x80,
++      0xca, 0x23,
++      0xcb, 0x24,
++      0xcc, 0xf4,
++      0xce, 0x74,
++      0x00, 0x00,
++      0xbd, 0x01,
++      0xb8, 0x00,
++};
++
++/* For M88DS3000 demod dvbs mode.*/
++static u8 ds3000_dvbs_init_tab[] = {
++      0x23, 0x05,
++      0x08, 0x03,
++      0x0c, 0x02,
++      0x21, 0x54,
++      0x25, 0x82,
++      0x27, 0x31,
++      0x30, 0x08,
++      0x31, 0x40,
++      0x32, 0x32,
++      0x33, 0x35,
++      0x35, 0xff,
++      0x3a, 0x00,
++      0x37, 0x10,
++      0x38, 0x10,
++      0x39, 0x02,
++      0x42, 0x60,
++      0x4a, 0x40,
++      0x4b, 0x04,
++      0x4d, 0x91,
++      0x5d, 0xc8,
++      0x50, 0x77,
++      0x51, 0x77,
++      0x52, 0x36,
++      0x53, 0x36,
++      0x56, 0x01,
++      0x63, 0x47,
++      0x64, 0x30,
++      0x65, 0x40,
++      0x68, 0x26,
++      0x69, 0x4c,
++      0x70, 0x20,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x40,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x60,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x80,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0xa0,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x1f,
++      0x76, 0x00,
++      0x77, 0xd1,
++      0x78, 0x0c,
++      0x79, 0x80,
++      0x7f, 0x04,
++      0x7c, 0x00,
++      0x80, 0x86,
++      0x81, 0xa6,
++      0x85, 0x04,
++      0xcd, 0xf4,
++      0x90, 0x33,
++      0xa0, 0x44,
++      0xc0, 0x18,
++      0xc3, 0x10,
++      0xc4, 0x08,
++      0xc5, 0x80,
++      0xc6, 0x80,
++      0xc7, 0x0a,
++      0xc8, 0x1a,
++      0xc9, 0x80,
++      0xfe, 0xb6,
++      0xe0, 0xf8,
++      0xe6, 0x8b,
++      0xd0, 0x40,
++      0xf8, 0x20,
++      0xfa, 0x0f,
++      0xad, 0x20,
++      0xae, 0x07,
++      0xb8, 0x00,
++};
++
++/* For M88DS3000 demod dvbs2 mode.*/
++static u8 ds3000_dvbs2_init_tab[] = {
++      0x23, 0x0f,
++      0x08, 0x07,
++      0x0c, 0x02,
++      0x21, 0x54,
++      0x25, 0x82,
++      0x27, 0x31,
++      0x30, 0x08,
++      0x31, 0x32,
++      0x32, 0x32,
++      0x33, 0x35,
++      0x35, 0xff,
++      0x3a, 0x00,
++      0x37, 0x10,
++      0x38, 0x10,
++      0x39, 0x02,
++      0x42, 0x60,
++      0x4a, 0x80,
++      0x4b, 0x04,
++      0x4d, 0x91,
++      0x5d, 0x88,
++      0x50, 0x36,
++      0x51, 0x36,
++      0x52, 0x36,
++      0x53, 0x36,
++      0x63, 0x60,
++      0x64, 0x10,
++      0x65, 0x10,
++      0x68, 0x04,
++      0x69, 0x29,
++      0x70, 0x20,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x40,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x60,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x80,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0xa0,
++      0x71, 0x70,
++      0x72, 0x04,
++      0x73, 0x00,
++      0x70, 0x1f,
++      0xa0, 0x44,
++      0xc0, 0x08,
++      0xc1, 0x10,
++      0xc2, 0x08,
++      0xc3, 0x10,
++      0xc4, 0x08,
++      0xc5, 0xf0,
++      0xc6, 0xf0,
++      0xc7, 0x0a,
++      0xc8, 0x1a,
++      0xc9, 0x80,
++      0xca, 0x23,
++      0xcb, 0x24,
++      0xce, 0x74,
++      0x56, 0x01,
++      0x90, 0x03,
++      0x76, 0x80,
++      0x77, 0x42,
++      0x78, 0x0a,
++      0x79, 0x80,
++      0xad, 0x40,
++      0xae, 0x07,
++      0x7f, 0xd4,
++      0x7c, 0x00,
++      0x80, 0xa8,
++      0x81, 0xda,
++      0x7c, 0x01,
++      0x80, 0xda,
++      0x81, 0xec,
++      0x7c, 0x02,
++      0x80, 0xca,
++      0x81, 0xeb,
++      0x7c, 0x03,
++      0x80, 0xba,
++      0x81, 0xdb,
++      0x85, 0x08,
++      0x86, 0x00,
++      0x87, 0x02,
++      0x89, 0x80,
++      0x8b, 0x44,
++      0x8c, 0xaa,
++      0x8a, 0x10,
++      0xba, 0x00,
++      0xf5, 0x04,
++      0xd2, 0x32,
++      0xb8, 0x00,
++};
++
++#endif /* DVBSKY_M88DS3103_PRIV_H */
+diff --git a/drivers/media/dvb-frontends/m88dc2800.c b/drivers/media/dvb-frontends/m88dc2800.c
+new file mode 100644
+index 0000000..f876a11
+--- /dev/null
++++ b/drivers/media/dvb-frontends/m88dc2800.c
+@@ -0,0 +1,2124 @@
++/*
++    M88DC2800/M88TC2800  - DVB-C demodulator and tuner from Montage
++
++    Copyright (C) 2012 Max nibble<nibble.max@gmail.com>
++    Copyright (C) 2011 Montage Technology / www.montage-tech.com
++
++    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.
++
++    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, write to the Free Software
++    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++*/
++
++#include <linux/delay.h>
++#include <linux/errno.h>
++#include <linux/init.h>
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/string.h>
++#include <linux/slab.h>
++#include <asm/div64.h>
++#include "dvb_frontend.h"
++#include "m88dc2800.h"
++
++struct m88dc2800_state {
++      struct i2c_adapter *i2c;
++      const struct m88dc2800_config *config;
++      struct dvb_frontend frontend;
++      u32 freq;
++      u32 ber;
++      u32 sym;
++      u16 qam;
++      u8 inverted;
++      u32 xtal;
++      /* tuner state */
++      u8 tuner_init_OK;       /* Tuner initialize status */
++      u8 tuner_dev_addr;      /* Tuner device address */
++      u32 tuner_freq;         /* RF frequency to be set, unit: KHz */
++      u16 tuner_qam;          /* Reserved */
++      u16 tuner_mode;
++      u8 tuner_bandwidth;     /* Bandwidth of the channel, unit: MHz, 6/7/8 */
++      u8 tuner_loopthrough;   /* Tuner loop through switch, 0/1 */
++      u32 tuner_crystal;      /* Tuner crystal frequency, unit: KHz */
++      u32 tuner_dac;          /* Tuner DAC frequency, unit: KHz */
++      u16 tuner_mtt;          /* Tuner chip version, D1: 0x0d, E0: 0x0e, E1: 0x8e */
++      u16 tuner_custom_cfg;
++      u32 tuner_version;      /* Tuner driver version number */
++      u32 tuner_time;
++};
++
++static int debug;
++module_param(debug, int, 0644);
++MODULE_PARM_DESC(debug, "Activates frontend debugging (default:0)");
++
++#define dprintk(args...) \
++      do { \
++              if (debug) \
++                      printk(KERN_INFO "m88dc2800: " args); \
++      } while (0)
++
++
++static int m88dc2800_i2c_write(struct m88dc2800_state *state, u8 addr,
++                             u8 * p_data, u8 len)
++{
++      struct i2c_msg msg = { .flags = 0 };
++
++      msg.addr = addr;
++      msg.buf = p_data;
++      msg.len = len;
++
++      return i2c_transfer(state->i2c, &msg, 1);
++}
++
++static int m88dc2800_i2c_read(struct m88dc2800_state *state, u8 addr,
++                            u8 * p_data, u8 len)
++{
++      struct i2c_msg msg = { .flags = I2C_M_RD };
++
++      msg.addr = addr;
++      msg.buf = p_data;
++      msg.len = len;
++
++      return i2c_transfer(state->i2c, &msg, 1);
++}
++
++/*demod register operations.*/
++static int WriteReg(struct m88dc2800_state *state, u8 reg, u8 data)
++{
++      u8 buf[] = { reg, data };
++      u8 addr = state->config->demod_address;
++      int err;
++
++      dprintk("%s: write reg 0x%02x, value 0x%02x\n", __func__, reg, data);
++
++      err = m88dc2800_i2c_write(state, addr, buf, 2);
++
++      if (err != 1) {
++              printk(KERN_ERR
++                     "%s: writereg error(err == %i, reg == 0x%02x,"
++                     " value == 0x%02x)\n", __func__, err, reg, data);
++              return -EIO;
++      }
++      return 0;
++}
++
++static int ReadReg(struct m88dc2800_state *state, u8 reg)
++{
++      int ret;
++      u8 b0[] = { reg };
++      u8 b1[] = { 0 };
++      u8 addr = state->config->demod_address;
++
++      ret = m88dc2800_i2c_write(state, addr, b0, 1);
++
++      if (ret != 1) {
++              printk(KERN_ERR "%s: reg=0x%x (error=%d)\n",
++                     __func__, reg, ret);
++              return -EIO;
++      }
++
++      ret = m88dc2800_i2c_read(state, addr, b1, 1);
++
++      dprintk("%s: read reg 0x%02x, value 0x%02x\n", __func__, reg, b1[0]);
++      return b1[0];
++}
++
++static int _mt_fe_tn_set_reg(struct m88dc2800_state *state, u8 reg,
++                           u8 data)
++{
++      int ret;
++      u8 buf[2];
++      u8 addr = state->tuner_dev_addr;
++
++      buf[1] = ReadReg(state, 0x86);
++      buf[1] |= 0x80;
++      ret = WriteReg(state, 0x86, buf[1]);
++
++      buf[0] = reg;
++      buf[1] = data;
++
++      ret = m88dc2800_i2c_write(state, addr, buf, 2);
++      if (ret != 1)
++              return -EIO;
++      return 0;
++}
++
++static int _mt_fe_tn_get_reg(struct m88dc2800_state *state, u8 reg,
++                           u8 * p_data)
++{
++      int ret;
++      u8 buf[2];
++      u8 addr = state->tuner_dev_addr;
++
++      buf[1] = ReadReg(state, 0x86);
++      buf[1] |= 0x80;
++      ret = WriteReg(state, 0x86, buf[1]);
++
++      buf[0] = reg;
++      ret = m88dc2800_i2c_write(state, addr, buf, 1);
++
++      msleep(1);
++
++      buf[1] = ReadReg(state, 0x86);
++      buf[1] |= 0x80;
++      ret = WriteReg(state, 0x86, buf[1]);
++
++      return m88dc2800_i2c_read(state, addr, p_data, 1);
++}
++
++/* Tuner operation functions.*/
++static int _mt_fe_tn_set_RF_front_tc2800(struct m88dc2800_state *state)
++{
++      u32 freq_KHz = state->tuner_freq;
++      u8 a, b, c;
++      if (state->tuner_mtt == 0xD1) { /* D1 */
++              if (freq_KHz <= 123000) {
++                      if (freq_KHz <= 56000) {
++                              a = 0x00; b = 0x00; c = 0x00;
++                      } else if (freq_KHz <= 64000) {
++                              a = 0x10; b = 0x01; c = 0x08;
++                      } else if (freq_KHz <= 72000) {
++                              a = 0x20; b = 0x02; c = 0x10;
++                      } else if (freq_KHz <= 80000) {
++                              a = 0x30; b = 0x03; c = 0x18;
++                      } else if (freq_KHz <= 88000) {
++                              a = 0x40; b = 0x04; c = 0x20;
++                      } else if (freq_KHz <= 96000) {
++                              a = 0x50; b = 0x05; c = 0x28;
++                      } else if (freq_KHz <= 104000) {
++                              a = 0x60; b = 0x06; c = 0x30;
++                      } else {
++                              a = 0x70; b = 0x07; c = 0x38;
++                      }
++                      _mt_fe_tn_set_reg(state, 0x58, 0x9b);
++                      _mt_fe_tn_set_reg(state, 0x59, a);
++                      _mt_fe_tn_set_reg(state, 0x5d, b);
++                      _mt_fe_tn_set_reg(state, 0x5e, c);
++                      _mt_fe_tn_set_reg(state, 0x5a, 0x75);
++                      _mt_fe_tn_set_reg(state, 0x73, 0x0c);
++              } else {        /* if (freq_KHz > 112000) */
++                      _mt_fe_tn_set_reg(state, 0x58, 0x7b);
++                      if (freq_KHz <= 304000) {
++                              if (freq_KHz <= 136000) {
++                                      _mt_fe_tn_set_reg(state, 0x5e, 0x40);
++                              } else if (freq_KHz <= 160000) {
++                                      _mt_fe_tn_set_reg(state, 0x5e, 0x48);
++                              } else if (freq_KHz <= 184000) {
++                                      _mt_fe_tn_set_reg(state, 0x5e, 0x50);
++                              } else if (freq_KHz <= 208000) {
++                                      _mt_fe_tn_set_reg(state, 0x5e, 0x58);
++                              } else if (freq_KHz <= 232000) {
++                                      _mt_fe_tn_set_reg(state, 0x5e, 0x60);
++                              } else if (freq_KHz <= 256000) {
++                                      _mt_fe_tn_set_reg(state, 0x5e, 0x68);
++                              } else if (freq_KHz <= 280000) {
++                                      _mt_fe_tn_set_reg(state, 0x5e, 0x70);
++                              } else {        /* if (freq_KHz <= 304000) */
++                                      _mt_fe_tn_set_reg(state, 0x5e, 0x78);
++                              }
++                              if (freq_KHz <= 171000) {
++                                      _mt_fe_tn_set_reg(state, 0x73, 0x08);
++                              } else if (freq_KHz <= 211000) {
++                                      _mt_fe_tn_set_reg(state, 0x73, 0x0a);
++                              } else {
++                                      _mt_fe_tn_set_reg(state, 0x73, 0x0e);
++                              }
++                      } else {        /* if (freq_KHz > 304000) */
++                              _mt_fe_tn_set_reg(state, 0x5e, 0x88);
++                              if (freq_KHz <= 400000) {
++                                      _mt_fe_tn_set_reg(state, 0x73, 0x0c);
++                              } else if (freq_KHz <= 450000) {
++                                      _mt_fe_tn_set_reg(state, 0x73, 0x09);
++                              } else if (freq_KHz <= 550000) {
++                                      _mt_fe_tn_set_reg(state, 0x73, 0x0e);
++                              } else if (freq_KHz <= 650000) {
++                                      _mt_fe_tn_set_reg(state, 0x73, 0x0d);
++                              } else {        /*if (freq_KHz > 650000) */
++                                      _mt_fe_tn_set_reg(state, 0x73, 0x0e);
++                              }
++                      }
++              }
++              if (freq_KHz > 800000)
++                      _mt_fe_tn_set_reg(state, 0x87, 0x24);
++              else if (freq_KHz > 700000)
++                      _mt_fe_tn_set_reg(state, 0x87, 0x34);
++              else if (freq_KHz > 500000)
++                      _mt_fe_tn_set_reg(state, 0x87, 0x44);
++              else if (freq_KHz > 300000)
++                      _mt_fe_tn_set_reg(state, 0x87, 0x43);
++              else if (freq_KHz > 220000)
++                      _mt_fe_tn_set_reg(state, 0x87, 0x54);
++              else if (freq_KHz > 110000)
++                      _mt_fe_tn_set_reg(state, 0x87, 0x14);
++              else
++                      _mt_fe_tn_set_reg(state, 0x87, 0x54);
++              if (freq_KHz > 600000)
++                      _mt_fe_tn_set_reg(state, 0x6a, 0x53);
++              else if (freq_KHz > 500000)
++                      _mt_fe_tn_set_reg(state, 0x6a, 0x57);
++              else
++                      _mt_fe_tn_set_reg(state, 0x6a, 0x59);
++              if (freq_KHz < 200000) {
++                      _mt_fe_tn_set_reg(state, 0x20, 0x5d);
++              } else if (freq_KHz < 500000) {
++                      _mt_fe_tn_set_reg(state, 0x20, 0x7d);
++              } else {
++                      _mt_fe_tn_set_reg(state, 0x20, 0xfd);
++              }               /* end of 0xD1 */
++      } else if (state->tuner_mtt == 0xE1) {  /* E1 */
++              if (freq_KHz <= 112000) {       /* 123MHz */
++                      if (freq_KHz <= 56000) {
++                              _mt_fe_tn_set_reg(state, 0x5c, 0x01);
++                      } else if (freq_KHz <= 64000) {
++                              _mt_fe_tn_set_reg(state, 0x5c, 0x09);
++                      } else if (freq_KHz <= 72000) {
++                              _mt_fe_tn_set_reg(state, 0x5c, 0x11);
++                      } else if (freq_KHz <= 80000) {
++                              _mt_fe_tn_set_reg(state, 0x5c, 0x19);
++                      } else if (freq_KHz <= 88000) {
++                              _mt_fe_tn_set_reg(state, 0x5c, 0x21);
++                      } else if (freq_KHz <= 96000) {
++                              _mt_fe_tn_set_reg(state, 0x5c, 0x29);
++                      } else if (freq_KHz <= 104000) {
++                              _mt_fe_tn_set_reg(state, 0x5c, 0x31);
++                      } else {        /* if (freq_KHz <= 112000) */
++                              _mt_fe_tn_set_reg(state, 0x5c, 0x39);
++                      }
++                      _mt_fe_tn_set_reg(state, 0x5b, 0x30);
++              } else {        /* if (freq_KHz > 112000) */
++                      if (freq_KHz <= 304000) {
++                              if (freq_KHz <= 136000) {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0x41);
++                              } else if (freq_KHz <= 160000) {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0x49);
++                              } else if (freq_KHz <= 184000) {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0x51);
++                              } else if (freq_KHz <= 208000) {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0x59);
++                              } else if (freq_KHz <= 232000) {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0x61);
++                              } else if (freq_KHz <= 256000) {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0x69);
++                              } else if (freq_KHz <= 280000) {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0x71);
++                              } else {        /* if (freq_KHz <= 304000) */
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0x79);
++                              }
++                              if (freq_KHz <= 150000) {
++                                      _mt_fe_tn_set_reg(state, 0x5b, 0x28);
++                              } else if (freq_KHz <= 256000) {
++                                      _mt_fe_tn_set_reg(state, 0x5b, 0x29);
++                              } else {
++                                      _mt_fe_tn_set_reg(state, 0x5b, 0x2a);
++                              }
++                      } else {        /* if (freq_KHz > 304000) */
++                              if (freq_KHz <= 400000) {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0x89);
++                              } else if (freq_KHz <= 450000) {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0x91);
++                              } else if (freq_KHz <= 650000) {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0x98);
++                              } else if (freq_KHz <= 850000) {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0xa0);
++                              } else {
++                                      _mt_fe_tn_set_reg(state, 0x5c, 0xa8);
++                              }
++                              _mt_fe_tn_set_reg(state, 0x5b, 0x08);
++                      }
++              }
++      }                       /* end of 0xE1 */
++      return 0;
++}
++
++static int _mt_fe_tn_cali_PLL_tc2800(struct m88dc2800_state *state,
++                                   u32 freq_KHz,
++                                   u32 cali_freq_thres_div2,
++                                   u32 cali_freq_thres_div3r,
++                                   u32 cali_freq_thres_div3)
++{
++      s32 N, F, MUL;
++      u8 buf, tmp, tmp2;
++      s32 M;
++      const s32 crystal_KHz = state->tuner_crystal;
++       if (state->tuner_mtt == 0xD1) {
++              M = state->tuner_crystal / 4000;
++              if (freq_KHz > cali_freq_thres_div2) {
++                      MUL = 4;
++                      tmp = 2;
++              } else if (freq_KHz > 300000) {
++                      MUL = 8;
++                      tmp = 3;
++              } else if (freq_KHz > (cali_freq_thres_div2 / 2)) {
++                      MUL = 8;
++                      tmp = 4;
++              } else if (freq_KHz > (cali_freq_thres_div2 / 4)) {
++                      MUL = 16;
++                      tmp = 5;
++              } else if (freq_KHz > (cali_freq_thres_div2 / 8)) {
++                      MUL = 32;
++                      tmp = 6;
++              } else if (freq_KHz > (cali_freq_thres_div2 / 16)) {
++                      MUL = 64;
++                      tmp = 7;
++              } else {        /* invalid */
++                      MUL = 0;
++                      tmp = 0;
++                      return 1;
++              }
++      } else if (state->tuner_mtt == 0xE1) {
++              M = state->tuner_crystal / 1000;
++              _mt_fe_tn_set_reg(state, 0x30, 0xff);
++              _mt_fe_tn_set_reg(state, 0x32, 0xe0);
++              _mt_fe_tn_set_reg(state, 0x33, 0x86);
++              _mt_fe_tn_set_reg(state, 0x37, 0x70);
++              _mt_fe_tn_set_reg(state, 0x38, 0x20);
++              _mt_fe_tn_set_reg(state, 0x39, 0x18);
++              _mt_fe_tn_set_reg(state, 0x89, 0x83);
++              if (freq_KHz > cali_freq_thres_div2) {
++                      M = M / 4;
++                      MUL = 4;
++                      tmp = 2;
++                      tmp2 = M + 16;  /* 48 */
++              } else if (freq_KHz > cali_freq_thres_div3r) {
++                      M = M / 3;
++                      MUL = 6;
++                      tmp = 2;
++                      tmp2 = M + 32;  /* 32 */
++              } else if (freq_KHz > cali_freq_thres_div3) {
++                      M = M / 3;
++                      MUL = 6;
++                      tmp = 2;
++                      tmp2 = M;       /* 16 */
++              } else if (freq_KHz > 304000) {
++                      M = M / 4;
++                      MUL = 8;
++                      tmp = 3;
++                      tmp2 = M + 16;  /* 48 */
++              } else if (freq_KHz > (cali_freq_thres_div2 / 2)) {
++                      M = M / 4;
++                      MUL = 8;
++                      tmp = 4;
++                      tmp2 = M + 16;  /* 48 */
++              } else if (freq_KHz > (cali_freq_thres_div3r / 2)) {
++                      M = M / 3;
++                      MUL = 12;
++                      tmp = 4;
++                      tmp2 = M + 32;  /* 32 */
++              } else if (freq_KHz > (cali_freq_thres_div3 / 2)) {
++                      M = M / 3;
++                      MUL = 12;
++                      tmp = 4;
++                      tmp2 = M;       /* 16 */
++              } else if (freq_KHz > (cali_freq_thres_div2 / 4)) {
++                      M = M / 4;
++                      MUL = 16;
++                      tmp = 5;
++                      tmp2 = M + 16;  /* 48 */
++              } else if (freq_KHz > (cali_freq_thres_div3r / 4)) {
++                      M = M / 3;
++                      MUL = 24;
++                      tmp = 5;
++                      tmp2 = M + 32;  /* 32 */
++              } else if (freq_KHz > (cali_freq_thres_div3 / 4)) {
++                      M = M / 3;
++                      MUL = 24;
++                      tmp = 5;
++                      tmp2 = M;       /* 16 */
++              } else if (freq_KHz > (cali_freq_thres_div2 / 8)) {
++                      M = M / 4;
++                      MUL = 32;
++                      tmp = 6;
++                      tmp2 = M + 16;  /* 48 */
++              } else if (freq_KHz > (cali_freq_thres_div3r / 8)) {
++                      M = M / 3;
++                      MUL = 48;
++                      tmp = 6;
++                      tmp2 = M + 32;  /* 32 */
++              } else if (freq_KHz > (cali_freq_thres_div3 / 8)) {
++                      M = M / 3;
++                      MUL = 48;
++                      tmp = 6;
++                      tmp2 = M;       /* 16 */
++              } else if (freq_KHz > (cali_freq_thres_div2 / 16)) {
++                      M = M / 4;
++                      MUL = 64;
++                      tmp = 7;
++                      tmp2 = M + 16;  /* 48 */
++              } else if (freq_KHz > (cali_freq_thres_div3r / 16)) {
++                      M = M / 3;
++                      MUL = 96;
++                      tmp = 7;
++                      tmp2 = M + 32;  /* 32 */
++              } else if (freq_KHz > (cali_freq_thres_div3 / 16)) {
++                      M = M / 3;
++                      MUL = 96;
++                      tmp = 7;
++                      tmp2 = M;       /* 16 */
++              } else {        /* invalid */
++                      M = M / 4;
++                      MUL = 0;
++                      tmp = 0;
++                      tmp2 = 48;
++                      return 1;
++              }
++              if (freq_KHz == 291000) {
++                      M = state->tuner_crystal / 1000 / 3;
++                      MUL = 12;
++                      tmp = 4;
++                      tmp2 = M + 32;  /* 32 */
++              }
++              /*
++                 if (freq_KHz == 578000) {
++                 M = state->tuner_crystal / 1000 / 4;
++                 MUL = 4;
++                 tmp = 2;
++                 tmp2 = M + 16;       // 48
++                 }
++               */
++              if (freq_KHz == 690000) {
++                      M = state->tuner_crystal / 1000 / 3;
++                      MUL = 4;
++                      tmp = 2;
++                      tmp2 = M + 16;  /* 48 */
++              }
++              _mt_fe_tn_get_reg(state, 0x33, &buf);
++              buf &= 0xc0;
++              buf += tmp2;
++              _mt_fe_tn_set_reg(state, 0x33, buf);
++      } else {
++              return 1;
++      }
++      _mt_fe_tn_get_reg(state, 0x39, &buf);
++      buf &= 0xf8;
++      buf += tmp;
++      _mt_fe_tn_set_reg(state, 0x39, buf);
++      N = (freq_KHz * MUL * M / crystal_KHz) / 2 * 2 - 256;
++      buf = (N >> 8) & 0xcf;
++      if (state->tuner_mtt == 0xE1) {
++              buf |= 0x30;
++      }
++      _mt_fe_tn_set_reg(state, 0x34, buf);
++      buf = N & 0xff;
++      _mt_fe_tn_set_reg(state, 0x35, buf);
++      F = ((freq_KHz * MUL * M / (crystal_KHz / 1000) / 2) -
++           (freq_KHz * MUL * M / crystal_KHz / 2 * 1000)) * 64 / 1000;
++      buf = F & 0xff;
++      _mt_fe_tn_set_reg(state, 0x36, buf);
++      if (F == 0) {
++              if (state->tuner_mtt == 0xD1) {
++                      _mt_fe_tn_set_reg(state, 0x3d, 0xca);
++              } else if (state->tuner_mtt == 0xE1) {
++                      _mt_fe_tn_set_reg(state, 0x3d, 0xfe);
++              } else {
++                      return 1;
++              }
++              _mt_fe_tn_set_reg(state, 0x3e, 0x9c);
++              _mt_fe_tn_set_reg(state, 0x3f, 0x34);
++      }
++      if (F > 0) {
++              if (state->tuner_mtt == 0xD1) {
++                      if ((F == 32) || (F == 16) || (F == 48)) {
++                              _mt_fe_tn_set_reg(state, 0x3e, 0xa4);
++                              _mt_fe_tn_set_reg(state, 0x3d, 0x4a);
++                              _mt_fe_tn_set_reg(state, 0x3f, 0x36);
++                      } else {
++                              _mt_fe_tn_set_reg(state, 0x3e, 0xa4);
++                              _mt_fe_tn_set_reg(state, 0x3d, 0x4a);
++                              _mt_fe_tn_set_reg(state, 0x3f, 0x36);
++                      }
++              } else if (state->tuner_mtt == 0xE1) {
++                      _mt_fe_tn_set_reg(state, 0x3e, 0xa4);
++                      _mt_fe_tn_set_reg(state, 0x3d, 0x7e);
++                      _mt_fe_tn_set_reg(state, 0x3f, 0x36);
++                      _mt_fe_tn_set_reg(state, 0x89, 0x84);
++                      _mt_fe_tn_get_reg(state, 0x39, &buf);
++                      buf = buf & 0x1f;
++                      _mt_fe_tn_set_reg(state, 0x39, buf);
++                      _mt_fe_tn_get_reg(state, 0x32, &buf);
++                      buf = buf | 0x02;
++                      _mt_fe_tn_set_reg(state, 0x32, buf);
++              } else {
++                      return 1;
++              }
++      }
++      _mt_fe_tn_set_reg(state, 0x41, 0x00);
++      if (state->tuner_mtt == 0xD1) {
++              msleep(5);
++      } else if (state->tuner_mtt == 0xE1) {
++              msleep(2);
++      } else {
++              return 1;
++      }
++      _mt_fe_tn_set_reg(state, 0x41, 0x02);
++      _mt_fe_tn_set_reg(state, 0x30, 0x7f);
++      _mt_fe_tn_set_reg(state, 0x30, 0xff);
++      _mt_fe_tn_set_reg(state, 0x31, 0x80);
++      _mt_fe_tn_set_reg(state, 0x31, 0x00);
++
++      return 0;
++}
++
++static int _mt_fe_tn_set_PLL_freq_tc2800(struct m88dc2800_state *state)
++{
++      u8 buf, buf1;
++      u32 freq_thres_div2_KHz, freq_thres_div3r_KHz,
++          freq_thres_div3_KHz;
++      const u32 freq_KHz = state->tuner_freq;
++      if (state->tuner_mtt == 0xD1) {
++              _mt_fe_tn_set_reg(state, 0x32, 0xe1);
++              _mt_fe_tn_set_reg(state, 0x33, 0xa6);
++              _mt_fe_tn_set_reg(state, 0x37, 0x7f);
++              _mt_fe_tn_set_reg(state, 0x38, 0x20);
++              _mt_fe_tn_set_reg(state, 0x39, 0x18);
++              _mt_fe_tn_set_reg(state, 0x40, 0x40);
++               freq_thres_div2_KHz = 520000;
++              _mt_fe_tn_cali_PLL_tc2800(state, freq_KHz,
++                                         freq_thres_div2_KHz, 0, 0);
++               msleep(5);
++              _mt_fe_tn_get_reg(state, 0x3a, &buf);
++              buf1 = buf;
++              buf = buf & 0x03;
++              buf1 = buf1 & 0x01;
++              if ((buf1 == 0) || (buf == 3)) {
++                      freq_thres_div2_KHz = 420000;
++                      _mt_fe_tn_cali_PLL_tc2800(state, freq_KHz,
++                                                 freq_thres_div2_KHz, 0,
++                                                 0);
++                      msleep(5);
++                       _mt_fe_tn_get_reg(state, 0x3a, &buf);
++                      buf = buf & 0x07;
++                      if (buf == 5) {
++                              freq_thres_div2_KHz = 520000;
++                              _mt_fe_tn_cali_PLL_tc2800(state, freq_KHz,
++                                                         freq_thres_div2_KHz,
++                                                         0, 0);
++                              msleep(5);
++                      }
++              }
++               _mt_fe_tn_get_reg(state, 0x38, &buf);
++              _mt_fe_tn_set_reg(state, 0x38, buf);
++               _mt_fe_tn_get_reg(state, 0x32, &buf);
++              buf = buf | 0x10;
++              _mt_fe_tn_set_reg(state, 0x32, buf);
++               _mt_fe_tn_set_reg(state, 0x30, 0x7f);
++              _mt_fe_tn_set_reg(state, 0x30, 0xff);
++               _mt_fe_tn_get_reg(state, 0x32, &buf);
++              buf = buf & 0xdf;
++              _mt_fe_tn_set_reg(state, 0x32, buf);
++              _mt_fe_tn_set_reg(state, 0x40, 0x0);
++               _mt_fe_tn_set_reg(state, 0x30, 0x7f);
++              _mt_fe_tn_set_reg(state, 0x30, 0xff);
++              _mt_fe_tn_set_reg(state, 0x31, 0x80);
++              _mt_fe_tn_set_reg(state, 0x31, 0x00);
++              msleep(5);
++               _mt_fe_tn_get_reg(state, 0x39, &buf);
++              buf = buf >> 5;
++              if (buf < 5) {
++                      _mt_fe_tn_get_reg(state, 0x39, &buf);
++                      buf = buf | 0xa0;
++                      buf = buf & 0xbf;
++                      _mt_fe_tn_set_reg(state, 0x39, buf);
++                       _mt_fe_tn_get_reg(state, 0x32, &buf);
++                      buf = buf | 0x02;
++                      _mt_fe_tn_set_reg(state, 0x32, buf);
++              }
++               _mt_fe_tn_get_reg(state, 0x37, &buf);
++              if (buf > 0x70) {
++                      buf = 0x7f;
++                      _mt_fe_tn_set_reg(state, 0x40, 0x40);
++              }
++              _mt_fe_tn_set_reg(state, 0x37, buf);
++                _mt_fe_tn_get_reg(state, 0x38, &buf);
++              if (buf < 0x0f) {
++                      buf = (buf & 0x0f) << 2;
++                      buf = buf + 0x0f;
++                      _mt_fe_tn_set_reg(state, 0x37, buf);
++              } else if (buf < 0x1f) {
++                      buf = buf + 0x0f;
++                      _mt_fe_tn_set_reg(state, 0x37, buf);
++              }
++               _mt_fe_tn_get_reg(state, 0x32, &buf);
++              buf = (buf | 0x20) & 0xef;
++              _mt_fe_tn_set_reg(state, 0x32, buf);
++               _mt_fe_tn_set_reg(state, 0x41, 0x00);
++              msleep(5);
++              _mt_fe_tn_set_reg(state, 0x41, 0x02);
++      } else if (state->tuner_mtt == 0xE1) {
++              freq_thres_div2_KHz = 580000;
++              freq_thres_div3r_KHz = 500000;
++              freq_thres_div3_KHz = 440000;
++              _mt_fe_tn_cali_PLL_tc2800(state, freq_KHz,
++                                         freq_thres_div2_KHz,
++                                         freq_thres_div3r_KHz,
++                                         freq_thres_div3_KHz);
++              msleep(3);
++              _mt_fe_tn_get_reg(state, 0x38, &buf);
++              _mt_fe_tn_set_reg(state, 0x38, buf);
++              _mt_fe_tn_set_reg(state, 0x30, 0x7f);
++              _mt_fe_tn_set_reg(state, 0x30, 0xff);
++              _mt_fe_tn_set_reg(state, 0x31, 0x80);
++              _mt_fe_tn_set_reg(state, 0x31, 0x00);
++              msleep(3);
++              _mt_fe_tn_get_reg(state, 0x38, &buf);
++              _mt_fe_tn_set_reg(state, 0x38, buf);
++              _mt_fe_tn_get_reg(state, 0x32, &buf);
++              buf = buf | 0x10;
++              _mt_fe_tn_set_reg(state, 0x32, buf);
++               _mt_fe_tn_set_reg(state, 0x30, 0x7f);
++              _mt_fe_tn_set_reg(state, 0x30, 0xff);
++              _mt_fe_tn_get_reg(state, 0x32, &buf);
++              buf = buf & 0xdf;
++              _mt_fe_tn_set_reg(state, 0x32, buf);
++              _mt_fe_tn_set_reg(state, 0x31, 0x80);
++              _mt_fe_tn_set_reg(state, 0x31, 0x00);
++              msleep(3);
++              _mt_fe_tn_get_reg(state, 0x37, &buf);
++              _mt_fe_tn_set_reg(state, 0x37, buf);
++              /*
++                 if ((freq_KHz == 802000) || (freq_KHz == 826000)) {
++                 _mt_fe_tn_set_reg(state, 0x37, 0x5e);
++                 }
++               */
++              _mt_fe_tn_get_reg(state, 0x32, &buf);
++              buf = (buf & 0xef) | 0x30;
++              _mt_fe_tn_set_reg(state, 0x32, buf);
++               _mt_fe_tn_set_reg(state, 0x41, 0x00);
++              msleep(2);
++              _mt_fe_tn_set_reg(state, 0x41, 0x02);
++      } else {
++              return 1;
++      }
++      return 0;
++}
++
++static int _mt_fe_tn_set_BB_tc2800(struct m88dc2800_state *state)
++{
++      return 0;
++}
++
++ static int _mt_fe_tn_set_appendix_tc2800(struct m88dc2800_state *state)
++
++{
++      u8 buf;
++      const u32 freq_KHz = state->tuner_freq;
++      if (state->tuner_mtt == 0xD1) {
++              if ((freq_KHz == 123000) || (freq_KHz == 147000) ||
++                  (freq_KHz == 171000) || (freq_KHz == 195000)) {
++                      _mt_fe_tn_set_reg(state, 0x20, 0x1b);
++              }
++              if ((freq_KHz == 371000) || (freq_KHz == 419000) ||
++                  (freq_KHz == 610000) || (freq_KHz == 730000) ||
++                  (freq_KHz == 754000) || (freq_KHz == 826000)) {
++                      _mt_fe_tn_get_reg(state, 0x0d, &buf);
++                      _mt_fe_tn_set_reg(state, 0x0d, (u8) (buf + 1));
++              }
++              if ((freq_KHz == 522000) || (freq_KHz == 578000) ||
++                  (freq_KHz == 634000) || (freq_KHz == 690000) ||
++                  (freq_KHz == 834000)) {
++                      _mt_fe_tn_get_reg(state, 0x0d, &buf);
++                      _mt_fe_tn_set_reg(state, 0x0d, (u8) (buf - 1));
++              }
++      } else if (state->tuner_mtt == 0xE1) {
++              _mt_fe_tn_set_reg(state, 0x20, 0xfc);
++              if (freq_KHz == 123000 || freq_KHz == 147000 ||
++                  freq_KHz == 171000 || freq_KHz == 195000 ||
++                  freq_KHz == 219000 || freq_KHz == 267000 ||
++                  freq_KHz == 291000 || freq_KHz == 339000 ||
++                  freq_KHz == 387000 || freq_KHz == 435000 ||
++                  freq_KHz == 482000 || freq_KHz == 530000 ||
++                  freq_KHz == 722000 ||
++                  (state->tuner_custom_cfg == 1 && freq_KHz == 315000)) {
++                      _mt_fe_tn_set_reg(state, 0x20, 0x5c);
++              }
++      }
++      return 0;
++}
++
++ static int _mt_fe_tn_set_DAC_tc2800(struct m88dc2800_state *state)
++{
++      u8 buf, tempnumber;
++      s32 N;
++      s32 f1f2number, f1, f2, delta1, Totalnum1;
++      s32 cntT, cntin, NCOI, z0, z1, z2, tmp;
++      u32 fc, fadc, fsd, f2d;
++      u32 FreqTrue108_Hz;
++      s32 M = state->tuner_crystal / 4000;
++      /* const u8 bandwidth = state->tuner_bandwidth; */
++      const u16 DAC_fre = 108;
++      const u32 crystal_KHz = state->tuner_crystal;
++      const u32 DACFreq_KHz = state->tuner_dac;
++      const u32 freq_KHz = state->tuner_freq;
++
++      if (state->tuner_mtt == 0xE1) {
++              _mt_fe_tn_get_reg(state, 0x33, &buf);
++              M = buf & 0x0f;
++              if (M == 0)
++                      M = 6;
++      }
++      _mt_fe_tn_get_reg(state, 0x34, &buf);
++      N = buf & 0x07;
++      _mt_fe_tn_get_reg(state, 0x35, &buf);
++      N = (N << 8) + buf;
++      buf = ((N + 256) * crystal_KHz / M / DAC_fre + 500) / 1000;
++      if (state->tuner_mtt == 0xE1) {
++              _mt_fe_tn_set_appendix_tc2800(state);
++              if (freq_KHz == 187000 || freq_KHz == 195000 ||
++                  freq_KHz == 131000 || freq_KHz == 211000 ||
++                  freq_KHz == 219000 || freq_KHz == 227000 ||
++                  freq_KHz == 267000 || freq_KHz == 299000 ||
++                  freq_KHz == 347000 || freq_KHz == 363000 ||
++                  freq_KHz == 395000 || freq_KHz == 403000 ||
++                  freq_KHz == 435000 || freq_KHz == 482000 ||
++                  freq_KHz == 474000 || freq_KHz == 490000 ||
++                  freq_KHz == 610000 || freq_KHz == 642000 ||
++                  freq_KHz == 666000 || freq_KHz == 722000 ||
++                  freq_KHz == 754000 ||
++                  ((freq_KHz == 379000 || freq_KHz == 467000 ||
++                    freq_KHz == 762000) && state->tuner_custom_cfg != 1)) {
++                      buf = buf + 1;
++              }
++              if (freq_KHz == 123000 || freq_KHz == 139000 ||
++                  freq_KHz == 147000 || freq_KHz == 171000 ||
++                  freq_KHz == 179000 || freq_KHz == 203000 ||
++                  freq_KHz == 235000 || freq_KHz == 251000 ||
++                  freq_KHz == 259000 || freq_KHz == 283000 ||
++                  freq_KHz == 331000 || freq_KHz == 363000 ||
++                  freq_KHz == 371000 || freq_KHz == 387000 ||
++                  freq_KHz == 411000 || freq_KHz == 427000 ||
++                  freq_KHz == 443000 || freq_KHz == 451000 ||
++                  freq_KHz == 459000 || freq_KHz == 506000 ||
++                  freq_KHz == 514000 || freq_KHz == 538000 ||
++                  freq_KHz == 546000 || freq_KHz == 554000 ||
++                  freq_KHz == 562000 || freq_KHz == 570000 ||
++                  freq_KHz == 578000 || freq_KHz == 602000 ||
++                  freq_KHz == 626000 || freq_KHz == 658000 ||
++                  freq_KHz == 690000 || freq_KHz == 714000 ||
++                  freq_KHz == 746000 || freq_KHz == 522000 ||
++                  freq_KHz == 826000 || freq_KHz == 155000 ||
++                  freq_KHz == 530000 ||
++                  ((freq_KHz == 275000 || freq_KHz == 355000) &&
++                   state->tuner_custom_cfg != 1) ||
++                  ((freq_KHz == 467000 || freq_KHz == 762000 ||
++                    freq_KHz == 778000 || freq_KHz == 818000) &&
++                   state->tuner_custom_cfg == 1)) {
++                      buf = buf - 1;
++              }
++      }
++       _mt_fe_tn_set_reg(state, 0x0e, buf);
++      _mt_fe_tn_set_reg(state, 0x0d, buf);
++      f1f2number =
++          (((DACFreq_KHz * M * buf) / crystal_KHz) << 16) / (N + 256) +
++          (((DACFreq_KHz * M * buf) % crystal_KHz) << 16) / ((N + 256) *
++                                                              crystal_KHz);
++      _mt_fe_tn_set_reg(state, 0xf1, (f1f2number & 0xff00) >> 8);
++      _mt_fe_tn_set_reg(state, 0xf2, f1f2number & 0x00ff);
++       FreqTrue108_Hz =
++          (N + 256) * crystal_KHz / (M * buf) * 1000 +
++          (((N + 256) * crystal_KHz) % (M * buf)) * 1000 / (M * buf);
++      f1 = 4096;
++      fc = FreqTrue108_Hz;
++      fadc = fc / 4;
++      fsd = 27000000;
++      f2d = state->tuner_bandwidth * 1000 / 2 - 150;
++      f2 = (fsd / 250) * f2d / ((fc + 500) / 1000);
++      delta1 = ((f1 - f2) << 15) / f2;
++      Totalnum1 = ((f1 - f2) << 15) - delta1 * f2;
++      cntT = f2;
++      cntin = Totalnum1;
++      NCOI = delta1;
++       z0 = cntin;
++      z1 = cntT;
++      z2 = NCOI;
++      tempnumber = (z0 & 0xff00) >> 8;
++      _mt_fe_tn_set_reg(state, 0xc9, (u8) (tempnumber & 0x0f));
++      tempnumber = (z0 & 0xff);
++      _mt_fe_tn_set_reg(state, 0xca, tempnumber);
++       tempnumber = (z1 & 0xff00) >> 8;
++      _mt_fe_tn_set_reg(state, 0xcb, tempnumber);
++      tempnumber = (z1 & 0xff);
++      _mt_fe_tn_set_reg(state, 0xcc, tempnumber);
++       tempnumber = (z2 & 0xff00) >> 8;
++      _mt_fe_tn_set_reg(state, 0xcd, tempnumber);
++      tempnumber = (z2 & 0xff);
++      _mt_fe_tn_set_reg(state, 0xce, tempnumber);
++       tmp = f1;
++      f1 = f2;
++      f2 = tmp / 2;
++      delta1 = ((f1 - f2) << 15) / f2;
++      Totalnum1 = ((f1 - f2) << 15) - delta1 * f2;
++      NCOI = (f1 << 15) / f2 - (1 << 15);
++      cntT = f2;
++      cntin = Totalnum1;
++      z0 = cntin;
++      z1 = cntT;
++      z2 = NCOI;
++      tempnumber = (z0 & 0xff00) >> 8;
++      _mt_fe_tn_set_reg(state, 0xd9, (u8) (tempnumber & 0x0f));
++      tempnumber = (z0 & 0xff);
++      _mt_fe_tn_set_reg(state, 0xda, tempnumber);
++       tempnumber = (z1 & 0xff00) >> 8;
++      _mt_fe_tn_set_reg(state, 0xdb, tempnumber);
++      tempnumber = (z1 & 0xff);
++      _mt_fe_tn_set_reg(state, 0xdc, tempnumber);
++       tempnumber = (z2 & 0xff00) >> 8;
++      _mt_fe_tn_set_reg(state, 0xdd, tempnumber);
++      tempnumber = (z2 & 0xff);
++      _mt_fe_tn_set_reg(state, 0xde, tempnumber);
++
++      return 0;
++}
++
++static int _mt_fe_tn_preset_tc2800(struct m88dc2800_state *state)
++{
++      if (state->tuner_mtt == 0xD1) {
++              _mt_fe_tn_set_reg(state, 0x19, 0x4a);
++              _mt_fe_tn_set_reg(state, 0x1b, 0x4b);
++               _mt_fe_tn_set_reg(state, 0x04, 0x04);
++              _mt_fe_tn_set_reg(state, 0x17, 0x0d);
++              _mt_fe_tn_set_reg(state, 0x62, 0x6c);
++              _mt_fe_tn_set_reg(state, 0x63, 0xf4);
++              _mt_fe_tn_set_reg(state, 0x1f, 0x0e);
++              _mt_fe_tn_set_reg(state, 0x6b, 0xf4);
++              _mt_fe_tn_set_reg(state, 0x14, 0x01);
++              _mt_fe_tn_set_reg(state, 0x5a, 0x75);
++              _mt_fe_tn_set_reg(state, 0x66, 0x74);
++              _mt_fe_tn_set_reg(state, 0x72, 0xe0);
++              _mt_fe_tn_set_reg(state, 0x70, 0x07);
++              _mt_fe_tn_set_reg(state, 0x15, 0x7b);
++              _mt_fe_tn_set_reg(state, 0x55, 0x71);
++               _mt_fe_tn_set_reg(state, 0x75, 0x55);
++              _mt_fe_tn_set_reg(state, 0x76, 0xac);
++              _mt_fe_tn_set_reg(state, 0x77, 0x6c);
++              _mt_fe_tn_set_reg(state, 0x78, 0x8b);
++              _mt_fe_tn_set_reg(state, 0x79, 0x42);
++              _mt_fe_tn_set_reg(state, 0x7a, 0xd2);
++               _mt_fe_tn_set_reg(state, 0x81, 0x01);
++              _mt_fe_tn_set_reg(state, 0x82, 0x00);
++              _mt_fe_tn_set_reg(state, 0x82, 0x02);
++              _mt_fe_tn_set_reg(state, 0x82, 0x04);
++              _mt_fe_tn_set_reg(state, 0x82, 0x06);
++              _mt_fe_tn_set_reg(state, 0x82, 0x08);
++              _mt_fe_tn_set_reg(state, 0x82, 0x09);
++              _mt_fe_tn_set_reg(state, 0x82, 0x29);
++              _mt_fe_tn_set_reg(state, 0x82, 0x49);
++              _mt_fe_tn_set_reg(state, 0x82, 0x58);
++              _mt_fe_tn_set_reg(state, 0x82, 0x59);
++              _mt_fe_tn_set_reg(state, 0x82, 0x98);
++              _mt_fe_tn_set_reg(state, 0x82, 0x99);
++              _mt_fe_tn_set_reg(state, 0x10, 0x05);
++              _mt_fe_tn_set_reg(state, 0x10, 0x0d);
++              _mt_fe_tn_set_reg(state, 0x11, 0x95);
++              _mt_fe_tn_set_reg(state, 0x11, 0x9d);
++              if (state->tuner_loopthrough != 0) {
++                      _mt_fe_tn_set_reg(state, 0x67, 0x25);
++              } else {
++                      _mt_fe_tn_set_reg(state, 0x67, 0x05);
++              }
++      } else if (state->tuner_mtt == 0xE1) {
++              _mt_fe_tn_set_reg(state, 0x1b, 0x47);
++              if (state->tuner_mode == 0) {   /* DVB-C */
++                      _mt_fe_tn_set_reg(state, 0x66, 0x74);
++                      _mt_fe_tn_set_reg(state, 0x62, 0x2c);
++                      _mt_fe_tn_set_reg(state, 0x63, 0x54);
++                      _mt_fe_tn_set_reg(state, 0x68, 0x0b);
++                      _mt_fe_tn_set_reg(state, 0x14, 0x00);
++              } else {                        /* CTTB */
++                      _mt_fe_tn_set_reg(state, 0x66, 0x74);
++                      _mt_fe_tn_set_reg(state, 0x62, 0x0c);
++                      _mt_fe_tn_set_reg(state, 0x63, 0x54);
++                      _mt_fe_tn_set_reg(state, 0x68, 0x0b);
++                      _mt_fe_tn_set_reg(state, 0x14, 0x05);
++              }
++              _mt_fe_tn_set_reg(state, 0x6f, 0x00);
++              _mt_fe_tn_set_reg(state, 0x84, 0x04);
++              _mt_fe_tn_set_reg(state, 0x5e, 0xbe);
++              _mt_fe_tn_set_reg(state, 0x87, 0x07);
++              _mt_fe_tn_set_reg(state, 0x8a, 0x1f);
++              _mt_fe_tn_set_reg(state, 0x8b, 0x1f);
++              _mt_fe_tn_set_reg(state, 0x88, 0x30);
++              _mt_fe_tn_set_reg(state, 0x58, 0x34);
++              _mt_fe_tn_set_reg(state, 0x61, 0x8c);
++              _mt_fe_tn_set_reg(state, 0x6a, 0x42);
++      }
++      return 0;
++}
++
++static int mt_fe_tn_wakeup_tc2800(struct m88dc2800_state *state)
++{
++      _mt_fe_tn_set_reg(state, 0x16, 0xb1);
++      _mt_fe_tn_set_reg(state, 0x09, 0x7d);
++      return 0;
++}
++
++  static int mt_fe_tn_sleep_tc2800(struct m88dc2800_state *state)
++{
++      _mt_fe_tn_set_reg(state, 0x16, 0xb0);
++      _mt_fe_tn_set_reg(state, 0x09, 0x6d);
++      return 0;
++}
++
++ static int mt_fe_tn_init_tc2800(struct m88dc2800_state *state)
++{
++      if (state->tuner_init_OK != 1) {
++              state->tuner_dev_addr = 0x61;   /* TUNER_I2C_ADDR_TC2800 */
++              state->tuner_freq = 650000;
++              state->tuner_qam = 0;
++              state->tuner_mode = 0;  // 0: DVB-C, 1: CTTB
++              state->tuner_bandwidth = 8;
++              state->tuner_loopthrough = 0;
++              state->tuner_crystal = 24000;
++              state->tuner_dac = 7200;
++              state->tuner_mtt = 0x00;
++              state->tuner_custom_cfg = 0;
++              state->tuner_version = 30022;   /* Driver version number */
++              state->tuner_time = 12092611;
++              state->tuner_init_OK = 1;
++      }
++      _mt_fe_tn_set_reg(state, 0x2b, 0x46);
++      _mt_fe_tn_set_reg(state, 0x2c, 0x75);
++      if (state->tuner_mtt == 0x00) {
++              u8 tmp = 0;
++              _mt_fe_tn_get_reg(state, 0x01, &tmp);
++              printk(KERN_INFO "m88dc2800: tuner id = 0x%02x ", tmp);
++              switch (tmp) {
++              case 0x0d:
++                      state->tuner_mtt = 0xD1;
++                      break;
++              case 0x8e:
++              default:
++                      state->tuner_mtt = 0xE1;
++                      break;
++              }
++      }
++      return 0;
++}
++
++ static int mt_fe_tn_set_freq_tc2800(struct m88dc2800_state *state,
++                                     u32 freq_KHz)
++{
++      u8 buf;
++      u8 buf1;
++
++      mt_fe_tn_init_tc2800(state);
++      state->tuner_freq = freq_KHz;
++      _mt_fe_tn_set_reg(state, 0x21, freq_KHz > 500000 ? 0xb9 : 0x99);
++      mt_fe_tn_wakeup_tc2800(state);
++       _mt_fe_tn_set_reg(state, 0x05, 0x7f);
++      _mt_fe_tn_set_reg(state, 0x06, 0xf8);
++       _mt_fe_tn_set_RF_front_tc2800(state);
++      _mt_fe_tn_set_PLL_freq_tc2800(state);
++      _mt_fe_tn_set_DAC_tc2800(state);
++      _mt_fe_tn_set_BB_tc2800(state);
++      _mt_fe_tn_preset_tc2800(state);
++       _mt_fe_tn_set_reg(state, 0x05, 0x00);
++      _mt_fe_tn_set_reg(state, 0x06, 0x00);
++       if (state->tuner_mtt == 0xD1) {
++              _mt_fe_tn_set_reg(state, 0x00, 0x01);
++              _mt_fe_tn_set_reg(state, 0x00, 0x00);
++               msleep(5);
++              _mt_fe_tn_set_reg(state, 0x41, 0x00);
++              msleep(5);
++              _mt_fe_tn_set_reg(state, 0x41, 0x02);
++
++              _mt_fe_tn_get_reg(state, 0x69, &buf1);
++              buf1 = buf1 & 0x0f;
++              _mt_fe_tn_get_reg(state, 0x61, &buf);
++              buf = buf & 0x0f;
++              if (buf == 0x0c)
++                      _mt_fe_tn_set_reg(state, 0x6a, 0x59);
++              if (buf1 > 0x02) {
++                      if (freq_KHz > 600000)
++                              _mt_fe_tn_set_reg(state, 0x66, 0x44);
++                      else if (freq_KHz > 500000)
++                              _mt_fe_tn_set_reg(state, 0x66, 0x64);
++                      else
++                              _mt_fe_tn_set_reg(state, 0x66, 0x74);
++              }               
++              if (buf1 < 0x03) {
++                      if (freq_KHz > 800000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x64);
++                      else if (freq_KHz > 600000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x54);
++                      else if (freq_KHz > 500000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x54);
++                      else if (freq_KHz > 300000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x43);
++                      else if (freq_KHz > 220000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x54);
++                      else if (freq_KHz > 110000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x14);
++                      else
++                              _mt_fe_tn_set_reg(state, 0x87, 0x54);
++                      msleep(5);
++              } else if (buf < 0x0c) {
++                      if (freq_KHz > 800000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x14);
++                      else if (freq_KHz > 600000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x14);
++                      else if (freq_KHz > 500000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x34);
++                      else if (freq_KHz > 300000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x43);
++                      else if (freq_KHz > 220000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x54);
++                      else if (freq_KHz > 110000)
++                              _mt_fe_tn_set_reg(state, 0x87, 0x14);
++                      else
++                              _mt_fe_tn_set_reg(state, 0x87, 0x54);
++                      msleep(5);
++              }
++      } else if ((state->tuner_mtt == 0xE1)) {
++              _mt_fe_tn_set_reg(state, 0x00, 0x01);
++              _mt_fe_tn_set_reg(state, 0x00, 0x00);
++               msleep(20);
++               _mt_fe_tn_get_reg(state, 0x32, &buf);
++              buf = (buf & 0xef) | 0x28;
++              _mt_fe_tn_set_reg(state, 0x32, buf);
++               msleep(50);
++              _mt_fe_tn_get_reg(state, 0x38, &buf);
++              _mt_fe_tn_set_reg(state, 0x38, buf);
++              _mt_fe_tn_get_reg(state, 0x32, &buf);
++              buf = (buf & 0xf7) | 0x10;
++              _mt_fe_tn_set_reg(state, 0x32, buf);
++               msleep(10);
++               _mt_fe_tn_get_reg(state, 0x69, &buf);
++              buf = buf & 0x03;
++              _mt_fe_tn_set_reg(state, 0x2a, buf);
++              if (buf > 0) {
++                      msleep(20);
++                      _mt_fe_tn_get_reg(state, 0x84, &buf);
++                      buf = buf & 0x1f;
++                      _mt_fe_tn_set_reg(state, 0x68, 0x0a);
++                      _mt_fe_tn_get_reg(state, 0x88, &buf1);
++                      buf1 = buf1 & 0x1f;
++                      if (buf <= buf1)
++                              _mt_fe_tn_set_reg(state, 0x66, 0x44);
++                      else
++                              _mt_fe_tn_set_reg(state, 0x66, 0x74);
++              } else {
++                      if (freq_KHz <= 600000)
++                              _mt_fe_tn_set_reg(state, 0x68, 0x0c);
++                      else
++                              _mt_fe_tn_set_reg(state, 0x68, 0x0e);
++                      _mt_fe_tn_set_reg(state, 0x30, 0xfb);
++                      _mt_fe_tn_set_reg(state, 0x30, 0xff);
++                      _mt_fe_tn_set_reg(state, 0x31, 0x04);
++                      _mt_fe_tn_set_reg(state, 0x31, 0x00);
++              }
++              if (state->tuner_loopthrough != 0) {
++                      _mt_fe_tn_get_reg(state, 0x28, &buf);
++                      if (buf == 0) {
++                              _mt_fe_tn_set_reg(state, 0x28, 0xff);
++                              _mt_fe_tn_get_reg(state, 0x61, &buf);
++                              buf = buf & 0x0f;
++                              if (buf > 9)
++                                      _mt_fe_tn_set_reg(state, 0x67, 0x74);
++                              else if (buf > 6)
++                                      _mt_fe_tn_set_reg(state, 0x67, 0x64);
++                              else if (buf > 3)
++                                      _mt_fe_tn_set_reg(state, 0x67, 0x54);
++                              else
++                                      _mt_fe_tn_set_reg(state, 0x67, 0x44);
++                      }
++              } else {
++                      _mt_fe_tn_set_reg(state, 0x67, 0x34);
++              }
++      } else {
++              return 1;
++      }
++      return 0;
++}
++
++
++/*
++static int mt_fe_tn_set_BB_filter_band_tc2800(struct m88dc2800_state *state,
++                                            u8 bandwidth)
++{
++      u8 buf, tmp;
++
++      _mt_fe_tn_get_reg(state, 0x53, &tmp);
++
++      if (bandwidth == 6)
++              buf = 0x01 << 1;
++      else if (bandwidth == 7)
++              buf = 0x02 << 1;
++      else if (bandwidth == 8)
++              buf = 0x04 << 1;
++      else
++              buf = 0x04 << 1;
++
++      tmp &= 0xf1;
++      tmp |= buf;
++      _mt_fe_tn_set_reg(state, 0x53, tmp);
++      state->tuner_bandwidth = bandwidth;
++      return 0;
++}
++*/
++
++static s32 mt_fe_tn_get_signal_strength_tc2800(struct m88dc2800_state
++                                             *state)
++{
++      s32 level = -107;
++      s32 tmp1, tmp2, tmp3, tmp4, tmp5, tmp6;
++      s32 val1, val2, val;
++      s32 result2, result3, result4, result5, result6;
++      s32 append;
++      u8 tmp;
++      s32 freq_KHz = (s32) state->tuner_freq;
++      if (state->tuner_mtt == 0xD1) {
++              _mt_fe_tn_get_reg(state, 0x61, &tmp);
++              tmp1 = tmp & 0x0f;
++               _mt_fe_tn_get_reg(state, 0x69, &tmp);
++              tmp2 = tmp & 0x0f;
++               _mt_fe_tn_get_reg(state, 0x73, &tmp);
++              tmp3 = tmp & 0x07;
++               _mt_fe_tn_get_reg(state, 0x7c, &tmp);
++              tmp4 = (tmp >> 4) & 0x0f;
++               _mt_fe_tn_get_reg(state, 0x7b, &tmp);
++              tmp5 = tmp & 0x0f;
++               _mt_fe_tn_get_reg(state, 0x7f, &tmp);
++              tmp6 = (tmp >> 5) & 0x01;
++              if (tmp1 > 6) {
++                      val1 = 0;
++                      if (freq_KHz <= 200000) {
++                              val2 = (tmp1 - 6) * 267;
++                      } else if (freq_KHz <= 600000) {
++                              val2 = (tmp1 - 6) * 280;
++                      } else {
++                              val2 = (tmp1 - 6) * 290;
++                      }
++                      val = val1 + val2;
++              } else {
++                      if (tmp1 == 0) {
++                              val1 = -550;
++                      } else {
++                              val1 = 0;
++                      }
++                      if ((tmp1 < 4) && (freq_KHz >= 506000)) {
++                              val1 = -850;
++                      }
++                      val2 = 0;
++                      val = val1 + val2;
++              }
++              if (freq_KHz <= 95000) {
++                      result2 = tmp2 * 289;
++              } else if (freq_KHz <= 155000) {
++                      result2 = tmp2 * 278;
++              } else if (freq_KHz <= 245000) {
++                      result2 = tmp2 * 267;
++              } else if (freq_KHz <= 305000) {
++                      result2 = tmp2 * 256;
++              } else if (freq_KHz <= 335000) {
++                      result2 = tmp2 * 244;
++              } else if (freq_KHz <= 425000) {
++                      result2 = tmp2 * 233;
++              } else if (freq_KHz <= 575000) {
++                      result2 = tmp2 * 222;
++              } else if (freq_KHz <= 665000) {
++                      result2 = tmp2 * 211;
++              } else {
++                      result2 = tmp2 * 200;
++              }
++              result3 = (6 - tmp3) * 100;
++              result4 = 300 * tmp4;
++              result5 = 50 * tmp5;
++              result6 = 300 * tmp6;
++              if (freq_KHz < 105000) {
++                      append = -450;
++              } else if (freq_KHz <= 227000) {
++                      append = -4 * (freq_KHz / 1000 - 100) + 150;
++              } else if (freq_KHz <= 305000) {
++                      append = -4 * (freq_KHz / 1000 - 100);
++              } else if (freq_KHz <= 419000) {
++                      append = 500 - 40 * (freq_KHz / 1000 - 300) / 17 + 130;
++              } else if (freq_KHz <= 640000) {
++                      append = 500 - 40 * (freq_KHz / 1000 - 300) / 17;
++              } else {
++                      append = -500;
++              }
++              level = append - (val + result2 + result3 + result4 +
++                                result5 + result6);
++              level /= 100;
++      } else if (state->tuner_mtt == 0xE1) {
++              _mt_fe_tn_get_reg(state, 0x61, &tmp);
++              tmp1 = tmp & 0x0f;
++               _mt_fe_tn_get_reg(state, 0x84, &tmp);
++              tmp2 = tmp & 0x1f;
++               _mt_fe_tn_get_reg(state, 0x69, &tmp);
++              tmp3 = tmp & 0x03;
++               _mt_fe_tn_get_reg(state, 0x73, &tmp);
++              tmp4 = tmp & 0x0f;
++               _mt_fe_tn_get_reg(state, 0x7c, &tmp);
++              tmp5 = (tmp >> 4) & 0x0f;
++               _mt_fe_tn_get_reg(state, 0x7b, &tmp);
++              tmp6 = tmp & 0x0f;
++              if (freq_KHz < 151000) {
++                      result2 = (1150 - freq_KHz / 100) * 163 / 33 + 4230;
++                      result3 = (1150 - freq_KHz / 100) * 115 / 33 + 1850;
++                      result4 = -3676 * (freq_KHz / 1000) / 100 + 6115;
++              } else if (freq_KHz < 257000) {
++                      result2 = (1540 - freq_KHz / 100) * 11 / 4 + 3870;
++                      result3 = (1540 - freq_KHz / 100) * 205 / 96 + 2100;
++                      result4 = -21 * freq_KHz / 1000 + 5084;
++              } else if (freq_KHz < 305000) {
++                      result2 = (2620 - freq_KHz / 100) * 5 / 3 + 2770;
++                      result3 = (2620 - freq_KHz / 100) * 10 / 7 + 1700;
++                      result4 = 650;
++              } else if (freq_KHz < 449000) {
++                      result2 = (307 - freq_KHz / 1000) * 82 / 27 + 11270;
++                      result3 = (3100 - freq_KHz / 100) * 5 / 3 + 10000;
++                      result4 = 134 * freq_KHz / 10000 + 11875;
++              } else {
++                      result2 = (307 - freq_KHz / 1000) * 82 / 27 + 11270;
++                      result3 = 8400;
++                      result4 = 5300;
++              }
++              if (tmp1 > 6) {
++                      val1 = result2;
++                      val2 = 2900;
++                      val = 500;
++              } else if (tmp1 > 0) {
++                      val1 = result3;
++                      val2 = 2700;
++                      val = 500;
++              } else {
++                      val1 = result4;
++                      val2 = 2700;
++                      val = 400;
++              }
++              level = val1 - (val2 * tmp1 + 500 * tmp2 + 3000 * tmp3 -
++                          500 * tmp4 + 3000 * tmp5 + val * tmp6) - 1000;
++              level /= 1000;
++      }
++      return level;
++}
++
++
++/* m88dc2800 operation functions */
++u8 M88DC2000GetLock(struct m88dc2800_state * state)
++{
++      u8 u8ret = 0;
++      if (ReadReg(state, 0x80) < 0x06) {
++              if ((ReadReg(state, 0xdf) & 0x80) == 0x80
++                   &&(ReadReg(state, 0x91) & 0x23) == 0x03
++                   &&(ReadReg(state, 0x43) & 0x08) == 0x08)
++                      u8ret = 1;
++              else
++                      u8ret = 0;
++      } else {
++              if ((ReadReg(state, 0x85) & 0x08) == 0x08)
++                      u8ret = 1;
++              else
++                      u8ret = 0;
++      }
++      dprintk("%s, lock=%d\n", __func__, u8ret);
++      return u8ret;
++}
++
++static int M88DC2000SetTsType(struct m88dc2800_state *state, u8 type)
++{
++      u8 regC2H;
++
++      if (type == 3) {
++              WriteReg(state, 0x84, 0x6A);
++              WriteReg(state, 0xC0, 0x43);
++              WriteReg(state, 0xE2, 0x06);
++              regC2H = ReadReg(state, 0xC2);
++              regC2H &= 0xC0;
++              regC2H |= 0x1B;
++              WriteReg(state, 0xC2, regC2H);
++              WriteReg(state, 0xC1, 0x60);    /* common interface */
++      } else if (type == 1) {
++              WriteReg(state, 0x84, 0x6A);
++              WriteReg(state, 0xC0, 0x47);    /* serial format */
++              WriteReg(state, 0xE2, 0x02);
++              regC2H = ReadReg(state, 0xC2);
++              regC2H &= 0xC7;
++              WriteReg(state, 0xC2, regC2H);
++              WriteReg(state, 0xC1, 0x00);
++      } else {
++              WriteReg(state, 0x84, 0x6C);
++              WriteReg(state, 0xC0, 0x43);    /* parallel format */
++              WriteReg(state, 0xE2, 0x06);
++              regC2H = ReadReg(state, 0xC2);
++              regC2H &= 0xC7;
++              WriteReg(state, 0xC2, regC2H);
++              WriteReg(state, 0xC1, 0x00);
++      }
++      return 0;
++}
++
++static int M88DC2000RegInitial_TC2800(struct m88dc2800_state *state)
++{
++      u8 RegE3H, RegE4H;
++
++      WriteReg(state, 0x00, 0x48);
++      WriteReg(state, 0x01, 0x09);
++      WriteReg(state, 0xFB, 0x0A);
++      WriteReg(state, 0xFC, 0x0B);
++      WriteReg(state, 0x02, 0x0B);
++      WriteReg(state, 0x03, 0x18);
++      WriteReg(state, 0x05, 0x0D);
++      WriteReg(state, 0x36, 0x80);
++      WriteReg(state, 0x43, 0x40);
++      WriteReg(state, 0x55, 0x7A);
++      WriteReg(state, 0x56, 0xD9);
++      WriteReg(state, 0x57, 0xDF);
++      WriteReg(state, 0x58, 0x39);
++      WriteReg(state, 0x5A, 0x00);
++      WriteReg(state, 0x5C, 0x71);
++      WriteReg(state, 0x5D, 0x23);
++      WriteReg(state, 0x86, 0x40);
++      WriteReg(state, 0xF9, 0x08);
++      WriteReg(state, 0x61, 0x40);
++      WriteReg(state, 0x62, 0x0A);
++      WriteReg(state, 0x90, 0x06);
++      WriteReg(state, 0xDE, 0x00);
++      WriteReg(state, 0xA0, 0x03);
++      WriteReg(state, 0xDF, 0x81);
++      WriteReg(state, 0xFA, 0x40);
++      WriteReg(state, 0x37, 0x10);
++      WriteReg(state, 0xF0, 0x40);
++      WriteReg(state, 0xF2, 0x9C);
++      WriteReg(state, 0xF3, 0x40);
++      RegE3H = ReadReg(state, 0xE3);
++      RegE4H = ReadReg(state, 0xE4);
++      if (((RegE3H & 0xC0) == 0x00) && ((RegE4H & 0xC0) == 0x00)) {
++              WriteReg(state, 0x30, 0xFF);
++              WriteReg(state, 0x31, 0x00);
++              WriteReg(state, 0x32, 0x00);
++              WriteReg(state, 0x33, 0x00);
++              WriteReg(state, 0x35, 0x32);
++              WriteReg(state, 0x40, 0x00);
++              WriteReg(state, 0x41, 0x10);
++              WriteReg(state, 0xF1, 0x02);
++              WriteReg(state, 0xF4, 0x04);
++              WriteReg(state, 0xF5, 0x00);
++              WriteReg(state, 0x42, 0x14);
++              WriteReg(state, 0xE1, 0x25);
++      } else if (((RegE3H & 0xC0) == 0x80) && ((RegE4H & 0xC0) == 0x40)) {
++              WriteReg(state, 0x30, 0xFF);
++              WriteReg(state, 0x31, 0x00);
++              WriteReg(state, 0x32, 0x00);
++              WriteReg(state, 0x33, 0x00);
++              WriteReg(state, 0x35, 0x32);
++              WriteReg(state, 0x39, 0x00);
++              WriteReg(state, 0x3A, 0x00);
++              WriteReg(state, 0x40, 0x00);
++              WriteReg(state, 0x41, 0x10);
++              WriteReg(state, 0xF1, 0x00);
++              WriteReg(state, 0xF4, 0x00);
++              WriteReg(state, 0xF5, 0x40);
++              WriteReg(state, 0x42, 0x14);
++              WriteReg(state, 0xE1, 0x25);
++      } else if ((RegE3H == 0x80 || RegE3H == 0x81)
++                  && (RegE4H == 0x80 || RegE4H == 0x81)) {
++              WriteReg(state, 0x30, 0xFF);
++              WriteReg(state, 0x31, 0x00);
++              WriteReg(state, 0x32, 0x00);
++              WriteReg(state, 0x33, 0x00);
++              WriteReg(state, 0x35, 0x32);
++              WriteReg(state, 0x39, 0x00);
++              WriteReg(state, 0x3A, 0x00);
++              WriteReg(state, 0xF1, 0x00);
++              WriteReg(state, 0xF4, 0x00);
++              WriteReg(state, 0xF5, 0x40);
++              WriteReg(state, 0x42, 0x24);
++              WriteReg(state, 0xE1, 0x25);
++              WriteReg(state, 0x92, 0x7F);
++              WriteReg(state, 0x93, 0x91);
++              WriteReg(state, 0x95, 0x00);
++              WriteReg(state, 0x2B, 0x33);
++              WriteReg(state, 0x2A, 0x2A);
++              WriteReg(state, 0x2E, 0x80);
++              WriteReg(state, 0x25, 0x25);
++              WriteReg(state, 0x2D, 0xFF);
++              WriteReg(state, 0x26, 0xFF);
++              WriteReg(state, 0x27, 0x00);
++              WriteReg(state, 0x24, 0x25);
++              WriteReg(state, 0xA4, 0xFF);
++              WriteReg(state, 0xA3, 0x0D);
++      } else {
++              WriteReg(state, 0x30, 0xFF);
++              WriteReg(state, 0x31, 0x00);
++              WriteReg(state, 0x32, 0x00);
++              WriteReg(state, 0x33, 0x00);
++              WriteReg(state, 0x35, 0x32);
++              WriteReg(state, 0x39, 0x00);
++              WriteReg(state, 0x3A, 0x00);
++              WriteReg(state, 0xF1, 0x00);
++              WriteReg(state, 0xF4, 0x00);
++              WriteReg(state, 0xF5, 0x40);
++              WriteReg(state, 0x42, 0x24);
++              WriteReg(state, 0xE1, 0x27);
++              WriteReg(state, 0x92, 0x7F);
++              WriteReg(state, 0x93, 0x91);
++              WriteReg(state, 0x95, 0x00);
++              WriteReg(state, 0x2B, 0x33);
++              WriteReg(state, 0x2A, 0x2A);
++              WriteReg(state, 0x2E, 0x80);
++              WriteReg(state, 0x25, 0x25);
++              WriteReg(state, 0x2D, 0xFF);
++              WriteReg(state, 0x26, 0xFF);
++              WriteReg(state, 0x27, 0x00);
++              WriteReg(state, 0x24, 0x25);
++              WriteReg(state, 0xA4, 0xFF);
++              WriteReg(state, 0xA3, 0x10);
++      }
++      WriteReg(state, 0xF6, 0x4E);
++      WriteReg(state, 0xF7, 0x20);
++      WriteReg(state, 0x89, 0x02);
++      WriteReg(state, 0x14, 0x08);
++      WriteReg(state, 0x6F, 0x0D);
++      WriteReg(state, 0x10, 0xFF);
++      WriteReg(state, 0x11, 0x00);
++      WriteReg(state, 0x12, 0x30);
++      WriteReg(state, 0x13, 0x23);
++      WriteReg(state, 0x60, 0x00);
++      WriteReg(state, 0x69, 0x00);
++      WriteReg(state, 0x6A, 0x03);
++      WriteReg(state, 0xE0, 0x75);
++      WriteReg(state, 0x8D, 0x29);
++      WriteReg(state, 0x4E, 0xD8);
++      WriteReg(state, 0x88, 0x80);
++      WriteReg(state, 0x52, 0x79);
++      WriteReg(state, 0x53, 0x03);
++      WriteReg(state, 0x59, 0x30);
++      WriteReg(state, 0x5E, 0x02);
++      WriteReg(state, 0x5F, 0x0F);
++      WriteReg(state, 0x71, 0x03);
++      WriteReg(state, 0x72, 0x12);
++      WriteReg(state, 0x73, 0x12);
++
++      return 0;
++}
++
++static int M88DC2000AutoTSClock_P(struct m88dc2800_state *state, u32 sym,
++                                u16 qam)
++{
++      u32 dataRate;
++      u8 clk_div, value;
++      printk(KERN_INFO
++             "m88dc2800: M88DC2000AutoTSClock_P, symrate=%d qam=%d\n",
++             sym, qam);
++      switch (qam) {
++      case 16:
++              dataRate = 4;
++              break;
++      case 32:
++              dataRate = 5;
++              break;
++      case 128:
++              dataRate = 7;
++              break;
++      case 256:
++              dataRate = 8;
++              break;
++      case 64:
++      default:
++              dataRate = 6;
++              break;
++      }
++      dataRate *= sym * 105;
++      dataRate /= 800;
++      if (dataRate <= 4115)
++              clk_div = 0x05;
++      else if (dataRate <= 4800)
++              clk_div = 0x04;
++      else if (dataRate <= 5760)
++              clk_div = 0x03;
++      else if (dataRate <= 7200)
++              clk_div = 0x02;
++      else if (dataRate <= 9600)
++              clk_div = 0x01;
++      else
++              clk_div = 0x00;
++      value = ReadReg(state, 0xC2);
++      value &= 0xc0;
++      value |= clk_div;
++      WriteReg(state, 0xC2, value);
++      return 0;
++}
++
++static int M88DC2000AutoTSClock_C(struct m88dc2800_state *state, u32 sym,
++                                u16 qam)
++{
++      u32 dataRate;
++      u8 clk_div, value;
++      printk(KERN_INFO
++             "m88dc2800: M88DC2000AutoTSClock_C, symrate=%d qam=%d\n",
++             sym, qam);
++      switch (qam) {
++      case 16:
++              dataRate = 4;
++              break;
++      case 32:
++              dataRate = 5;
++              break;
++      case 128:
++              dataRate = 7;
++              break;
++      case 256:
++              dataRate = 8;
++              break;
++      case 64:
++      default:
++              dataRate = 6;
++              break;
++      }
++      dataRate *= sym * 105;
++      dataRate /= 800;
++      if (dataRate <= 4115)
++              clk_div = 0x3F;
++      else if (dataRate <= 4800)
++              clk_div = 0x36;
++      else if (dataRate <= 5760)
++              clk_div = 0x2D;
++      else if (dataRate <= 7200)
++              clk_div = 0x24;
++      else if (dataRate <= 9600)
++              clk_div = 0x1B;
++      else
++              clk_div = 0x12;
++      value = ReadReg(state, 0xC2);
++      value &= 0xc0;
++      value |= clk_div;
++      WriteReg(state, 0xC2, value);
++      return 0;
++}
++
++static int M88DC2000SetTxMode(struct m88dc2800_state *state, u8 inverted,
++                            u8 j83)
++{
++      u8 value = 0;
++      if (inverted)
++              value |= 0x08;  /*      spectrum inverted       */
++      if (j83)
++              value |= 0x01;  /*      J83C                    */
++      WriteReg(state, 0x83, value);
++      return 0;
++}
++
++static int M88DC2000SoftReset(struct m88dc2800_state *state)
++{
++      WriteReg(state, 0x80, 0x01);
++      WriteReg(state, 0x82, 0x00);
++      msleep(1);
++      WriteReg(state, 0x80, 0x00);
++      return 0;
++}
++
++static int M88DC2000SetSym(struct m88dc2800_state *state, u32 sym, u32 xtal)
++{
++      u8 value;
++      u8 reg6FH, reg12H;
++      u64 fValue;
++      u32 dwValue;
++
++      printk(KERN_INFO "%s, sym=%d, xtal=%d\n", __func__, sym, xtal);
++      fValue = 4294967296 * (sym + 10);
++      do_div(fValue, xtal);
++
++      /* fValue  = 4294967296 * (sym + 10) / xtal; */
++      dwValue = (u32) fValue;
++      printk(KERN_INFO "%s, fvalue1=%x\n", __func__, dwValue);
++      WriteReg(state, 0x58, (u8) ((dwValue >> 24) & 0xff));
++      WriteReg(state, 0x57, (u8) ((dwValue >> 16) & 0xff));
++      WriteReg(state, 0x56, (u8) ((dwValue >> 8) & 0xff));
++      WriteReg(state, 0x55, (u8) ((dwValue >> 0) & 0xff));
++
++      /* fValue = 2048 * xtal / sym; */
++      fValue = 2048 * xtal;
++      do_div(fValue, sym);
++      dwValue = (u32) fValue;
++      printk(KERN_INFO "%s, fvalue2=%x\n", __func__, dwValue);
++      WriteReg(state, 0x5D, (u8) ((dwValue >> 8) & 0xff));
++      WriteReg(state, 0x5C, (u8) ((dwValue >> 0) & 0xff));
++      value = ReadReg(state, 0x5A);
++      if (((dwValue >> 16) & 0x0001) == 0)
++              value &= 0x7F;
++      else
++              value |= 0x80;
++      WriteReg(state, 0x5A, value);
++      value = ReadReg(state, 0x89);
++      if (sym <= 1800)
++              value |= 0x01;
++      else
++              value &= 0xFE;
++      WriteReg(state, 0x89, value);
++      if (sym >= 6700) {
++              reg6FH = 0x0D;
++              reg12H = 0x30;
++      } else if (sym >= 4000) {
++              fValue = 22 * 4096 / sym;
++              reg6FH = (u8) fValue;
++              reg12H = 0x30;
++      } else if (sym >= 2000) {
++              fValue = 14 * 4096 / sym;
++              reg6FH = (u8) fValue;
++              reg12H = 0x20;
++      } else {
++              fValue = 7 * 4096 / sym;
++              reg6FH = (u8) fValue;
++              reg12H = 0x10;
++      }
++      WriteReg(state, 0x6F, reg6FH);
++      WriteReg(state, 0x12, reg12H);
++      if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
++             && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
++              if (sym < 3000) {
++                      WriteReg(state, 0x6C, 0x16);
++                      WriteReg(state, 0x6D, 0x10);
++                      WriteReg(state, 0x6E, 0x18);
++              } else {
++                      WriteReg(state, 0x6C, 0x14);
++                      WriteReg(state, 0x6D, 0x0E);
++                      WriteReg(state, 0x6E, 0x36);
++              }
++      } else {
++              WriteReg(state, 0x6C, 0x16);
++              WriteReg(state, 0x6D, 0x10);
++              WriteReg(state, 0x6E, 0x18);
++      }
++      return 0;
++}
++
++static int M88DC2000SetQAM(struct m88dc2800_state *state, u16 qam)
++{
++      u8 reg00H, reg4AH, regC2H, reg44H, reg4CH, reg4DH, reg74H, value;
++      u8 reg8BH, reg8EH;
++      printk(KERN_INFO "%s, qam=%d\n", __func__, qam);
++      regC2H = ReadReg(state, 0xC2);
++      regC2H &= 0xF8;
++      switch (qam) {
++      case 16:                /* 16 QAM */
++              reg00H = 0x08;
++              reg4AH = 0x0F;
++              regC2H |= 0x02;
++              reg44H = 0xAA;
++              reg4CH = 0x0C;
++              reg4DH = 0xF7;
++              reg74H = 0x0E;
++              if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
++                   && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
++                      reg8BH = 0x5A;
++                      reg8EH = 0xBD;
++              } else {
++                      reg8BH = 0x5B;
++                      reg8EH = 0x9D;
++              }
++              WriteReg(state, 0x6E, 0x18);
++              break;
++      case 32:                /* 32 QAM */
++              reg00H = 0x18;
++              reg4AH = 0xFB;
++              regC2H |= 0x02;
++              reg44H = 0xAA;
++              reg4CH = 0x0C;
++              reg4DH = 0xF7;
++              reg74H = 0x0E;
++              if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
++                   && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
++                      reg8BH = 0x5A;
++                      reg8EH = 0xBD;
++              } else {
++                      reg8BH = 0x5B;
++                      reg8EH = 0x9D;
++              }
++              WriteReg(state, 0x6E, 0x18);
++              break;
++      case 64:                /* 64 QAM */
++              reg00H = 0x48;
++              reg4AH = 0xCD;
++              regC2H |= 0x02;
++              reg44H = 0xAA;
++              reg4CH = 0x0C;
++              reg4DH = 0xF7;
++              reg74H = 0x0E;
++              if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
++                   && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
++                      reg8BH = 0x5A;
++                      reg8EH = 0xBD;
++              } else {
++                      reg8BH = 0x5B;
++                      reg8EH = 0x9D;
++              }
++              break;
++      case 128:               /* 128 QAM */
++              reg00H = 0x28;
++              reg4AH = 0xFF;
++              regC2H |= 0x02;
++              reg44H = 0xA9;
++              reg4CH = 0x08;
++              reg4DH = 0xF5;
++              reg74H = 0x0E;
++              reg8BH = 0x5B;
++              reg8EH = 0x9D;
++              break;
++      case 256:               /* 256 QAM */
++              reg00H = 0x38;
++              reg4AH = 0xCD;
++              if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
++                   && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
++                      regC2H |= 0x02;
++              } else {
++                      regC2H |= 0x01;
++              }
++              reg44H = 0xA9;
++              reg4CH = 0x08;
++              reg4DH = 0xF5;
++              reg74H = 0x0E;
++              reg8BH = 0x5B;
++              reg8EH = 0x9D;
++              break;
++      default:                /* 64 QAM */
++              reg00H = 0x48;
++              reg4AH = 0xCD;
++              regC2H |= 0x02;
++              reg44H = 0xAA;
++              reg4CH = 0x0C;
++              reg4DH = 0xF7;
++              reg74H = 0x0E;
++              if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
++                   && ((ReadReg(state, 0xE4) & 0x80) == 0x80)) {
++                      reg8BH = 0x5A;
++                      reg8EH = 0xBD;
++              } else {
++                      reg8BH = 0x5B;
++                      reg8EH = 0x9D;
++              }
++              break;
++      }
++      WriteReg(state, 0x00, reg00H);
++      value = ReadReg(state, 0x88);
++      value |= 0x08;
++      WriteReg(state, 0x88, value);
++      WriteReg(state, 0x4B, 0xFF);
++      WriteReg(state, 0x4A, reg4AH);
++      value &= 0xF7;
++      WriteReg(state, 0x88, value);
++      WriteReg(state, 0xC2, regC2H);
++      WriteReg(state, 0x44, reg44H);
++      WriteReg(state, 0x4C, reg4CH);
++      WriteReg(state, 0x4D, reg4DH);
++      WriteReg(state, 0x74, reg74H);
++      WriteReg(state, 0x8B, reg8BH);
++      WriteReg(state, 0x8E, reg8EH);
++      return 0;
++}
++
++static int M88DC2000WriteTuner_TC2800(struct m88dc2800_state *state,
++                                    u32 freq_KHz)
++{
++      printk(KERN_INFO "%s, freq=%d KHz\n", __func__, freq_KHz);
++      return mt_fe_tn_set_freq_tc2800(state, freq_KHz);
++}
++
++static int m88dc2800_init(struct dvb_frontend *fe)
++{
++      dprintk("%s()\n", __func__);
++      return 0;
++}
++
++static int m88dc2800_set_parameters(struct dvb_frontend *fe)
++{
++      struct dtv_frontend_properties *c = &fe->dtv_property_cache;
++      u8 is_annex_c, is_update;
++      u16 temp_qam;
++      s32 waiting_time;
++      struct m88dc2800_state *state = fe->demodulator_priv;
++
++      is_annex_c = c->delivery_system == SYS_DVBC_ANNEX_C ? 1 : 0;
++
++      switch (c->modulation) {
++      case QAM_16:
++              temp_qam = 16;
++              break;
++      case QAM_32:
++              temp_qam = 32;
++              break;
++      case QAM_128:
++              temp_qam = 128;
++              break;
++      case QAM_256:
++              temp_qam = 256;
++              break;
++      default:                /* QAM_64 */
++              temp_qam = 64;
++              break;
++      }
++
++      state->inverted = c->inversion == INVERSION_ON ? 1 : 0;
++
++      printk(KERN_INFO
++           "m88dc2800: state, freq=%d qam=%d sym=%d inverted=%d xtal=%d\n",
++           state->freq, state->qam, state->sym, state->inverted,
++           state->xtal);
++      printk(KERN_INFO
++           "m88dc2800: set frequency to %d qam=%d symrate=%d annex-c=%d\n",
++           c->frequency, temp_qam, c->symbol_rate, is_annex_c);
++
++      is_update = 0;
++      WriteReg(state, 0x80, 0x01);
++      if (c->frequency != state->freq) {
++              M88DC2000WriteTuner_TC2800(state, c->frequency / 1000);
++              state->freq = c->frequency;
++      }
++      if (c->symbol_rate != state->sym) {
++              M88DC2000SetSym(state, c->symbol_rate / 1000, state->xtal);
++              state->sym = c->symbol_rate;
++              is_update = 1;
++      }
++      if (temp_qam != state->qam) {
++              M88DC2000SetQAM(state, temp_qam);
++              state->qam = temp_qam;
++              is_update = 1;
++      }
++
++      if (is_update != 0) {
++              if (state->config->ts_mode == 3)
++                      M88DC2000AutoTSClock_C(state, state->sym / 1000,
++                                             temp_qam);
++              else
++                      M88DC2000AutoTSClock_P(state, state->sym / 1000,
++                                             temp_qam);
++      }
++
++      M88DC2000SetTxMode(state, state->inverted, is_annex_c);
++      M88DC2000SoftReset(state);
++      if (((ReadReg(state, 0xE3) & 0x80) == 0x80)
++          && ((ReadReg(state, 0xE4) & 0x80) == 0x80))
++              waiting_time = 800;
++      else
++              waiting_time = 500;
++      while (waiting_time > 0) {
++              msleep(50);
++              waiting_time -= 50;
++              if (M88DC2000GetLock(state))
++                      return 0;
++      }
++
++      state->inverted = (state->inverted != 0) ? 0 : 1;
++      M88DC2000SetTxMode(state, state->inverted, is_annex_c);
++      M88DC2000SoftReset(state);
++      if (((ReadReg(state, 0xE3) & 0x80) == 0x80) &&
++          ((ReadReg(state, 0xE4) & 0x80) == 0x80))
++              waiting_time = 800;
++      else
++              waiting_time = 500;
++      while (waiting_time > 0) {
++              msleep(50);
++              waiting_time -= 50;
++              if (M88DC2000GetLock(state))
++                      return 0;
++      }
++      return 0;
++}
++
++static int m88dc2800_read_status(struct dvb_frontend *fe,
++                               fe_status_t * status)
++{
++      struct m88dc2800_state *state = fe->demodulator_priv;
++      *status = 0;
++
++      if (M88DC2000GetLock(state)) {
++              *status = FE_HAS_SIGNAL | FE_HAS_CARRIER
++                  |FE_HAS_SYNC | FE_HAS_VITERBI | FE_HAS_LOCK;
++      }
++      return 0;
++}
++
++static int m88dc2800_read_ber(struct dvb_frontend *fe, u32 * ber)
++{
++      struct m88dc2800_state *state = fe->demodulator_priv;
++      u16 tmp;
++
++      if (M88DC2000GetLock(state) == 0) {
++              state->ber = 0;
++      } else if ((ReadReg(state, 0xA0) & 0x80) != 0x80) {
++              tmp = ReadReg(state, 0xA2) << 8;
++              tmp += ReadReg(state, 0xA1);
++              state->ber = tmp;
++              WriteReg(state, 0xA0, 0x05);
++              WriteReg(state, 0xA0, 0x85);
++      }
++      *ber = state->ber;
++      return 0;
++}
++
++static int m88dc2800_read_signal_strength(struct dvb_frontend *fe,
++                                        u16 * strength)
++{
++      struct m88dc2800_state *state = fe->demodulator_priv;
++      s16 tuner_strength;
++
++      tuner_strength = mt_fe_tn_get_signal_strength_tc2800(state);
++      *strength = tuner_strength < -107 ? 0 : tuner_strength + 107;
++
++      return 0;
++}
++
++static int m88dc2800_read_snr(struct dvb_frontend *fe, u16 * snr)
++{
++      static const u32 mes_log[] = {
++              0, 3010, 4771, 6021, 6990, 7781, 8451, 9031, 9542, 10000,
++              10414, 10792, 11139, 11461, 11761, 12041, 12304, 12553, 12788,
++              13010, 13222, 13424, 13617, 13802, 13979, 14150, 14314, 14472,
++              14624, 14771, 14914, 15052, 15185, 15315, 15441, 15563, 15682,
++              15798, 15911, 16021, 16128, 16232, 16335, 16435, 16532, 16628,
++              16721, 16812, 16902, 16990, 17076, 17160, 17243, 17324, 17404,
++              17482, 17559, 17634, 17709, 17782, 17853, 17924, 17993, 18062,
++              18129, 18195, 18261, 18325, 18388, 18451, 18513, 18573, 18633,
++              18692, 18751, 18808, 18865, 18921, 18976, 19031
++      };
++      struct m88dc2800_state *state = fe->demodulator_priv;
++      u8 i;
++      u32 _snr, mse;
++
++      if ((ReadReg(state, 0x91) & 0x23) != 0x03) {
++              *snr = 0;
++              return 0;
++      }
++      mse = 0;
++      for (i = 0; i < 30; i++) {
++              mse += (ReadReg(state, 0x08) << 8) + ReadReg(state, 0x07);
++      }
++      mse /= 30;
++      if (mse > 80)
++              mse = 80;
++      switch (state->qam) {
++      case 16:
++              _snr = 34080;
++              break;          /*      16QAM                           */
++      case 32:
++              _snr = 37600;
++              break;          /*      32QAM                           */
++      case 64:
++              _snr = 40310;
++              break;          /*      64QAM                           */
++      case 128:
++              _snr = 43720;
++              break;          /*      128QAM                          */
++      case 256:
++              _snr = 46390;
++              break;          /*      256QAM                          */
++      default:
++              _snr = 40310;
++              break;
++      }
++      _snr -= mes_log[mse - 1];       /*      C - 10*log10(MSE)       */
++      _snr /= 1000;
++      if (_snr > 0xff)
++              _snr = 0xff;
++      *snr = _snr;
++      return 0;
++}
++
++static int m88dc2800_read_ucblocks(struct dvb_frontend *fe, u32 * ucblocks)
++{
++      struct m88dc2800_state *state = fe->demodulator_priv;
++      u8 u8Value;
++
++      u8Value = ReadReg(state, 0xdf);
++      u8Value |= 0x02;        /* Hold */
++      WriteReg(state, 0xdf, u8Value);
++
++      *ucblocks = ReadReg(state, 0xd5);
++      *ucblocks = (*ucblocks << 8) | ReadReg(state, 0xd4);
++
++      u8Value &= 0xfe;        /* Clear */
++      WriteReg(state, 0xdf, u8Value);
++      u8Value &= 0xfc;        /* Update */
++      u8Value |= 0x01;
++      WriteReg(state, 0xdf, u8Value);
++
++      return 0;
++}
++
++static int m88dc2800_sleep(struct dvb_frontend *fe)
++{
++      struct m88dc2800_state *state = fe->demodulator_priv;
++
++      mt_fe_tn_sleep_tc2800(state);
++      state->freq = 0;
++
++      return 0;
++}
++
++static void m88dc2800_release(struct dvb_frontend *fe)
++{
++      struct m88dc2800_state *state = fe->demodulator_priv;
++      kfree(state);
++}
++
++static struct dvb_frontend_ops m88dc2800_ops;
++
++struct dvb_frontend *m88dc2800_attach(const struct m88dc2800_config
++                                    *config, struct i2c_adapter *i2c)
++{
++      struct m88dc2800_state *state = NULL;
++
++      /* allocate memory for the internal state */
++      state = kzalloc(sizeof(struct m88dc2800_state), GFP_KERNEL);
++      if (state == NULL)
++              goto error;
++
++      /* setup the state */
++      state->config = config;
++      state->i2c = i2c;
++      state->xtal = 28800;
++
++      WriteReg(state, 0x80, 0x01);
++      M88DC2000RegInitial_TC2800(state);
++      M88DC2000SetTsType(state, state->config->ts_mode);
++      mt_fe_tn_init_tc2800(state);
++
++      /* create dvb_frontend */
++      memcpy(&state->frontend.ops, &m88dc2800_ops,
++             sizeof(struct dvb_frontend_ops));
++      state->frontend.demodulator_priv = state;
++      return &state->frontend;
++
++      error:
++      kfree(state);
++      return NULL;
++}
++
++EXPORT_SYMBOL(m88dc2800_attach);
++
++static struct dvb_frontend_ops m88dc2800_ops = {
++      .delsys = {SYS_DVBC_ANNEX_A, SYS_DVBC_ANNEX_C},
++      .info = {
++               .name = "Montage M88DC2800 DVB-C",
++               .frequency_stepsize = 62500,
++               .frequency_min = 48000000,
++               .frequency_max = 870000000,
++               .symbol_rate_min = 870000,
++               .symbol_rate_max = 9000000,
++               .caps = FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 |
++                       FE_CAN_QAM_128 | FE_CAN_QAM_256 | FE_CAN_FEC_AUTO
++      },
++      .release = m88dc2800_release,
++      .init = m88dc2800_init,
++      .sleep = m88dc2800_sleep,
++      .set_frontend = m88dc2800_set_parameters,
++      .read_status = m88dc2800_read_status,
++      .read_ber = m88dc2800_read_ber,
++      .read_signal_strength = m88dc2800_read_signal_strength,
++      .read_snr = m88dc2800_read_snr,
++      .read_ucblocks = m88dc2800_read_ucblocks,
++};
++
++MODULE_DESCRIPTION("Montage DVB-C demodulator driver");
++MODULE_AUTHOR("Max Nibble <nibble.max@gmail.com>");
++MODULE_LICENSE("GPL");
++MODULE_VERSION("1.00");
+diff --git a/drivers/media/dvb-frontends/m88dc2800.h b/drivers/media/dvb-frontends/m88dc2800.h
+new file mode 100644
+index 0000000..2184322
+--- /dev/null
++++ b/drivers/media/dvb-frontends/m88dc2800.h
+@@ -0,0 +1,44 @@
++/*
++    M88DC2800/M88TC2800  - DVB-C demodulator and tuner from Montage
++
++    Copyright (C) 2012 Max Nibble <nibble.max@gmail.com>
++    Copyright (C) 2011 Montage Technology - www.montage-tech.com
++
++    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.
++
++    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, write to the Free Software
++    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++*/
++
++#ifndef M88DC2800_H
++#define M88DC2800_H
++
++#include <linux/kconfig.h>
++#include <linux/dvb/frontend.h>
++
++struct m88dc2800_config {
++      u8 demod_address;
++      u8 ts_mode;
++};
++
++#if IS_ENABLED(CONFIG_DVB_M88DC2800)
++extern struct dvb_frontend* m88dc2800_attach(const struct m88dc2800_config* config,
++                                          struct i2c_adapter* i2c);
++#else
++static inline struct dvb_frontend* m88dc2800_attach(const struct m88dc2800_config* config,
++                                          struct i2c_adapter* i2c)
++{
++      printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
++      return NULL;
++}
++#endif /* CONFIG_DVB_M88DC2800 */
++#endif /* M88DC2800_H */
+diff --git a/drivers/media/pci/cx23885/Kconfig b/drivers/media/pci/cx23885/Kconfig
+index d1dcb1d..285c1ad 100644
+--- a/drivers/media/pci/cx23885/Kconfig
++++ b/drivers/media/pci/cx23885/Kconfig
+@@ -23,6 +23,8 @@ config VIDEO_CX23885
+       select DVB_STB6100 if MEDIA_SUBDRV_AUTOSELECT
+       select DVB_STV6110 if MEDIA_SUBDRV_AUTOSELECT
+       select DVB_CX24116 if MEDIA_SUBDRV_AUTOSELECT
++      select DVB_DVBSKY_M88DS3103 if MEDIA_SUBDRV_AUTOSELECT
++      select DVB_M88DC2800 if MEDIA_SUBDRV_AUTOSELECT
+       select DVB_CX24117 if MEDIA_SUBDRV_AUTOSELECT
+       select DVB_STV0900 if MEDIA_SUBDRV_AUTOSELECT
+       select DVB_DS3000 if MEDIA_SUBDRV_AUTOSELECT
+diff --git a/drivers/media/pci/cx23885/cimax2.c b/drivers/media/pci/cx23885/cimax2.c
+index 16fa7ea..2b63f78 100644
+--- a/drivers/media/pci/cx23885/cimax2.c
++++ b/drivers/media/pci/cx23885/cimax2.c
+@@ -426,7 +426,7 @@ int netup_poll_ci_slot_status(struct dvb_ca_en50221 *en50221,
+       return state->status;
+ }
+-int netup_ci_init(struct cx23885_tsport *port)
++int netup_ci_init(struct cx23885_tsport *port, bool isDVBSky)
+ {
+       struct netup_ci_state *state;
+       u8 cimax_init[34] = {
+@@ -475,6 +475,11 @@ int netup_ci_init(struct cx23885_tsport *port)
+               goto err;
+       }
++      if(isDVBSky) {
++              cimax_init[32] = 0x22;
++              cimax_init[33] = 0x00;
++      }
++
+       port->port_priv = state;
+       switch (port->nr) {
+@@ -548,3 +553,19 @@ void netup_ci_exit(struct cx23885_tsport *port)
+       dvb_ca_en50221_release(&state->ca);
+       kfree(state);
+ }
++
++/* CI irq handler for DVBSky board*/
++int dvbsky_ci_slot_status(struct cx23885_dev *dev)
++{
++      struct cx23885_tsport *port = NULL;
++      struct netup_ci_state *state = NULL;
++
++      ci_dbg_print("%s:\n", __func__);
++
++      port = &dev->ts1;
++      state = port->port_priv;
++      schedule_work(&state->work);
++      ci_dbg_print("%s: Wakeup CI0\n", __func__);
++
++      return 1;
++}
+diff --git a/drivers/media/pci/cx23885/cimax2.h b/drivers/media/pci/cx23885/cimax2.h
+index 518744a..39f3db7 100644
+--- a/drivers/media/pci/cx23885/cimax2.h
++++ b/drivers/media/pci/cx23885/cimax2.h
+@@ -41,7 +41,9 @@ extern int netup_ci_slot_ts_ctl(struct dvb_ca_en50221 *en50221, int slot);
+ extern int netup_ci_slot_status(struct cx23885_dev *dev, u32 pci_status);
+ extern int netup_poll_ci_slot_status(struct dvb_ca_en50221 *en50221,
+                                               int slot, int open);
+-extern int netup_ci_init(struct cx23885_tsport *port);
++extern int netup_ci_init(struct cx23885_tsport *port, bool isDVBSky);
+ extern void netup_ci_exit(struct cx23885_tsport *port);
++extern int dvbsky_ci_slot_status(struct cx23885_dev *dev);
++
+ #endif
+diff --git a/drivers/media/pci/cx23885/cx23885-cards.c b/drivers/media/pci/cx23885/cx23885-cards.c
+old mode 100644
+new mode 100755
+index 79f20c8..889bd4c
+--- a/drivers/media/pci/cx23885/cx23885-cards.c
++++ b/drivers/media/pci/cx23885/cx23885-cards.c
+@@ -613,6 +613,49 @@ struct cx23885_board cx23885_boards[] = {
+               .name           = "TeVii S471",
+               .portb          = CX23885_MPEG_DVB,
+       },
++      [CX23885_BOARD_BST_PS8512] = {
++              .name           = "Bestunar PS8512",
++              .portb          = CX23885_MPEG_DVB,
++      },
++      [CX23885_BOARD_DVBSKY_S950] = {
++              .name           = "DVBSKY S950",
++              .portb          = CX23885_MPEG_DVB,
++      },
++      [CX23885_BOARD_DVBSKY_S952] = {
++              .name           = "DVBSKY S952",
++              .portb          = CX23885_MPEG_DVB,
++              .portc          = CX23885_MPEG_DVB,
++      },
++      [CX23885_BOARD_DVBSKY_S950_CI] = {
++              .ci_type        = 3,
++              .name           = "DVBSKY S950CI DVB-S2 CI",
++              .portb          = CX23885_MPEG_DVB,
++      },
++      [CX23885_BOARD_DVBSKY_C2800E_CI] = {
++              .ci_type        = 3,
++              .name           = "DVBSKY C2800E DVB-C CI",
++              .portb          = CX23885_MPEG_DVB,
++      },
++      [CX23885_BOARD_DVBSKY_T9580] = {
++              .name           = "DVBSKY T9580",
++              .portb          = CX23885_MPEG_DVB,
++              .portc          = CX23885_MPEG_DVB,
++      },
++      [CX23885_BOARD_DVBSKY_T980_CI] = {
++              .ci_type        = 3,
++              .name           = "DVBSKY T980CI DVB-T2/C CI",
++              .portb          = CX23885_MPEG_DVB,
++      },
++      [CX23885_BOARD_DVBSKY_T982] = {
++              .name           = "DVBSKY T982",
++              .portb          = CX23885_MPEG_DVB,
++              .portc          = CX23885_MPEG_DVB,
++      },
++      [CX23885_BOARD_TT_4500_CI] = {
++              .ci_type        = 3,
++              .name           = "TT-budget CT2-4500 CI",
++              .portb          = CX23885_MPEG_DVB,
++      },
+       [CX23885_BOARD_PROF_8000] = {
+               .name           = "Prof Revolution DVB-S2 8000",
+               .portb          = CX23885_MPEG_DVB,
+@@ -874,6 +917,42 @@ struct cx23885_subid cx23885_subids[] = {
+               .subdevice = 0x9022,
+               .card      = CX23885_BOARD_TEVII_S471,
+       }, {
++              .subvendor = 0x14f1,
++              .subdevice = 0x8512,
++              .card      = CX23885_BOARD_BST_PS8512,
++      }, {
++              .subvendor = 0x4254,
++              .subdevice = 0x0950,
++              .card      = CX23885_BOARD_DVBSKY_S950,         
++      }, {
++              .subvendor = 0x4254,
++              .subdevice = 0x0952,
++              .card      = CX23885_BOARD_DVBSKY_S952,
++      }, {
++              .subvendor = 0x4254,
++              .subdevice = 0x950C,
++              .card      = CX23885_BOARD_DVBSKY_S950_CI,
++      }, {
++              .subvendor = 0x4254,
++              .subdevice = 0x2800,
++              .card      = CX23885_BOARD_DVBSKY_C2800E_CI,
++      }, {
++              .subvendor = 0x4254,
++              .subdevice = 0x9580,
++              .card      = CX23885_BOARD_DVBSKY_T9580,
++      }, {
++              .subvendor = 0x4254,
++              .subdevice = 0x980C,
++              .card      = CX23885_BOARD_DVBSKY_T980_CI,
++      }, {
++              .subvendor = 0x4254,
++              .subdevice = 0x0982,
++              .card      = CX23885_BOARD_DVBSKY_T982,
++      }, {
++              .subvendor = 0x13C2,
++              .subdevice = 0x3013,
++              .card      = CX23885_BOARD_TT_4500_CI,
++      }, {
+               .subvendor = 0x8000,
+               .subdevice = 0x3034,
+               .card      = CX23885_BOARD_PROF_8000,
+@@ -1483,9 +1562,75 @@ void cx23885_gpio_setup(struct cx23885_dev *dev)
+               cx_set(GP0_IO, 0x00040004);
+               mdelay(60);
+               break;
++      case CX23885_BOARD_DVBSKY_S950:
++      case CX23885_BOARD_BST_PS8512:                  
++              cx23885_gpio_enable(dev, GPIO_2, 1);
++              cx23885_gpio_clear(dev, GPIO_2);
++              msleep(100);            
++              cx23885_gpio_set(dev, GPIO_2);
++              break;
++      case CX23885_BOARD_DVBSKY_S952:
++      case CX23885_BOARD_DVBSKY_T9580:
++      case CX23885_BOARD_DVBSKY_T982:
++              cx_write(MC417_CTL, 0x00000037);/* enable GPIO3-18 pins */
++              
++              cx23885_gpio_enable(dev, GPIO_2, 1);
++              cx23885_gpio_enable(dev, GPIO_11, 1);
++              
++              cx23885_gpio_clear(dev, GPIO_2);
++              cx23885_gpio_clear(dev, GPIO_11);
++              msleep(100);            
++              cx23885_gpio_set(dev, GPIO_2);
++              cx23885_gpio_set(dev, GPIO_11); 
++              break;
++      case CX23885_BOARD_DVBSKY_S950_CI:
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
++      case CX23885_BOARD_DVBSKY_T980_CI:
++      case CX23885_BOARD_TT_4500_CI:
++              cx_set(GP0_IO, 0x00060002); /* GPIO 1/2 as output */
++              cx_clear(GP0_IO, 0x00010004); /*GPIO 0 as input*/
++              mdelay(100);/* reset delay */
++              cx_set(GP0_IO, 0x00060004); /* GPIO as out, reset high */
++              cx_clear(GP0_IO, 0x00010002);
++              cx_write(MC417_CTL, 0x00000037);/* enable GPIO3-18 pins */
++              /* GPIO-15 IN as ~ACK, rest as OUT */
++              cx_write(MC417_OEN, 0x00001000);
++              /* ~RD, ~WR high; ADL0, ADL1 low; ~CS0, ~CS1 high */
++              cx_write(MC417_RWD, 0x0000c300);
++              /* enable irq */
++              cx_write(GPIO_ISM, 0x00000000);/* INTERRUPTS active low*/
++              break;
+       }
+ }
++static int cx23885_ir_patch(struct i2c_adapter *i2c, u8 reg, u8 mask)
++{
++      struct i2c_msg msgs[2];
++      u8 tx_buf[2], rx_buf[1];
++      /* Write register address */
++      tx_buf[0] = reg;
++      msgs[0].addr = 0x4c;
++      msgs[0].flags = 0;
++      msgs[0].len = 1;
++      msgs[0].buf = (char *) tx_buf;
++      /* Read data from register */
++      msgs[1].addr = 0x4c;
++      msgs[1].flags = I2C_M_RD;
++      msgs[1].len = 1;
++      msgs[1].buf = (char *) rx_buf;  
++      
++      i2c_transfer(i2c, msgs, 2);
++
++      tx_buf[0] = reg;
++      tx_buf[1] = rx_buf[0] | mask;
++      msgs[0].addr = 0x4c;
++      msgs[0].flags = 0;
++      msgs[0].len = 2;
++      msgs[0].buf = (char *) tx_buf;
++      
++      return i2c_transfer(i2c, msgs, 1);
++}
++
+ int cx23885_ir_init(struct cx23885_dev *dev)
+ {
+       static struct v4l2_subdev_io_pin_config ir_rxtx_pin_cfg[] = {
+@@ -1573,6 +1718,26 @@ int cx23885_ir_init(struct cx23885_dev *dev)
+               v4l2_subdev_call(dev->sd_cx25840, core, s_io_pin_config,
+                                ir_rx_pin_cfg_count, ir_rx_pin_cfg);
+               break;
++      case CX23885_BOARD_BST_PS8512:
++      case CX23885_BOARD_DVBSKY_S950:
++      case CX23885_BOARD_DVBSKY_S952:
++      case CX23885_BOARD_DVBSKY_S950_CI:
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
++      case CX23885_BOARD_DVBSKY_T9580:
++      case CX23885_BOARD_DVBSKY_T980_CI:
++      case CX23885_BOARD_DVBSKY_T982:
++      case CX23885_BOARD_TT_4500_CI:
++              dev->sd_ir = cx23885_find_hw(dev, CX23885_HW_AV_CORE);
++              if (dev->sd_ir == NULL) {
++                      ret = -ENODEV;
++                      break;
++              }
++              v4l2_subdev_call(dev->sd_cx25840, core, s_io_pin_config,
++                               ir_rx_pin_cfg_count, ir_rx_pin_cfg);
++                               
++              cx23885_ir_patch(&(dev->i2c_bus[2].i2c_adap),0x1f,0x80);
++              cx23885_ir_patch(&(dev->i2c_bus[2].i2c_adap),0x23,0x80);
++              break;
+       case CX23885_BOARD_HAUPPAUGE_HVR1250:
+               if (!enable_885_ir)
+                       break;
+@@ -1608,13 +1773,22 @@ void cx23885_ir_fini(struct cx23885_dev *dev)
+       case CX23885_BOARD_MYGICA_X8507:
+       case CX23885_BOARD_TBS_6980:
+       case CX23885_BOARD_TBS_6981:
++      case CX23885_BOARD_BST_PS8512:
++      case CX23885_BOARD_DVBSKY_S950:
++      case CX23885_BOARD_DVBSKY_S952:
++      case CX23885_BOARD_DVBSKY_S950_CI:
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
++      case CX23885_BOARD_DVBSKY_T9580:
++      case CX23885_BOARD_DVBSKY_T980_CI:
++      case CX23885_BOARD_DVBSKY_T982:
++      case CX23885_BOARD_TT_4500_CI:
+               cx23885_irq_remove(dev, PCI_MSK_AV_CORE);
+               /* sd_ir is a duplicate pointer to the AV Core, just clear it */
+               dev->sd_ir = NULL;
+               break;
+       }
+ }
+-
++#if 0
+ static int netup_jtag_io(void *device, int tms, int tdi, int read_tdo)
+ {
+       int data;
+@@ -1639,7 +1813,7 @@ static int netup_jtag_io(void *device, int tms, int tdi, int read_tdo)
+       return tdo;
+ }
+-
++#endif
+ void cx23885_ir_pci_int_enable(struct cx23885_dev *dev)
+ {
+       switch (dev->board) {
+@@ -1655,6 +1829,15 @@ void cx23885_ir_pci_int_enable(struct cx23885_dev *dev)
+       case CX23885_BOARD_MYGICA_X8507:
+       case CX23885_BOARD_TBS_6980:
+       case CX23885_BOARD_TBS_6981:
++      case CX23885_BOARD_BST_PS8512:
++      case CX23885_BOARD_DVBSKY_S950:
++      case CX23885_BOARD_DVBSKY_S952:
++      case CX23885_BOARD_DVBSKY_S950_CI:
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
++      case CX23885_BOARD_DVBSKY_T9580:
++      case CX23885_BOARD_DVBSKY_T980_CI:
++      case CX23885_BOARD_DVBSKY_T982:
++      case CX23885_BOARD_TT_4500_CI:
+               if (dev->sd_ir)
+                       cx23885_irq_add_enable(dev, PCI_MSK_AV_CORE);
+               break;
+@@ -1752,6 +1935,12 @@ void cx23885_card_setup(struct cx23885_dev *dev)
+               ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
+               ts1->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
+               break;
++      case CX23885_BOARD_BST_PS8512:
++      case CX23885_BOARD_DVBSKY_S950:
++      case CX23885_BOARD_DVBSKY_S950_CI:
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
++      case CX23885_BOARD_DVBSKY_T980_CI:
++      case CX23885_BOARD_TT_4500_CI:
+       case CX23885_BOARD_TEVII_S470:
+       case CX23885_BOARD_TEVII_S471:
+       case CX23885_BOARD_DVBWORLD_2005:
+@@ -1795,6 +1984,23 @@ void cx23885_card_setup(struct cx23885_dev *dev)
+               ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
+               ts2->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
+               break;
++      case CX23885_BOARD_DVBSKY_S952:
++              ts1->gen_ctrl_val  = 0x5; /* Parallel */
++              ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
++              ts1->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
++              ts2->gen_ctrl_val  = 0xe; /* Serial bus + punctured clock */
++              ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
++              ts2->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
++              break;
++      case CX23885_BOARD_DVBSKY_T9580:
++      case CX23885_BOARD_DVBSKY_T982:
++              ts1->gen_ctrl_val  = 0x5; /* Parallel */
++              ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
++              ts1->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
++              ts2->gen_ctrl_val  = 0x8; /* Serial bus */
++              ts2->ts_clk_en_val = 0x1; /* Enable TS_CLK */
++              ts2->src_sel_val   = CX23885_SRC_SEL_PARALLEL_MPEG_VIDEO;
++              break;
+       case CX23885_BOARD_HAUPPAUGE_HVR4400:
+               ts1->gen_ctrl_val  = 0xc; /* Serial bus + punctured clock */
+               ts1->ts_clk_en_val = 0x1; /* Enable TS_CLK */
+@@ -1860,6 +2066,15 @@ void cx23885_card_setup(struct cx23885_dev *dev)
+       case CX23885_BOARD_AVERMEDIA_HC81R:
+       case CX23885_BOARD_TBS_6980:
+       case CX23885_BOARD_TBS_6981:
++      case CX23885_BOARD_BST_PS8512:
++      case CX23885_BOARD_DVBSKY_S950:
++      case CX23885_BOARD_DVBSKY_S952:
++      case CX23885_BOARD_DVBSKY_S950_CI:
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
++      case CX23885_BOARD_DVBSKY_T9580:
++      case CX23885_BOARD_DVBSKY_T980_CI:
++      case CX23885_BOARD_DVBSKY_T982:
++      case CX23885_BOARD_TT_4500_CI:
+               dev->sd_cx25840 = v4l2_i2c_new_subdev(&dev->v4l2_dev,
+                               &dev->i2c_bus[2].i2c_adap,
+                               "cx25840", 0x88 >> 1, NULL);
+@@ -1879,13 +2094,13 @@ void cx23885_card_setup(struct cx23885_dev *dev)
+               int ret;
+               const struct firmware *fw;
+               const char *filename = "dvb-netup-altera-01.fw";
+-              char *action = "configure";
++//            char *action = "configure";
+               static struct netup_card_info cinfo;
+-              struct altera_config netup_config = {
+-                      .dev = dev,
+-                      .action = action,
+-                      .jtag_io = netup_jtag_io,
+-              };
++//            struct altera_config netup_config = {
++//                    .dev = dev,
++//                    .action = action,
++//                    .jtag_io = netup_jtag_io,
++//            };
+               netup_initialize(dev);
+@@ -1909,8 +2124,8 @@ void cx23885_card_setup(struct cx23885_dev *dev)
+                       printk(KERN_ERR "did not find the firmware file. (%s) "
+                       "Please see linux/Documentation/dvb/ for more details "
+                       "on firmware-problems.", filename);
+-              else
+-                      altera_init(&netup_config, fw);
++              //else
++              //      altera_init(&netup_config, fw);
+               release_firmware(fw);
+               break;
+diff --git a/drivers/media/pci/cx23885/cx23885-core.c b/drivers/media/pci/cx23885/cx23885-core.c
+index edcd79d..c9afeab 100644
+--- a/drivers/media/pci/cx23885/cx23885-core.c
++++ b/drivers/media/pci/cx23885/cx23885-core.c
+@@ -450,9 +450,9 @@ void cx23885_wakeup(struct cx23885_tsport *port,
+               del_timer(&q->timeout);
+       else
+               mod_timer(&q->timeout, jiffies + BUFFER_TIMEOUT);
+-      if (bc != 1)
++/*    if (bc != 1)
+               printk(KERN_WARNING "%s: %d buffers handled (should be 1)\n",
+-                     __func__, bc);
++                     __func__, bc);*/
+ }
+ int cx23885_sram_channel_setup(struct cx23885_dev *dev,
+@@ -1909,6 +1909,10 @@ static irqreturn_t cx23885_irq(int irq, void *dev_id)
+                       (pci_status & PCI_MSK_GPIO0))
+               handled += altera_ci_irq(dev);
++      if (cx23885_boards[dev->board].ci_type == 3 &&
++                      (pci_status & PCI_MSK_GPIO0))
++              handled += dvbsky_ci_slot_status(dev);
++              
+       if (ts1_status) {
+               if (cx23885_boards[dev->board].portb == CX23885_MPEG_DVB)
+                       handled += cx23885_irq_ts(ts1, ts1_status);
+@@ -2141,6 +2145,10 @@ static int cx23885_initdev(struct pci_dev *pci_dev,
+               cx23885_irq_add_enable(dev, PCI_MSK_GPIO1 | PCI_MSK_GPIO0);
+               break;
+       case CX23885_BOARD_NETUP_DUAL_DVB_T_C_CI_RF:
++      case CX23885_BOARD_DVBSKY_S950_CI:
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
++      case CX23885_BOARD_DVBSKY_T980_CI:
++      case CX23885_BOARD_TT_4500_CI:
+               cx23885_irq_add_enable(dev, PCI_MSK_GPIO0);
+               break;
+       }
+diff --git a/drivers/media/pci/cx23885/cx23885-dvb.c b/drivers/media/pci/cx23885/cx23885-dvb.c
+index 0549205..7816112 100644
+--- a/drivers/media/pci/cx23885/cx23885-dvb.c
++++ b/drivers/media/pci/cx23885/cx23885-dvb.c
+@@ -51,6 +51,8 @@
+ #include "stv6110.h"
+ #include "lnbh24.h"
+ #include "cx24116.h"
++#include "dvbsky_m88ds3103.h"
++#include "m88dc2800.h"
+ #include "cx24117.h"
+ #include "cimax2.h"
+ #include "lgs8gxx.h"
+@@ -473,6 +475,7 @@ static struct ds3000_config tevii_ds3000_config = {
+ static struct ts2020_config tevii_ts2020_config  = {
+       .tuner_address = 0x60,
+       .clk_out_div = 1,
++      .frequency_div = 1146000,
+ };
+ static struct cx24116_config dvbworld_cx24116_config = {
+@@ -507,6 +510,93 @@ static struct xc5000_config mygica_x8507_xc5000_config = {
+       .if_khz = 4000,
+ };
++/* bst control */
++int bst_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
++{
++      struct cx23885_tsport *port = fe->dvb->priv;
++      struct cx23885_dev *dev = port->dev;
++      
++      cx23885_gpio_enable(dev, GPIO_1, 1);
++      cx23885_gpio_enable(dev, GPIO_0, 1);
++
++      switch (voltage) {
++      case SEC_VOLTAGE_13:
++              cx23885_gpio_set(dev, GPIO_1);
++              cx23885_gpio_clear(dev, GPIO_0);
++              break;
++      case SEC_VOLTAGE_18:
++              cx23885_gpio_set(dev, GPIO_1);
++              cx23885_gpio_set(dev, GPIO_0);
++              break;
++      case SEC_VOLTAGE_OFF:
++              cx23885_gpio_clear(dev, GPIO_1);
++              cx23885_gpio_clear(dev, GPIO_0);
++              break;
++      }
++      return 0;
++}
++
++int dvbsky_set_voltage_sec(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
++{
++      struct cx23885_tsport *port = fe->dvb->priv;
++      struct cx23885_dev *dev = port->dev;
++      
++      cx23885_gpio_enable(dev, GPIO_12, 1);
++      cx23885_gpio_enable(dev, GPIO_13, 1);
++
++      switch (voltage) {
++      case SEC_VOLTAGE_13:
++              cx23885_gpio_set(dev, GPIO_13);
++              cx23885_gpio_clear(dev, GPIO_12);
++              break;
++      case SEC_VOLTAGE_18:
++              cx23885_gpio_set(dev, GPIO_13);
++              cx23885_gpio_set(dev, GPIO_12);
++              break;
++      case SEC_VOLTAGE_OFF:
++              cx23885_gpio_clear(dev, GPIO_13);
++              cx23885_gpio_clear(dev, GPIO_12);
++              break;
++      }
++      return 0;
++}
++
++/* bestunar single dvb-s2 */
++static struct dvbsky_m88ds3103_config bst_ds3103_config = {
++      .demod_address = 0x68,
++      .ci_mode = 0,
++      .pin_ctrl = 0x82,
++      .ts_mode = 0,
++      .set_voltage = bst_set_voltage,
++};
++/* DVBSKY dual dvb-s2 */
++static struct dvbsky_m88ds3103_config dvbsky_ds3103_config_pri = {
++      .demod_address = 0x68,
++      .ci_mode = 0,
++      .pin_ctrl = 0x82,
++      .ts_mode = 0,
++      .set_voltage = bst_set_voltage, 
++};
++static struct dvbsky_m88ds3103_config dvbsky_ds3103_config_sec = {
++      .demod_address = 0x68,
++      .ci_mode = 0,
++      .pin_ctrl = 0x82,
++      .ts_mode = 1,
++      .set_voltage = dvbsky_set_voltage_sec,  
++};
++
++static struct dvbsky_m88ds3103_config dvbsky_ds3103_ci_config = {
++      .demod_address = 0x68,
++      .ci_mode = 2,
++      .pin_ctrl = 0x82,
++      .ts_mode = 0,
++};
++
++static struct m88dc2800_config dvbsky_dc2800_config = {
++      .demod_address = 0x1c,
++      .ts_mode = 3,   
++};
++
+ static struct stv090x_config prof_8000_stv090x_config = {
+       .device                 = STV0903,
+       .demod_mode             = STV090x_SINGLE,
+@@ -1311,6 +1401,92 @@ static int dvb_register(struct cx23885_tsport *port)
+                               &tevii_ts2020_config, &i2c_bus->i2c_adap);
+               }
+               break;
++      case CX23885_BOARD_BST_PS8512:
++      case CX23885_BOARD_DVBSKY_S950:
++              i2c_bus = &dev->i2c_bus[1];     
++              fe0->dvb.frontend = dvb_attach(dvbsky_m88ds3103_attach,
++                                      &bst_ds3103_config,
++                                      &i2c_bus->i2c_adap);
++              break;  
++                      
++      case CX23885_BOARD_DVBSKY_S952:
++              switch (port->nr) {
++              /* port B */
++              case 1:
++                      i2c_bus = &dev->i2c_bus[1];
++                      fe0->dvb.frontend = dvb_attach(dvbsky_m88ds3103_attach,
++                                              &dvbsky_ds3103_config_pri,
++                                              &i2c_bus->i2c_adap);
++                      break;
++              /* port C */
++              case 2:
++                      i2c_bus = &dev->i2c_bus[0];
++                      fe0->dvb.frontend = dvb_attach(dvbsky_m88ds3103_attach,
++                                              &dvbsky_ds3103_config_sec,
++                                              &i2c_bus->i2c_adap);    
++                      break;
++              }
++              break;
++
++      case CX23885_BOARD_DVBSKY_S950_CI:
++              i2c_bus = &dev->i2c_bus[1];     
++              fe0->dvb.frontend = dvb_attach(dvbsky_m88ds3103_attach,
++                                      &dvbsky_ds3103_ci_config,
++                                      &i2c_bus->i2c_adap);
++              break;
++                              
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
++              i2c_bus = &dev->i2c_bus[1];     
++              fe0->dvb.frontend = dvb_attach(m88dc2800_attach,
++                                      &dvbsky_dc2800_config,
++                                      &i2c_bus->i2c_adap);
++              break;
++
++      case CX23885_BOARD_DVBSKY_T9580:
++              switch (port->nr) {
++              /* port B */
++              case 1:
++                      i2c_bus = &dev->i2c_bus[1];
++                      fe0->dvb.frontend = dvb_attach(dvbsky_m88ds3103_attach,
++                                              &dvbsky_ds3103_config_pri,
++                                              &i2c_bus->i2c_adap);
++                      break;
++              /* port C */
++//            case 2:
++//                    i2c_bus = &dev->i2c_bus[0];
++//                    fe0->dvb.frontend = dvb_attach(sit2_attach,
++//                                            &dvbsky_sit2_config_pci_s,
++//                                            &i2c_bus->i2c_adap);    
++                      break;
++              }
++              break;
++
++//    case CX23885_BOARD_DVBSKY_T980_CI:
++//    case CX23885_BOARD_TT_4500_CI:
++//            i2c_bus = &dev->i2c_bus[1];     
++//            fe0->dvb.frontend = dvb_attach(sit2_attach,
++//                                    &dvbsky_sit2_config_pci_p,
++//                                    &i2c_bus->i2c_adap);
++//            break;
++
++//    case CX23885_BOARD_DVBSKY_T982:
++//            switch (port->nr) {
++//            /* port B */
++//            case 1:
++//                    i2c_bus = &dev->i2c_bus[1];
++//                    fe0->dvb.frontend = dvb_attach(sit2_attach,
++//                                            &dvbsky_sit2_config_pci_p,
++//                                            &i2c_bus->i2c_adap);
++//                    break;
++//            /* port C */
++//            case 2:
++//                    i2c_bus = &dev->i2c_bus[0];
++//                    fe0->dvb.frontend = dvb_attach(sit2_attach,
++//                                            &dvbsky_sit2_config_pci_s,
++//                                            &i2c_bus->i2c_adap);    
++//                    break;
++//            }
++//            break;
+       case CX23885_BOARD_PROF_8000:
+               i2c_bus = &dev->i2c_bus[0];
+@@ -1386,7 +1562,7 @@ static int dvb_register(struct cx23885_tsport *port)
+               printk(KERN_INFO "NetUP Dual DVB-S2 CI card port%d MAC=%pM\n",
+                       port->nr, port->frontends.adapter.proposed_mac);
+-              netup_ci_init(port);
++              netup_ci_init(port, false);
+               break;
+               }
+       case CX23885_BOARD_NETUP_DUAL_DVB_T_C_CI_RF: {
+@@ -1413,6 +1589,44 @@ static int dvb_register(struct cx23885_tsport *port)
+               memcpy(port->frontends.adapter.proposed_mac, eeprom + 0xa0, 6);
+               break;
+               }
++      case CX23885_BOARD_BST_PS8512:
++      case CX23885_BOARD_DVBSKY_S950:
++      case CX23885_BOARD_DVBSKY_S952:
++      case CX23885_BOARD_DVBSKY_T9580:
++      case CX23885_BOARD_DVBSKY_T982:{
++              u8 eeprom[256]; /* 24C02 i2c eeprom */
++
++              if(port->nr > 2)
++                      break;
++
++              dev->i2c_bus[0].i2c_client.addr = 0xa0 >> 1;
++              tveeprom_read(&dev->i2c_bus[0].i2c_client, eeprom, sizeof(eeprom));
++              printk(KERN_INFO "DVBSKY PCIe MAC= %pM\n", eeprom + 0xc0+(port->nr-1)*8);
++              memcpy(port->frontends.adapter.proposed_mac, eeprom + 0xc0 + 
++                      (port->nr-1)*8, 6);
++              break;
++              }
++      case CX23885_BOARD_DVBSKY_S950_CI: {
++              u8 eeprom[256]; /* 24C02 i2c eeprom */
++
++              if(port->nr > 2)
++                      break;
++
++              dev->i2c_bus[0].i2c_client.addr = 0xa0 >> 1;
++              tveeprom_read(&dev->i2c_bus[0].i2c_client, eeprom, sizeof(eeprom));
++              printk(KERN_INFO "DVBSKY PCIe MAC= %pM\n", eeprom + 0xc0+(port->nr-1)*8);
++              memcpy(port->frontends.adapter.proposed_mac, eeprom + 0xc0 + 
++                      (port->nr-1)*8, 6);
++                      
++              netup_ci_init(port, true);
++              break;
++              }
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
++      case CX23885_BOARD_DVBSKY_T980_CI:
++      case CX23885_BOARD_TT_4500_CI: {
++              netup_ci_init(port, true);
++              break;
++              }               
+       }
+       return ret;
+@@ -1495,6 +1709,10 @@ int cx23885_dvb_unregister(struct cx23885_tsport *port)
+       switch (port->dev->board) {
+       case CX23885_BOARD_NETUP_DUAL_DVBS2_CI:
++      case CX23885_BOARD_DVBSKY_S950_CI:
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
++      case CX23885_BOARD_DVBSKY_T980_CI:
++      case CX23885_BOARD_TT_4500_CI:
+               netup_ci_exit(port);
+               break;
+       case CX23885_BOARD_NETUP_DUAL_DVB_T_C_CI_RF:
+diff --git a/drivers/media/pci/cx23885/cx23885-input.c b/drivers/media/pci/cx23885/cx23885-input.c
+index 8a49e7c..1642ae8 100644
+--- a/drivers/media/pci/cx23885/cx23885-input.c
++++ b/drivers/media/pci/cx23885/cx23885-input.c
+@@ -92,6 +92,15 @@ void cx23885_input_rx_work_handler(struct cx23885_dev *dev, u32 events)
+       case CX23885_BOARD_MYGICA_X8507:
+       case CX23885_BOARD_TBS_6980:
+       case CX23885_BOARD_TBS_6981:
++      case CX23885_BOARD_BST_PS8512:
++      case CX23885_BOARD_DVBSKY_S950:
++      case CX23885_BOARD_DVBSKY_S952:
++      case CX23885_BOARD_DVBSKY_S950_CI:
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
++      case CX23885_BOARD_DVBSKY_T9580:
++      case CX23885_BOARD_DVBSKY_T980_CI:
++      case CX23885_BOARD_DVBSKY_T982:
++      case CX23885_BOARD_TT_4500_CI:
+               /*
+                * The only boards we handle right now.  However other boards
+                * using the CX2388x integrated IR controller should be similar
+@@ -144,6 +153,15 @@ static int cx23885_input_ir_start(struct cx23885_dev *dev)
+       case CX23885_BOARD_HAUPPAUGE_HVR1290:
+       case CX23885_BOARD_HAUPPAUGE_HVR1250:
+       case CX23885_BOARD_MYGICA_X8507:
++      case CX23885_BOARD_BST_PS8512:
++      case CX23885_BOARD_DVBSKY_S950:
++      case CX23885_BOARD_DVBSKY_S952:
++      case CX23885_BOARD_DVBSKY_S950_CI:
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
++      case CX23885_BOARD_DVBSKY_T9580:
++      case CX23885_BOARD_DVBSKY_T980_CI:
++      case CX23885_BOARD_DVBSKY_T982:
++      case CX23885_BOARD_TT_4500_CI:
+               /*
+                * The IR controller on this board only returns pulse widths.
+                * Any other mode setting will fail to set up the device.
+@@ -302,6 +320,26 @@ int cx23885_input_init(struct cx23885_dev *dev)
+               /* A guess at the remote */
+               rc_map = RC_MAP_TOTAL_MEDIA_IN_HAND_02;
+               break;
++      case CX23885_BOARD_BST_PS8512:
++      case CX23885_BOARD_DVBSKY_S950:
++      case CX23885_BOARD_DVBSKY_S952:
++      case CX23885_BOARD_DVBSKY_S950_CI:
++      case CX23885_BOARD_DVBSKY_C2800E_CI:
++      case CX23885_BOARD_DVBSKY_T9580:
++      case CX23885_BOARD_DVBSKY_T980_CI:
++      case CX23885_BOARD_DVBSKY_T982:
++              /* Integrated CX2388[58] IR controller */
++              driver_type = RC_DRIVER_IR_RAW;
++              allowed_protos = RC_BIT_ALL;
++              /* A guess at the remote */
++              rc_map = RC_MAP_DVBSKY;
++              break;
++      case CX23885_BOARD_TT_4500_CI:
++              /* Integrated CX2388[58] IR controller */
++              driver_type = RC_DRIVER_IR_RAW;
++              allowed_protos = RC_BIT_ALL;
++              rc_map = RC_MAP_TT_1500;
++              break;
+       case CX23885_BOARD_TBS_6980:
+       case CX23885_BOARD_TBS_6981:
+               /* Integrated CX23885 IR controller */
+diff --git a/drivers/media/pci/cx23885/cx23885.h b/drivers/media/pci/cx23885/cx23885.h
+index 0fa4048..7a39d82 100644
+--- a/drivers/media/pci/cx23885/cx23885.h
++++ b/drivers/media/pci/cx23885/cx23885.h
+@@ -97,6 +97,17 @@
+ #define CX23885_BOARD_TBS_6980                 41
+ #define CX23885_BOARD_LEADTEK_WINFAST_PXPVR2200 42
++#define CX23885_BOARD_DVBSKY_PCIE              43
++#define CX23885_BOARD_BST_PS8512             (CX23885_BOARD_DVBSKY_PCIE+0)
++#define CX23885_BOARD_DVBSKY_S952            (CX23885_BOARD_DVBSKY_PCIE+1)
++#define CX23885_BOARD_DVBSKY_S950            (CX23885_BOARD_DVBSKY_PCIE+2)
++#define CX23885_BOARD_DVBSKY_S950_CI         (CX23885_BOARD_DVBSKY_PCIE+3)
++#define CX23885_BOARD_DVBSKY_C2800E_CI               (CX23885_BOARD_DVBSKY_PCIE+4)
++#define CX23885_BOARD_DVBSKY_T9580           (CX23885_BOARD_DVBSKY_PCIE+5)
++#define CX23885_BOARD_DVBSKY_T980_CI         (CX23885_BOARD_DVBSKY_PCIE+6)
++#define CX23885_BOARD_DVBSKY_T982            (CX23885_BOARD_DVBSKY_PCIE+7)
++#define CX23885_BOARD_TT_4500_CI             (CX23885_BOARD_DVBSKY_PCIE+8)
++
+ #define GPIO_0 0x00000001
+ #define GPIO_1 0x00000002
+ #define GPIO_2 0x00000004
+@@ -234,7 +245,7 @@ struct cx23885_board {
+        */
+       u32                     clk_freq;
+       struct cx23885_input    input[MAX_CX23885_INPUT];
+-      int                     ci_type; /* for NetUP */
++      int                     ci_type; /* 1 and 2 for NetUP, 3 for DVBSky. */
+       /* Force bottom field first during DMA (888 workaround) */
+       u32                     force_bff;
+ };
+diff --git a/drivers/media/pci/cx88/Kconfig b/drivers/media/pci/cx88/Kconfig
+index a63a9ad..7deb300 100644
+--- a/drivers/media/pci/cx88/Kconfig
++++ b/drivers/media/pci/cx88/Kconfig
+@@ -57,6 +57,7 @@ config VIDEO_CX88_DVB
+       select DVB_ISL6421 if MEDIA_SUBDRV_AUTOSELECT
+       select DVB_S5H1411 if MEDIA_SUBDRV_AUTOSELECT
+       select DVB_CX24116 if MEDIA_SUBDRV_AUTOSELECT
++      select DVB_DVBSKY_M88DS3103 if MEDIA_SUBDRV_AUTOSELECT
+       select DVB_STV0299 if MEDIA_SUBDRV_AUTOSELECT
+       select DVB_STV0288 if MEDIA_SUBDRV_AUTOSELECT
+       select DVB_STB6000 if MEDIA_SUBDRV_AUTOSELECT
+diff --git a/drivers/media/pci/cx88/cx88-cards.c b/drivers/media/pci/cx88/cx88-cards.c
+index e18a7ac..317511d 100644
+--- a/drivers/media/pci/cx88/cx88-cards.c
++++ b/drivers/media/pci/cx88/cx88-cards.c
+@@ -2314,6 +2314,18 @@ static const struct cx88_board cx88_boards[] = {
+               } },
+               .mpeg           = CX88_MPEG_DVB,
+       },
++      [CX88_BOARD_BST_PS8312] = {
++              .name           = "Bestunar PS8312 DVB-S/S2",
++              .tuner_type     = UNSET,
++              .radio_type     = UNSET,
++              .tuner_addr     = ADDR_UNSET,
++              .radio_addr     = ADDR_UNSET,
++              .input          = { {
++                      .type   = CX88_VMUX_DVB,
++                      .vmux   = 0,
++              } },
++              .mpeg           = CX88_MPEG_DVB,
++      },
+ };
+ /* ------------------------------------------------------------------ */
+@@ -2818,6 +2830,10 @@ static const struct cx88_subid cx88_subids[] = {
+               .subvendor = 0x1822,
+               .subdevice = 0x0023,
+               .card      = CX88_BOARD_TWINHAN_VP1027_DVBS,
++      }, {
++              .subvendor = 0x14f1,
++              .subdevice = 0x8312,
++              .card      = CX88_BOARD_BST_PS8312,
+       },
+ };
+@@ -3551,6 +3567,12 @@ static void cx88_card_setup(struct cx88_core *core)
+               cx_write(MO_SRST_IO, 1);
+               msleep(100);
+               break;
++      case  CX88_BOARD_BST_PS8312:
++              cx_write(MO_GP1_IO, 0x808000);
++              msleep(100);
++              cx_write(MO_GP1_IO, 0x808080);
++              msleep(100);
++              break;
+       } /*end switch() */
+diff --git a/drivers/media/pci/cx88/cx88-dvb.c b/drivers/media/pci/cx88/cx88-dvb.c
+index 053ed1b..955b916 100644
+--- a/drivers/media/pci/cx88/cx88-dvb.c
++++ b/drivers/media/pci/cx88/cx88-dvb.c
+@@ -54,6 +54,7 @@
+ #include "stv0288.h"
+ #include "stb6000.h"
+ #include "cx24116.h"
++#include "dvbsky_m88ds3103.h"
+ #include "stv0900.h"
+ #include "stb6100.h"
+ #include "stb6100_proc.h"
+@@ -459,6 +460,56 @@ static int tevii_dvbs_set_voltage(struct dvb_frontend *fe,
+               return core->prev_set_voltage(fe, voltage);
+       return 0;
+ }
++/*CX88_BOARD_BST_PS8312*/
++static int bst_dvbs_set_voltage(struct dvb_frontend *fe,
++                                    fe_sec_voltage_t voltage)
++{
++      struct cx8802_dev *dev= fe->dvb->priv;
++      struct cx88_core *core = dev->core;
++
++      cx_write(MO_GP1_IO, 0x111111);
++      switch (voltage) {
++              case SEC_VOLTAGE_13:
++                      cx_write(MO_GP1_IO, 0x020200);
++                      break;
++              case SEC_VOLTAGE_18:
++                      cx_write(MO_GP1_IO, 0x020202);
++                      break;
++              case SEC_VOLTAGE_OFF:
++                      cx_write(MO_GP1_IO, 0x111100);
++                      break;
++      }
++
++      if (core->prev_set_voltage)
++              return core->prev_set_voltage(fe, voltage);
++      return 0;
++}
++
++static int bst_dvbs_set_voltage_v2(struct dvb_frontend *fe,
++                                    fe_sec_voltage_t voltage)
++{
++      struct cx8802_dev *dev= fe->dvb->priv;
++      struct cx88_core *core = dev->core;
++
++      cx_write(MO_GP1_IO, 0x111101);
++      switch (voltage) {
++              case SEC_VOLTAGE_13:
++                      cx_write(MO_GP1_IO, 0x020200);
++                      break;
++              case SEC_VOLTAGE_18:
++
++                      cx_write(MO_GP1_IO, 0x020202);
++                      break;
++              case SEC_VOLTAGE_OFF:
++
++                      cx_write(MO_GP1_IO, 0x111110);
++                      break;
++      }
++
++      if (core->prev_set_voltage)
++              return core->prev_set_voltage(fe, voltage);
++      return 0;
++}
+ static int vp1027_set_voltage(struct dvb_frontend *fe,
+                                   fe_sec_voltage_t voltage)
+@@ -706,6 +757,11 @@ static struct ts2020_config tevii_ts2020_config  = {
+       .clk_out_div = 1,
+ };
++static struct dvbsky_m88ds3103_config dvbsky_ds3103_config = {
++      .demod_address = 0x68,
++      .set_ts_params = ds3000_set_ts_param,
++};
++
+ static const struct stv0900_config prof_7301_stv0900_config = {
+       .demod_address = 0x6a,
+ /*    demod_mode = 0,*/
+@@ -1487,6 +1543,35 @@ static int dvb_register(struct cx8802_dev *dev)
+                                                       tevii_dvbs_set_voltage;
+               }
+               break;
++      case CX88_BOARD_BST_PS8312:
++              fe0->dvb.frontend = dvb_attach(dvbsky_m88ds3103_attach,
++                                              &dvbsky_ds3103_config,
++                                              &core->i2c_adap);
++              if (fe0->dvb.frontend != NULL){
++                      int ret;
++                      u8 b0[] = { 0x60 };
++                      u8 b1[2] = { 0 };
++                      struct i2c_msg msg[] = {
++                              {
++                              .addr = 0x50,
++                              .flags = 0,
++                              .buf = b0,
++                              .len = 1
++                              }, {
++                              .addr = 0x50,
++                              .flags = I2C_M_RD,
++                              .buf = b1,
++                              .len = 2
++                              }
++                      };
++                      ret = i2c_transfer(&core->i2c_adap, msg, 2);
++                      printk("PS8312: config = %02x, %02x", b1[0],b1[1]);
++                      if(b1[0] == 0xaa)
++                              fe0->dvb.frontend->ops.set_voltage = bst_dvbs_set_voltage_v2;
++                      else                    
++                              fe0->dvb.frontend->ops.set_voltage = bst_dvbs_set_voltage;
++              }
++              break;
+       case CX88_BOARD_OMICOM_SS4_PCI:
+       case CX88_BOARD_TBS_8920:
+       case CX88_BOARD_PROF_7300:
+diff --git a/drivers/media/pci/cx88/cx88-input.c b/drivers/media/pci/cx88/cx88-input.c
+index f29e18c..9581f4e 100644
+--- a/drivers/media/pci/cx88/cx88-input.c
++++ b/drivers/media/pci/cx88/cx88-input.c
+@@ -129,7 +129,7 @@ static void cx88_ir_handle_key(struct cx88_IR *ir)
+               u32 gpio_key = cx_read(MO_GP0_IO);
+               data = (data << 4) | ((gpio_key & 0xf0) >> 4);
+-
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)
+               rc_keydown(ir->dev, data, 0);
+       } else if (ir->mask_keydown) {
+@@ -151,6 +151,45 @@ static void cx88_ir_handle_key(struct cx88_IR *ir)
+               rc_keydown_notimeout(ir->dev, data, 0);
+               rc_keyup(ir->dev);
+       }
++#else
++              rc_keydown(ir->dev, RC_TYPE_UNKNOWN, data, 0);
++
++      } else if (ir->core->boardnr == CX88_BOARD_PROLINK_PLAYTVPVR ||
++                 ir->core->boardnr == CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO) {
++              /* bit cleared on keydown, NEC scancode, 0xAAAACC, A = 0x866b */
++              u16 addr;
++              u8 cmd;
++              u32 scancode;
++
++              addr = (data >> 8) & 0xffff;
++              cmd  = (data >> 0) & 0x00ff;
++              scancode = RC_SCANCODE_NECX(addr, cmd);
++
++              if (0 == (gpio & ir->mask_keyup))
++                      rc_keydown_notimeout(ir->dev, RC_TYPE_NEC, scancode, 0);
++              else
++                      rc_keyup(ir->dev);
++
++      } else if (ir->mask_keydown) {
++              /* bit set on keydown */
++              if (gpio & ir->mask_keydown)
++                      rc_keydown_notimeout(ir->dev, RC_TYPE_UNKNOWN, data, 0);
++              else
++                      rc_keyup(ir->dev);
++
++      } else if (ir->mask_keyup) {
++              /* bit cleared on keydown */
++              if (0 == (gpio & ir->mask_keyup))
++                      rc_keydown_notimeout(ir->dev, RC_TYPE_UNKNOWN, data, 0);
++              else
++                      rc_keyup(ir->dev);
++
++      } else {
++              /* can't distinguish keydown/up :-/ */
++              rc_keydown_notimeout(ir->dev, RC_TYPE_UNKNOWN, data, 0);
++              rc_keyup(ir->dev);
++      }
++#endif
+ }
+ static enum hrtimer_restart cx88_ir_work(struct hrtimer *timer)
+@@ -419,6 +458,10 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
+               rc_type          = RC_BIT_NEC;
+               ir->sampling     = 0xff00; /* address */
+               break;
++      case CX88_BOARD_BST_PS8312:
++              ir_codes         = RC_MAP_DVBSKY;
++              ir->sampling     = 0xff00; /* address */
++              break;
+       }
+       if (!ir_codes) {
+@@ -471,7 +514,6 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
+               dev->driver_type = RC_DRIVER_SCANCODE;
+               dev->allowed_protos = rc_type;
+       }
+-
+       ir->core = core;
+       core->ir = ir;
+@@ -538,8 +580,12 @@ void cx88_ir_irq(struct cx88_core *core)
+       }
+       ir_raw_event_handle(ir->dev);
+ }
+-
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)
+ static int get_key_pvr2000(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw)
++#else
++static int get_key_pvr2000(struct IR_i2c *ir, enum rc_type *protocol,
++                         u32 *scancode, u8 *toggle)
++#endif
+ {
+       int flags, code;
+@@ -562,9 +608,14 @@ static int get_key_pvr2000(struct IR_i2c *ir, u32 *ir_key, u32 *ir_raw)
+       dprintk("IR Key/Flags: (0x%02x/0x%02x)\n",
+                  code & 0xff, flags & 0xff);
+-
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)
+       *ir_key = code & 0xff;
+       *ir_raw = code;
++#else
++      *protocol = RC_TYPE_UNKNOWN;
++      *scancode = code & 0xff;
++      *toggle = 0;
++#endif
+       return 1;
+ }
+diff --git a/drivers/media/pci/cx88/cx88.h b/drivers/media/pci/cx88/cx88.h
+index 28893a6..5fa5f48 100644
+--- a/drivers/media/pci/cx88/cx88.h
++++ b/drivers/media/pci/cx88/cx88.h
+@@ -237,6 +237,7 @@ extern const struct sram_channel cx88_sram_channels[];
+ #define CX88_BOARD_WINFAST_DTV1800H_XC4000 88
+ #define CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F36 89
+ #define CX88_BOARD_WINFAST_TV2000_XP_GLOBAL_6F43 90
++#define CX88_BOARD_BST_PS8312              91
+ enum cx88_itype {
+       CX88_VMUX_COMPOSITE1 = 1,
+diff --git a/drivers/media/rc/keymaps/Makefile b/drivers/media/rc/keymaps/Makefile
+index 0b8c549..abf6079 100644
+--- a/drivers/media/rc/keymaps/Makefile
++++ b/drivers/media/rc/keymaps/Makefile
+@@ -28,6 +28,7 @@ obj-$(CONFIG_RC_MAP) += rc-adstech-dvb-t-pci.o \
+                       rc-dm1105-nec.o \
+                       rc-dntv-live-dvb-t.o \
+                       rc-dntv-live-dvbt-pro.o \
++                      rc-dvbsky.o \
+                       rc-em-terratec.o \
+                       rc-encore-enltv2.o \
+                       rc-encore-enltv.o \
+diff --git a/drivers/media/rc/keymaps/rc-dvbsky.c b/drivers/media/rc/keymaps/rc-dvbsky.c
+new file mode 100644
+index 0000000..bfc41fb
+--- /dev/null
++++ b/drivers/media/rc/keymaps/rc-dvbsky.c
+@@ -0,0 +1,78 @@
++/* rc-dvbsky.c - Keytable for Dvbsky Remote Controllers
++ *
++ * keymap imported from ir-keymaps.c
++ *
++ *
++ * Copyright (c) 2010-2012 by Nibble Max <nibble.max@gmail.com>
++ *
++ * 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.
++ */
++
++#include <media/rc-map.h>
++#include <linux/module.h>
++/*
++ * This table contains the complete RC5 code, instead of just the data part
++ */
++
++static struct rc_map_table rc5_dvbsky[] = {
++      { 0x0000, KEY_0 },
++      { 0x0001, KEY_1 },
++      { 0x0002, KEY_2 },
++      { 0x0003, KEY_3 },
++      { 0x0004, KEY_4 },
++      { 0x0005, KEY_5 },
++      { 0x0006, KEY_6 },
++      { 0x0007, KEY_7 },
++      { 0x0008, KEY_8 },
++      { 0x0009, KEY_9 },
++      { 0x000a, KEY_MUTE },
++      { 0x000d, KEY_OK },
++      { 0x000b, KEY_STOP },
++      { 0x000c, KEY_EXIT },
++      { 0x000e, KEY_CAMERA }, /*Snap shot*/
++      { 0x000f, KEY_SUBTITLE }, /*PIP*/
++      { 0x0010, KEY_VOLUMEUP },
++      { 0x0011, KEY_VOLUMEDOWN },
++      { 0x0012, KEY_FAVORITES },
++      { 0x0013, KEY_LIST }, /*Info*/
++      { 0x0016, KEY_PAUSE },
++      { 0x0017, KEY_PLAY },
++      { 0x001f, KEY_RECORD },
++      { 0x0020, KEY_CHANNELDOWN },
++      { 0x0021, KEY_CHANNELUP },
++      { 0x0025, KEY_POWER2 },
++      { 0x0026, KEY_REWIND },
++      { 0x0027, KEY_FASTFORWARD },
++      { 0x0029, KEY_LAST },
++      { 0x002b, KEY_MENU },
++      { 0x002c, KEY_EPG },
++      { 0x002d, KEY_ZOOM },
++};
++
++static struct rc_map_list rc5_dvbsky_map = {
++      .map = {
++              .scan    = rc5_dvbsky,
++              .size    = ARRAY_SIZE(rc5_dvbsky),
++              .rc_type = RC_TYPE_RC5,
++              .name    = RC_MAP_DVBSKY,
++      }
++};
++
++static int __init init_rc_map_rc5_dvbsky(void)
++{
++      return rc_map_register(&rc5_dvbsky_map);
++}
++
++static void __exit exit_rc_map_rc5_dvbsky(void)
++{
++      rc_map_unregister(&rc5_dvbsky_map);
++}
++
++module_init(init_rc_map_rc5_dvbsky)
++module_exit(exit_rc_map_rc5_dvbsky)
++
++MODULE_LICENSE("GPL");
++MODULE_AUTHOR("Nibble Max <nibble.max@gmail.com>");
+diff --git a/drivers/media/usb/dvb-usb-v2/Kconfig b/drivers/media/usb/dvb-usb-v2/Kconfig
+index 2059d0c..5ff51aa 100644
+--- a/drivers/media/usb/dvb-usb-v2/Kconfig
++++ b/drivers/media/usb/dvb-usb-v2/Kconfig
+@@ -147,3 +147,11 @@ config DVB_USB_RTL28XXU
+       help
+         Say Y here to support the Realtek RTL28xxU DVB USB receiver.
++config DVB_USB_DVBSKY
++      tristate "DVBSky USB2.0 support"
++      depends on DVB_USB_V2
++      select DVB_SIT2 if MEDIA_SUBDRV_AUTOSELECT
++      select DVB_DVBSKY_M88DS3103 if MEDIA_SUBDRV_AUTOSELECT
++      help
++        Say Y here to support the USB receivers from DVBSky.
++
+diff --git a/drivers/media/usb/dvb-usb-v2/Makefile b/drivers/media/usb/dvb-usb-v2/Makefile
+index 2c06714..926f12d 100644
+--- a/drivers/media/usb/dvb-usb-v2/Makefile
++++ b/drivers/media/usb/dvb-usb-v2/Makefile
+@@ -40,6 +40,9 @@ obj-$(CONFIG_DVB_USB_MXL111SF) += mxl111sf-tuner.o
+ dvb-usb-rtl28xxu-objs := rtl28xxu.o
+ obj-$(CONFIG_DVB_USB_RTL28XXU) += dvb-usb-rtl28xxu.o
++dvb-usb-dvbsky-objs := dvbsky.o
++obj-$(CONFIG_DVB_USB_DVBSKY) += dvb-usb-dvbsky.o
++
+ ccflags-y += -I$(srctree)/drivers/media/dvb-core
+ ccflags-y += -I$(srctree)/drivers/media/dvb-frontends
+ ccflags-y += -I$(srctree)/drivers/media/tuners
+diff --git a/drivers/media/usb/dvb-usb-v2/dvbsky.c b/drivers/media/usb/dvb-usb-v2/dvbsky.c
+new file mode 100644
+index 0000000..cd9c039
+--- /dev/null
++++ b/drivers/media/usb/dvb-usb-v2/dvbsky.c
+@@ -0,0 +1,892 @@
++/*
++ * Driver for DVBSky receiver
++ *
++ * Copyright (C) 2013 Max nibble <nibble.max@gmail.com>
++ *
++ * CIMax code is copied and modified from:
++ * CIMax2(R) SP2 driver in conjunction with NetUp Dual DVB-S2 CI card
++ * Copyright (C) 2009 NetUP Inc.
++ * Copyright (C) 2009 Igor M. Liplianin <liplianin@netup.ru>
++ * Copyright (C) 2009 Abylay Ospan <aospan@netup.ru>
++ *
++ *    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.
++ *
++ *    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, write to the Free Software
++ *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++
++#include "dvb_ca_en50221.h"
++#include "dvb_usb.h"
++#include "dvbsky_m88ds3103.h"
++
++static int dvbsky_debug;
++module_param(dvbsky_debug, int, 0644);
++MODULE_PARM_DESC(dvbsky_debug, "Activates dvbsky usb debugging (default:0)");
++
++#define DVBSKY_MSG_DELAY      0/*2000*/
++#define DVBSKY_CI_CTL         0x04
++#define DVBSKY_CI_RD          1
++#define DVBSKY_BUF_LEN        64
++
++#define dprintk(args...) \
++      do { \
++              if (dvbsky_debug) \
++                      printk(KERN_INFO "dvbsky_usb: " args); \
++      } while (0)
++
++DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
++
++struct dvbsky_state {
++      struct mutex stream_mutex;
++      u8 ibuf[DVBSKY_BUF_LEN];
++      u8 obuf[DVBSKY_BUF_LEN];
++      u8 has_ci;
++      u8 ci_attached;
++      struct dvb_ca_en50221 ci;
++      unsigned long next_status_checked_time;
++      u8 ci_i2c_addr;
++      u8 current_ci_flag;
++      int ci_status;
++};
++
++static int dvbsky_usb_generic_rw(struct dvb_usb_device *d,
++              u8 *wbuf, u16 wlen, u8 *rbuf, u16 rlen)
++{
++      int ret;
++      struct dvbsky_state *state = d_to_priv(d);
++
++      mutex_lock(&d->usb_mutex);
++      if (wlen != 0)
++              memcpy(state->obuf, wbuf, wlen);
++
++      ret = dvb_usbv2_generic_rw_locked(d, state->obuf, wlen,
++                      state->ibuf, rlen);
++
++      if (!ret && (rlen != 0))
++              memcpy(rbuf, state->ibuf, rlen);
++
++      mutex_unlock(&d->usb_mutex);
++      return ret;
++}
++
++static int dvbsky_stream_ctrl(struct dvb_usb_device *d, u8 onoff)
++{
++      struct dvbsky_state *state = d_to_priv(d);
++      int ret;
++      u8 obuf_pre[3] = { 0x37, 0, 0 };
++      u8 obuf_post[3] = { 0x36, 3, 0 };
++      dprintk("%s() -off \n", __func__);
++      mutex_lock(&state->stream_mutex);
++      ret = dvbsky_usb_generic_rw(d, obuf_pre, 3, NULL, 0);
++      if (!ret && onoff) {
++              msleep(20);
++              ret = dvbsky_usb_generic_rw(d, obuf_post, 3, NULL, 0);
++              dprintk("%s() -on \n", __func__);
++      }
++      mutex_unlock(&state->stream_mutex);
++      return ret;
++}
++
++/* CI opertaions */
++static int dvbsky_ci_read_i2c(struct i2c_adapter *i2c_adap, u8 addr, u8 reg,
++                                              u8 *buf, int len)
++{
++      int ret;
++      struct i2c_msg msg[] = {
++              {
++                      .addr   = addr,
++                      .flags  = 0,
++                      .buf    = &reg,
++                      .len    = 1
++              }, {
++                      .addr   = addr,
++                      .flags  = I2C_M_RD,
++                      .buf    = buf,
++                      .len    = len
++              }
++      };
++      
++      ret = i2c_transfer(i2c_adap, msg, 2);
++      
++      if (ret != 2) {
++              dprintk("%s: error, Reg = 0x%02x, Status = %d\n", __func__, reg, ret);
++              return -1;
++      }
++      return 0;
++}
++
++static int dvbsky_ci_write_i2c(struct i2c_adapter *i2c_adap, u8 addr, u8 reg,
++                                              u8 *buf, int len)
++{
++      int ret;
++      u8 buffer[64];
++
++      struct i2c_msg msg = {
++              .addr   = addr,
++              .flags  = 0,
++              .buf    = &buffer[0],
++              .len    = len + 1
++      };
++      
++      if(len + 1 > sizeof(buffer)) {
++              dprintk("%s: len overflow.\n", __func__);
++              return -1;              
++      }
++
++      buffer[0] = reg;
++      memcpy(&buffer[1], buf, len);
++
++      ret = i2c_transfer(i2c_adap, &msg, 1);
++
++      if (ret != 1) {
++              dprintk("%s: error, Reg=[0x%02x], Status=%d\n", __func__, reg, ret);
++              return -1;
++      }
++      return 0;
++}
++
++static int dvbsky_ci_op_cam(struct dvb_ca_en50221 *ci, int slot,
++                              u8 flag, u8 read, int addr, u8 data)
++{
++      struct dvb_usb_device *d = ci->data;
++      struct dvbsky_state *state = d_to_priv(d);      
++      u8 store;
++      int ret;
++      u8 command[4], respond[2], command_size, respond_size;
++
++      /*dprintk("%s()\n", __func__);*/
++      if (0 != slot)
++              return -EINVAL;
++
++      if (state->current_ci_flag != flag) {
++              ret = dvbsky_ci_read_i2c(&d->i2c_adap, state->ci_i2c_addr,
++                              0, &store, 1);
++              if (ret != 0)
++                      return ret;
++
++              store &= ~0x0c;
++              store |= flag;
++
++              ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
++                              0, &store, 1);
++              if (ret != 0)
++                      return ret;
++      }
++      state->current_ci_flag = flag;
++
++      command[1] = (u8)((addr >> 8) & 0xff); /*high part of address*/
++      command[2] = (u8)(addr & 0xff); /*low part of address*/
++      if (read) {
++              command[0] = 0x71;
++              command_size = 3;
++              respond_size = 2;
++      } else {
++              command[0] = 0x70;
++              command[3] = data;
++              command_size = 4;
++              respond_size = 1;
++      }
++      ret = dvbsky_usb_generic_rw(d, command, command_size, respond, respond_size);
++      if(ret)
++              dev_err(&d->udev->dev, "%s: %s() " \
++                                      "failed=%d\n", KBUILD_MODNAME, __func__, ret);
++
++      return (read) ? respond[1] : 0;
++}
++
++static int dvbsky_ci_read_attribute_mem(struct dvb_ca_en50221 *ci,
++                                              int slot, int addr)
++{
++      return dvbsky_ci_op_cam(ci, slot, 0, DVBSKY_CI_RD, addr, 0);
++}
++
++static int dvbsky_ci_write_attribute_mem(struct dvb_ca_en50221 *ci,
++                                              int slot, int addr, u8 data)
++{
++      return dvbsky_ci_op_cam(ci, slot, 0, 0, addr, data);
++}
++
++static int dvbsky_ci_read_cam_ctl(struct dvb_ca_en50221 *ci, int slot, u8 addr)
++{
++      return dvbsky_ci_op_cam(ci, slot, DVBSKY_CI_CTL, DVBSKY_CI_RD, addr, 0);
++}
++
++static int dvbsky_ci_write_cam_ctl(struct dvb_ca_en50221 *ci, int slot,
++                                                      u8 addr, u8 data)
++{
++      return dvbsky_ci_op_cam(ci, slot, DVBSKY_CI_CTL, 0, addr, data);
++}
++
++static int dvbsky_ci_slot_reset(struct dvb_ca_en50221 *ci, int slot)
++{
++      struct dvb_usb_device *d = ci->data;
++      struct dvbsky_state *state = d_to_priv(d);
++      u8 buf =  0x80;
++      int ret;
++      dprintk("%s() slot=%d\n", __func__, slot);
++
++      if (0 != slot)
++              return -EINVAL;
++
++      udelay(500);
++      ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
++                                                      0, &buf, 1);
++
++      if (ret != 0)
++              return ret;
++
++      udelay(500);
++
++      buf = 0x00;
++      ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
++                                                      0, &buf, 1);
++      msleep(1000);
++      dprintk("%s() slot=%d complete\n", __func__, slot);
++      return 0;
++
++}
++
++static int dvbsky_ci_slot_shutdown(struct dvb_ca_en50221 *ci, int slot)
++{
++      /* not implemented */
++      dprintk("%s()\n", __func__);
++      return 0;
++}
++
++static int dvbsky_ci_slot_ts_enable(struct dvb_ca_en50221 *ci, int slot)
++{
++      struct dvb_usb_device *d = ci->data;
++      struct dvbsky_state *state = d_to_priv(d);
++      u8 buf;
++      int ret;
++
++      dprintk("%s()\n", __func__);
++      if (0 != slot)
++              return -EINVAL;
++
++      dvbsky_ci_read_i2c(&d->i2c_adap, state->ci_i2c_addr,
++                      0, &buf, 1);
++      buf |= 0x60;
++
++      ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
++                                                      0, &buf, 1);
++      return ret;
++}
++
++static int dvbsky_ci_poll_slot_status(struct dvb_ca_en50221 *ci, int slot,
++      int open)
++{
++      struct dvb_usb_device *d = ci->data;
++      struct dvbsky_state *state = d_to_priv(d);
++      int ret = 0;
++      u8 buf = 0;
++      /*dprintk("%s()\n", __func__);*/
++
++      /* CAM module INSERT/REMOVE processing. slow operation because of i2c
++       * transfers */
++      if (time_after(jiffies, state->next_status_checked_time)) {
++              ret = dvbsky_ci_read_i2c(&d->i2c_adap, state->ci_i2c_addr,
++                              0, &buf, 1);
++
++              /*dprintk("%s() status=%x\n", __func__, buf);*/
++              
++              state->next_status_checked_time = jiffies
++                      + msecs_to_jiffies(1000);
++
++              if (ret != 0)
++                      return 0;
++
++              if (buf & 1) {
++                      state->ci_status = DVB_CA_EN50221_POLL_CAM_PRESENT |
++                              DVB_CA_EN50221_POLL_CAM_READY;
++              }
++              else
++                      state->ci_status = 0;
++      }
++      /*dprintk("%s() ret=%x\n", __func__, state->ci_status);*/
++      return state->ci_status;
++}
++
++static int dvbsky_ci_init(struct dvb_usb_device *d)
++{
++      struct dvbsky_state *state = d_to_priv(d);
++      int ret;
++      u8 cimax_init[34] = {
++              0x00, /* module A control*/
++              0x00, /* auto select mask high A */
++              0x00, /* auto select mask low A */
++              0x00, /* auto select pattern high A */
++              0x00, /* auto select pattern low A */
++              0x44, /* memory access time A */
++              0x00, /* invert input A */
++              0x00, /* RFU */
++              0x00, /* RFU */
++              0x00, /* module B control*/
++              0x00, /* auto select mask high B */
++              0x00, /* auto select mask low B */
++              0x00, /* auto select pattern high B */
++              0x00, /* auto select pattern low B */
++              0x44, /* memory access time B */
++              0x00, /* invert input B */
++              0x00, /* RFU */
++              0x00, /* RFU */
++              0x00, /* auto select mask high Ext */
++              0x00, /* auto select mask low Ext */
++              0x00, /* auto select pattern high Ext */
++              0x00, /* auto select pattern low Ext */
++              0x00, /* RFU */
++              0x02, /* destination - module A */
++              0x01, /* power on (use it like store place) */
++              0x00, /* RFU */
++              0x00, /* int status read only */
++              0x00, /* Max: Disable the interrupt in USB solution.*/
++              0x05, /* EXTINT=active-high, INT=push-pull */
++              0x00, /* USCG1 */
++              0x04, /* ack active low */
++              0x00, /* LOCK = 0 */
++              0x22, /* serial mode, rising in, rising out, MSB first*/
++              0x00  /* synchronization */
++      };      
++      dprintk("%s()\n", __func__);
++      state->current_ci_flag = 0xff;
++      state->ci_status = 0;
++      state->next_status_checked_time = jiffies + msecs_to_jiffies(1000);
++      state->ci_i2c_addr = 0x40;
++
++      state->ci.owner               = THIS_MODULE;
++      state->ci.read_attribute_mem  = dvbsky_ci_read_attribute_mem;
++      state->ci.write_attribute_mem = dvbsky_ci_write_attribute_mem;
++      state->ci.read_cam_control    = dvbsky_ci_read_cam_ctl;
++      state->ci.write_cam_control   = dvbsky_ci_write_cam_ctl;
++      state->ci.slot_reset          = dvbsky_ci_slot_reset;
++      state->ci.slot_shutdown       = dvbsky_ci_slot_shutdown;
++      state->ci.slot_ts_enable      = dvbsky_ci_slot_ts_enable;
++      state->ci.poll_slot_status    = dvbsky_ci_poll_slot_status;
++      state->ci.data                = d;
++
++      ret = dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
++                                              0, &cimax_init[0], 34);
++      /* lock registers */
++      ret |= dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
++                                              0x1f, &cimax_init[0x18], 1);
++      /* power on slots */
++      ret |= dvbsky_ci_write_i2c(&d->i2c_adap, state->ci_i2c_addr,
++                                              0x18, &cimax_init[0x18], 1);
++      if (0 != ret)
++              return ret;
++              
++      ret = dvb_ca_en50221_init(&d->adapter[0].dvb_adap, &state->ci, 0, 1);
++      if (ret)
++              return ret;
++      state->ci_attached = 1;
++      dprintk("%s() complete.\n", __func__);
++      return 0;
++}
++
++static void dvbsky_ci_release(struct dvb_usb_device *d)
++{
++      struct dvbsky_state *state = d_to_priv(d);
++
++      /* detach CI */
++      if (state->ci_attached)
++              dvb_ca_en50221_release(&state->ci);
++
++      return;
++}
++
++static int dvbsky_streaming_ctrl(struct dvb_frontend *fe, int onoff)
++{
++      struct dvb_usb_device *d = fe_to_d(fe);
++      /*dprintk("%s() %d\n", __func__, onoff);*/
++      return dvbsky_stream_ctrl(d, (onoff == 0) ? 0 : 1);
++}
++
++/* GPIO */
++static int dvbsky_gpio_ctrl(struct dvb_usb_device *d, u8 gport, u8 value)
++{
++      int ret;
++      u8 obuf[64], ibuf[64];
++      obuf[0] = 0x0e;
++      obuf[1] = gport;
++      obuf[2] = value;
++      ret = dvbsky_usb_generic_rw(d, obuf, 3, ibuf, 1);
++      if(ret)
++              dev_err(&d->udev->dev, "%s: %s() " \
++                                      "failed=%d\n", KBUILD_MODNAME, __func__, ret);
++      return ret;
++}
++
++/* I2C */
++static int dvbsky_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msg[],
++      int num)
++{
++      struct dvb_usb_device *d = i2c_get_adapdata(adap);
++      int ret = 0;
++      u8 ibuf[64], obuf[64]; 
++
++      if (mutex_lock_interruptible(&d->i2c_mutex) < 0)
++              return -EAGAIN;
++
++      if (num > 2) {
++              printk(KERN_ERR "dvbsky_usb: too many i2c messages[%d] than 2.", num);
++              ret = -EOPNOTSUPP;
++              goto i2c_error;
++      }
++              
++      if(num == 1) {
++              if (msg[0].len > 60) {
++                      printk(KERN_ERR "dvbsky_usb: too many i2c bytes[%d] than 60.", msg[0].len);
++                      ret = -EOPNOTSUPP;
++                      goto i2c_error;
++              }
++              if (msg[0].flags & I2C_M_RD) {
++                      /* single read */
++                      obuf[0] = 0x09;
++                      obuf[1] = 0;
++                      obuf[2] = msg[0].len;
++                      obuf[3] = msg[0].addr;
++                      ret = dvbsky_usb_generic_rw(d, obuf, 4, ibuf, msg[0].len + 1);
++                      if(ret)
++                              dev_err(&d->udev->dev, "%s: %s() " \
++                                      "failed=%d\n", KBUILD_MODNAME, __func__, ret);
++                      /*dprintk("%s(): read status = %d\n", __func__, ibuf[0]);*/
++                      if (!ret)
++                              memcpy(msg[0].buf, &ibuf[1], msg[0].len);
++              } else {
++                      /* write */
++                      obuf[0] = 0x08;
++                      obuf[1] = msg[0].addr;
++                      obuf[2] = msg[0].len;
++                      memcpy(&obuf[3], msg[0].buf, msg[0].len);
++                      ret = dvbsky_usb_generic_rw(d, obuf, msg[0].len + 3, ibuf, 1);
++                      if(ret)
++                              dev_err(&d->udev->dev, "%s: %s() " \
++                                      "failed=%d\n", KBUILD_MODNAME, __func__, ret);
++                      /*dprintk("%s(): write status = %d\n", __func__, ibuf[0]);*/
++              }
++      } else {
++              if ((msg[0].len > 60) || (msg[1].len > 60)) {
++                      printk(KERN_ERR "dvbsky_usb: too many i2c bytes[w-%d][r-%d] than 60.", msg[0].len, msg[1].len);
++                      ret = -EOPNOTSUPP;
++                      goto i2c_error;
++              }
++              /* write then read */
++              obuf[0] = 0x09;
++              obuf[1] = msg[0].len;
++              obuf[2] = msg[1].len;
++              obuf[3] = msg[0].addr;
++              memcpy(&obuf[4], msg[0].buf, msg[0].len);
++              ret = dvbsky_usb_generic_rw(d, obuf, msg[0].len + 4, ibuf, msg[1].len + 1);
++              if(ret)
++                      dev_err(&d->udev->dev, "%s: %s() " \
++                                      "failed=%d\n", KBUILD_MODNAME, __func__, ret);
++              /*dprintk("%s(): write then read status = %d\n", __func__, ibuf[0]);*/
++              if (!ret)
++                      memcpy(msg[1].buf, &ibuf[1], msg[1].len);
++      }
++i2c_error:
++      mutex_unlock(&d->i2c_mutex);
++      return (ret) ? ret : num;
++}
++
++static u32 dvbsky_i2c_func(struct i2c_adapter *adapter)
++{
++      return I2C_FUNC_I2C;
++}
++
++static struct i2c_algorithm dvbsky_i2c_algo = {
++      .master_xfer   = dvbsky_i2c_xfer,
++      .functionality = dvbsky_i2c_func,
++};
++
++#if IS_ENABLED(CONFIG_RC_CORE)
++static int dvbsky_rc_query(struct dvb_usb_device *d)
++{
++      
++      u32 code = 0xffff, scancode;\r
++      u8 rc5_command, rc5_system;\r
++      u8 obuf[2], ibuf[2], toggle;\r
++      int ret;
++      obuf[0] = 0x10;\r
++      ret = dvbsky_usb_generic_rw(d, obuf, 1, ibuf, 2);
++      if(ret)
++              dev_err(&d->udev->dev, "%s: %s() " \
++                                      "failed=%d\n", KBUILD_MODNAME, __func__, ret);\r
++      if(ret == 0)\r
++              code = (ibuf[0] << 8) | ibuf[1];\r
++\r
++      if (code != 0xffff) {\r
++              dprintk("rc code: %x \n", code);\r
++              rc5_command = code & 0x3F;\r
++              rc5_system = (code & 0x7C0) >> 6;\r
++              toggle = (code & 0x800) ? 1 : 0;                \r
++              scancode = rc5_system << 8 | rc5_command;\r
++              rc_keydown(d->rc_dev, scancode, toggle);\r
++      }\r
++      return 0;
++}
++
++static int dvbsky_get_rc_config(struct dvb_usb_device *d, struct dvb_usb_rc *rc)
++{
++      rc->allowed_protos = RC_BIT_RC5;
++      rc->query          = dvbsky_rc_query;
++      rc->interval       = 300;
++      return 0;
++}
++#else
++      #define dvbsky_get_rc_config NULL
++#endif
++
++static int dvbsky_sync_ctrl(struct dvb_frontend *fe)
++{
++      struct dvb_usb_device *d = fe_to_d(fe);
++      return dvbsky_stream_ctrl(d, 1);
++}
++
++static int dvbsky_usb_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
++{
++      struct dvb_usb_device *d = fe_to_d(fe);
++      u8 value;
++
++      if (voltage == SEC_VOLTAGE_OFF)
++              value = 0;
++      else
++              value = 1;
++      return dvbsky_gpio_ctrl(d, 0x80, value);
++}
++
++static int dvbsky_usb_ci_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
++{
++      struct dvb_usb_device *d = fe_to_d(fe);
++      u8 value;
++
++      if (voltage == SEC_VOLTAGE_OFF)
++              value = 0;
++      else
++              value = 1;
++      return dvbsky_gpio_ctrl(d, 0x00, value);
++}
++
++static int dvbsky_t680c_attach(struct dvb_usb_adapter *adap)
++{
++      struct dvbsky_state *state = adap_to_priv(adap);
++      struct dvb_usb_device *d = adap_to_d(adap);
++      int ret = 0;
++      
++      /*dprintk("%s, build on %s %s()\n", __func__, __DATE__,__TIME__);*/
++
++//    adap->fe[0] = dvb_attach(sit2_attach,
++//                            &dvbsky_usb_sit2_config,
++//                            &d->i2c_adap);
++      if (!adap->fe[0]) {
++              printk(KERN_ERR "dvbsky_t680c_attach fail.");
++              ret = -ENODEV;
++      }
++      
++      state->has_ci = 1;
++
++      return ret;
++}
++
++static int dvbsky_t330_attach(struct dvb_usb_adapter *adap)
++{
++      struct dvbsky_state *state = adap_to_priv(adap);
++      struct dvb_usb_device *d = adap_to_d(adap);
++      int ret = 0;
++      
++      /*dprintk("%s, build on %s %s()\n", __func__, __DATE__,__TIME__);*/
++
++//    adap->fe[0] = dvb_attach(sit2_attach,
++//                            &dvbsky_t330_sit2_config,
++//                            &d->i2c_adap);
++      if (!adap->fe[0]) {
++              printk(KERN_ERR "dvbsky_t330_attach fail.");
++              ret = -ENODEV;
++      }
++      
++      state->has_ci = 0;
++
++      return ret;
++}
++
++static int dvbsky_read_mac_addr(struct dvb_usb_adapter *adap, u8 mac[6])
++{
++      struct dvb_usb_device *d = adap_to_d(adap);
++      u8 obuf[] = { 0x1e, 0x00 };
++      u8 ibuf[6] = { 0 };
++      struct i2c_msg msg[] = {
++              {
++                      .addr = 0x51,
++                      .flags = 0,
++                      .buf = obuf,
++                      .len = 2,
++              }, {
++                      .addr = 0x51,
++                      .flags = I2C_M_RD,
++                      .buf = ibuf,
++                      .len = 6,
++
++              }
++      };
++      
++      if (i2c_transfer(&d->i2c_adap, msg, 2) == 2)
++              memcpy(mac, ibuf, 6);
++
++      printk(KERN_INFO "dvbsky_usb MAC address=%pM\n", mac);
++      
++      return 0;
++}
++
++static struct dvbsky_m88ds3103_config dvbsky_usb_ds3103_config = {
++      .demod_address = 0x68,
++      .ci_mode = 1,
++      .pin_ctrl = 0x83,
++      .ts_mode = 0,
++      .start_ctrl = dvbsky_sync_ctrl,
++      .set_voltage = dvbsky_usb_set_voltage,
++};
++
++static int dvbsky_s960_attach(struct dvb_usb_adapter *adap)
++{
++      struct dvbsky_state *state = adap_to_priv(adap);
++      struct dvb_usb_device *d = adap_to_d(adap);
++      int ret = 0;
++      
++      dprintk("%s()\n", __func__);
++      
++      adap->fe[0] = dvb_attach(dvbsky_m88ds3103_attach,
++                              &dvbsky_usb_ds3103_config,
++                              &d->i2c_adap);
++      if (!adap->fe[0]) {
++              printk(KERN_ERR "dvbsky_s960_attach fail.");
++              ret = -ENODEV;
++      }
++      
++      state->has_ci = 0;
++
++      return ret;
++}
++
++static struct dvbsky_m88ds3103_config dvbsky_usb_ds3103_ci_config = {
++      .demod_address = 0x68,
++      .ci_mode = 2,
++      .pin_ctrl = 0x82,
++      .ts_mode = 0,
++      .start_ctrl = dvbsky_sync_ctrl,
++      .set_voltage = dvbsky_usb_ci_set_voltage,
++};
++static int dvbsky_s960c_attach(struct dvb_usb_adapter *adap)
++{
++      struct dvbsky_state *state = adap_to_priv(adap);
++      struct dvb_usb_device *d = adap_to_d(adap);
++      int ret = 0;
++      
++      /*dprintk("%s, build on %s %s()\n", __func__, __DATE__,__TIME__);*/
++              
++      adap->fe[0] = dvb_attach(dvbsky_m88ds3103_attach,
++                              &dvbsky_usb_ds3103_ci_config,
++                              &d->i2c_adap);
++      if (!adap->fe[0]) {
++              printk(KERN_ERR "dvbsky_s960c_attach fail.");
++              ret = -ENODEV;
++      }
++      
++      state->has_ci = 1;
++
++      return ret;
++}
++
++static int dvbsky_identify_state(struct dvb_usb_device *d, const char **name)
++{
++      /*
++      printk(KERN_INFO "%s, build on %s %s(),delay=%d\n", 
++      __func__, __DATE__,__TIME__,d->props->generic_bulk_ctrl_delay); 
++      */
++      dvbsky_gpio_ctrl(d, 0x04, 1);
++      msleep(20);
++      dvbsky_gpio_ctrl(d, 0x83, 0);
++      dvbsky_gpio_ctrl(d, 0xc0, 1);
++      msleep(100);
++      dvbsky_gpio_ctrl(d, 0x83, 1);
++      dvbsky_gpio_ctrl(d, 0xc0, 0);
++      msleep(50);
++      
++      return WARM;
++}
++
++static int dvbsky_init(struct dvb_usb_device *d)
++{
++      struct dvbsky_state *state = d_to_priv(d);
++      int ret;
++
++      /* use default interface */
++      /*
++      ret = usb_set_interface(d->udev, 0, 0);
++      if (ret)
++              return ret;
++      */
++      mutex_init(&state->stream_mutex);
++      
++      /* attach CI */
++      if (state->has_ci) {            
++              state->ci_attached = 0;
++              ret = dvbsky_ci_init(d);
++              if (ret)
++                      return ret;
++      }
++      return 0;
++}
++
++static void dvbsky_exit(struct dvb_usb_device *d)
++{
++      return dvbsky_ci_release(d);
++}
++
++/* DVB USB Driver stuff */
++static struct dvb_usb_device_properties dvbsky_t330_props = {
++      .driver_name = KBUILD_MODNAME,
++      .owner = THIS_MODULE,
++      .adapter_nr = adapter_nr,
++      .size_of_priv = sizeof(struct dvbsky_state),
++
++      .generic_bulk_ctrl_endpoint = 0x01,
++      .generic_bulk_ctrl_endpoint_response = 0x81,
++      .generic_bulk_ctrl_delay = DVBSKY_MSG_DELAY,
++
++      .i2c_algo         = &dvbsky_i2c_algo,
++      .frontend_attach  = dvbsky_t330_attach,
++      .init             = dvbsky_init,
++      .get_rc_config    = dvbsky_get_rc_config,
++      .streaming_ctrl   = dvbsky_streaming_ctrl,
++      .identify_state   = dvbsky_identify_state,
++      .exit             = dvbsky_exit,
++      .read_mac_address = dvbsky_read_mac_addr,
++
++      .num_adapters = 1,
++      .adapter = {
++              {
++                      .stream = DVB_USB_STREAM_BULK(0x82, 8, 4096),
++              }
++      }
++};
++
++static struct dvb_usb_device_properties dvbsky_s960c_props = {
++      .driver_name = KBUILD_MODNAME,
++      .owner = THIS_MODULE,
++      .adapter_nr = adapter_nr,
++      .size_of_priv = sizeof(struct dvbsky_state),
++
++      .generic_bulk_ctrl_endpoint = 0x01,
++      .generic_bulk_ctrl_endpoint_response = 0x81,
++      .generic_bulk_ctrl_delay = DVBSKY_MSG_DELAY,
++
++      .i2c_algo         = &dvbsky_i2c_algo,
++      .frontend_attach  = dvbsky_s960c_attach,
++      .init             = dvbsky_init,
++      .get_rc_config    = dvbsky_get_rc_config,
++      .streaming_ctrl   = dvbsky_streaming_ctrl,
++      .identify_state   = dvbsky_identify_state,
++      .exit             = dvbsky_exit,
++      .read_mac_address = dvbsky_read_mac_addr,
++
++      .num_adapters = 1,
++      .adapter = {
++              {
++                      .stream = DVB_USB_STREAM_BULK(0x82, 8, 4096),
++              }
++      }
++};
++
++static struct dvb_usb_device_properties dvbsky_t680c_props = {
++      .driver_name = KBUILD_MODNAME,
++      .owner = THIS_MODULE,
++      .adapter_nr = adapter_nr,
++      .size_of_priv = sizeof(struct dvbsky_state),
++
++      .generic_bulk_ctrl_endpoint = 0x01,
++      .generic_bulk_ctrl_endpoint_response = 0x81,
++      .generic_bulk_ctrl_delay = DVBSKY_MSG_DELAY,
++
++      .i2c_algo         = &dvbsky_i2c_algo,
++      .frontend_attach  = dvbsky_t680c_attach,
++      .init             = dvbsky_init,
++      .get_rc_config    = dvbsky_get_rc_config,
++      .streaming_ctrl   = dvbsky_streaming_ctrl,
++      .identify_state   = dvbsky_identify_state,
++      .exit             = dvbsky_exit,
++      .read_mac_address = dvbsky_read_mac_addr,
++
++      .num_adapters = 1,
++      .adapter = {
++              {
++                      .stream = DVB_USB_STREAM_BULK(0x82, 8, 4096),
++              }
++      }
++};
++
++static struct dvb_usb_device_properties dvbsky_s960_props = {
++      .driver_name = KBUILD_MODNAME,
++      .owner = THIS_MODULE,
++      .adapter_nr = adapter_nr,
++      .size_of_priv = sizeof(struct dvbsky_state),
++
++      .generic_bulk_ctrl_endpoint = 0x01,
++      .generic_bulk_ctrl_endpoint_response = 0x81,
++      .generic_bulk_ctrl_delay = DVBSKY_MSG_DELAY,
++
++      .i2c_algo         = &dvbsky_i2c_algo,
++      .frontend_attach  = dvbsky_s960_attach,
++      .init             = dvbsky_init,
++      .get_rc_config    = dvbsky_get_rc_config,
++      .streaming_ctrl   = dvbsky_streaming_ctrl,
++      .identify_state   = dvbsky_identify_state,
++      .exit             = dvbsky_exit,
++      .read_mac_address = dvbsky_read_mac_addr,
++
++      .num_adapters = 1,
++      .adapter = {
++              {
++                      .stream = DVB_USB_STREAM_BULK(0x82, 8, 4096),
++              }
++      }
++};
++
++static const struct usb_device_id dvbsky_id_table[] = {
++      { DVB_USB_DEVICE(0x0572, 0x0320,
++              &dvbsky_t330_props, "DVBSky T330 USB Stick", RC_MAP_DVBSKY) },  
++      { DVB_USB_DEVICE(0x0572, 0x960c,
++              &dvbsky_s960c_props, "DVBSky S960CI", RC_MAP_DVBSKY) },
++      { DVB_USB_DEVICE(0x0572, 0x680c,
++              &dvbsky_t680c_props, "DVBSky T680CI", RC_MAP_DVBSKY) },
++      { DVB_USB_DEVICE(0x0572, 0x6831,
++              &dvbsky_s960_props, "DVBSky S960/S860", RC_MAP_DVBSKY) },
++      { }
++};
++MODULE_DEVICE_TABLE(usb, dvbsky_id_table);
++
++static struct usb_driver dvbsky_usb_driver = {
++      .name = KBUILD_MODNAME,
++      .id_table = dvbsky_id_table,
++      .probe = dvb_usbv2_probe,
++      .disconnect = dvb_usbv2_disconnect,
++      .suspend = dvb_usbv2_suspend,
++      .resume = dvb_usbv2_resume,
++      .reset_resume = dvb_usbv2_reset_resume,
++      .no_dynamic_id = 1,
++      .soft_unbind = 1,
++};
++
++module_usb_driver(dvbsky_usb_driver);
++
++MODULE_AUTHOR("Max nibble <nibble.max@gmail.com>");
++MODULE_DESCRIPTION("Driver for DVBSky USB2.0");
++MODULE_LICENSE("GPL");
+diff --git a/include/media/rc-map.h b/include/media/rc-map.h
+index a20ed97..73f8c92 100644
+--- a/include/media/rc-map.h
++++ b/include/media/rc-map.h
+@@ -119,6 +119,7 @@ void rc_map_init(void);
+ #define RC_MAP_DM1105_NEC                "rc-dm1105-nec"
+ #define RC_MAP_DNTV_LIVE_DVBT_PRO        "rc-dntv-live-dvbt-pro"
+ #define RC_MAP_DNTV_LIVE_DVB_T           "rc-dntv-live-dvb-t"
++#define RC_MAP_DVBSKY                    "rc-dvbsky"
+ #define RC_MAP_EMPTY                     "rc-empty"
+ #define RC_MAP_EM_TERRATEC               "rc-em-terratec"
+ #define RC_MAP_ENCORE_ENLTV2             "rc-encore-enltv2"
diff --git a/src/patches/linux-3.14.22-imq.patch b/src/patches/linux-3.14.22-imq.patch
new file mode 100644 (file)
index 0000000..219d4fb
--- /dev/null
@@ -0,0 +1,1767 @@
+diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
+index 494b888..851e01f 100644
+--- a/drivers/net/Kconfig
++++ b/drivers/net/Kconfig
+@@ -203,6 +203,125 @@ config RIONET_RX_SIZE
+       depends on RIONET
+       default "128"
++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 TUN
+       tristate "Universal TUN/TAP device driver support"
+       select CRC32
+diff --git a/drivers/net/Makefile b/drivers/net/Makefile
+index 3fef8a8..12dafc0 100644
+--- a/drivers/net/Makefile
++++ b/drivers/net/Makefile
+@@ -9,6 +9,7 @@ obj-$(CONFIG_BONDING) += bonding/
+ obj-$(CONFIG_DUMMY) += dummy.o
+ obj-$(CONFIG_EQUALIZER) += eql.o
+ obj-$(CONFIG_IFB) += ifb.o
++obj-$(CONFIG_IMQ) += imq.o
+ obj-$(CONFIG_MACVLAN) += macvlan.o
+ obj-$(CONFIG_MACVTAP) += macvtap.o
+ obj-$(CONFIG_MII) += mii.o
+diff --git a/drivers/net/imq.c b/drivers/net/imq.c
+new file mode 100644
+index 0000000..2140535
+--- /dev/null
++++ b/drivers/net/imq.c
+@@ -0,0 +1,1011 @@
++/*
++ *             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().
++ *
++ *             2012/01/05 - Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
++ *              - Port to 3.2
++ *
++ *             2012/03/19 - Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
++ *              - Port to 3.3
++ *
++ *             2012/12/12 - Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
++ *              - Port to 3.7
++ *              - Fix checkpatch.pl warnings
++ *
++ *             2013/09/10 - Jussi Kivilinna <jussi.kivilinna@iki.fi>
++ *              - Fixed GSO handling for 3.10, see imq_nf_queue() for comments.
++ *              - Don't copy skb->cb_next when copying or cloning skbuffs.
++ *
++ *             2013/09/16 - Jussi Kivilinna <jussi.kivilinna@iki.fi>
++ *              - Port to 3.11
++ *
++ *             2013/11/12 - Jussi Kivilinna <jussi.kivilinna@iki.fi>
++ *              - Port to 3.12
++ *
++ *             2014/02/07 - Jussi Kivilinna <jussi.kivilinna@iki.fi>
++ *              - Port to 3.13
++ *
++ *           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);
++              __be16 fo = 0;
++
++              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,
++                                     &fo);
++              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 struct nf_queue_entry *nf_queue_entry_dup(struct nf_queue_entry *e)
++{
++      struct nf_queue_entry *entry = kmemdup(e, e->size, GFP_ATOMIC);
++      if (entry) {
++              if (nf_queue_entry_get_refs(entry))
++                      return entry;
++              kfree(entry);
++      }
++      return NULL;
++}
++
++#ifdef CONFIG_BRIDGE_NETFILTER
++/* When called from bridge netfilter, skb->data must point to MAC header
++ * before calling skb_gso_segment(). Else, original MAC header is lost
++ * and segmented skbs will be sent to wrong destination.
++ */
++static void nf_bridge_adjust_skb_data(struct sk_buff *skb)
++{
++      if (skb->nf_bridge)
++              __skb_push(skb, skb->network_header - skb->mac_header);
++}
++
++static void nf_bridge_adjust_segmented_data(struct sk_buff *skb)
++{
++      if (skb->nf_bridge)
++              __skb_pull(skb, skb->network_header - skb->mac_header);
++}
++#else
++#define nf_bridge_adjust_skb_data(s) do {} while (0)
++#define nf_bridge_adjust_segmented_data(s) do {} while (0)
++#endif
++
++static void free_entry(struct nf_queue_entry *entry)
++{
++      nf_queue_entry_release_refs(entry);
++      kfree(entry);
++}
++
++static int __imq_nf_queue(struct nf_queue_entry *entry, struct net_device *dev);
++
++static int __imq_nf_queue_gso(struct nf_queue_entry *entry,
++                            struct net_device *dev, struct sk_buff *skb)
++{
++      int ret = -ENOMEM;
++      struct nf_queue_entry *entry_seg;
++
++      nf_bridge_adjust_segmented_data(skb);
++
++      if (skb->next == NULL) { /* last packet, no need to copy entry */
++              struct sk_buff *gso_skb = entry->skb;
++              entry->skb = skb;
++              ret = __imq_nf_queue(entry, dev);
++              if (ret)
++                      entry->skb = gso_skb;
++              return ret;
++      }
++
++      skb->next = NULL;
++
++      entry_seg = nf_queue_entry_dup(entry);
++      if (entry_seg) {
++              entry_seg->skb = skb;
++              ret = __imq_nf_queue(entry_seg, dev);
++              if (ret)
++                      free_entry(entry_seg);
++      }
++      return ret;
++}
++
++static int imq_nf_queue(struct nf_queue_entry *entry, unsigned queue_num)
++{
++      struct sk_buff *skb, *segs;
++      struct net_device *dev;
++      unsigned int queued;
++      int index, retval, err;
++
++      index = entry->skb->imq_flags & IMQ_F_IFMASK;
++      if (unlikely(index > numdevs - 1)) {
++              if (net_ratelimit())
++                      pr_warn("IMQ: invalid device specified, highest is %u\n",
++                              numdevs - 1);
++              retval = -EINVAL;
++              goto out_no_dev;
++      }
++
++      /* 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_no_dev;
++              }
++      }
++
++      if (unlikely(!(dev->flags & IFF_UP))) {
++              entry->skb->imq_flags = 0;
++              retval = -ECANCELED;
++              goto out_no_dev;
++      }
++
++      if (!skb_is_gso(entry->skb))
++              return __imq_nf_queue(entry, dev);
++
++      /* Since 3.10.x, GSO handling moved here as result of upstream commit
++       * a5fedd43d5f6c94c71053a66e4c3d2e35f1731a2 (netfilter: move
++       * skb_gso_segment into nfnetlink_queue module).
++       *
++       * Following code replicates the gso handling from
++       * 'net/netfilter/nfnetlink_queue_core.c':nfqnl_enqueue_packet().
++       */
++
++      skb = entry->skb;
++
++      switch (entry->pf) {
++      case NFPROTO_IPV4:
++              skb->protocol = htons(ETH_P_IP);
++              break;
++      case NFPROTO_IPV6:
++              skb->protocol = htons(ETH_P_IPV6);
++              break;
++      }
++
++      nf_bridge_adjust_skb_data(skb);
++      segs = skb_gso_segment(skb, 0);
++      /* Does not use PTR_ERR to limit the number of error codes that can be
++       * returned by nf_queue.  For instance, callers rely on -ECANCELED to
++       * mean 'ignore this hook'.
++       */
++      err = -ENOBUFS;
++      if (IS_ERR(segs))
++              goto out_err;
++      queued = 0;
++      err = 0;
++      do {
++              struct sk_buff *nskb = segs->next;
++              if (nskb && nskb->next)
++                      nskb->cb_next = NULL;
++              if (err == 0)
++                      err = __imq_nf_queue_gso(entry, dev, segs);
++              if (err == 0)
++                      queued++;
++              else
++                      kfree_skb(segs);
++              segs = nskb;
++      } while (segs);
++
++      if (queued) {
++              if (err) /* some segments are already queued */
++                      free_entry(entry);
++              kfree_skb(skb);
++              return 0;
++      }
++
++out_err:
++      nf_bridge_adjust_segmented_data(skb);
++      retval = err;
++out_no_dev:
++      return retval;
++}
++
++static int __imq_nf_queue(struct nf_queue_entry *entry, 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;
++      int retval = -EINVAL;
++      unsigned int orig_queue_index;
++
++      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;
++              }
++              skb->cb_next = NULL;
++              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 */
++
++      /* backup skb->cb, as qdisc layer will overwrite it */
++      skb_save_cb(skb_shared);
++      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(const struct nf_hook_ops *hook_ops,
++                              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:
++      pr_warn("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 = {
++      .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) {
++              pr_err("IMQ: numdevs has to be betweed 1 and %u\n",
++                     IMQ_MAX_DEVS);
++              return -EINVAL;
++      }
++
++      if (numqueues < 1 || numqueues > IMQ_MAX_QUEUES) {
++              pr_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) {
++              pr_err("IMQ: Error trying imq_init_devs(net)\n");
++              return err;
++      }
++
++      err = imq_init_hooks();
++      if (err) {
++              pr_err(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;
++      }
++
++      pr_info("IMQ driver loaded successfully. (numdevs = %d, numqueues = %d)\n",
++              numdevs, numqueues);
++
++#if defined(CONFIG_IMQ_BEHAVIOR_BA) || defined(CONFIG_IMQ_BEHAVIOR_BB)
++      pr_info("\tHooking IMQ before NAT on PREROUTING.\n");
++#else
++      pr_info("\tHooking IMQ after NAT on PREROUTING.\n");
++#endif
++#if defined(CONFIG_IMQ_BEHAVIOR_AB) || defined(CONFIG_IMQ_BEHAVIOR_BB)
++      pr_info("\tHooking IMQ before NAT on POSTROUTING.\n");
++#else
++      pr_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();
++      pr_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 --git a/include/linux/imq.h b/include/linux/imq.h
+new file mode 100644
+index 0000000..1babb09
+--- /dev/null
++++ b/include/linux/imq.h
+@@ -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 --git a/include/linux/netfilter/xt_IMQ.h b/include/linux/netfilter/xt_IMQ.h
+new file mode 100644
+index 0000000..9b07230
+--- /dev/null
++++ b/include/linux/netfilter/xt_IMQ.h
+@@ -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 --git a/include/linux/netfilter_ipv4/ipt_IMQ.h b/include/linux/netfilter_ipv4/ipt_IMQ.h
+new file mode 100644
+index 0000000..7af320f
+--- /dev/null
++++ b/include/linux/netfilter_ipv4/ipt_IMQ.h
+@@ -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 --git a/include/linux/netfilter_ipv6/ip6t_IMQ.h b/include/linux/netfilter_ipv6/ip6t_IMQ.h
+new file mode 100644
+index 0000000..198ac01
+--- /dev/null
++++ b/include/linux/netfilter_ipv6/ip6t_IMQ.h
+@@ -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 --git a/include/linux/skbuff.h b/include/linux/skbuff.h
+index ad8f859..8473090 100644
+--- a/include/linux/skbuff.h
++++ b/include/linux/skbuff.h
+@@ -33,6 +33,9 @@
+ #include <linux/dma-mapping.h>
+ #include <linux/netdev_features.h>
+ #include <net/flow_keys.h>
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++#include <linux/imq.h>
++#endif
+ /* A. Checksumming of received packets by device.
+  *
+@@ -441,6 +444,9 @@ struct sk_buff {
+        * 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
+@@ -476,6 +482,9 @@ struct sk_buff {
+ #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
+       struct nf_conntrack     *nfct;
+ #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
+@@ -513,6 +522,9 @@ struct sk_buff {
+        */
+       __u8                    encapsulation:1;
+       /* 6/8 bit hole (depending on ndisc_nodetype presence) */
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++      __u8                    imq_flags:IMQ_F_BITS;
++#endif
+       kmemcheck_bitfield_end(flags2);
+ #if defined CONFIG_NET_DMA || defined CONFIG_NET_RX_BUSY_POLL
+@@ -653,6 +665,12 @@ void kfree_skb_list(struct sk_buff *segs);
+ void skb_tx_error(struct sk_buff *skb);
+ void consume_skb(struct sk_buff *skb);
+ void  __kfree_skb(struct sk_buff *skb);
++
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++int skb_save_cb(struct sk_buff *skb);
++int skb_restore_cb(struct sk_buff *skb);
++#endif
++
+ extern struct kmem_cache *skbuff_head_cache;
+ void kfree_skb_partial(struct sk_buff *skb, bool head_stolen);
+@@ -2739,6 +2757,10 @@ static inline void __nf_copy(struct sk_buff *dst, const struct sk_buff *src)
+       nf_conntrack_get(src->nfct);
+       dst->nfctinfo = src->nfctinfo;
+ #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 --git a/include/net/netfilter/nf_queue.h b/include/net/netfilter/nf_queue.h
+index 84a53d7..6ffb593 100644
+--- a/include/net/netfilter/nf_queue.h
++++ b/include/net/netfilter/nf_queue.h
+@@ -33,6 +33,12 @@ struct nf_queue_handler {
+ void nf_register_queue_handler(const struct nf_queue_handler *qh);
+ void nf_unregister_queue_handler(void);
+ void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict);
++void nf_queue_entry_release_refs(struct nf_queue_entry *entry);
++
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++void nf_register_queue_imq_handler(const struct nf_queue_handler *qh);
++void nf_unregister_queue_imq_handler(void);
++#endif
+ bool nf_queue_entry_get_refs(struct nf_queue_entry *entry);
+ void nf_queue_entry_release_refs(struct nf_queue_entry *entry);
+diff --git a/include/uapi/linux/netfilter.h b/include/uapi/linux/netfilter.h
+index ef1b1f8..079e5ff 100644
+--- a/include/uapi/linux/netfilter.h
++++ b/include/uapi/linux/netfilter.h
+@@ -13,7 +13,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 --git a/net/core/dev.c b/net/core/dev.c
+index 3ed11a5..fd62030 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -132,6 +132,9 @@
+ #include <linux/hashtable.h>
+ #include <linux/vmalloc.h>
+ #include <linux/if_macvlan.h>
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++#include <linux/imq.h>
++#endif
+ #include "net-sysfs.h"
+@@ -2611,7 +2614,12 @@ int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
+                       }
+               }
++#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_len = skb->len;
+diff --git a/net/core/skbuff.c b/net/core/skbuff.c
+index baf6fc4..7d30d78 100644
+--- a/net/core/skbuff.c
++++ b/net/core/skbuff.c
+@@ -77,6 +77,115 @@
+ 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)
++{
++      put_page(buf->page);
++}
++
++static void sock_pipe_buf_get(struct pipe_inode_info *pipe,
++                              struct pipe_buffer *buf)
++{
++      get_page(buf->page);
++}
++
++static int sock_pipe_buf_steal(struct pipe_inode_info *pipe,
++                             struct pipe_buffer *buf)
++{
++      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 = {
++      .can_merge = 0,
++      .map = generic_pipe_buf_map,
++      .unmap = generic_pipe_buf_unmap,
++      .confirm = generic_pipe_buf_confirm,
++      .release = sock_pipe_buf_release,
++      .steal = sock_pipe_buf_steal,
++      .get = sock_pipe_buf_get,
++};
+ /**
+  *    skb_panic - private function for out-of-line support
+@@ -563,6 +672,28 @@ static void skb_release_head_state(struct sk_buff *skb)
+               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())
++                      pr_warn("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())
++              pr_warn("%s\n", "IMQ: kfree_skb: skb->nf_queue_entry != NULL");
++#endif
+ #if IS_ENABLED(CONFIG_NF_CONNTRACK)
+       nf_conntrack_put(skb->nfct);
+ #endif
+@@ -694,6 +825,10 @@ static void __copy_skb_header(struct sk_buff *new, const struct sk_buff *old)
+       new->sp                 = secpath_get(old->sp);
+ #endif
+       memcpy(new->cb, old->cb, sizeof(old->cb));
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++      new->cb_next = NULL;
++      /*skb_copy_stored_cb(new, old);*/
++#endif
+       new->csum               = old->csum;
+       new->local_df           = old->local_df;
+       new->pkt_type           = old->pkt_type;
+@@ -3233,6 +3368,13 @@ void __init skb_init(void)
+                                               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 --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
+index 12f7ef0..deb1c9d 100644
+--- a/net/ipv6/ip6_output.c
++++ b/net/ipv6/ip6_output.c
+@@ -64,9 +64,6 @@ static int ip6_finish_output2(struct sk_buff *skb)
+       struct in6_addr *nexthop;
+       int ret;
+-      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));
+@@ -143,6 +140,13 @@ int ip6_output(struct sk_buff *skb)
+               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 --git a/net/netfilter/Kconfig b/net/netfilter/Kconfig
+index e9410d1..ba801d5 100644
+--- a/net/netfilter/Kconfig
++++ b/net/netfilter/Kconfig
+@@ -751,6 +751,18 @@ config NETFILTER_XT_TARGET_LOG
+         To compile it as a module, choose M here.  If unsure, say N.
++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 --git a/net/netfilter/Makefile b/net/netfilter/Makefile
+index bffdad7..050e613 100644
+--- a/net/netfilter/Makefile
++++ b/net/netfilter/Makefile
+@@ -103,6 +103,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_HMARK) += xt_HMARK.o
++obj-$(CONFIG_NETFILTER_XT_TARGET_IMQ) += xt_IMQ.o
+ obj-$(CONFIG_NETFILTER_XT_TARGET_LED) += xt_LED.o
+ obj-$(CONFIG_NETFILTER_XT_TARGET_LOG) += xt_LOG.o
+ obj-$(CONFIG_NETFILTER_XT_TARGET_NETMAP) += xt_NETMAP.o
+diff --git a/net/netfilter/core.c b/net/netfilter/core.c
+index 1fbab0c..4493417 100644
+--- a/net/netfilter/core.c
++++ b/net/netfilter/core.c
+@@ -191,9 +191,11 @@ next_hook:
+               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 --git a/net/netfilter/nf_internals.h b/net/netfilter/nf_internals.h
+index 61a3c92..5388a0e 100644
+--- a/net/netfilter/nf_internals.h
++++ b/net/netfilter/nf_internals.h
+@@ -23,7 +23,7 @@ unsigned int nf_iterate(struct list_head *head, struct sk_buff *skb,
+ int nf_queue(struct sk_buff *skb, struct nf_hook_ops *elem, u_int8_t pf,
+            unsigned int hook, struct net_device *indev,
+            struct net_device *outdev, int (*okfn)(struct sk_buff *),
+-           unsigned int queuenum);
++           unsigned int queuenum, unsigned int queuetype);
+ int __init netfilter_queue_init(void);
+ /* nf_log.c */
+diff --git a/net/netfilter/nf_queue.c b/net/netfilter/nf_queue.c
+index 5d24b1f..28317dc 100644
+--- a/net/netfilter/nf_queue.c
++++ b/net/netfilter/nf_queue.c
+@@ -27,6 +27,23 @@
+  */
+ static const struct nf_queue_handler __rcu *queue_handler __read_mostly;
++#if defined(CONFIG_IMQ) || defined(CONFIG_IMQ_MODULE)
++static const struct nf_queue_handler __rcu *queue_imq_handler __read_mostly;
++
++void nf_register_queue_imq_handler(const struct nf_queue_handler *qh)
++{
++      rcu_assign_pointer(queue_imq_handler, qh);
++}
++EXPORT_SYMBOL_GPL(nf_register_queue_imq_handler);
++
++void nf_unregister_queue_imq_handler(void)
++{
++      RCU_INIT_POINTER(queue_imq_handler, NULL);
++      synchronize_rcu();
++}
++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. */
+ void nf_register_queue_handler(const struct nf_queue_handler *qh)
+@@ -105,7 +122,8 @@ int nf_queue(struct sk_buff *skb,
+                     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;
+@@ -115,7 +133,17 @@ int nf_queue(struct sk_buff *skb,
+       /* QUEUE == DROP if no one is waiting, to be safe. */
+       rcu_read_lock();
+-      qh = rcu_dereference(queue_handler);
++      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);
++      }
++
+       if (!qh) {
+               status = -ESRCH;
+               goto err_unlock;
+@@ -205,9 +233,11 @@ void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict)
+               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 --git a/net/netfilter/xt_IMQ.c b/net/netfilter/xt_IMQ.c
+new file mode 100644
+index 0000000..1c3cd66
+--- /dev/null
++++ b/net/netfilter/xt_IMQ.c
+@@ -0,0 +1,72 @@
++/*
++ * 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) {
++              pr_warn("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");
++
diff --git a/src/patches/linux-3.14.22-iwlwifi-noibss_only_on_radar_chan.patch b/src/patches/linux-3.14.22-iwlwifi-noibss_only_on_radar_chan.patch
new file mode 100644 (file)
index 0000000..a6a950b
--- /dev/null
@@ -0,0 +1,22 @@
+diff -Naur linux-3.14.22.org/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c linux-3.14.22/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c
+--- linux-3.14.22.org/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c  2014-10-15 08:42:04.000000000 +0200
++++ linux-3.14.22/drivers/net/wireless/iwlwifi/iwl-eeprom-parse.c      2014-10-24 17:33:57.165155190 +0200
+@@ -613,14 +613,15 @@
+                       /* set no-HT40, will enable as appropriate later */
+                       channel->flags = IEEE80211_CHAN_NO_HT40;
++                      if (eeprom_ch->flags & EEPROM_CHANNEL_RADAR) {
++                              channel->flags |= IEEE80211_CHAN_RADAR;
++
+                       if (!(eeprom_ch->flags & EEPROM_CHANNEL_IBSS))
+                               channel->flags |= IEEE80211_CHAN_NO_IR;
+                       if (!(eeprom_ch->flags & EEPROM_CHANNEL_ACTIVE))
+                               channel->flags |= IEEE80211_CHAN_NO_IR;
+-
+-                      if (eeprom_ch->flags & EEPROM_CHANNEL_RADAR)
+-                              channel->flags |= IEEE80211_CHAN_RADAR;
++}
+                       /* Initialize regulatory-based run-time data */
+                       channel->max_power =