aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2016-03-27 18:26:24 +0300
committerTimo Teräs <timo.teras@iki.fi>2016-03-28 11:35:56 +0000
commitb928439ad003b436fe746122ed9c553cee8885d3 (patch)
treea4bba97d5ae0e106b1498f6f7a6e3ec35a4fbed7 /main
parent92c47eed2278e37b49d293c4bb3cc43390d41494 (diff)
downloadaports-b928439ad003b436fe746122ed9c553cee8885d3.tar.bz2
aports-b928439ad003b436fe746122ed9c553cee8885d3.tar.xz
main/linux-rpi: upgrade to 4.4.6
CONFIG_CPU_SW_DOMAIN_PAN is disabled until upstream is fixed: https://github.com/raspberrypi/linux/issues/1381 rpi2 kernel changed to CONFIG_VMSPLIT_3G_OPT.
Diffstat (limited to 'main')
-rw-r--r--main/linux-rpi/APKBUILD48
-rw-r--r--main/linux-rpi/config-rpi.armhf333
-rw-r--r--main/linux-rpi/config-rpi2.armhf352
-rw-r--r--main/linux-rpi/rotary-encoder-fix.patch377
-rw-r--r--main/linux-rpi/rpi-cirrus-4.4.y-20160327.patch (renamed from main/linux-rpi/rpi-cirrus-4.1.y-20151218.patch)1112
5 files changed, 912 insertions, 1310 deletions
diff --git a/main/linux-rpi/APKBUILD b/main/linux-rpi/APKBUILD
index d29228115a..80183d8bb0 100644
--- a/main/linux-rpi/APKBUILD
+++ b/main/linux-rpi/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=linux-rpi
-pkgver=4.1.20
+pkgver=4.4.6
case $pkgver in
*.*.*) _kernver=${pkgver%.*};;
*.*) _kernver=${pkgver};;
@@ -15,8 +15,8 @@ options="!strip"
install=
source="http://ftp.kernel.org/pub/linux/kernel/v4.x/linux-$_kernver.tar.xz
http://ftp.kernel.org/pub/linux/kernel/v4.x/patch-$pkgver.xz
- http://dev.alpinelinux.org/~tteras/linux-4.1.y-rpi-20160309.patch
- rpi-cirrus-4.1.y-20151218.patch
+ http://dev.alpinelinux.org/~tteras/rpi/linux-4.4.y-rpi-20160327.patch
+ rpi-cirrus-4.4.y-20160327.patch
gpio-mcp23s08-pullups.patch
rotary-encoder-fix.patch
issue-4973.patch
@@ -195,33 +195,33 @@ for _f in $_flavors; do
eval "_${_f}_dev() { _dev $_f; }"
done
-md5sums="fe9dc0f6729f36400ea81aa41d614c37 linux-4.1.tar.xz
-06faf67e8b926915b94970981c3645e3 patch-4.1.20.xz
-6c2c853cab58eb1a0d28b0763d45ee7c linux-4.1.y-rpi-20160309.patch
-d4b70738cf06dbd70534d5e873442951 rpi-cirrus-4.1.y-20151218.patch
+md5sums="9a78fa2eb6c68ca5a40ed5af08142599 linux-4.4.tar.xz
+d48f09bf61f2500d70f839e190dc7c5a patch-4.4.6.xz
+65535cb30adc5f137de52734d4b401c6 linux-4.4.y-rpi-20160327.patch
+f3bc8a24dab2ad72e3f61ad47c30469d rpi-cirrus-4.4.y-20160327.patch
b66e8aa4991ca5c2ccd61559ed7e6491 gpio-mcp23s08-pullups.patch
-892ab7d20855cef17eb8add060f99c87 rotary-encoder-fix.patch
+5508d2b3e5967bd57f92f551d90b3e54 rotary-encoder-fix.patch
29281b74d2cef6965fa4ab6d826a2aa4 issue-4973.patch
-b8dcd53eb5044ad5fb62819c31caea2f config-rpi.armhf
-22536aa19d1b5cc8e4ab5930baf5f253 config-rpi2.armhf
+0036614292182b8e20af4829b29081fc config-rpi.armhf
+787c28d583a3c1ecfcd3aac925ca4306 config-rpi2.armhf
e587cae1dca2f5992555d9bcf53deecf markdt"
-sha256sums="caf51f085aac1e1cea4d00dbbf3093ead07b551fc07b31b2a989c05f8ea72d9f linux-4.1.tar.xz
-c9cb7370fe790df645a13967919628e5bcf1ff333f334fedac6a3c474714c45d patch-4.1.20.xz
-53583dc93d6d9a3194685e5ea4791833f346aabf6f9eb30af67679c9c27b1f97 linux-4.1.y-rpi-20160309.patch
-5aa17a1554598c3b364b7e8aea84bacfc13e8aca9b9101e58d89c211674a3d5a rpi-cirrus-4.1.y-20151218.patch
+sha256sums="401d7c8fef594999a460d10c72c5a94e9c2e1022f16795ec51746b0d165418b2 linux-4.4.tar.xz
+efea93ff30955d445344a83c36678fa8e64111219eeafea2a41fd4ee11f79d68 patch-4.4.6.xz
+d6fb979957ba12c7634846a27824c752493449542439084088daf5b7833e227d linux-4.4.y-rpi-20160327.patch
+0b6b1cd22459bf52350fb8952256870642bfeedfa91ee7cda5349d7118b4af77 rpi-cirrus-4.4.y-20160327.patch
b389a556bbd98053881b43deef1adf20640f980557c5f37cfd7ece2daeecbda9 gpio-mcp23s08-pullups.patch
-aaa1da7d9cac68206a8ddf1e1b8c08bc62696f789468ebfd6894c891d8700533 rotary-encoder-fix.patch
+ab6740577fe8c1d71d2c716720ebbbf9a750985963d6938093b4ca9194b6e871 rotary-encoder-fix.patch
3a16e927ce53a8c56e7f1dd86fe8ad08b1c06466f5206c521a7e2de1e4796d6c issue-4973.patch
-ed7475d65b121b7d8bfa069e39b8a5c1aed8e535b747cfccd3bd6879b4eed5b7 config-rpi.armhf
-46ae33ff3a17860ec2641845323c7c6174ef8de26a320b0b01df49f3bc51a265 config-rpi2.armhf
+06583f667b891966239b6dcae1ab7719789b656bde32f3692570d868aabdf765 config-rpi.armhf
+c048a90327ffd15d2360d3fd2ead7ffe5b368d006a2d38e2c27cffc4d7aa1ec2 config-rpi2.armhf
0f6681fc5c3590e1dbe13a2bde796403bd1529cf0fe19720899eaa0db79bcb49 markdt"
-sha512sums="168ef84a4e67619f9f53f3574e438542a5747f9b43443363cb83597fcdac9f40d201625c66e375a23226745eaada9176eb006ca023613cec089349e91751f3c0 linux-4.1.tar.xz
-5c919982d33270c75b49e1deda32a9704ac8c68c4f07595471357c6b98694a4429dbd85bb31f662e63150294c031205b2d31426e117d0197ce7afdfd45f1c313 patch-4.1.20.xz
-786b503b799dd14b2ca8b659a01d176600341ba2658a6b330fa2409cac77402d32a04ad5b5d89f2a402da2ca81517311ede7a10ea6f6a40cba53e4db2f47bde0 linux-4.1.y-rpi-20160309.patch
-843afc1f2a72fa9618935dd67d4ac33a22ee78f20114af349f8d93e54864375b3ef192c8d8fde814d6685d5fe675c2a850743834ef89640eedce9f4db5ffdb67 rpi-cirrus-4.1.y-20151218.patch
+sha512sums="13c8459933a8b80608e226a1398e3d1848352ace84bcfb7e6a4a33cb230bbe1ab719d4b58e067283df91ce5311be6d2d595fc8c19e2ae6ecc652499415614b3e linux-4.4.tar.xz
+73da057476eb31d818eed4b66c883f5ceec65f18ec8ea60d64e48334c7681af4ed4cf7eb8684481f705446a59fd124de9449d22e28805bc9617b6608ecec491d patch-4.4.6.xz
+7e71b19c945965de3bc0fc6b0f4eb9bb29f9b89d63175a8ef2a58c926d60d2b3ec113f5c6c39e45bb892bcc94de7d00599e377d359edda0b94eb9afa0b10670f linux-4.4.y-rpi-20160327.patch
+7b7c2bd82ab32581ebd0382539fece6e9e7789d76b0f6bcc4a132dd9c4374a17175df1482e2ffabe1e9c27a170c179b26b52d4698f7b8f45afb07297b640221c rpi-cirrus-4.4.y-20160327.patch
36724ba56cb8fdf3a3d347cffb67ae1cc3d7b1052d526b6b5134ebf6baae9f9724b586c97833453dc7697ab24699426f0749af78b6a80be36967a80033a0cf40 gpio-mcp23s08-pullups.patch
-12794c6e75d6a58253eac8f0778ba8bb6de1dca1541f0bcb58c25f13dab7261f89f2e1b87dacca09b6ed297f2d3e1a159229aab57e7472e041d6aa611b6634fa rotary-encoder-fix.patch
+3a711e2cdb6c0ecaceb3755437d38626dec8403e8aa167a6e16f64d8a8b7cc5bdc7e04aa7c05938719ebc90e319ec4124ee2151a7855e7838ee143b62d140ad0 rotary-encoder-fix.patch
501c91bf2538a18102da59bbccc3097f9c3c90079acc0e946ff075074160c09b8a66934e5ce5470e170f0e4f93d114709a95230367426d0bb7ea02c4bdf4cc9b issue-4973.patch
-8ae010419fe7b64ec902b9428ef25d2cb8cfc7e8feb7fc19de2f7f2ce8558393f6fa141538fc702f4256cab1f0e51192face1cf9b3a2b536ebd93be49ab78ba3 config-rpi.armhf
-7d272461836011344d0939695554dddc7c3e39527f27cc711ac3b793afbdf36338d093a3ec1e7013843072871a68b0eeb71337cc5fa2db192a1782b7a898200b config-rpi2.armhf
+c2cc0116361b1d80829e0df002950824be068247542c5828fb62f967d528607b2e98daf82c02d36f057c7154d20fd5d28a01d5f570ec9c9820109493f228aeb6 config-rpi.armhf
+283181270437defed765ba454e275e95f9bcc331a254d1ba5ae29eee6cffc2c8c294d2de9dd16029eb8ef12a174b2701f11ddc5b39e128d8cbaa5f054ae8022a config-rpi2.armhf
a4ecd1f48db64f9d6a189250d1937d7f2cd3a049a3d24cc527d04d05db06137722f1ba44bcd6033794781c3f2cfe2fbe065410a16de4bfdf4b1cd95d89322a77 markdt"
diff --git a/main/linux-rpi/config-rpi.armhf b/main/linux-rpi/config-rpi.armhf
index d54a8709ef..34644004c9 100644
--- a/main/linux-rpi/config-rpi.armhf
+++ b/main/linux-rpi/config-rpi.armhf
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/arm 4.1.19 Kernel Configuration
+# Linux/arm 4.4.6 Kernel Configuration
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -10,6 +10,7 @@ CONFIG_HAVE_LATENCYTOP_SUPPORT=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_FIX_EARLYCON_MEM=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_NEED_DMA_MAP_STATE=y
@@ -69,6 +70,7 @@ CONFIG_IRQ_DOMAIN=y
CONFIG_HANDLE_DOMAIN_IRQ=y
# CONFIG_IRQ_DOMAIN_DEBUG is not set
CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_SPARSE_IRQ=y
CONFIG_GENERIC_CLOCKEVENTS=y
#
@@ -98,16 +100,11 @@ CONFIG_TASK_IO_ACCOUNTING=y
# RCU Subsystem
#
CONFIG_PREEMPT_RCU=y
+# CONFIG_RCU_EXPERT is not set
CONFIG_SRCU=y
# CONFIG_TASKS_RCU is not set
CONFIG_RCU_STALL_COMMON=y
-CONFIG_RCU_FANOUT=32
-CONFIG_RCU_FANOUT_LEAF=16
-# CONFIG_RCU_FANOUT_EXACT is not set
# CONFIG_TREE_RCU_TRACE is not set
-# CONFIG_RCU_BOOST is not set
-CONFIG_RCU_KTHREAD_PRIO=0
-# CONFIG_RCU_NOCB_CPU is not set
# CONFIG_RCU_EXPEDITE_BOOT is not set
CONFIG_BUILD_BIN2C=y
CONFIG_IKCONFIG=y
@@ -117,6 +114,7 @@ CONFIG_GENERIC_SCHED_CLOCK=y
CONFIG_CGROUPS=y
# CONFIG_CGROUP_DEBUG is not set
CONFIG_CGROUP_FREEZER=y
+CONFIG_CGROUP_PIDS=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CPUSETS=y
CONFIG_PROC_PID_CPUSET=y
@@ -132,6 +130,7 @@ CONFIG_FAIR_GROUP_SCHED=y
# CONFIG_RT_GROUP_SCHED is not set
CONFIG_BLK_CGROUP=y
# CONFIG_DEBUG_BLK_CGROUP is not set
+CONFIG_CGROUP_WRITEBACK=y
# CONFIG_CHECKPOINT_RESTORE is not set
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
@@ -176,6 +175,8 @@ CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_AIO=y
CONFIG_ADVISE_SYSCALLS=y
+# CONFIG_USERFAULTFD is not set
+CONFIG_MEMBARRIER=y
CONFIG_EMBEDDED=y
CONFIG_HAVE_PERF_EVENTS=y
CONFIG_PERF_USE_VMALLOC=y
@@ -191,12 +192,13 @@ 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_SYSTEM_DATA_VERIFICATION is not set
CONFIG_PROFILING=y
CONFIG_OPROFILE=m
CONFIG_HAVE_OPROFILE=y
CONFIG_KPROBES=y
CONFIG_JUMP_LABEL=y
+# CONFIG_STATIC_KEYS_SELFTEST is not set
# CONFIG_UPROBES is not set
# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -252,6 +254,7 @@ CONFIG_MODVERSIONS=y
CONFIG_MODULE_SRCVERSION_ALL=y
# CONFIG_MODULE_SIG is not set
# CONFIG_MODULE_COMPRESS is not set
+CONFIG_MODULES_TREE_LOOKUP=y
CONFIG_BLOCK=y
CONFIG_LBDAF=y
CONFIG_BLK_DEV_BSG=y
@@ -295,6 +298,7 @@ CONFIG_CFQ_GROUP_IOSCHED=y
CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"
+CONFIG_ASN1=m
CONFIG_UNINLINE_SPIN_UNLOCK=y
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
CONFIG_FREEZER=y
@@ -326,7 +330,6 @@ CONFIG_ARCH_BCM2708=y
# CONFIG_ARCH_W90X900 is not set
# CONFIG_ARCH_LPC32XX is not set
# CONFIG_ARCH_PXA 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
@@ -338,10 +341,7 @@ CONFIG_ARCH_BCM2708=y
# Broadcom BCM2708 Implementations
#
CONFIG_MACH_BCM2708=y
-CONFIG_BCM2708_DT=y
-CONFIG_BCM2708_GPIO=y
# CONFIG_BCM2708_NOL2CACHE is not set
-CONFIG_BCM2708_SPIDEV=y
#
# Processor Type
@@ -371,6 +371,7 @@ CONFIG_KUSER_HELPERS=y
CONFIG_ARM_L1_CACHE_SHIFT=5
CONFIG_ARM_DMA_MEM_BUFFERABLE=y
# CONFIG_ARM_KERNMEM_PERMS is not set
+CONFIG_MULTI_IRQ_HANDLER=y
# CONFIG_ARM_ERRATA_326103 is not set
CONFIG_ARM_ERRATA_411920=y
# CONFIG_ARM_ERRATA_364296 is not set
@@ -386,6 +387,7 @@ CONFIG_ARM_ERRATA_411920=y
# Kernel Features
#
CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_3G_OPT is not set
# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_1G is not set
CONFIG_PAGE_OFFSET=0xC0000000
@@ -409,15 +411,16 @@ CONFIG_AEABI=y
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
CONFIG_HAVE_ARCH_PFN_VALID=y
# CONFIG_HIGHMEM is not set
+# CONFIG_CPU_SW_DOMAIN_PAN is not set
CONFIG_HW_PERF_EVENTS=y
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
+# CONFIG_ARM_MODULE_PLTS is not set
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=y
CONFIG_MIGRATION=y
@@ -436,6 +439,8 @@ CONFIG_CMA_AREAS=7
# CONFIG_ZPOOL is not set
# CONFIG_ZBUD is not set
# CONFIG_ZSMALLOC is not set
+# CONFIG_IDLE_PAGE_TRACKING is not set
+CONFIG_FRAME_VECTOR=y
CONFIG_FORCE_MAX_ZONEORDER=11
CONFIG_ALIGNMENT_TRAP=y
CONFIG_UACCESS_WITH_MEMCPY=y
@@ -528,6 +533,7 @@ CONFIG_COREDUMP=y
#
CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y
+# CONFIG_SUSPEND_SKIP_SYNC is not set
# CONFIG_HIBERNATION is not set
CONFIG_PM_SLEEP=y
# CONFIG_PM_AUTOSLEEP is not set
@@ -542,6 +548,7 @@ CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ARM_CPU_SUSPEND=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_NET=y
+CONFIG_NET_INGRESS=y
#
# Networking options
@@ -585,7 +592,6 @@ CONFIG_SYN_COOKIES=y
CONFIG_NET_UDP_TUNNEL=m
# CONFIG_NET_FOU is not set
# CONFIG_NET_FOU_IP_TUNNELS is not set
-# CONFIG_GENEVE is not set
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
CONFIG_INET_IPCOMP=m
@@ -609,6 +615,7 @@ CONFIG_INET6_AH=m
CONFIG_INET6_ESP=m
CONFIG_INET6_IPCOMP=m
# CONFIG_IPV6_MIP6 is not set
+CONFIG_IPV6_ILA=m
CONFIG_INET6_XFRM_TUNNEL=m
CONFIG_INET6_TUNNEL=m
CONFIG_INET6_XFRM_MODE_TRANSPORT=m
@@ -637,6 +644,7 @@ CONFIG_BRIDGE_NETFILTER=m
#
# Core Netfilter Configuration
#
+CONFIG_NETFILTER_INGRESS=y
CONFIG_NETFILTER_NETLINK=m
CONFIG_NETFILTER_NETLINK_ACCT=m
CONFIG_NETFILTER_NETLINK_QUEUE=m
@@ -667,7 +675,8 @@ CONFIG_NF_CONNTRACK_SIP=m
CONFIG_NF_CONNTRACK_TFTP=m
CONFIG_NF_CT_NETLINK=m
# CONFIG_NF_CT_NETLINK_TIMEOUT is not set
-# CONFIG_NETFILTER_NETLINK_QUEUE_CT is not set
+CONFIG_NF_CT_NETLINK_HELPER=m
+CONFIG_NETFILTER_NETLINK_GLUE_CT=y
CONFIG_NF_NAT=m
CONFIG_NF_NAT_NEEDED=y
CONFIG_NF_NAT_PROTO_DCCP=m
@@ -806,6 +815,7 @@ CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_FO=m
+CONFIG_IP_VS_OVF=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
@@ -831,6 +841,7 @@ CONFIG_IP_VS_PE_SIP=m
CONFIG_NF_DEFRAG_IPV4=m
CONFIG_NF_CONNTRACK_IPV4=m
CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_NF_DUP_IPV4=m
CONFIG_NF_LOG_ARP=m
CONFIG_NF_LOG_IPV4=m
CONFIG_NF_REJECT_IPV4=m
@@ -866,6 +877,7 @@ CONFIG_IP_NF_ARP_MANGLE=m
#
CONFIG_NF_DEFRAG_IPV6=m
CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_NF_DUP_IPV6=m
CONFIG_NF_REJECT_IPV6=m
CONFIG_NF_LOG_IPV6=m
CONFIG_NF_NAT_IPV6=m
@@ -993,6 +1005,7 @@ CONFIG_NET_CLS_RSVP6=m
CONFIG_NET_CLS_FLOW=m
CONFIG_NET_CLS_CGROUP=m
# CONFIG_NET_CLS_BPF is not set
+CONFIG_NET_CLS_FLOWER=m
CONFIG_NET_EMATCH=y
CONFIG_NET_EMATCH_STACK=32
CONFIG_NET_EMATCH_CMP=m
@@ -1035,6 +1048,7 @@ CONFIG_NET_MPLS_GSO=m
# CONFIG_MPLS_ROUTING is not set
# CONFIG_HSR is not set
# CONFIG_NET_SWITCHDEV is not set
+CONFIG_NET_L3_MASTER_DEV=y
# CONFIG_CGROUP_NET_PRIO is not set
CONFIG_CGROUP_NET_CLASSID=y
CONFIG_NET_RX_BUSY_POLL=y
@@ -1096,6 +1110,7 @@ CONFIG_BT_BNEP=m
CONFIG_BT_BNEP_MC_FILTER=y
CONFIG_BT_BNEP_PROTO_FILTER=y
CONFIG_BT_HIDP=m
+CONFIG_BT_HS=y
CONFIG_BT_LE=y
# CONFIG_BT_SELFTEST is not set
# CONFIG_BT_DEBUGFS is not set
@@ -1105,12 +1120,13 @@ CONFIG_BT_LE=y
#
CONFIG_BT_INTEL=m
CONFIG_BT_BCM=m
+CONFIG_BT_RTL=m
CONFIG_BT_HCIBTUSB=m
CONFIG_BT_HCIBTUSB_BCM=y
+CONFIG_BT_HCIBTUSB_RTL=y
# CONFIG_BT_HCIBTSDIO is not set
# CONFIG_BT_HCIUART is not set
CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
CONFIG_BT_HCIBFUSB=m
CONFIG_BT_HCIVHCI=m
CONFIG_BT_MRVL=m
@@ -1133,6 +1149,7 @@ CONFIG_CFG80211=m
CONFIG_CFG80211_DEFAULT_PS=y
# CONFIG_CFG80211_DEBUGFS is not set
# CONFIG_CFG80211_INTERNAL_REGDB is not set
+CONFIG_CFG80211_CRDA_SUPPORT=y
CONFIG_CFG80211_WEXT=y
CONFIG_LIB80211=m
CONFIG_LIB80211_CRYPT_WEP=m
@@ -1151,6 +1168,7 @@ 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_MAC80211_STA_HASH_MAX_SIZE=0
CONFIG_WIMAX=m
CONFIG_WIMAX_DEBUG_LEVEL=8
CONFIG_RFKILL=m
@@ -1172,6 +1190,7 @@ CONFIG_NFC=m
#
CONFIG_NFC_PN533=m
# CONFIG_NFC_SIM is not set
+CONFIG_LWTUNNEL=y
CONFIG_HAVE_BPF_JIT=y
#
@@ -1223,9 +1242,6 @@ CONFIG_CMA_ALIGNMENT=8
#
# Bus devices
#
-CONFIG_ARM_CCI=y
-CONFIG_ARM_CCI400_COMMON=y
-CONFIG_ARM_CCI400_PMU=y
# CONFIG_ARM_CCN is not set
# CONFIG_BRCMSTB_GISB_ARB is not set
# CONFIG_VEXPRESS_CONFIG is not set
@@ -1234,19 +1250,18 @@ CONFIG_PROC_EVENTS=y
# CONFIG_MTD is not set
CONFIG_DTC=y
CONFIG_OF=y
-
-#
-# Device Tree and Open Firmware support
-#
# CONFIG_OF_UNITTEST is not set
CONFIG_OF_FLATTREE=y
CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_DYNAMIC=y
CONFIG_OF_ADDRESS=y
CONFIG_OF_IRQ=y
CONFIG_OF_NET=y
CONFIG_OF_MDIO=m
CONFIG_OF_RESERVED_MEM=y
-# CONFIG_OF_OVERLAY is not set
+CONFIG_OF_RESOLVE=y
+CONFIG_OF_OVERLAY=y
+CONFIG_OF_CONFIGFS=y
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
# CONFIG_PARPORT is not set
CONFIG_BLK_DEV=y
@@ -1261,7 +1276,6 @@ CONFIG_BLK_DEV_NBD=m
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=4096
-# CONFIG_BLK_DEV_PMEM is not set
CONFIG_CDROM_PKTCDVD=m
CONFIG_CDROM_PKTCDVD_BUFFERS=8
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -1323,14 +1337,28 @@ CONFIG_BCM2708_VCHIQ=y
#
#
+# SCIF Bus Driver
+#
+
+#
# Intel MIC Host Driver
#
#
# Intel MIC Card Driver
#
+
+#
+# SCIF Driver
+#
+
+#
+# Intel MIC Coprocessor State Management (COSM) Drivers
+#
# CONFIG_ECHO is not set
# CONFIG_CXL_BASE is not set
+# CONFIG_CXL_KERNEL_API is not set
+# CONFIG_CXL_EEH is not set
#
# SCSI device support
@@ -1419,13 +1447,16 @@ CONFIG_MACVLAN=m
# CONFIG_MACVTAP is not set
# CONFIG_IPVLAN is not set
# CONFIG_VXLAN is not set
+# CONFIG_GENEVE is not set
CONFIG_NETCONSOLE=m
# CONFIG_NETCONSOLE_DYNAMIC is not set
CONFIG_NETPOLL=y
CONFIG_NET_POLL_CONTROLLER=y
CONFIG_TUN=m
+# CONFIG_TUN_VNET_CROSS_LE is not set
CONFIG_VETH=m
# CONFIG_NLMON is not set
+CONFIG_NET_VRF=m
#
# CAIF transport drivers
@@ -1441,6 +1472,7 @@ CONFIG_ETHERNET=y
CONFIG_NET_VENDOR_ARC=y
# CONFIG_ARC_EMAC is not set
# CONFIG_EMAC_ROCKCHIP is not set
+# CONFIG_NET_VENDOR_AURORA is not set
CONFIG_NET_CADENCE=y
# CONFIG_MACB is not set
CONFIG_NET_VENDOR_BROADCOM=y
@@ -1451,6 +1483,8 @@ CONFIG_NET_VENDOR_CIRRUS=y
# CONFIG_CS89x0 is not set
# CONFIG_DM9000 is not set
# CONFIG_DNET is not set
+CONFIG_NET_VENDOR_EZCHIP=y
+# CONFIG_EZCHIP_NPS_MANAGEMENT_ENET is not set
CONFIG_NET_VENDOR_FARADAY=y
# CONFIG_FTMAC100 is not set
# CONFIG_FTGMAC100 is not set
@@ -1466,11 +1500,13 @@ CONFIG_NET_VENDOR_MICREL=y
CONFIG_NET_VENDOR_MICROCHIP=y
CONFIG_ENC28J60=y
# CONFIG_ENC28J60_WRITEVERIFY is not set
+# CONFIG_ENCX24J600 is not set
CONFIG_NET_VENDOR_NATSEMI=y
CONFIG_NET_VENDOR_8390=y
# CONFIG_AX88796 is not set
# CONFIG_ETHOC is not set
# CONFIG_NET_VENDOR_QUALCOMM is not set
+CONFIG_NET_VENDOR_RENESAS=y
CONFIG_NET_VENDOR_ROCKER=y
# CONFIG_NET_VENDOR_SAMSUNG is not set
CONFIG_NET_VENDOR_SEEQ=y
@@ -1480,6 +1516,8 @@ CONFIG_NET_VENDOR_SMSC=y
# CONFIG_SMSC911X is not set
CONFIG_NET_VENDOR_STMICRO=y
# CONFIG_STMMAC_ETH is not set
+CONFIG_NET_VENDOR_SYNOPSYS=y
+# CONFIG_SYNOPSYS_DWC_ETH_QOS is not set
CONFIG_NET_VENDOR_VIA=y
# CONFIG_VIA_RHINE is not set
# CONFIG_VIA_VELOCITY is not set
@@ -1491,6 +1529,7 @@ CONFIG_PHYLIB=m
#
# MII PHY device drivers
#
+# CONFIG_AQUANTIA_PHY is not set
# CONFIG_AT803X_PHY is not set
# CONFIG_AMD_PHY is not set
# CONFIG_MARVELL_PHY is not set
@@ -1499,6 +1538,7 @@ CONFIG_PHYLIB=m
# CONFIG_LXT_PHY is not set
# CONFIG_CICADA_PHY is not set
# CONFIG_VITESSE_PHY is not set
+# CONFIG_TERANETICS_PHY is not set
# CONFIG_SMSC_PHY is not set
# CONFIG_BROADCOM_PHY is not set
# CONFIG_BCM7XXX_PHY is not set
@@ -1509,6 +1549,9 @@ CONFIG_PHYLIB=m
# CONFIG_STE10XP is not set
# CONFIG_LSI_ET1011C_PHY is not set
# CONFIG_MICREL_PHY is not set
+# CONFIG_DP83848_PHY is not set
+# CONFIG_DP83867_PHY is not set
+# CONFIG_MICROCHIP_PHY is not set
# CONFIG_FIXED_PHY is not set
CONFIG_MDIO_BITBANG=m
# CONFIG_MDIO_GPIO is not set
@@ -1538,6 +1581,7 @@ CONFIG_USB_KAWETH=m
CONFIG_USB_PEGASUS=m
CONFIG_USB_RTL8150=m
CONFIG_USB_RTL8152=m
+# CONFIG_USB_LAN78XX is not set
CONFIG_USB_USBNET=y
CONFIG_USB_NET_AX8817X=m
CONFIG_USB_NET_AX88179_178A=m
@@ -1572,6 +1616,7 @@ CONFIG_USB_NET_INT51X1=m
CONFIG_USB_IPHETH=m
CONFIG_USB_SIERRA_NET=m
CONFIG_USB_VL600=m
+# CONFIG_USB_NET_CH9200 is not set
CONFIG_WLAN=y
CONFIG_LIBERTAS_THINFIRM=m
# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
@@ -1673,6 +1718,7 @@ CONFIG_RT2X00_LIB_LEDS=y
# CONFIG_RT2X00_DEBUG is not set
# CONFIG_WL_MEDIATEK is not set
CONFIG_RTL8192CU=m
+# CONFIG_RTL8XXXU is not set
# CONFIG_WL_TI is not set
CONFIG_ZD1211RW=m
# CONFIG_ZD1211RW_DEBUG is not set
@@ -1690,11 +1736,13 @@ CONFIG_WIMAX_I2400M_USB=m
CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
# CONFIG_WAN is not set
# CONFIG_ISDN is not set
+# CONFIG_NVM is not set
#
# Input device support
#
CONFIG_INPUT=y
+CONFIG_INPUT_LEDS=m
CONFIG_INPUT_FF_MEMLESS=m
CONFIG_INPUT_POLLDEV=m
# CONFIG_INPUT_SPARSEKMAP is not set
@@ -1782,7 +1830,7 @@ CONFIG_JOYSTICK_XPAD_FF=y
CONFIG_JOYSTICK_RPISENSE=m
# CONFIG_INPUT_TABLET is not set
CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_OF_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_PROPERTIES=y
CONFIG_TOUCHSCREEN_ADS7846=m
# CONFIG_TOUCHSCREEN_AD7877 is not set
# CONFIG_TOUCHSCREEN_AD7879 is not set
@@ -1811,6 +1859,7 @@ CONFIG_TOUCHSCREEN_FT6236=m
# CONFIG_TOUCHSCREEN_MCS5000 is not set
# CONFIG_TOUCHSCREEN_MMS114 is not set
# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_IMX6UL_TSC is not set
# CONFIG_TOUCHSCREEN_INEXIO is not set
# CONFIG_TOUCHSCREEN_MK712 is not set
# CONFIG_TOUCHSCREEN_PENMOUNT is not set
@@ -1819,9 +1868,11 @@ CONFIG_TOUCHSCREEN_RPI_FT5406=m
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
# CONFIG_TOUCHSCREEN_PIXCIR is not set
+# CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set
# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
# CONFIG_TOUCHSCREEN_TSC_SERIO is not set
+# CONFIG_TOUCHSCREEN_TSC2004 is not set
# CONFIG_TOUCHSCREEN_TSC2005 is not set
# CONFIG_TOUCHSCREEN_TSC2007 is not set
# CONFIG_TOUCHSCREEN_ST1232 is not set
@@ -1830,6 +1881,7 @@ CONFIG_TOUCHSCREEN_STMPE=m
# CONFIG_TOUCHSCREEN_SX8654 is not set
# CONFIG_TOUCHSCREEN_TPS6507X is not set
# CONFIG_TOUCHSCREEN_ZFORCE is not set
+# CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_AD714X=m
CONFIG_INPUT_AD714X_I2C=m
@@ -1861,6 +1913,7 @@ CONFIG_INPUT_CMA3000=m
# CONFIG_INPUT_CMA3000_I2C is not set
# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set
# CONFIG_INPUT_DRV260X_HAPTICS is not set
+# CONFIG_INPUT_DRV2665_HAPTICS is not set
# CONFIG_INPUT_DRV2667_HAPTICS is not set
#
@@ -1875,6 +1928,7 @@ CONFIG_SERIO_RAW=m
# CONFIG_SERIO_PS2MULT is not set
# CONFIG_SERIO_ARC_PS2 is not set
# CONFIG_SERIO_APBPS2 is not set
+# CONFIG_USERIO is not set
CONFIG_GAMEPORT=m
CONFIG_GAMEPORT_NS558=m
CONFIG_GAMEPORT_L4=m
@@ -1882,6 +1936,13 @@ CONFIG_GAMEPORT_L4=m
#
# Character devices
#
+CONFIG_BRCM_CHAR_DRIVERS=y
+CONFIG_BCM_VC_CMA=y
+CONFIG_BCM2708_VCMEM=y
+CONFIG_BCM_VCIO=y
+CONFIG_BCM_VC_SM=y
+CONFIG_BCM2835_DEVGPIOMEM=m
+CONFIG_BCM2835_SMI_DEV=m
CONFIG_TTY=y
CONFIG_VT=y
CONFIG_CONSOLE_TRANSLATIONS=y
@@ -1909,8 +1970,11 @@ CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=1
CONFIG_SERIAL_8250_RUNTIME_UARTS=0
# CONFIG_SERIAL_8250_EXTENDED is not set
+CONFIG_SERIAL_8250_FSL=y
# CONFIG_SERIAL_8250_DW is not set
# CONFIG_SERIAL_8250_EM is not set
+# CONFIG_SERIAL_8250_RT288X is not set
+# CONFIG_SERIAL_8250_INGENIC is not set
#
# Non-8250 serial port support
@@ -1922,6 +1986,7 @@ CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
# CONFIG_SERIAL_KGDB_NMI is not set
# CONFIG_SERIAL_MAX3100 is not set
# CONFIG_SERIAL_MAX310X is not set
+# CONFIG_SERIAL_UARTLITE is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_CONSOLE_POLL=y
@@ -1937,24 +2002,17 @@ CONFIG_SERIAL_OF_PLATFORM=y
# CONFIG_SERIAL_FSL_LPUART is not set
# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set
# CONFIG_SERIAL_ST_ASC is not set
+# CONFIG_SERIAL_STM32 is not set
CONFIG_TTY_PRINTK=y
# CONFIG_HVC_DCC is not set
# CONFIG_IPMI_HANDLER is not set
CONFIG_HW_RANDOM=y
# CONFIG_HW_RANDOM_TIMERIOMEM is not set
CONFIG_HW_RANDOM_BCM2835=m
-CONFIG_HW_RANDOM_BCM2708=m
# CONFIG_R3964 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_BCM2708_VCMEM=y
-CONFIG_BCM_VCIO=y
-CONFIG_BCM_VC_SM=y
-CONFIG_BCM2835_DEVGPIOMEM=m
-CONFIG_BCM2835_SMI_DEV=m
# CONFIG_XILLYBUS is not set
#
@@ -1974,6 +2032,7 @@ CONFIG_I2C_MUX=m
# CONFIG_I2C_MUX_PCA9541 is not set
# CONFIG_I2C_MUX_PCA954x is not set
# CONFIG_I2C_MUX_PINCTRL is not set
+# CONFIG_I2C_MUX_REG is not set
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_ALGOBIT=m
@@ -1989,6 +2048,7 @@ CONFIG_I2C_BCM2708_BAUDRATE=100000
CONFIG_I2C_BCM2835=m
# CONFIG_I2C_CBUS_GPIO is not set
# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
+# CONFIG_I2C_EMEV2 is not set
CONFIG_I2C_GPIO=m
# CONFIG_I2C_NOMADIK is not set
# CONFIG_I2C_OCORES is not set
@@ -2024,7 +2084,7 @@ CONFIG_SPI_MASTER=y
#
# CONFIG_SPI_ALTERA is not set
CONFIG_SPI_BCM2835=m
-CONFIG_SPI_BCM2708=m
+CONFIG_SPI_BCM2835AUX=m
# CONFIG_SPI_BITBANG is not set
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_GPIO is not set
@@ -2036,6 +2096,7 @@ CONFIG_SPI_BCM2708=m
# CONFIG_SPI_SC18IS602 is not set
# CONFIG_SPI_XCOMM is not set
# CONFIG_SPI_XILINX is not set
+# CONFIG_SPI_ZYNQMP_GQSPI is not set
# CONFIG_SPI_DESIGNWARE is not set
#
@@ -2103,8 +2164,9 @@ CONFIG_GPIO_BCM_VIRT=y
# CONFIG_GPIO_GENERIC_PLATFORM is not set
# CONFIG_GPIO_GRGPIO is not set
# CONFIG_GPIO_PL061 is not set
-# CONFIG_GPIO_SCH311X is not set
+# CONFIG_GPIO_XILINX is not set
# CONFIG_GPIO_ZEVIO is not set
+# CONFIG_GPIO_ZX is not set
#
# I2C GPIO expanders
@@ -2128,10 +2190,14 @@ CONFIG_GPIO_STMPE=y
#
# CONFIG_GPIO_74X164 is not set
CONFIG_GPIO_MAX7301=m
-CONFIG_GPIO_MCP23S08=m
# CONFIG_GPIO_MC33880 is not set
#
+# SPI or I2C GPIO expanders
+#
+CONFIG_GPIO_MCP23S08=m
+
+#
# USB GPIO expanders
#
CONFIG_W1=m
@@ -2173,7 +2239,7 @@ CONFIG_BATTERY_DS2760=m
# CONFIG_BATTERY_DS2781 is not set
# CONFIG_BATTERY_DS2782 is not set
# CONFIG_BATTERY_SBS is not set
-# CONFIG_BATTERY_BQ27x00 is not set
+# CONFIG_BATTERY_BQ27XXX is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
# CONFIG_CHARGER_MAX8903 is not set
@@ -2182,9 +2248,12 @@ CONFIG_BATTERY_DS2760=m
# CONFIG_CHARGER_MANAGER is not set
# CONFIG_CHARGER_BQ2415X is not set
# CONFIG_CHARGER_BQ24190 is not set
+# CONFIG_CHARGER_BQ24257 is not set
# CONFIG_CHARGER_BQ24735 is not set
+# CONFIG_CHARGER_BQ25890 is not set
# CONFIG_CHARGER_SMB347 is not set
# CONFIG_BATTERY_GAUGE_LTC2941 is not set
+# CONFIG_CHARGER_RT9455 is not set
CONFIG_POWER_RESET=y
CONFIG_POWER_RESET_GPIO=y
CONFIG_POWER_RESET_GPIO_RESTART=y
@@ -2196,20 +2265,19 @@ CONFIG_POWER_RESET_GPIO_RESTART=y
# CONFIG_HWMON is not set
CONFIG_THERMAL=y
CONFIG_THERMAL_OF=y
+# CONFIG_THERMAL_WRITABLE_TRIPS is not set
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_DEFAULT_GOV_POWER_ALLOCATOR is not set
# CONFIG_THERMAL_GOV_FAIR_SHARE is not set
CONFIG_THERMAL_GOV_STEP_WISE=y
# CONFIG_THERMAL_GOV_BANG_BANG is not set
# CONFIG_THERMAL_GOV_USER_SPACE is not set
+# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set
# CONFIG_CPU_THERMAL 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
@@ -2224,8 +2292,8 @@ CONFIG_WATCHDOG_CORE=y
# CONFIG_CADENCE_WATCHDOG is not set
# CONFIG_DW_WATCHDOG is not set
# CONFIG_MAX63XX_WATCHDOG is not set
-CONFIG_BCM2708_WDT=m
CONFIG_BCM2835_WDT=m
+# CONFIG_BCM7038_WDT is not set
# CONFIG_MEN_A21_WDT is not set
#
@@ -2241,6 +2309,7 @@ CONFIG_SSB=m
CONFIG_SSB_BLOCKIO=y
CONFIG_SSB_SDIOHOST_POSSIBLE=y
# CONFIG_SSB_SDIOHOST is not set
+# CONFIG_SSB_HOST_SOC is not set
# CONFIG_SSB_SILENT is not set
# CONFIG_SSB_DEBUG is not set
# CONFIG_SSB_DRIVER_GPIO is not set
@@ -2265,6 +2334,7 @@ CONFIG_MFD_RPISENSE_CORE=m
# CONFIG_MFD_AS3722 is not set
# CONFIG_PMIC_ADP5520 is not set
# CONFIG_MFD_AAT2870_CORE is not set
+# CONFIG_MFD_ATMEL_FLEXCOM is not set
# CONFIG_MFD_ATMEL_HLCDC is not set
# CONFIG_MFD_BCM590XX is not set
# CONFIG_MFD_AXP20X is not set
@@ -2274,6 +2344,7 @@ CONFIG_MFD_RPISENSE_CORE=m
# CONFIG_MFD_DA9052_SPI is not set
# CONFIG_MFD_DA9052_I2C is not set
# CONFIG_MFD_DA9055 is not set
+# CONFIG_MFD_DA9062 is not set
# CONFIG_MFD_DA9063 is not set
# CONFIG_MFD_DA9150 is not set
# CONFIG_MFD_DLN2 is not set
@@ -2353,6 +2424,7 @@ CONFIG_MFD_ARIZONA_SPI=m
CONFIG_MFD_WM5102=y
# CONFIG_MFD_WM5110 is not set
# CONFIG_MFD_WM8997 is not set
+# CONFIG_MFD_WM8998 is not set
# CONFIG_MFD_WM8400 is not set
# CONFIG_MFD_WM831X_I2C is not set
# CONFIG_MFD_WM831X_SPI is not set
@@ -2382,6 +2454,7 @@ CONFIG_REGULATOR_ARIZONA=m
# CONFIG_REGULATOR_MAX8660 is not set
# CONFIG_REGULATOR_MAX8952 is not set
# CONFIG_REGULATOR_MAX8973 is not set
+# CONFIG_REGULATOR_MT6311 is not set
# CONFIG_REGULATOR_PFUZE100 is not set
# CONFIG_REGULATOR_PWM is not set
# CONFIG_REGULATOR_TPS51632 is not set
@@ -2602,6 +2675,7 @@ CONFIG_VIDEO_BCM2835_MMAL=m
# CONFIG_SOC_CAMERA is not set
# CONFIG_V4L_MEM2MEM_DRIVERS is not set
# CONFIG_V4L_TEST_DRIVERS is not set
+# CONFIG_DVB_PLATFORM_DRIVERS is not set
#
# Supported MMC/SDIO adapters
@@ -2764,6 +2838,7 @@ CONFIG_DVB_TUNER_ITD1000=m
CONFIG_DVB_TUNER_CX24113=m
CONFIG_DVB_TDA826X=m
CONFIG_DVB_CX24116=m
+CONFIG_DVB_CX24120=m
CONFIG_DVB_SI21XX=m
CONFIG_DVB_TS2020=m
CONFIG_DVB_DS3000=m
@@ -2853,10 +2928,6 @@ CONFIG_DVB_AF9033=m
#
# Graphics support
#
-
-#
-# Direct Rendering Manager
-#
# CONFIG_DRM is not set
#
@@ -2893,6 +2964,7 @@ CONFIG_FB_BCM2708=y
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_SMSCUFX is not set
# CONFIG_FB_UDL is not set
+# CONFIG_FB_IBM_GXT4500 is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FB_METRONOME is not set
# CONFIG_FB_BROADSHEET is not set
@@ -2919,6 +2991,7 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
# CONFIG_BACKLIGHT_GENERIC is not set
# CONFIG_BACKLIGHT_PWM is not set
CONFIG_BACKLIGHT_RPI=m
+# CONFIG_BACKLIGHT_PM8941_WLED is not set
# CONFIG_BACKLIGHT_ADP8860 is not set
# CONFIG_BACKLIGHT_ADP8870 is not set
# CONFIG_BACKLIGHT_LM3630A is not set
@@ -2946,7 +3019,6 @@ CONFIG_SND_PCM=m
CONFIG_SND_DMAENGINE_PCM=m
CONFIG_SND_HWDEP=m
CONFIG_SND_RAWMIDI=m
-CONFIG_SND_COMPRESS_OFFLOAD=m
CONFIG_SND_JACK=y
CONFIG_SND_SEQUENCER=m
CONFIG_SND_SEQ_DUMMY=m
@@ -2954,11 +3026,13 @@ CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_PCM_TIMER=y
CONFIG_SND_SEQUENCER_OSS=y
CONFIG_SND_HRTIMER=m
CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
# CONFIG_SND_DYNAMIC_MINORS is not set
CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_PROC_FS=y
CONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set
@@ -2980,6 +3054,7 @@ CONFIG_SND_MPU401=m
#
# HD-Audio
#
+CONFIG_SND_HDA_PREALLOC_SIZE=64
CONFIG_SND_ARM=y
# CONFIG_SND_ARMAACI is not set
CONFIG_SND_BCM2835=m
@@ -2999,7 +3074,7 @@ CONFIG_SND_USB_6FIRE=m
CONFIG_SND_SOC=m
CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
# CONFIG_SND_ATMEL_SOC is not set
-CONFIG_SND_BCM2708_SOC_I2S=m
+CONFIG_SND_BCM2835_SOC_I2S=m
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m
@@ -3024,7 +3099,11 @@ CONFIG_SND_BCM2708_SOC_RPI_CODEC_WSP=m
# CONFIG_SND_SOC_FSL_SPDIF is not set
# CONFIG_SND_SOC_FSL_ESAI is not set
# CONFIG_SND_SOC_IMX_AUDMUX is not set
-# CONFIG_SND_SOC_QCOM is not set
+
+#
+# Allwinner SoC Audio support
+#
+# CONFIG_SND_SUN4I_CODEC is not set
# CONFIG_SND_SOC_XTFPGA_I2S is not set
CONFIG_SND_SOC_I2C_AND_SPI=m
@@ -3033,9 +3112,11 @@ CONFIG_SND_SOC_I2C_AND_SPI=m
#
CONFIG_SND_SOC_ARIZONA=m
CONFIG_SND_SOC_WM_ADSP=m
+# CONFIG_SND_SOC_AC97_CODEC is not set
CONFIG_SND_SOC_ADAU1701=m
# CONFIG_SND_SOC_AK4104 is not set
# CONFIG_SND_SOC_AK4554 is not set
+# CONFIG_SND_SOC_AK4613 is not set
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
# CONFIG_SND_SOC_ALC5623 is not set
@@ -3049,8 +3130,9 @@ CONFIG_SND_SOC_ADAU1701=m
# CONFIG_SND_SOC_CS4271_I2C is not set
# CONFIG_SND_SOC_CS4271_SPI is not set
# CONFIG_SND_SOC_CS42XX8_I2C is not set
-# CONFIG_SND_SOC_HDMI_CODEC is not set
+# CONFIG_SND_SOC_CS4349 is not set
# CONFIG_SND_SOC_ES8328 is not set
+# CONFIG_SND_SOC_GTM601 is not set
# CONFIG_SND_SOC_PCM1681 is not set
# CONFIG_SND_SOC_PCM1792A is not set
CONFIG_SND_SOC_PCM512x=m
@@ -3070,8 +3152,10 @@ CONFIG_SND_SOC_SIGMADSP_I2C=m
# CONFIG_SND_SOC_SSM4567 is not set
# CONFIG_SND_SOC_STA32X is not set
# CONFIG_SND_SOC_STA350 is not set
+# CONFIG_SND_SOC_STI_SAS is not set
# CONFIG_SND_SOC_TAS2552 is not set
# CONFIG_SND_SOC_TAS5086 is not set
+# CONFIG_SND_SOC_TAS571X is not set
# CONFIG_SND_SOC_TFA9879 is not set
CONFIG_SND_SOC_TAS5713=m
# CONFIG_SND_SOC_TLV320AIC23_I2C is not set
@@ -3124,6 +3208,7 @@ CONFIG_HID_BELKIN=m
# CONFIG_HID_BETOP_FF is not set
CONFIG_HID_CHERRY=m
CONFIG_HID_CHICONY=m
+# CONFIG_HID_CORSAIR is not set
# CONFIG_HID_PRODIKEYS is not set
# CONFIG_HID_CP2112 is not set
CONFIG_HID_CYPRESS=m
@@ -3133,6 +3218,8 @@ CONFIG_HID_EMS_FF=m
CONFIG_HID_ELECOM=m
CONFIG_HID_ELO=m
CONFIG_HID_EZKEY=m
+# CONFIG_HID_GEMBIRD is not set
+# CONFIG_HID_GFRM is not set
CONFIG_HID_HOLTEK=m
# CONFIG_HOLTEK_FF is not set
# CONFIG_HID_GT683R is not set
@@ -3223,7 +3310,7 @@ CONFIG_USB_DEFAULT_PERSIST=y
# CONFIG_USB_OTG is not set
# CONFIG_USB_OTG_WHITELIST is not set
# CONFIG_USB_OTG_BLACKLIST_HUB is not set
-# CONFIG_USB_OTG_FSM is not set
+# CONFIG_USB_ULPI_BUS is not set
CONFIG_USB_MON=m
# CONFIG_USB_WUSB_CBAF is not set
@@ -3236,7 +3323,6 @@ CONFIG_USB_MON=m
# CONFIG_USB_OXU210HP_HCD is not set
# CONFIG_USB_ISP116X_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_MAX3421_HCD is not set
# CONFIG_USB_OHCI_HCD is not set
@@ -3406,7 +3492,6 @@ CONFIG_USB_EZUSB_FX2=m
# CONFIG_UWB is not set
CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_CLKGATE is not set
#
# MMC/SD/SDIO Card Drivers
@@ -3428,12 +3513,14 @@ CONFIG_MMC_BCM2835_SDHOST=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PLTFM=y
# CONFIG_MMC_SDHCI_OF_ARASAN is not set
+# CONFIG_MMC_SDHCI_OF_AT91 is not set
# CONFIG_MMC_SDHCI_F_SDH30 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_MMC_USDHI6ROL0 is not set
+# CONFIG_MMC_MTK is not set
# CONFIG_MEMSTICK is not set
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
@@ -3442,6 +3529,9 @@ CONFIG_LEDS_CLASS_FLASH=y
#
# LED drivers
#
+# CONFIG_LEDS_AAT1290 is not set
+# CONFIG_LEDS_BCM6328 is not set
+# CONFIG_LEDS_BCM6358 is not set
# CONFIG_LEDS_LM3530 is not set
# CONFIG_LEDS_LM3642 is not set
# CONFIG_LEDS_PCA9532 is not set
@@ -3460,13 +3550,14 @@ CONFIG_LEDS_GPIO=y
# CONFIG_LEDS_BD2802 is not set
# CONFIG_LEDS_LT3593 is not set
# CONFIG_LEDS_TCA6507 is not set
+# CONFIG_LEDS_TLC591XX is not set
# CONFIG_LEDS_LM355x is not set
+# CONFIG_LEDS_KTD2692 is not set
#
# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
#
# CONFIG_LEDS_BLINKM is not set
-# CONFIG_LEDS_PM8941_WLED is not set
#
# LED Triggers
@@ -3487,12 +3578,14 @@ CONFIG_LEDS_TRIGGER_TRANSIENT=m
CONFIG_LEDS_TRIGGER_CAMERA=m
CONFIG_LEDS_TRIGGER_INPUT=y
# CONFIG_ACCESSIBILITY is not set
+CONFIG_EDAC_ATOMIC_SCRUB=y
+CONFIG_EDAC_SUPPORT=y
# CONFIG_EDAC is not set
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
# CONFIG_RTC_HCTOSYS is not set
CONFIG_RTC_SYSTOHC=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
# CONFIG_RTC_DEBUG is not set
#
@@ -3535,6 +3628,7 @@ CONFIG_RTC_DRV_RX8581=m
CONFIG_RTC_DRV_RX8025=m
CONFIG_RTC_DRV_EM3027=m
CONFIG_RTC_DRV_RV3029C2=m
+# CONFIG_RTC_DRV_RV8803 is not set
#
# SPI RTC drivers
@@ -3571,6 +3665,7 @@ CONFIG_RTC_DRV_RX4581=m
# CONFIG_RTC_DRV_BQ4802 is not set
# CONFIG_RTC_DRV_RP5C01 is not set
# CONFIG_RTC_DRV_V3020 is not set
+# CONFIG_RTC_DRV_ZYNQMP is not set
#
# on-CPU RTC drivers
@@ -3578,7 +3673,6 @@ CONFIG_RTC_DRV_RX4581=m
# CONFIG_RTC_DRV_PL030 is not set
# CONFIG_RTC_DRV_PL031 is not set
# CONFIG_RTC_DRV_SNVS is not set
-# CONFIG_RTC_DRV_XGENE is not set
#
# HID Sensor RTC drivers
@@ -3590,16 +3684,17 @@ CONFIG_DMADEVICES=y
#
# DMA Devices
#
-# CONFIG_AMBA_PL08X is not set
-# CONFIG_DW_DMAC is not set
-# CONFIG_PL330_DMA is not set
-CONFIG_DMA_BCM2708=y
-CONFIG_DMA_BCM2708_LEGACY=y
-# CONFIG_FSL_EDMA is not set
-# CONFIG_NBPFAXI_DMA is not set
CONFIG_DMA_ENGINE=y
CONFIG_DMA_VIRTUAL_CHANNELS=y
CONFIG_DMA_OF=y
+# CONFIG_AMBA_PL08X is not set
+CONFIG_DMA_BCM2835=y
+# CONFIG_FSL_EDMA is not set
+# CONFIG_INTEL_IDMA64 is not set
+# CONFIG_NBPFAXI_DMA is not set
+# CONFIG_PL330_DMA is not set
+CONFIG_DMA_BCM2708=y
+# CONFIG_DW_DMAC is not set
#
# DMA Clients
@@ -3610,6 +3705,7 @@ CONFIG_DMA_OF=y
CONFIG_UIO=m
CONFIG_UIO_PDRV_GENIRQ=m
# CONFIG_UIO_DMEM_GENIRQ is not set
+# CONFIG_UIO_PRUSS is not set
# CONFIG_VIRT_DRIVERS is not set
#
@@ -3719,7 +3815,6 @@ CONFIG_VT6656=m
# Triggers - standalone
#
# CONFIG_IIO_SIMPLE_DUMMY is not set
-# CONFIG_FT1000 is not set
#
# Speakup console speech
@@ -3753,7 +3848,7 @@ CONFIG_LIRC_SERIAL_TRANSMITTER=y
#
# Android
#
-# CONFIG_USB_WPAN_HCD is not set
+# CONFIG_STAGING_BOARD is not set
# CONFIG_WIMAX_GDM72XX is not set
# CONFIG_LTE_GDM724X is not set
# CONFIG_LUSTRE_FS is not set
@@ -3766,6 +3861,7 @@ CONFIG_FB_TFT_BD663474=m
CONFIG_FB_TFT_HX8340BN=m
CONFIG_FB_TFT_HX8347D=m
CONFIG_FB_TFT_HX8353D=m
+CONFIG_FB_TFT_HX8357D=m
CONFIG_FB_TFT_ILI9163=m
CONFIG_FB_TFT_ILI9320=m
CONFIG_FB_TFT_ILI9325=m
@@ -3782,13 +3878,17 @@ CONFIG_FB_TFT_SSD1306=m
CONFIG_FB_TFT_SSD1331=m
CONFIG_FB_TFT_SSD1351=m
CONFIG_FB_TFT_ST7735R=m
+CONFIG_FB_TFT_ST7789V=m
CONFIG_FB_TFT_TINYLCD=m
CONFIG_FB_TFT_TLS8204=m
+CONFIG_FB_TFT_UC1611=m
CONFIG_FB_TFT_UC1701=m
CONFIG_FB_TFT_UPD161704=m
CONFIG_FB_TFT_WATTEROTT=m
CONFIG_FB_FLEX=m
CONFIG_FB_TFT_FBTFT_DEVICE=m
+# CONFIG_WILC1000_DRIVER is not set
+# CONFIG_MOST is not set
# CONFIG_CHROME_PLATFORMS is not set
CONFIG_CLKDEV_LOOKUP=y
CONFIG_HAVE_CLK_PREPARE=y
@@ -3798,7 +3898,9 @@ CONFIG_COMMON_CLK=y
# Common Clock Framework
#
# CONFIG_COMMON_CLK_SI5351 is not set
+# CONFIG_COMMON_CLK_SI514 is not set
# CONFIG_COMMON_CLK_SI570 is not set
+# CONFIG_COMMON_CLK_CDCE925 is not set
# CONFIG_CLK_QORIQ is not set
# CONFIG_COMMON_CLK_PWM is not set
# CONFIG_COMMON_CLK_PXA is not set
@@ -3811,6 +3913,10 @@ CONFIG_COMMON_CLK=y
#
# Clock Source drivers
#
+CONFIG_CLKSRC_OF=y
+CONFIG_CLKSRC_PROBE=y
+CONFIG_CLKSRC_MMIO=y
+# CONFIG_ARM_TIMER_SP804 is not set
# CONFIG_ATMEL_PIT is not set
# CONFIG_SH_TIMER_CMT is not set
# CONFIG_SH_TIMER_MTU2 is not set
@@ -3821,6 +3927,7 @@ CONFIG_MAILBOX=y
# CONFIG_PL320_MBOX is not set
# CONFIG_ALTERA_MBOX is not set
CONFIG_BCM2835_MBOX=y
+# CONFIG_MAILBOX_TEST is not set
# CONFIG_IOMMU_SUPPORT is not set
#
@@ -3835,6 +3942,8 @@ CONFIG_BCM2835_MBOX=y
#
# SOC (System On Chip) specific Drivers
#
+# CONFIG_SOC_BRCMSTB is not set
+# CONFIG_SUNXI_SRAM is not set
# CONFIG_SOC_TI is not set
# CONFIG_PM_DEVFREQ is not set
CONFIG_EXTCON=m
@@ -3851,7 +3960,7 @@ CONFIG_EXTCON_ARIZONA=m
# CONFIG_MEMORY is not set
CONFIG_IIO=m
CONFIG_IIO_BUFFER=y
-CONFIG_IIO_BUFFER_CB=y
+CONFIG_IIO_BUFFER_CB=m
CONFIG_IIO_KFIFO_BUF=m
# CONFIG_IIO_TRIGGER is not set
@@ -3862,10 +3971,12 @@ CONFIG_IIO_KFIFO_BUF=m
# CONFIG_BMC150_ACCEL is not set
# CONFIG_IIO_ST_ACCEL_3AXIS is not set
# CONFIG_KXSD9 is not set
-# CONFIG_MMA8452 is not set
# CONFIG_KXCJK1013 is not set
+# CONFIG_MMA8452 is not set
# CONFIG_MMA9551 is not set
# CONFIG_MMA9553 is not set
+# CONFIG_MXC4005 is not set
+# CONFIG_STK8312 is not set
#
# Analog to digital converters
@@ -3880,6 +3991,7 @@ CONFIG_IIO_KFIFO_BUF=m
# CONFIG_AD7923 is not set
# CONFIG_AD799X is not set
# CONFIG_CC10001_ADC is not set
+# CONFIG_HI8435 is not set
# CONFIG_MAX1027 is not set
# CONFIG_MAX1363 is not set
# CONFIG_MCP320X is not set
@@ -3895,6 +4007,11 @@ CONFIG_IIO_KFIFO_BUF=m
# CONFIG_AD8366 is not set
#
+# Chemical Sensors
+#
+# CONFIG_VZ89X is not set
+
+#
# Hid Sensor IIO Common
#
@@ -3919,6 +4036,7 @@ CONFIG_IIO_KFIFO_BUF=m
# CONFIG_AD5764 is not set
# CONFIG_AD5791 is not set
# CONFIG_AD7303 is not set
+# CONFIG_M62332 is not set
# CONFIG_MAX517 is not set
# CONFIG_MAX5821 is not set
# CONFIG_MCP4725 is not set
@@ -3954,6 +4072,8 @@ CONFIG_IIO_KFIFO_BUF=m
# Humidity sensors
#
CONFIG_DHT11=m
+# CONFIG_HDC100X is not set
+# CONFIG_HTU21 is not set
# CONFIG_SI7005 is not set
# CONFIG_SI7020 is not set
@@ -3971,6 +4091,8 @@ CONFIG_DHT11=m
# CONFIG_ADJD_S311 is not set
# CONFIG_AL3320A is not set
# CONFIG_APDS9300 is not set
+# CONFIG_APDS9960 is not set
+# CONFIG_BH1750 is not set
# CONFIG_CM32181 is not set
# CONFIG_CM3232 is not set
# CONFIG_CM3323 is not set
@@ -3978,11 +4100,16 @@ CONFIG_DHT11=m
# CONFIG_GP2AP020A00F is not set
# CONFIG_ISL29125 is not set
# CONFIG_JSA1212 is not set
+# CONFIG_RPR0521 is not set
# CONFIG_LTR501 is not set
+# CONFIG_OPT3001 is not set
+# CONFIG_PA12203001 is not set
+# CONFIG_STK3310 is not set
# CONFIG_TCS3414 is not set
# CONFIG_TCS3472 is not set
# CONFIG_SENSORS_TSL2563 is not set
# CONFIG_TSL4531 is not set
+# CONFIG_US5182D is not set
# CONFIG_VCNL4000 is not set
#
@@ -3990,7 +4117,9 @@ CONFIG_DHT11=m
#
# CONFIG_AK8975 is not set
# CONFIG_AK09911 is not set
+# CONFIG_BMC150_MAGN is not set
# CONFIG_MAG3110 is not set
+# CONFIG_MMC35240 is not set
# CONFIG_IIO_ST_MAGN_3AXIS is not set
#
@@ -3998,12 +4127,18 @@ CONFIG_DHT11=m
#
#
+# Digital potentiometers
+#
+# CONFIG_MCP4531 is not set
+
+#
# Pressure sensors
#
# CONFIG_BMP280 is not set
# CONFIG_MPL115 is not set
# CONFIG_MPL3115 is not set
# CONFIG_MS5611 is not set
+# CONFIG_MS5637 is not set
# CONFIG_IIO_ST_PRESS is not set
# CONFIG_T5403 is not set
@@ -4015,6 +4150,7 @@ CONFIG_DHT11=m
#
# Proximity sensors
#
+# CONFIG_LIDAR_LITE_V2 is not set
# CONFIG_SX9500 is not set
#
@@ -4022,6 +4158,8 @@ CONFIG_DHT11=m
#
# CONFIG_MLX90614 is not set
# CONFIG_TMP006 is not set
+# CONFIG_TSYS01 is not set
+# CONFIG_TSYS02D is not set
CONFIG_PWM=y
CONFIG_PWM_SYSFS=y
CONFIG_PWM_BCM2835=m
@@ -4036,14 +4174,32 @@ CONFIG_IRQCHIP=y
# PHY Subsystem
#
# CONFIG_GENERIC_PHY is not set
+# CONFIG_PHY_PXA_28NM_HSIC is not set
+# CONFIG_PHY_PXA_28NM_USB2 is not set
# CONFIG_BCM_KONA_USB2_PHY is not set
# CONFIG_POWERCAP is not set
# CONFIG_MCB is not set
#
+# Performance monitor support
+#
+CONFIG_ARM_PMU=y
+# CONFIG_RAS is not set
+
+#
# Android
#
# CONFIG_ANDROID is not set
+# CONFIG_NVMEM is not set
+# CONFIG_STM is not set
+# CONFIG_STM_DUMMY is not set
+# CONFIG_STM_SOURCE_CONSOLE is not set
+# CONFIG_INTEL_TH is not set
+
+#
+# FPGA Configuration Support
+#
+# CONFIG_FPGA is not set
#
# Firmware Drivers
@@ -4058,7 +4214,7 @@ CONFIG_DCACHE_WORD_ACCESS=y
# CONFIG_EXT2_FS is not set
# CONFIG_EXT3_FS is not set
CONFIG_EXT4_FS=y
-CONFIG_EXT4_USE_FOR_EXT23=y
+CONFIG_EXT4_USE_FOR_EXT2=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
# CONFIG_EXT4_ENCRYPTION is not set
@@ -4104,6 +4260,7 @@ CONFIG_F2FS_FS_XATTR=y
CONFIG_F2FS_FS_POSIX_ACL=y
# CONFIG_F2FS_FS_SECURITY is not set
# CONFIG_F2FS_CHECK_FS is not set
+# CONFIG_F2FS_FS_ENCRYPTION is not set
CONFIG_FS_POSIX_ACL=y
CONFIG_EXPORTFS=y
CONFIG_FILE_LOCKING=y
@@ -4163,6 +4320,7 @@ CONFIG_NTFS_RW=y
CONFIG_PROC_FS=y
CONFIG_PROC_SYSCTL=y
CONFIG_PROC_PAGE_MONITOR=y
+# CONFIG_PROC_CHILDREN is not set
CONFIG_KERNFS=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
@@ -4334,6 +4492,7 @@ CONFIG_FRAME_WARN=1024
CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
# CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
CONFIG_MAGIC_SYSRQ=y
CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1
@@ -4366,6 +4525,7 @@ CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
CONFIG_PANIC_ON_OOPS_VALUE=0
CONFIG_PANIC_TIMEOUT=0
CONFIG_SCHED_DEBUG=y
+CONFIG_SCHED_INFO=y
CONFIG_SCHEDSTATS=y
# CONFIG_SCHED_STACK_END_CHECK is not set
# CONFIG_DEBUG_TIMEKEEPING is not set
@@ -4402,8 +4562,8 @@ CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_TORTURE_TEST is not set
# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_RCU_CPU_STALL_TIMEOUT=21
-# CONFIG_RCU_CPU_STALL_INFO is not set
# CONFIG_RCU_TRACE is not set
+# CONFIG_RCU_EQS_DEBUG is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
# CONFIG_NOTIFIER_ERROR_INJECTION is not set
# CONFIG_FAULT_INJECTION is not set
@@ -4437,6 +4597,7 @@ CONFIG_BRANCH_PROFILE_NONE=y
# CONFIG_TRACEPOINT_BENCHMARK is not set
# CONFIG_RING_BUFFER_BENCHMARK is not set
# CONFIG_RING_BUFFER_STARTUP_TEST is not set
+CONFIG_TRACING_EVENTS_GPIO=y
#
# Runtime Testing
@@ -4453,6 +4614,7 @@ CONFIG_BRANCH_PROFILE_NONE=y
# CONFIG_TEST_HEXDUMP is not set
# CONFIG_TEST_STRING_HELPERS is not set
# CONFIG_TEST_KSTRTOX is not set
+# CONFIG_TEST_PRINTF is not set
# CONFIG_TEST_RHASHTABLE is not set
# CONFIG_DMA_API_DEBUG is not set
# CONFIG_TEST_LKM is not set
@@ -4461,6 +4623,7 @@ CONFIG_BRANCH_PROFILE_NONE=y
# CONFIG_TEST_FIRMWARE is not set
# CONFIG_TEST_UDELAY is not set
# CONFIG_MEMTEST is not set
+# CONFIG_TEST_STATIC_KEYS is not set
# CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y
CONFIG_KGDB=y
@@ -4516,13 +4679,18 @@ CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG=m
CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_RNG_DEFAULT=m
CONFIG_CRYPTO_PCOMP2=y
+CONFIG_CRYPTO_AKCIPHER2=y
+CONFIG_CRYPTO_AKCIPHER=m
+CONFIG_CRYPTO_RSA=m
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
CONFIG_CRYPTO_USER=m
CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
CONFIG_CRYPTO_GF128MUL=m
CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_NULL2=y
CONFIG_CRYPTO_WORKQUEUE=y
CONFIG_CRYPTO_CRYPTD=m
# CONFIG_CRYPTO_MCRYPTD is not set
@@ -4534,7 +4702,9 @@ CONFIG_CRYPTO_AUTHENC=m
#
CONFIG_CRYPTO_CCM=m
CONFIG_CRYPTO_GCM=m
+CONFIG_CRYPTO_CHACHA20POLY1305=m
CONFIG_CRYPTO_SEQIV=m
+CONFIG_CRYPTO_ECHAINIV=m
#
# Block modes
@@ -4546,6 +4716,7 @@ CONFIG_CRYPTO_ECB=m
# CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_PCBC is not set
CONFIG_CRYPTO_XTS=m
+CONFIG_CRYPTO_KEYWRAP=m
#
# Hash modes
@@ -4562,6 +4733,7 @@ CONFIG_CRYPTO_CRC32C=y
# CONFIG_CRYPTO_CRC32 is not set
# CONFIG_CRYPTO_CRCT10DIF is not set
CONFIG_CRYPTO_GHASH=m
+CONFIG_CRYPTO_POLY1305=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=m
CONFIG_CRYPTO_MICHAEL_MIC=m
@@ -4590,6 +4762,7 @@ CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_FCRYPT is not set
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_SALSA20 is not set
+CONFIG_CRYPTO_CHACHA20=m
# CONFIG_CRYPTO_SEED is not set
# CONFIG_CRYPTO_SERPENT is not set
# CONFIG_CRYPTO_TEA is not set
@@ -4601,6 +4774,7 @@ CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_DEFLATE=m
# CONFIG_CRYPTO_ZLIB is not set
# CONFIG_CRYPTO_LZO is not set
+# CONFIG_CRYPTO_842 is not set
# CONFIG_CRYPTO_LZ4 is not set
# CONFIG_CRYPTO_LZ4HC is not set
@@ -4608,16 +4782,28 @@ CONFIG_CRYPTO_DEFLATE=m
# Random Number Generation
#
# CONFIG_CRYPTO_ANSI_CPRNG is not set
-# CONFIG_CRYPTO_DRBG_MENU is not set
+CONFIG_CRYPTO_DRBG_MENU=m
+CONFIG_CRYPTO_DRBG_HMAC=y
+# CONFIG_CRYPTO_DRBG_HASH is not set
+# CONFIG_CRYPTO_DRBG_CTR is not set
+CONFIG_CRYPTO_DRBG=m
+CONFIG_CRYPTO_JITTERENTROPY=m
CONFIG_CRYPTO_USER_API=m
CONFIG_CRYPTO_USER_API_HASH=m
CONFIG_CRYPTO_USER_API_SKCIPHER=m
CONFIG_CRYPTO_USER_API_RNG=m
+CONFIG_CRYPTO_USER_API_AEAD=m
# CONFIG_CRYPTO_HW is not set
# CONFIG_ASYMMETRIC_KEY_TYPE is not set
+
+#
+# Certificates for signature checking
+#
+# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
CONFIG_ARM_CRYPTO=y
CONFIG_CRYPTO_SHA1_ARM=m
CONFIG_CRYPTO_SHA256_ARM=m
+CONFIG_CRYPTO_SHA512_ARM=m
CONFIG_CRYPTO_AES_ARM=m
# CONFIG_BINARY_PRINTF is not set
@@ -4627,6 +4813,7 @@ CONFIG_CRYPTO_AES_ARM=m
CONFIG_RAID6_PQ=m
CONFIG_BITREVERSE=y
# CONFIG_HAVE_ARCH_BITREVERSE is not set
+CONFIG_RATIONAL=y
CONFIG_GENERIC_STRNCPY_FROM_USER=y
CONFIG_GENERIC_STRNLEN_USER=y
CONFIG_GENERIC_NET_UTILS=y
@@ -4678,14 +4865,16 @@ 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 is not set
# CONFIG_DDR is not set
+CONFIG_MPILIB=m
CONFIG_LIBFDT=y
CONFIG_OID_REGISTRY=y
CONFIG_FONT_SUPPORT=m
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
+# CONFIG_SG_SPLIT is not set
# CONFIG_ARCH_HAS_SG_CHAIN is not set
# CONFIG_VIRTUALIZATION is not set
diff --git a/main/linux-rpi/config-rpi2.armhf b/main/linux-rpi/config-rpi2.armhf
index 1aae037b4d..53831953ab 100644
--- a/main/linux-rpi/config-rpi2.armhf
+++ b/main/linux-rpi/config-rpi2.armhf
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/arm 4.1.20 Kernel Configuration
+# Linux/arm 4.4.6 Kernel Configuration
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -9,6 +9,7 @@ CONFIG_STACKTRACE_SUPPORT=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_FIX_EARLYCON_MEM=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_NEED_DMA_MAP_STATE=y
@@ -67,6 +68,7 @@ CONFIG_IRQ_DOMAIN=y
CONFIG_HANDLE_DOMAIN_IRQ=y
# CONFIG_IRQ_DOMAIN_DEBUG is not set
CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_SPARSE_IRQ=y
CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_ARCH_HAS_TICK_BROADCAST=y
@@ -100,18 +102,11 @@ CONFIG_TASK_IO_ACCOUNTING=y
# RCU Subsystem
#
CONFIG_PREEMPT_RCU=y
+# CONFIG_RCU_EXPERT is not set
CONFIG_SRCU=y
# CONFIG_TASKS_RCU is not set
CONFIG_RCU_STALL_COMMON=y
-# CONFIG_RCU_USER_QS is not set
-CONFIG_RCU_FANOUT=32
-CONFIG_RCU_FANOUT_LEAF=16
-# CONFIG_RCU_FANOUT_EXACT is not set
-# CONFIG_RCU_FAST_NO_HZ is not set
# CONFIG_TREE_RCU_TRACE is not set
-# CONFIG_RCU_BOOST is not set
-CONFIG_RCU_KTHREAD_PRIO=0
-# CONFIG_RCU_NOCB_CPU is not set
# CONFIG_RCU_EXPEDITE_BOOT is not set
CONFIG_BUILD_BIN2C=y
CONFIG_IKCONFIG=y
@@ -122,6 +117,7 @@ CONFIG_GENERIC_SCHED_CLOCK=y
CONFIG_CGROUPS=y
# CONFIG_CGROUP_DEBUG is not set
CONFIG_CGROUP_FREEZER=y
+CONFIG_CGROUP_PIDS=y
CONFIG_CGROUP_DEVICE=y
CONFIG_CPUSETS=y
CONFIG_PROC_PID_CPUSET=y
@@ -137,6 +133,7 @@ CONFIG_FAIR_GROUP_SCHED=y
# CONFIG_RT_GROUP_SCHED is not set
CONFIG_BLK_CGROUP=y
# CONFIG_DEBUG_BLK_CGROUP is not set
+CONFIG_CGROUP_WRITEBACK=y
# CONFIG_CHECKPOINT_RESTORE is not set
CONFIG_NAMESPACES=y
CONFIG_UTS_NS=y
@@ -181,6 +178,8 @@ CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_AIO=y
CONFIG_ADVISE_SYSCALLS=y
+# CONFIG_USERFAULTFD is not set
+CONFIG_MEMBARRIER=y
CONFIG_EMBEDDED=y
CONFIG_HAVE_PERF_EVENTS=y
CONFIG_PERF_USE_VMALLOC=y
@@ -197,12 +196,13 @@ CONFIG_SLUB_DEBUG=y
CONFIG_SLUB=y
# CONFIG_SLOB is not set
CONFIG_SLUB_CPU_PARTIAL=y
-# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
+# CONFIG_SYSTEM_DATA_VERIFICATION is not set
CONFIG_PROFILING=y
CONFIG_OPROFILE=m
CONFIG_HAVE_OPROFILE=y
CONFIG_KPROBES=y
CONFIG_JUMP_LABEL=y
+# CONFIG_STATIC_KEYS_SELFTEST is not set
# CONFIG_UPROBES is not set
# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
@@ -258,7 +258,7 @@ CONFIG_MODVERSIONS=y
CONFIG_MODULE_SRCVERSION_ALL=y
# CONFIG_MODULE_SIG is not set
# CONFIG_MODULE_COMPRESS is not set
-CONFIG_STOP_MACHINE=y
+CONFIG_MODULES_TREE_LOOKUP=y
CONFIG_BLOCK=y
CONFIG_LBDAF=y
CONFIG_BLK_DEV_BSG=y
@@ -302,6 +302,7 @@ CONFIG_CFQ_GROUP_IOSCHED=y
CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"
+CONFIG_ASN1=m
CONFIG_UNINLINE_SPIN_UNLOCK=y
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
CONFIG_MUTEX_SPIN_ON_OWNER=y
@@ -336,22 +337,18 @@ CONFIG_ARCH_BCM2709=y
# CONFIG_ARCH_W90X900 is not set
# CONFIG_ARCH_LPC32XX is not set
# CONFIG_ARCH_PXA 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
# CONFIG_ARCH_S3C64XX is not set
# CONFIG_ARCH_DAVINCI is not set
# CONFIG_ARCH_OMAP1 is not set
-CONFIG_BCM2708_GPIO=y
CONFIG_BCM2708_NOL2CACHE=y
-CONFIG_BCM2708_SPIDEV=y
#
# Broadcom BCM2709 Implementations
#
CONFIG_MACH_BCM2709=y
-CONFIG_BCM2709_DT=y
#
# Processor Type
@@ -387,8 +384,8 @@ CONFIG_MIGHT_HAVE_CACHE_L2X0=y
CONFIG_ARM_L1_CACHE_SHIFT_6=y
CONFIG_ARM_L1_CACHE_SHIFT=6
CONFIG_ARM_DMA_MEM_BUFFERABLE=y
-CONFIG_ARCH_HAS_BARRIERS=y
# CONFIG_ARM_KERNMEM_PERMS is not set
+CONFIG_MULTI_IRQ_HANDLER=y
# CONFIG_ARM_ERRATA_430973 is not set
# CONFIG_ARM_ERRATA_458693 is not set
# CONFIG_ARM_ERRATA_460075 is not set
@@ -425,9 +422,10 @@ CONFIG_HAVE_ARM_ARCH_TIMER=y
# CONFIG_MCPM is not set
# CONFIG_BIG_LITTLE is not set
# CONFIG_VMSPLIT_3G is not set
-CONFIG_VMSPLIT_2G=y
+CONFIG_VMSPLIT_3G_OPT=y
+# CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_1G is not set
-CONFIG_PAGE_OFFSET=0x80000000
+CONFIG_PAGE_OFFSET=0xB0000000
CONFIG_NR_CPUS=4
CONFIG_HOTPLUG_CPU=y
# CONFIG_ARM_PSCI is not set
@@ -452,15 +450,16 @@ CONFIG_AEABI=y
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
CONFIG_HAVE_ARCH_PFN_VALID=y
# CONFIG_HIGHMEM is not set
+# CONFIG_CPU_SW_DOMAIN_PAN is not set
CONFIG_HW_PERF_EVENTS=y
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
+# CONFIG_ARM_MODULE_PLTS is not set
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=y
CONFIG_MIGRATION=y
@@ -478,6 +477,8 @@ CONFIG_CMA_AREAS=7
# CONFIG_ZPOOL is not set
# CONFIG_ZBUD is not set
# CONFIG_ZSMALLOC is not set
+# CONFIG_IDLE_PAGE_TRACKING is not set
+CONFIG_FRAME_VECTOR=y
CONFIG_FORCE_MAX_ZONEORDER=11
CONFIG_ALIGNMENT_TRAP=y
CONFIG_UACCESS_WITH_MEMCPY=y
@@ -530,6 +531,7 @@ CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
# CPU frequency scaling drivers
#
# CONFIG_CPUFREQ_DT is not set
+# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set
# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set
CONFIG_ARM_BCM2835_CPUFREQ=y
# CONFIG_QORIQ_CPUFREQ is not set
@@ -574,6 +576,7 @@ CONFIG_COREDUMP=y
#
CONFIG_SUSPEND=y
CONFIG_SUSPEND_FREEZER=y
+# CONFIG_SUSPEND_SKIP_SYNC is not set
# CONFIG_HIBERNATION is not set
CONFIG_PM_SLEEP=y
CONFIG_PM_SLEEP_SMP=y
@@ -589,6 +592,7 @@ CONFIG_ARCH_SUSPEND_POSSIBLE=y
CONFIG_ARM_CPU_SUSPEND=y
CONFIG_ARCH_HIBERNATION_POSSIBLE=y
CONFIG_NET=y
+CONFIG_NET_INGRESS=y
#
# Networking options
@@ -632,7 +636,6 @@ CONFIG_SYN_COOKIES=y
CONFIG_NET_UDP_TUNNEL=m
# CONFIG_NET_FOU is not set
# CONFIG_NET_FOU_IP_TUNNELS is not set
-# CONFIG_GENEVE is not set
CONFIG_INET_AH=m
CONFIG_INET_ESP=m
CONFIG_INET_IPCOMP=m
@@ -656,6 +659,7 @@ CONFIG_INET6_AH=m
CONFIG_INET6_ESP=m
CONFIG_INET6_IPCOMP=m
# CONFIG_IPV6_MIP6 is not set
+CONFIG_IPV6_ILA=m
CONFIG_INET6_XFRM_TUNNEL=m
CONFIG_INET6_TUNNEL=m
CONFIG_INET6_XFRM_MODE_TRANSPORT=m
@@ -684,6 +688,7 @@ CONFIG_BRIDGE_NETFILTER=m
#
# Core Netfilter Configuration
#
+CONFIG_NETFILTER_INGRESS=y
CONFIG_NETFILTER_NETLINK=m
CONFIG_NETFILTER_NETLINK_ACCT=m
CONFIG_NETFILTER_NETLINK_QUEUE=m
@@ -714,7 +719,8 @@ CONFIG_NF_CONNTRACK_SIP=m
CONFIG_NF_CONNTRACK_TFTP=m
CONFIG_NF_CT_NETLINK=m
# CONFIG_NF_CT_NETLINK_TIMEOUT is not set
-# CONFIG_NETFILTER_NETLINK_QUEUE_CT is not set
+CONFIG_NF_CT_NETLINK_HELPER=m
+CONFIG_NETFILTER_NETLINK_GLUE_CT=y
CONFIG_NF_NAT=m
CONFIG_NF_NAT_NEEDED=y
CONFIG_NF_NAT_PROTO_DCCP=m
@@ -853,6 +859,7 @@ CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_FO=m
+CONFIG_IP_VS_OVF=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
@@ -878,6 +885,7 @@ CONFIG_IP_VS_PE_SIP=m
CONFIG_NF_DEFRAG_IPV4=m
CONFIG_NF_CONNTRACK_IPV4=m
CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_NF_DUP_IPV4=m
CONFIG_NF_LOG_ARP=m
CONFIG_NF_LOG_IPV4=m
CONFIG_NF_REJECT_IPV4=m
@@ -913,6 +921,7 @@ CONFIG_IP_NF_ARP_MANGLE=m
#
CONFIG_NF_DEFRAG_IPV6=m
CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_NF_DUP_IPV6=m
CONFIG_NF_REJECT_IPV6=m
CONFIG_NF_LOG_IPV6=m
CONFIG_NF_NAT_IPV6=m
@@ -1040,6 +1049,7 @@ CONFIG_NET_CLS_RSVP6=m
CONFIG_NET_CLS_FLOW=m
CONFIG_NET_CLS_CGROUP=m
# CONFIG_NET_CLS_BPF is not set
+CONFIG_NET_CLS_FLOWER=m
CONFIG_NET_EMATCH=y
CONFIG_NET_EMATCH_STACK=32
CONFIG_NET_EMATCH_CMP=m
@@ -1082,6 +1092,7 @@ CONFIG_NET_MPLS_GSO=m
# CONFIG_MPLS_ROUTING is not set
# CONFIG_HSR is not set
# CONFIG_NET_SWITCHDEV is not set
+CONFIG_NET_L3_MASTER_DEV=y
CONFIG_RPS=y
CONFIG_RFS_ACCEL=y
CONFIG_XPS=y
@@ -1147,6 +1158,7 @@ CONFIG_BT_BNEP=m
CONFIG_BT_BNEP_MC_FILTER=y
CONFIG_BT_BNEP_PROTO_FILTER=y
CONFIG_BT_HIDP=m
+CONFIG_BT_HS=y
CONFIG_BT_LE=y
# CONFIG_BT_SELFTEST is not set
# CONFIG_BT_DEBUGFS is not set
@@ -1156,12 +1168,13 @@ CONFIG_BT_LE=y
#
CONFIG_BT_INTEL=m
CONFIG_BT_BCM=m
+CONFIG_BT_RTL=m
CONFIG_BT_HCIBTUSB=m
CONFIG_BT_HCIBTUSB_BCM=y
+CONFIG_BT_HCIBTUSB_RTL=y
# CONFIG_BT_HCIBTSDIO is not set
# CONFIG_BT_HCIUART is not set
CONFIG_BT_HCIBCM203X=m
-CONFIG_BT_HCIBPA10X=m
CONFIG_BT_HCIBFUSB=m
CONFIG_BT_HCIVHCI=m
CONFIG_BT_MRVL=m
@@ -1184,6 +1197,7 @@ CONFIG_CFG80211=m
CONFIG_CFG80211_DEFAULT_PS=y
# CONFIG_CFG80211_DEBUGFS is not set
# CONFIG_CFG80211_INTERNAL_REGDB is not set
+CONFIG_CFG80211_CRDA_SUPPORT=y
CONFIG_CFG80211_WEXT=y
CONFIG_LIB80211=m
CONFIG_LIB80211_CRYPT_WEP=m
@@ -1202,6 +1216,7 @@ 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_MAC80211_STA_HASH_MAX_SIZE=0
CONFIG_WIMAX=m
CONFIG_WIMAX_DEBUG_LEVEL=8
CONFIG_RFKILL=m
@@ -1223,6 +1238,7 @@ CONFIG_NFC=m
#
CONFIG_NFC_PN533=m
# CONFIG_NFC_SIM is not set
+CONFIG_LWTUNNEL=y
CONFIG_HAVE_BPF_JIT=y
#
@@ -1255,7 +1271,7 @@ CONFIG_DEV_COREDUMP=y
CONFIG_REGMAP=y
CONFIG_REGMAP_I2C=m
CONFIG_REGMAP_SPI=m
-CONFIG_REGMAP_MMIO=m
+CONFIG_REGMAP_MMIO=y
CONFIG_REGMAP_IRQ=y
CONFIG_DMA_SHARED_BUFFER=y
# CONFIG_FENCE_TRACE is not set
@@ -1274,9 +1290,8 @@ CONFIG_CMA_ALIGNMENT=8
#
# Bus devices
#
-CONFIG_ARM_CCI=y
-CONFIG_ARM_CCI400_COMMON=y
-CONFIG_ARM_CCI400_PMU=y
+# CONFIG_ARM_CCI400_PMU is not set
+# CONFIG_ARM_CCI500_PMU is not set
# CONFIG_ARM_CCN is not set
# CONFIG_BRCMSTB_GISB_ARB is not set
# CONFIG_VEXPRESS_CONFIG is not set
@@ -1285,19 +1300,18 @@ CONFIG_PROC_EVENTS=y
# CONFIG_MTD is not set
CONFIG_DTC=y
CONFIG_OF=y
-
-#
-# Device Tree and Open Firmware support
-#
# CONFIG_OF_UNITTEST is not set
CONFIG_OF_FLATTREE=y
CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_DYNAMIC=y
CONFIG_OF_ADDRESS=y
CONFIG_OF_IRQ=y
CONFIG_OF_NET=y
CONFIG_OF_MDIO=m
CONFIG_OF_RESERVED_MEM=y
-# CONFIG_OF_OVERLAY is not set
+CONFIG_OF_RESOLVE=y
+CONFIG_OF_OVERLAY=y
+CONFIG_OF_CONFIGFS=y
CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
# CONFIG_PARPORT is not set
CONFIG_BLK_DEV=y
@@ -1312,7 +1326,6 @@ CONFIG_BLK_DEV_NBD=m
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=4096
-# CONFIG_BLK_DEV_PMEM is not set
CONFIG_CDROM_PKTCDVD=m
CONFIG_CDROM_PKTCDVD_BUFFERS=8
# CONFIG_CDROM_PKTCDVD_WCACHE is not set
@@ -1374,14 +1387,28 @@ CONFIG_BCM2708_VCHIQ=y
#
#
+# SCIF Bus Driver
+#
+
+#
# Intel MIC Host Driver
#
#
# Intel MIC Card Driver
#
+
+#
+# SCIF Driver
+#
+
+#
+# Intel MIC Coprocessor State Management (COSM) Drivers
+#
# CONFIG_ECHO is not set
# CONFIG_CXL_BASE is not set
+# CONFIG_CXL_KERNEL_API is not set
+# CONFIG_CXL_EEH is not set
#
# SCSI device support
@@ -1470,13 +1497,16 @@ CONFIG_MACVLAN=m
# CONFIG_MACVTAP is not set
# CONFIG_IPVLAN is not set
# CONFIG_VXLAN is not set
+# CONFIG_GENEVE is not set
CONFIG_NETCONSOLE=m
# CONFIG_NETCONSOLE_DYNAMIC is not set
CONFIG_NETPOLL=y
CONFIG_NET_POLL_CONTROLLER=y
CONFIG_TUN=m
+# CONFIG_TUN_VNET_CROSS_LE is not set
CONFIG_VETH=m
# CONFIG_NLMON is not set
+CONFIG_NET_VRF=m
#
# CAIF transport drivers
@@ -1492,6 +1522,7 @@ CONFIG_ETHERNET=y
CONFIG_NET_VENDOR_ARC=y
# CONFIG_ARC_EMAC is not set
# CONFIG_EMAC_ROCKCHIP is not set
+# CONFIG_NET_VENDOR_AURORA is not set
CONFIG_NET_CADENCE=y
# CONFIG_MACB is not set
CONFIG_NET_VENDOR_BROADCOM=y
@@ -1502,6 +1533,8 @@ CONFIG_NET_VENDOR_CIRRUS=y
# CONFIG_CS89x0 is not set
# CONFIG_DM9000 is not set
# CONFIG_DNET is not set
+CONFIG_NET_VENDOR_EZCHIP=y
+# CONFIG_EZCHIP_NPS_MANAGEMENT_ENET is not set
CONFIG_NET_VENDOR_FARADAY=y
# CONFIG_FTMAC100 is not set
# CONFIG_FTGMAC100 is not set
@@ -1517,11 +1550,13 @@ CONFIG_NET_VENDOR_MICREL=y
CONFIG_NET_VENDOR_MICROCHIP=y
CONFIG_ENC28J60=m
# CONFIG_ENC28J60_WRITEVERIFY is not set
+# CONFIG_ENCX24J600 is not set
CONFIG_NET_VENDOR_NATSEMI=y
CONFIG_NET_VENDOR_8390=y
# CONFIG_AX88796 is not set
# CONFIG_ETHOC is not set
# CONFIG_NET_VENDOR_QUALCOMM is not set
+CONFIG_NET_VENDOR_RENESAS=y
CONFIG_NET_VENDOR_ROCKER=y
# CONFIG_NET_VENDOR_SAMSUNG is not set
CONFIG_NET_VENDOR_SEEQ=y
@@ -1531,6 +1566,8 @@ CONFIG_NET_VENDOR_SMSC=y
# CONFIG_SMSC911X is not set
CONFIG_NET_VENDOR_STMICRO=y
# CONFIG_STMMAC_ETH is not set
+CONFIG_NET_VENDOR_SYNOPSYS=y
+# CONFIG_SYNOPSYS_DWC_ETH_QOS is not set
CONFIG_NET_VENDOR_VIA=y
# CONFIG_VIA_RHINE is not set
# CONFIG_VIA_VELOCITY is not set
@@ -1542,6 +1579,7 @@ CONFIG_PHYLIB=m
#
# MII PHY device drivers
#
+# CONFIG_AQUANTIA_PHY is not set
# CONFIG_AT803X_PHY is not set
# CONFIG_AMD_PHY is not set
# CONFIG_MARVELL_PHY is not set
@@ -1550,6 +1588,7 @@ CONFIG_PHYLIB=m
# CONFIG_LXT_PHY is not set
# CONFIG_CICADA_PHY is not set
# CONFIG_VITESSE_PHY is not set
+# CONFIG_TERANETICS_PHY is not set
# CONFIG_SMSC_PHY is not set
# CONFIG_BROADCOM_PHY is not set
# CONFIG_BCM7XXX_PHY is not set
@@ -1560,6 +1599,9 @@ CONFIG_PHYLIB=m
# CONFIG_STE10XP is not set
# CONFIG_LSI_ET1011C_PHY is not set
# CONFIG_MICREL_PHY is not set
+# CONFIG_DP83848_PHY is not set
+# CONFIG_DP83867_PHY is not set
+# CONFIG_MICROCHIP_PHY is not set
# CONFIG_FIXED_PHY is not set
CONFIG_MDIO_BITBANG=m
# CONFIG_MDIO_GPIO is not set
@@ -1589,6 +1631,7 @@ CONFIG_USB_KAWETH=m
CONFIG_USB_PEGASUS=m
CONFIG_USB_RTL8150=m
CONFIG_USB_RTL8152=m
+# CONFIG_USB_LAN78XX is not set
CONFIG_USB_USBNET=y
CONFIG_USB_NET_AX8817X=m
CONFIG_USB_NET_AX88179_178A=m
@@ -1623,6 +1666,7 @@ CONFIG_USB_NET_INT51X1=m
CONFIG_USB_IPHETH=m
CONFIG_USB_SIERRA_NET=m
CONFIG_USB_VL600=m
+# CONFIG_USB_NET_CH9200 is not set
CONFIG_WLAN=y
CONFIG_LIBERTAS_THINFIRM=m
# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
@@ -1724,6 +1768,7 @@ CONFIG_RT2X00_LIB_LEDS=y
# CONFIG_RT2X00_DEBUG is not set
# CONFIG_WL_MEDIATEK is not set
CONFIG_RTL8192CU=m
+# CONFIG_RTL8XXXU is not set
# CONFIG_WL_TI is not set
CONFIG_ZD1211RW=m
# CONFIG_ZD1211RW_DEBUG is not set
@@ -1741,11 +1786,13 @@ CONFIG_WIMAX_I2400M_USB=m
CONFIG_WIMAX_I2400M_DEBUG_LEVEL=8
# CONFIG_WAN is not set
# CONFIG_ISDN is not set
+# CONFIG_NVM is not set
#
# Input device support
#
CONFIG_INPUT=y
+CONFIG_INPUT_LEDS=m
CONFIG_INPUT_FF_MEMLESS=m
CONFIG_INPUT_POLLDEV=m
# CONFIG_INPUT_SPARSEKMAP is not set
@@ -1833,7 +1880,7 @@ CONFIG_JOYSTICK_XPAD_FF=y
CONFIG_JOYSTICK_RPISENSE=m
# CONFIG_INPUT_TABLET is not set
CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_OF_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_PROPERTIES=y
CONFIG_TOUCHSCREEN_ADS7846=m
# CONFIG_TOUCHSCREEN_AD7877 is not set
# CONFIG_TOUCHSCREEN_AD7879 is not set
@@ -1862,6 +1909,7 @@ CONFIG_TOUCHSCREEN_FT6236=m
# CONFIG_TOUCHSCREEN_MCS5000 is not set
# CONFIG_TOUCHSCREEN_MMS114 is not set
# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_IMX6UL_TSC is not set
# CONFIG_TOUCHSCREEN_INEXIO is not set
# CONFIG_TOUCHSCREEN_MK712 is not set
# CONFIG_TOUCHSCREEN_PENMOUNT is not set
@@ -1870,9 +1918,11 @@ CONFIG_TOUCHSCREEN_RPI_FT5406=m
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
# CONFIG_TOUCHSCREEN_PIXCIR is not set
+# CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set
# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
# CONFIG_TOUCHSCREEN_TSC_SERIO is not set
+# CONFIG_TOUCHSCREEN_TSC2004 is not set
# CONFIG_TOUCHSCREEN_TSC2005 is not set
# CONFIG_TOUCHSCREEN_TSC2007 is not set
# CONFIG_TOUCHSCREEN_ST1232 is not set
@@ -1881,6 +1931,7 @@ CONFIG_TOUCHSCREEN_STMPE=m
# CONFIG_TOUCHSCREEN_SX8654 is not set
# CONFIG_TOUCHSCREEN_TPS6507X is not set
# CONFIG_TOUCHSCREEN_ZFORCE is not set
+# CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set
CONFIG_INPUT_MISC=y
CONFIG_INPUT_AD714X=m
CONFIG_INPUT_AD714X_I2C=m
@@ -1912,6 +1963,7 @@ CONFIG_INPUT_CMA3000=m
# CONFIG_INPUT_CMA3000_I2C is not set
# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set
# CONFIG_INPUT_DRV260X_HAPTICS is not set
+# CONFIG_INPUT_DRV2665_HAPTICS is not set
# CONFIG_INPUT_DRV2667_HAPTICS is not set
#
@@ -1926,6 +1978,7 @@ CONFIG_SERIO_RAW=m
# CONFIG_SERIO_PS2MULT is not set
# CONFIG_SERIO_ARC_PS2 is not set
# CONFIG_SERIO_APBPS2 is not set
+# CONFIG_USERIO is not set
CONFIG_GAMEPORT=m
CONFIG_GAMEPORT_NS558=m
CONFIG_GAMEPORT_L4=m
@@ -1933,6 +1986,13 @@ CONFIG_GAMEPORT_L4=m
#
# Character devices
#
+CONFIG_BRCM_CHAR_DRIVERS=y
+CONFIG_BCM_VC_CMA=y
+CONFIG_BCM2708_VCMEM=y
+CONFIG_BCM_VCIO=y
+CONFIG_BCM_VC_SM=y
+CONFIG_BCM2835_DEVGPIOMEM=m
+CONFIG_BCM2835_SMI_DEV=m
CONFIG_TTY=y
CONFIG_VT=y
CONFIG_CONSOLE_TRANSLATIONS=y
@@ -1960,8 +2020,11 @@ CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=1
CONFIG_SERIAL_8250_RUNTIME_UARTS=0
# CONFIG_SERIAL_8250_EXTENDED is not set
+CONFIG_SERIAL_8250_FSL=y
# CONFIG_SERIAL_8250_DW is not set
# CONFIG_SERIAL_8250_EM is not set
+# CONFIG_SERIAL_8250_RT288X is not set
+# CONFIG_SERIAL_8250_INGENIC is not set
#
# Non-8250 serial port support
@@ -1973,6 +2036,7 @@ CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
# CONFIG_SERIAL_KGDB_NMI is not set
# CONFIG_SERIAL_MAX3100 is not set
# CONFIG_SERIAL_MAX310X is not set
+# CONFIG_SERIAL_UARTLITE is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_CONSOLE_POLL=y
@@ -1988,24 +2052,17 @@ CONFIG_SERIAL_OF_PLATFORM=y
# CONFIG_SERIAL_FSL_LPUART is not set
# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set
# CONFIG_SERIAL_ST_ASC is not set
+# CONFIG_SERIAL_STM32 is not set
CONFIG_TTY_PRINTK=y
# CONFIG_HVC_DCC is not set
# CONFIG_IPMI_HANDLER is not set
CONFIG_HW_RANDOM=y
# CONFIG_HW_RANDOM_TIMERIOMEM is not set
CONFIG_HW_RANDOM_BCM2835=m
-CONFIG_HW_RANDOM_BCM2708=m
# CONFIG_R3964 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_BCM2708_VCMEM=y
-CONFIG_BCM_VCIO=y
-CONFIG_BCM_VC_SM=y
-CONFIG_BCM2835_DEVGPIOMEM=m
-CONFIG_BCM2835_SMI_DEV=m
# CONFIG_XILLYBUS is not set
#
@@ -2025,6 +2082,7 @@ CONFIG_I2C_MUX=m
# CONFIG_I2C_MUX_PCA9541 is not set
# CONFIG_I2C_MUX_PCA954x is not set
# CONFIG_I2C_MUX_PINCTRL is not set
+# CONFIG_I2C_MUX_REG is not set
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_ALGOBIT=m
@@ -2040,6 +2098,7 @@ CONFIG_I2C_BCM2708_BAUDRATE=100000
CONFIG_I2C_BCM2835=m
# CONFIG_I2C_CBUS_GPIO is not set
# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
+# CONFIG_I2C_EMEV2 is not set
CONFIG_I2C_GPIO=m
# CONFIG_I2C_NOMADIK is not set
# CONFIG_I2C_OCORES is not set
@@ -2075,7 +2134,7 @@ CONFIG_SPI_MASTER=y
#
# CONFIG_SPI_ALTERA is not set
CONFIG_SPI_BCM2835=m
-CONFIG_SPI_BCM2708=m
+CONFIG_SPI_BCM2835AUX=m
# CONFIG_SPI_BITBANG is not set
# CONFIG_SPI_CADENCE is not set
# CONFIG_SPI_GPIO is not set
@@ -2087,6 +2146,7 @@ CONFIG_SPI_BCM2708=m
# CONFIG_SPI_SC18IS602 is not set
# CONFIG_SPI_XCOMM is not set
# CONFIG_SPI_XILINX is not set
+# CONFIG_SPI_ZYNQMP_GQSPI is not set
# CONFIG_SPI_DESIGNWARE is not set
#
@@ -2154,8 +2214,10 @@ CONFIG_GPIO_BCM_VIRT=y
# CONFIG_GPIO_GENERIC_PLATFORM is not set
# CONFIG_GPIO_GRGPIO is not set
# CONFIG_GPIO_PL061 is not set
-# CONFIG_GPIO_SCH311X is not set
+# CONFIG_GPIO_SYSCON is not set
+# CONFIG_GPIO_XILINX is not set
# CONFIG_GPIO_ZEVIO is not set
+# CONFIG_GPIO_ZX is not set
#
# I2C GPIO expanders
@@ -2179,10 +2241,14 @@ CONFIG_GPIO_STMPE=y
#
# CONFIG_GPIO_74X164 is not set
CONFIG_GPIO_MAX7301=m
-CONFIG_GPIO_MCP23S08=m
# CONFIG_GPIO_MC33880 is not set
#
+# SPI or I2C GPIO expanders
+#
+CONFIG_GPIO_MCP23S08=m
+
+#
# USB GPIO expanders
#
CONFIG_W1=m
@@ -2224,7 +2290,7 @@ CONFIG_BATTERY_DS2760=m
# CONFIG_BATTERY_DS2781 is not set
# CONFIG_BATTERY_DS2782 is not set
# CONFIG_BATTERY_SBS is not set
-# CONFIG_BATTERY_BQ27x00 is not set
+# CONFIG_BATTERY_BQ27XXX is not set
# CONFIG_BATTERY_MAX17040 is not set
# CONFIG_BATTERY_MAX17042 is not set
# CONFIG_CHARGER_MAX8903 is not set
@@ -2233,34 +2299,38 @@ CONFIG_BATTERY_DS2760=m
# CONFIG_CHARGER_MANAGER is not set
# CONFIG_CHARGER_BQ2415X is not set
# CONFIG_CHARGER_BQ24190 is not set
+# CONFIG_CHARGER_BQ24257 is not set
# CONFIG_CHARGER_BQ24735 is not set
+# CONFIG_CHARGER_BQ25890 is not set
# CONFIG_CHARGER_SMB347 is not set
# CONFIG_BATTERY_GAUGE_LTC2941 is not set
+# CONFIG_CHARGER_RT9455 is not set
CONFIG_POWER_RESET=y
+# CONFIG_POWER_RESET_BRCMSTB is not set
CONFIG_POWER_RESET_GPIO=y
CONFIG_POWER_RESET_GPIO_RESTART=y
# CONFIG_POWER_RESET_LTC2952 is not set
# CONFIG_POWER_RESET_RESTART is not set
+# CONFIG_POWER_RESET_VERSATILE is not set
# CONFIG_POWER_RESET_SYSCON is not set
# CONFIG_POWER_RESET_SYSCON_POWEROFF is not set
# CONFIG_POWER_AVS is not set
# CONFIG_HWMON is not set
CONFIG_THERMAL=y
CONFIG_THERMAL_OF=y
+# CONFIG_THERMAL_WRITABLE_TRIPS is not set
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_DEFAULT_GOV_POWER_ALLOCATOR is not set
# CONFIG_THERMAL_GOV_FAIR_SHARE is not set
CONFIG_THERMAL_GOV_STEP_WISE=y
# CONFIG_THERMAL_GOV_BANG_BANG is not set
# CONFIG_THERMAL_GOV_USER_SPACE is not set
+# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set
# CONFIG_CPU_THERMAL 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
@@ -2275,8 +2345,8 @@ CONFIG_WATCHDOG_CORE=y
# CONFIG_CADENCE_WATCHDOG is not set
# CONFIG_DW_WATCHDOG is not set
# CONFIG_MAX63XX_WATCHDOG is not set
-CONFIG_BCM2708_WDT=m
CONFIG_BCM2835_WDT=m
+# CONFIG_BCM7038_WDT is not set
# CONFIG_MEN_A21_WDT is not set
#
@@ -2292,6 +2362,7 @@ CONFIG_SSB=m
CONFIG_SSB_BLOCKIO=y
CONFIG_SSB_SDIOHOST_POSSIBLE=y
# CONFIG_SSB_SDIOHOST is not set
+# CONFIG_SSB_HOST_SOC is not set
# CONFIG_SSB_SILENT is not set
# CONFIG_SSB_DEBUG is not set
# CONFIG_SSB_DRIVER_GPIO is not set
@@ -2316,6 +2387,7 @@ CONFIG_MFD_RPISENSE_CORE=m
# CONFIG_MFD_AS3722 is not set
# CONFIG_PMIC_ADP5520 is not set
# CONFIG_MFD_AAT2870_CORE is not set
+# CONFIG_MFD_ATMEL_FLEXCOM is not set
# CONFIG_MFD_ATMEL_HLCDC is not set
# CONFIG_MFD_BCM590XX is not set
# CONFIG_MFD_AXP20X is not set
@@ -2325,6 +2397,7 @@ CONFIG_MFD_RPISENSE_CORE=m
# CONFIG_MFD_DA9052_SPI is not set
# CONFIG_MFD_DA9052_I2C is not set
# CONFIG_MFD_DA9055 is not set
+# CONFIG_MFD_DA9062 is not set
# CONFIG_MFD_DA9063 is not set
# CONFIG_MFD_DA9150 is not set
# CONFIG_MFD_DLN2 is not set
@@ -2372,7 +2445,7 @@ CONFIG_MFD_STMPE=y
#
CONFIG_STMPE_I2C=y
CONFIG_STMPE_SPI=y
-# CONFIG_MFD_SYSCON 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
@@ -2404,6 +2477,7 @@ CONFIG_MFD_ARIZONA_SPI=m
CONFIG_MFD_WM5102=y
# CONFIG_MFD_WM5110 is not set
# CONFIG_MFD_WM8997 is not set
+# CONFIG_MFD_WM8998 is not set
# CONFIG_MFD_WM8400 is not set
# CONFIG_MFD_WM831X_I2C is not set
# CONFIG_MFD_WM831X_SPI is not set
@@ -2416,6 +2490,7 @@ CONFIG_REGULATOR_FIXED_VOLTAGE=m
# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
# CONFIG_REGULATOR_ACT8865 is not set
# CONFIG_REGULATOR_AD5398 is not set
+# CONFIG_REGULATOR_ANATOP is not set
CONFIG_REGULATOR_ARIZONA=m
# CONFIG_REGULATOR_DA9210 is not set
# CONFIG_REGULATOR_DA9211 is not set
@@ -2433,6 +2508,7 @@ CONFIG_REGULATOR_ARIZONA=m
# CONFIG_REGULATOR_MAX8660 is not set
# CONFIG_REGULATOR_MAX8952 is not set
# CONFIG_REGULATOR_MAX8973 is not set
+# CONFIG_REGULATOR_MT6311 is not set
# CONFIG_REGULATOR_PFUZE100 is not set
# CONFIG_REGULATOR_PWM is not set
# CONFIG_REGULATOR_TPS51632 is not set
@@ -2653,6 +2729,7 @@ CONFIG_VIDEO_BCM2835_MMAL=m
# CONFIG_SOC_CAMERA is not set
# CONFIG_V4L_MEM2MEM_DRIVERS is not set
# CONFIG_V4L_TEST_DRIVERS is not set
+# CONFIG_DVB_PLATFORM_DRIVERS is not set
#
# Supported MMC/SDIO adapters
@@ -2815,6 +2892,7 @@ CONFIG_DVB_TUNER_ITD1000=m
CONFIG_DVB_TUNER_CX24113=m
CONFIG_DVB_TDA826X=m
CONFIG_DVB_CX24116=m
+CONFIG_DVB_CX24120=m
CONFIG_DVB_SI21XX=m
CONFIG_DVB_TS2020=m
CONFIG_DVB_DS3000=m
@@ -2904,10 +2982,6 @@ CONFIG_DVB_AF9033=m
#
# Graphics support
#
-
-#
-# Direct Rendering Manager
-#
# CONFIG_DRM is not set
#
@@ -2944,6 +3018,7 @@ CONFIG_FB_BCM2708=y
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_SMSCUFX is not set
# CONFIG_FB_UDL is not set
+# CONFIG_FB_IBM_GXT4500 is not set
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FB_METRONOME is not set
# CONFIG_FB_BROADSHEET is not set
@@ -2970,6 +3045,7 @@ CONFIG_BACKLIGHT_CLASS_DEVICE=y
# CONFIG_BACKLIGHT_GENERIC is not set
# CONFIG_BACKLIGHT_PWM is not set
CONFIG_BACKLIGHT_RPI=m
+# CONFIG_BACKLIGHT_PM8941_WLED is not set
# CONFIG_BACKLIGHT_ADP8860 is not set
# CONFIG_BACKLIGHT_ADP8870 is not set
# CONFIG_BACKLIGHT_LM3630A is not set
@@ -2997,7 +3073,6 @@ CONFIG_SND_PCM=m
CONFIG_SND_DMAENGINE_PCM=m
CONFIG_SND_HWDEP=m
CONFIG_SND_RAWMIDI=m
-CONFIG_SND_COMPRESS_OFFLOAD=m
CONFIG_SND_JACK=y
CONFIG_SND_SEQUENCER=m
CONFIG_SND_SEQ_DUMMY=m
@@ -3005,11 +3080,13 @@ CONFIG_SND_OSSEMUL=y
CONFIG_SND_MIXER_OSS=m
CONFIG_SND_PCM_OSS=m
CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_PCM_TIMER=y
CONFIG_SND_SEQUENCER_OSS=y
CONFIG_SND_HRTIMER=m
CONFIG_SND_SEQ_HRTIMER_DEFAULT=y
# CONFIG_SND_DYNAMIC_MINORS is not set
CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_PROC_FS=y
CONFIG_SND_VERBOSE_PROCFS=y
# CONFIG_SND_VERBOSE_PRINTK is not set
# CONFIG_SND_DEBUG is not set
@@ -3031,6 +3108,7 @@ CONFIG_SND_MPU401=m
#
# HD-Audio
#
+CONFIG_SND_HDA_PREALLOC_SIZE=64
CONFIG_SND_ARM=y
# CONFIG_SND_ARMAACI is not set
CONFIG_SND_BCM2835=m
@@ -3050,7 +3128,7 @@ CONFIG_SND_USB_6FIRE=m
CONFIG_SND_SOC=m
CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y
# CONFIG_SND_ATMEL_SOC is not set
-CONFIG_SND_BCM2708_SOC_I2S=m
+CONFIG_SND_BCM2835_SOC_I2S=m
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC=m
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS=m
CONFIG_SND_BCM2708_SOC_HIFIBERRY_DIGI=m
@@ -3075,7 +3153,11 @@ CONFIG_SND_BCM2708_SOC_RPI_CODEC_WSP=m
# CONFIG_SND_SOC_FSL_SPDIF is not set
# CONFIG_SND_SOC_FSL_ESAI is not set
# CONFIG_SND_SOC_IMX_AUDMUX is not set
-# CONFIG_SND_SOC_QCOM is not set
+
+#
+# Allwinner SoC Audio support
+#
+# CONFIG_SND_SUN4I_CODEC is not set
# CONFIG_SND_SOC_XTFPGA_I2S is not set
CONFIG_SND_SOC_I2C_AND_SPI=m
@@ -3084,9 +3166,11 @@ CONFIG_SND_SOC_I2C_AND_SPI=m
#
CONFIG_SND_SOC_ARIZONA=m
CONFIG_SND_SOC_WM_ADSP=m
+# CONFIG_SND_SOC_AC97_CODEC is not set
CONFIG_SND_SOC_ADAU1701=m
# CONFIG_SND_SOC_AK4104 is not set
# CONFIG_SND_SOC_AK4554 is not set
+# CONFIG_SND_SOC_AK4613 is not set
# CONFIG_SND_SOC_AK4642 is not set
# CONFIG_SND_SOC_AK5386 is not set
# CONFIG_SND_SOC_ALC5623 is not set
@@ -3100,8 +3184,9 @@ CONFIG_SND_SOC_ADAU1701=m
# CONFIG_SND_SOC_CS4271_I2C is not set
# CONFIG_SND_SOC_CS4271_SPI is not set
# CONFIG_SND_SOC_CS42XX8_I2C is not set
-# CONFIG_SND_SOC_HDMI_CODEC is not set
+# CONFIG_SND_SOC_CS4349 is not set
# CONFIG_SND_SOC_ES8328 is not set
+# CONFIG_SND_SOC_GTM601 is not set
# CONFIG_SND_SOC_PCM1681 is not set
# CONFIG_SND_SOC_PCM1792A is not set
CONFIG_SND_SOC_PCM512x=m
@@ -3121,8 +3206,10 @@ CONFIG_SND_SOC_SIGMADSP_I2C=m
# CONFIG_SND_SOC_SSM4567 is not set
# CONFIG_SND_SOC_STA32X is not set
# CONFIG_SND_SOC_STA350 is not set
+# CONFIG_SND_SOC_STI_SAS is not set
# CONFIG_SND_SOC_TAS2552 is not set
# CONFIG_SND_SOC_TAS5086 is not set
+# CONFIG_SND_SOC_TAS571X is not set
# CONFIG_SND_SOC_TFA9879 is not set
CONFIG_SND_SOC_TAS5713=m
# CONFIG_SND_SOC_TLV320AIC23_I2C is not set
@@ -3175,6 +3262,7 @@ CONFIG_HID_BELKIN=m
# CONFIG_HID_BETOP_FF is not set
CONFIG_HID_CHERRY=m
CONFIG_HID_CHICONY=m
+# CONFIG_HID_CORSAIR is not set
# CONFIG_HID_PRODIKEYS is not set
# CONFIG_HID_CP2112 is not set
CONFIG_HID_CYPRESS=m
@@ -3184,6 +3272,8 @@ CONFIG_HID_EMS_FF=m
CONFIG_HID_ELECOM=m
CONFIG_HID_ELO=m
CONFIG_HID_EZKEY=m
+# CONFIG_HID_GEMBIRD is not set
+# CONFIG_HID_GFRM is not set
CONFIG_HID_HOLTEK=m
# CONFIG_HOLTEK_FF is not set
# CONFIG_HID_GT683R is not set
@@ -3274,7 +3364,7 @@ CONFIG_USB_DEFAULT_PERSIST=y
# CONFIG_USB_OTG is not set
# CONFIG_USB_OTG_WHITELIST is not set
# CONFIG_USB_OTG_BLACKLIST_HUB is not set
-# CONFIG_USB_OTG_FSM is not set
+# CONFIG_USB_ULPI_BUS is not set
CONFIG_USB_MON=m
# CONFIG_USB_WUSB_CBAF is not set
@@ -3287,7 +3377,6 @@ CONFIG_USB_MON=m
# CONFIG_USB_OXU210HP_HCD is not set
# CONFIG_USB_ISP116X_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_MAX3421_HCD is not set
# CONFIG_USB_OHCI_HCD is not set
@@ -3457,7 +3546,6 @@ CONFIG_USB_EZUSB_FX2=m
# CONFIG_UWB is not set
CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
-# CONFIG_MMC_CLKGATE is not set
#
# MMC/SD/SDIO Card Drivers
@@ -3479,12 +3567,14 @@ CONFIG_MMC_BCM2835_SDHOST=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_PLTFM=y
# CONFIG_MMC_SDHCI_OF_ARASAN is not set
+# CONFIG_MMC_SDHCI_OF_AT91 is not set
# CONFIG_MMC_SDHCI_F_SDH30 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_MMC_USDHI6ROL0 is not set
+# CONFIG_MMC_MTK is not set
# CONFIG_MEMSTICK is not set
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
@@ -3493,6 +3583,9 @@ CONFIG_LEDS_CLASS_FLASH=y
#
# LED drivers
#
+# CONFIG_LEDS_AAT1290 is not set
+# CONFIG_LEDS_BCM6328 is not set
+# CONFIG_LEDS_BCM6358 is not set
# CONFIG_LEDS_LM3530 is not set
# CONFIG_LEDS_LM3642 is not set
# CONFIG_LEDS_PCA9532 is not set
@@ -3511,13 +3604,15 @@ CONFIG_LEDS_GPIO=y
# CONFIG_LEDS_BD2802 is not set
# CONFIG_LEDS_LT3593 is not set
# CONFIG_LEDS_TCA6507 is not set
+# CONFIG_LEDS_TLC591XX is not set
# CONFIG_LEDS_LM355x is not set
+# CONFIG_LEDS_KTD2692 is not set
#
# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)
#
# CONFIG_LEDS_BLINKM is not set
-# CONFIG_LEDS_PM8941_WLED is not set
+# CONFIG_LEDS_SYSCON is not set
#
# LED Triggers
@@ -3538,12 +3633,14 @@ CONFIG_LEDS_TRIGGER_TRANSIENT=m
CONFIG_LEDS_TRIGGER_CAMERA=m
CONFIG_LEDS_TRIGGER_INPUT=y
# CONFIG_ACCESSIBILITY is not set
+CONFIG_EDAC_ATOMIC_SCRUB=y
+CONFIG_EDAC_SUPPORT=y
# CONFIG_EDAC is not set
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
# CONFIG_RTC_HCTOSYS is not set
CONFIG_RTC_SYSTOHC=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
# CONFIG_RTC_DEBUG is not set
#
@@ -3586,6 +3683,7 @@ CONFIG_RTC_DRV_RX8581=m
CONFIG_RTC_DRV_RX8025=m
CONFIG_RTC_DRV_EM3027=m
CONFIG_RTC_DRV_RV3029C2=m
+# CONFIG_RTC_DRV_RV8803 is not set
#
# SPI RTC drivers
@@ -3622,6 +3720,7 @@ CONFIG_RTC_DRV_RX4581=m
# CONFIG_RTC_DRV_BQ4802 is not set
# CONFIG_RTC_DRV_RP5C01 is not set
# CONFIG_RTC_DRV_V3020 is not set
+# CONFIG_RTC_DRV_ZYNQMP is not set
#
# on-CPU RTC drivers
@@ -3629,7 +3728,6 @@ CONFIG_RTC_DRV_RX4581=m
# CONFIG_RTC_DRV_PL030 is not set
# CONFIG_RTC_DRV_PL031 is not set
# CONFIG_RTC_DRV_SNVS is not set
-# CONFIG_RTC_DRV_XGENE is not set
#
# HID Sensor RTC drivers
@@ -3641,16 +3739,17 @@ CONFIG_DMADEVICES=y
#
# DMA Devices
#
-# CONFIG_AMBA_PL08X is not set
-# CONFIG_DW_DMAC is not set
-# CONFIG_PL330_DMA is not set
-CONFIG_DMA_BCM2708=y
-CONFIG_DMA_BCM2708_LEGACY=y
-# CONFIG_FSL_EDMA is not set
-# CONFIG_NBPFAXI_DMA is not set
CONFIG_DMA_ENGINE=y
CONFIG_DMA_VIRTUAL_CHANNELS=y
CONFIG_DMA_OF=y
+# CONFIG_AMBA_PL08X is not set
+CONFIG_DMA_BCM2835=y
+# CONFIG_FSL_EDMA is not set
+# CONFIG_INTEL_IDMA64 is not set
+# CONFIG_NBPFAXI_DMA is not set
+# CONFIG_PL330_DMA is not set
+CONFIG_DMA_BCM2708=y
+# CONFIG_DW_DMAC is not set
#
# DMA Clients
@@ -3661,6 +3760,7 @@ CONFIG_DMA_OF=y
CONFIG_UIO=m
CONFIG_UIO_PDRV_GENIRQ=m
# CONFIG_UIO_DMEM_GENIRQ is not set
+# CONFIG_UIO_PRUSS is not set
# CONFIG_VIRT_DRIVERS is not set
#
@@ -3770,7 +3870,6 @@ CONFIG_VT6656=m
# Triggers - standalone
#
# CONFIG_IIO_SIMPLE_DUMMY is not set
-# CONFIG_FT1000 is not set
#
# Speakup console speech
@@ -3804,7 +3903,7 @@ CONFIG_LIRC_SERIAL_TRANSMITTER=y
#
# Android
#
-# CONFIG_USB_WPAN_HCD is not set
+# CONFIG_STAGING_BOARD is not set
# CONFIG_WIMAX_GDM72XX is not set
# CONFIG_LTE_GDM724X is not set
# CONFIG_LUSTRE_FS is not set
@@ -3817,6 +3916,7 @@ CONFIG_FB_TFT_BD663474=m
CONFIG_FB_TFT_HX8340BN=m
CONFIG_FB_TFT_HX8347D=m
CONFIG_FB_TFT_HX8353D=m
+CONFIG_FB_TFT_HX8357D=m
CONFIG_FB_TFT_ILI9163=m
CONFIG_FB_TFT_ILI9320=m
CONFIG_FB_TFT_ILI9325=m
@@ -3833,13 +3933,17 @@ CONFIG_FB_TFT_SSD1306=m
CONFIG_FB_TFT_SSD1331=m
CONFIG_FB_TFT_SSD1351=m
CONFIG_FB_TFT_ST7735R=m
+CONFIG_FB_TFT_ST7789V=m
CONFIG_FB_TFT_TINYLCD=m
CONFIG_FB_TFT_TLS8204=m
+CONFIG_FB_TFT_UC1611=m
CONFIG_FB_TFT_UC1701=m
CONFIG_FB_TFT_UPD161704=m
CONFIG_FB_TFT_WATTEROTT=m
CONFIG_FB_FLEX=m
CONFIG_FB_TFT_FBTFT_DEVICE=m
+# CONFIG_WILC1000_DRIVER is not set
+# CONFIG_MOST is not set
# CONFIG_CHROME_PLATFORMS is not set
CONFIG_CLKDEV_LOOKUP=y
CONFIG_HAVE_CLK_PREPARE=y
@@ -3849,7 +3953,9 @@ CONFIG_COMMON_CLK=y
# Common Clock Framework
#
# CONFIG_COMMON_CLK_SI5351 is not set
+# CONFIG_COMMON_CLK_SI514 is not set
# CONFIG_COMMON_CLK_SI570 is not set
+# CONFIG_COMMON_CLK_CDCE925 is not set
# CONFIG_CLK_QORIQ is not set
# CONFIG_COMMON_CLK_PWM is not set
# CONFIG_COMMON_CLK_PXA is not set
@@ -3863,8 +3969,10 @@ CONFIG_COMMON_CLK=y
# Clock Source drivers
#
CONFIG_CLKSRC_OF=y
+CONFIG_CLKSRC_PROBE=y
CONFIG_ARM_ARCH_TIMER=y
CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y
+# CONFIG_ARM_TIMER_SP804 is not set
# CONFIG_ATMEL_PIT is not set
# CONFIG_SH_TIMER_CMT is not set
# CONFIG_SH_TIMER_MTU2 is not set
@@ -3875,6 +3983,7 @@ CONFIG_MAILBOX=y
# CONFIG_PL320_MBOX is not set
# CONFIG_ALTERA_MBOX is not set
CONFIG_BCM2835_MBOX=y
+# CONFIG_MAILBOX_TEST is not set
# CONFIG_IOMMU_SUPPORT is not set
#
@@ -3889,6 +3998,8 @@ CONFIG_BCM2835_MBOX=y
#
# SOC (System On Chip) specific Drivers
#
+# CONFIG_SOC_BRCMSTB is not set
+# CONFIG_SUNXI_SRAM is not set
# CONFIG_SOC_TI is not set
# CONFIG_PM_DEVFREQ is not set
CONFIG_EXTCON=m
@@ -3905,7 +4016,7 @@ CONFIG_EXTCON_ARIZONA=m
# CONFIG_MEMORY is not set
CONFIG_IIO=m
CONFIG_IIO_BUFFER=y
-CONFIG_IIO_BUFFER_CB=y
+CONFIG_IIO_BUFFER_CB=m
CONFIG_IIO_KFIFO_BUF=m
# CONFIG_IIO_TRIGGER is not set
@@ -3916,10 +4027,12 @@ CONFIG_IIO_KFIFO_BUF=m
# CONFIG_BMC150_ACCEL is not set
# CONFIG_IIO_ST_ACCEL_3AXIS is not set
# CONFIG_KXSD9 is not set
-# CONFIG_MMA8452 is not set
# CONFIG_KXCJK1013 is not set
+# CONFIG_MMA8452 is not set
# CONFIG_MMA9551 is not set
# CONFIG_MMA9553 is not set
+# CONFIG_MXC4005 is not set
+# CONFIG_STK8312 is not set
#
# Analog to digital converters
@@ -3934,6 +4047,7 @@ CONFIG_IIO_KFIFO_BUF=m
# CONFIG_AD7923 is not set
# CONFIG_AD799X is not set
# CONFIG_CC10001_ADC is not set
+# CONFIG_HI8435 is not set
# CONFIG_MAX1027 is not set
# CONFIG_MAX1363 is not set
# CONFIG_MCP320X is not set
@@ -3949,6 +4063,11 @@ CONFIG_IIO_KFIFO_BUF=m
# CONFIG_AD8366 is not set
#
+# Chemical Sensors
+#
+# CONFIG_VZ89X is not set
+
+#
# Hid Sensor IIO Common
#
@@ -3973,6 +4092,7 @@ CONFIG_IIO_KFIFO_BUF=m
# CONFIG_AD5764 is not set
# CONFIG_AD5791 is not set
# CONFIG_AD7303 is not set
+# CONFIG_M62332 is not set
# CONFIG_MAX517 is not set
# CONFIG_MAX5821 is not set
# CONFIG_MCP4725 is not set
@@ -4008,6 +4128,8 @@ CONFIG_IIO_KFIFO_BUF=m
# Humidity sensors
#
CONFIG_DHT11=m
+# CONFIG_HDC100X is not set
+# CONFIG_HTU21 is not set
# CONFIG_SI7005 is not set
# CONFIG_SI7020 is not set
@@ -4025,6 +4147,8 @@ CONFIG_DHT11=m
# CONFIG_ADJD_S311 is not set
# CONFIG_AL3320A is not set
# CONFIG_APDS9300 is not set
+# CONFIG_APDS9960 is not set
+# CONFIG_BH1750 is not set
# CONFIG_CM32181 is not set
# CONFIG_CM3232 is not set
# CONFIG_CM3323 is not set
@@ -4032,11 +4156,16 @@ CONFIG_DHT11=m
# CONFIG_GP2AP020A00F is not set
# CONFIG_ISL29125 is not set
# CONFIG_JSA1212 is not set
+# CONFIG_RPR0521 is not set
# CONFIG_LTR501 is not set
+# CONFIG_OPT3001 is not set
+# CONFIG_PA12203001 is not set
+# CONFIG_STK3310 is not set
# CONFIG_TCS3414 is not set
# CONFIG_TCS3472 is not set
# CONFIG_SENSORS_TSL2563 is not set
# CONFIG_TSL4531 is not set
+# CONFIG_US5182D is not set
# CONFIG_VCNL4000 is not set
#
@@ -4044,7 +4173,9 @@ CONFIG_DHT11=m
#
# CONFIG_AK8975 is not set
# CONFIG_AK09911 is not set
+# CONFIG_BMC150_MAGN is not set
# CONFIG_MAG3110 is not set
+# CONFIG_MMC35240 is not set
# CONFIG_IIO_ST_MAGN_3AXIS is not set
#
@@ -4052,12 +4183,18 @@ CONFIG_DHT11=m
#
#
+# Digital potentiometers
+#
+# CONFIG_MCP4531 is not set
+
+#
# Pressure sensors
#
# CONFIG_BMP280 is not set
# CONFIG_MPL115 is not set
# CONFIG_MPL3115 is not set
# CONFIG_MS5611 is not set
+# CONFIG_MS5637 is not set
# CONFIG_IIO_ST_PRESS is not set
# CONFIG_T5403 is not set
@@ -4069,6 +4206,7 @@ CONFIG_DHT11=m
#
# Proximity sensors
#
+# CONFIG_LIDAR_LITE_V2 is not set
# CONFIG_SX9500 is not set
#
@@ -4076,6 +4214,8 @@ CONFIG_DHT11=m
#
# CONFIG_MLX90614 is not set
# CONFIG_TMP006 is not set
+# CONFIG_TSYS01 is not set
+# CONFIG_TSYS02D is not set
CONFIG_PWM=y
CONFIG_PWM_SYSFS=y
CONFIG_PWM_BCM2835=m
@@ -4090,14 +4230,32 @@ CONFIG_IRQCHIP=y
# PHY Subsystem
#
# CONFIG_GENERIC_PHY is not set
+# CONFIG_PHY_PXA_28NM_HSIC is not set
+# CONFIG_PHY_PXA_28NM_USB2 is not set
# CONFIG_BCM_KONA_USB2_PHY is not set
# CONFIG_POWERCAP is not set
# CONFIG_MCB is not set
#
+# Performance monitor support
+#
+CONFIG_ARM_PMU=y
+# CONFIG_RAS is not set
+
+#
# Android
#
# CONFIG_ANDROID is not set
+# CONFIG_NVMEM is not set
+# CONFIG_STM is not set
+# CONFIG_STM_DUMMY is not set
+# CONFIG_STM_SOURCE_CONSOLE is not set
+# CONFIG_INTEL_TH is not set
+
+#
+# FPGA Configuration Support
+#
+# CONFIG_FPGA is not set
#
# Firmware Drivers
@@ -4112,7 +4270,7 @@ CONFIG_DCACHE_WORD_ACCESS=y
# CONFIG_EXT2_FS is not set
# CONFIG_EXT3_FS is not set
CONFIG_EXT4_FS=y
-CONFIG_EXT4_USE_FOR_EXT23=y
+CONFIG_EXT4_USE_FOR_EXT2=y
CONFIG_EXT4_FS_POSIX_ACL=y
CONFIG_EXT4_FS_SECURITY=y
# CONFIG_EXT4_ENCRYPTION is not set
@@ -4158,6 +4316,7 @@ CONFIG_F2FS_FS_XATTR=y
CONFIG_F2FS_FS_POSIX_ACL=y
# CONFIG_F2FS_FS_SECURITY is not set
# CONFIG_F2FS_CHECK_FS is not set
+# CONFIG_F2FS_FS_ENCRYPTION is not set
CONFIG_FS_POSIX_ACL=y
CONFIG_EXPORTFS=y
CONFIG_FILE_LOCKING=y
@@ -4217,6 +4376,7 @@ CONFIG_NTFS_RW=y
CONFIG_PROC_FS=y
CONFIG_PROC_SYSCTL=y
CONFIG_PROC_PAGE_MONITOR=y
+# CONFIG_PROC_CHILDREN is not set
CONFIG_KERNFS=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
@@ -4388,6 +4548,7 @@ CONFIG_FRAME_WARN=1024
CONFIG_DEBUG_FS=y
# CONFIG_HEADERS_CHECK is not set
# CONFIG_DEBUG_SECTION_MISMATCH is not set
+CONFIG_SECTION_MISMATCH_WARN_ONLY=y
# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
CONFIG_MAGIC_SYSRQ=y
CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1
@@ -4421,6 +4582,7 @@ CONFIG_BOOTPARAM_HUNG_TASK_PANIC_VALUE=0
CONFIG_PANIC_ON_OOPS_VALUE=0
CONFIG_PANIC_TIMEOUT=0
CONFIG_SCHED_DEBUG=y
+CONFIG_SCHED_INFO=y
CONFIG_SCHEDSTATS=y
# CONFIG_SCHED_STACK_END_CHECK is not set
# CONFIG_DEBUG_TIMEKEEPING is not set
@@ -4457,8 +4619,8 @@ CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_TORTURE_TEST is not set
# CONFIG_RCU_TORTURE_TEST is not set
CONFIG_RCU_CPU_STALL_TIMEOUT=21
-# CONFIG_RCU_CPU_STALL_INFO is not set
# CONFIG_RCU_TRACE is not set
+# CONFIG_RCU_EQS_DEBUG is not set
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
# CONFIG_NOTIFIER_ERROR_INJECTION is not set
# CONFIG_FAULT_INJECTION is not set
@@ -4491,6 +4653,7 @@ CONFIG_BRANCH_PROFILE_NONE=y
# CONFIG_TRACEPOINT_BENCHMARK is not set
# CONFIG_RING_BUFFER_BENCHMARK is not set
# CONFIG_RING_BUFFER_STARTUP_TEST is not set
+CONFIG_TRACING_EVENTS_GPIO=y
#
# Runtime Testing
@@ -4507,6 +4670,7 @@ CONFIG_BRANCH_PROFILE_NONE=y
# CONFIG_TEST_HEXDUMP is not set
# CONFIG_TEST_STRING_HELPERS is not set
# CONFIG_TEST_KSTRTOX is not set
+# CONFIG_TEST_PRINTF is not set
# CONFIG_TEST_RHASHTABLE is not set
# CONFIG_DMA_API_DEBUG is not set
# CONFIG_TEST_LKM is not set
@@ -4515,6 +4679,7 @@ CONFIG_BRANCH_PROFILE_NONE=y
# CONFIG_TEST_FIRMWARE is not set
# CONFIG_TEST_UDELAY is not set
# CONFIG_MEMTEST is not set
+# CONFIG_TEST_STATIC_KEYS is not set
# CONFIG_SAMPLES is not set
CONFIG_HAVE_ARCH_KGDB=y
CONFIG_KGDB=y
@@ -4570,13 +4735,18 @@ CONFIG_CRYPTO_HASH=y
CONFIG_CRYPTO_HASH2=y
CONFIG_CRYPTO_RNG=m
CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_RNG_DEFAULT=m
CONFIG_CRYPTO_PCOMP2=y
+CONFIG_CRYPTO_AKCIPHER2=y
+CONFIG_CRYPTO_AKCIPHER=m
+CONFIG_CRYPTO_RSA=m
CONFIG_CRYPTO_MANAGER=y
CONFIG_CRYPTO_MANAGER2=y
CONFIG_CRYPTO_USER=m
CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
CONFIG_CRYPTO_GF128MUL=m
CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_NULL2=y
# CONFIG_CRYPTO_PCRYPT is not set
CONFIG_CRYPTO_WORKQUEUE=y
CONFIG_CRYPTO_CRYPTD=m
@@ -4590,7 +4760,9 @@ CONFIG_CRYPTO_ABLK_HELPER=m
#
CONFIG_CRYPTO_CCM=m
CONFIG_CRYPTO_GCM=m
+CONFIG_CRYPTO_CHACHA20POLY1305=m
CONFIG_CRYPTO_SEQIV=m
+CONFIG_CRYPTO_ECHAINIV=m
#
# Block modes
@@ -4602,6 +4774,7 @@ CONFIG_CRYPTO_ECB=m
# CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_PCBC is not set
CONFIG_CRYPTO_XTS=m
+CONFIG_CRYPTO_KEYWRAP=m
#
# Hash modes
@@ -4618,6 +4791,7 @@ CONFIG_CRYPTO_CRC32C=y
# CONFIG_CRYPTO_CRC32 is not set
# CONFIG_CRYPTO_CRCT10DIF is not set
CONFIG_CRYPTO_GHASH=m
+CONFIG_CRYPTO_POLY1305=m
CONFIG_CRYPTO_MD4=m
CONFIG_CRYPTO_MD5=m
CONFIG_CRYPTO_MICHAEL_MIC=m
@@ -4646,6 +4820,7 @@ CONFIG_CRYPTO_DES=y
# CONFIG_CRYPTO_FCRYPT is not set
# CONFIG_CRYPTO_KHAZAD is not set
# CONFIG_CRYPTO_SALSA20 is not set
+CONFIG_CRYPTO_CHACHA20=m
# CONFIG_CRYPTO_SEED is not set
# CONFIG_CRYPTO_SERPENT is not set
# CONFIG_CRYPTO_TEA is not set
@@ -4657,6 +4832,7 @@ CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_DEFLATE=m
# CONFIG_CRYPTO_ZLIB is not set
# CONFIG_CRYPTO_LZO is not set
+# CONFIG_CRYPTO_842 is not set
# CONFIG_CRYPTO_LZ4 is not set
# CONFIG_CRYPTO_LZ4HC is not set
@@ -4664,20 +4840,31 @@ CONFIG_CRYPTO_DEFLATE=m
# Random Number Generation
#
# CONFIG_CRYPTO_ANSI_CPRNG is not set
-# CONFIG_CRYPTO_DRBG_MENU is not set
+CONFIG_CRYPTO_DRBG_MENU=m
+CONFIG_CRYPTO_DRBG_HMAC=y
+# CONFIG_CRYPTO_DRBG_HASH is not set
+# CONFIG_CRYPTO_DRBG_CTR is not set
+CONFIG_CRYPTO_DRBG=m
+CONFIG_CRYPTO_JITTERENTROPY=m
CONFIG_CRYPTO_USER_API=m
CONFIG_CRYPTO_USER_API_HASH=m
CONFIG_CRYPTO_USER_API_SKCIPHER=m
CONFIG_CRYPTO_USER_API_RNG=m
+CONFIG_CRYPTO_USER_API_AEAD=m
# CONFIG_CRYPTO_HW is not set
# CONFIG_ASYMMETRIC_KEY_TYPE is not set
+
+#
+# Certificates for signature checking
+#
+# CONFIG_SYSTEM_TRUSTED_KEYRING is not set
CONFIG_ARM_CRYPTO=y
CONFIG_CRYPTO_SHA1_ARM=m
CONFIG_CRYPTO_SHA1_ARM_NEON=m
# CONFIG_CRYPTO_SHA1_ARM_CE is not set
# CONFIG_CRYPTO_SHA2_ARM_CE is not set
CONFIG_CRYPTO_SHA256_ARM=m
-CONFIG_CRYPTO_SHA512_ARM_NEON=m
+CONFIG_CRYPTO_SHA512_ARM=m
CONFIG_CRYPTO_AES_ARM=m
CONFIG_CRYPTO_AES_ARM_BS=m
# CONFIG_CRYPTO_AES_ARM_CE is not set
@@ -4690,6 +4877,7 @@ CONFIG_CRYPTO_AES_ARM_BS=m
CONFIG_RAID6_PQ=m
CONFIG_BITREVERSE=y
CONFIG_HAVE_ARCH_BITREVERSE=y
+CONFIG_RATIONAL=y
CONFIG_GENERIC_STRNCPY_FROM_USER=y
CONFIG_GENERIC_STRNLEN_USER=y
CONFIG_GENERIC_NET_UTILS=y
@@ -4741,14 +4929,16 @@ CONFIG_DQL=y
CONFIG_NLATTR=y
CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
CONFIG_LRU_CACHE=m
-CONFIG_AVERAGE=y
+CONFIG_CLZ_TAB=y
# CONFIG_CORDIC is not set
# CONFIG_DDR is not set
+CONFIG_MPILIB=m
CONFIG_LIBFDT=y
CONFIG_OID_REGISTRY=y
CONFIG_FONT_SUPPORT=m
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
+# CONFIG_SG_SPLIT is not set
# CONFIG_ARCH_HAS_SG_CHAIN is not set
# CONFIG_VIRTUALIZATION is not set
diff --git a/main/linux-rpi/rotary-encoder-fix.patch b/main/linux-rpi/rotary-encoder-fix.patch
index 3d599f3d0b..7e08ba6fbe 100644
--- a/main/linux-rpi/rotary-encoder-fix.patch
+++ b/main/linux-rpi/rotary-encoder-fix.patch
@@ -1,380 +1,3 @@
-commit 47ec6e5a5f57f96d7d382e2d9f8dc5a5bdb45259
-Author: Sylvain Rochet <sylvain.rochet@finsecur.com>
-Date: Tue Oct 13 23:24:36 2015 -0700
-
- Input: rotary_encoder - add wake up support
-
- This patch adds wake up support to GPIO rotary encoders.
-
- Signed-off-by: Sylvain Rochet <sylvain.rochet@finsecur.com>
- Reviewed-by: Johan Hovold <johan@kernel.org>
- Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
-
-diff --git a/Documentation/devicetree/bindings/input/rotary-encoder.txt b/Documentation/devicetree/bindings/input/rotary-encoder.txt
-index 3315495..891ddba 100644
---- a/Documentation/devicetree/bindings/input/rotary-encoder.txt
-+++ b/Documentation/devicetree/bindings/input/rotary-encoder.txt
-@@ -15,6 +15,7 @@ Optional properties:
- - rotary-encoder,rollover: Automatic rollove when the rotary value becomes
- greater than the specified steps or smaller than 0. For absolute axis only.
- - rotary-encoder,half-period: Makes the driver work on half-period mode.
-+- wakeup-source: Boolean, rotary encoder can wake up the system.
-
- See Documentation/input/rotary-encoder.txt for more information.
-
-diff --git a/Documentation/input/rotary-encoder.txt b/Documentation/input/rotary-encoder.txt
-index 5737e35..bddbee1 100644
---- a/Documentation/input/rotary-encoder.txt
-+++ b/Documentation/input/rotary-encoder.txt
-@@ -109,6 +109,7 @@ static struct rotary_encoder_platform_data my_rotary_encoder_info = {
- .inverted_a = 0,
- .inverted_b = 0,
- .half_period = false,
-+ .wakeup_source = false,
- };
-
- static struct platform_device rotary_encoder_device = {
-diff --git a/drivers/input/misc/rotary_encoder.c b/drivers/input/misc/rotary_encoder.c
-index f27f81e..d166554 100644
---- a/drivers/input/misc/rotary_encoder.c
-+++ b/drivers/input/misc/rotary_encoder.c
-@@ -26,6 +26,7 @@
- #include <linux/of.h>
- #include <linux/of_platform.h>
- #include <linux/of_gpio.h>
-+#include <linux/pm.h>
-
- #define DRV_NAME "rotary-encoder"
-
-@@ -180,6 +181,8 @@ static struct rotary_encoder_platform_data *rotary_encoder_parse_dt(struct devic
- "rotary-encoder,rollover", NULL);
- pdata->half_period = !!of_get_property(np,
- "rotary-encoder,half-period", NULL);
-+ pdata->wakeup_source = !!of_get_property(np,
-+ "wakeup-source", NULL);
-
- return pdata;
- }
-@@ -280,6 +283,8 @@ static int rotary_encoder_probe(struct platform_device *pdev)
- goto exit_free_irq_b;
- }
-
-+ device_init_wakeup(&pdev->dev, pdata->wakeup_source);
-+
- platform_set_drvdata(pdev, encoder);
-
- return 0;
-@@ -306,6 +311,8 @@ static int rotary_encoder_remove(struct platform_device *pdev)
- struct rotary_encoder *encoder = platform_get_drvdata(pdev);
- const struct rotary_encoder_platform_data *pdata = encoder->pdata;
-
-+ device_init_wakeup(&pdev->dev, false);
-+
- free_irq(encoder->irq_a, encoder);
- free_irq(encoder->irq_b, encoder);
- gpio_free(pdata->gpio_a);
-@@ -320,11 +327,41 @@ static int rotary_encoder_remove(struct platform_device *pdev)
- return 0;
- }
-
-+#ifdef CONFIG_PM_SLEEP
-+static int rotary_encoder_suspend(struct device *dev)
-+{
-+ struct rotary_encoder *encoder = dev_get_drvdata(dev);
-+
-+ if (device_may_wakeup(dev)) {
-+ enable_irq_wake(encoder->irq_a);
-+ enable_irq_wake(encoder->irq_b);
-+ }
-+
-+ return 0;
-+}
-+
-+static int rotary_encoder_resume(struct device *dev)
-+{
-+ struct rotary_encoder *encoder = dev_get_drvdata(dev);
-+
-+ if (device_may_wakeup(dev)) {
-+ disable_irq_wake(encoder->irq_a);
-+ disable_irq_wake(encoder->irq_b);
-+ }
-+
-+ return 0;
-+}
-+#endif
-+
-+static SIMPLE_DEV_PM_OPS(rotary_encoder_pm_ops,
-+ rotary_encoder_suspend, rotary_encoder_resume);
-+
- static struct platform_driver rotary_encoder_driver = {
- .probe = rotary_encoder_probe,
- .remove = rotary_encoder_remove,
- .driver = {
- .name = DRV_NAME,
-+ .pm = &rotary_encoder_pm_ops,
- .of_match_table = of_match_ptr(rotary_encoder_of_match),
- }
- };
-diff --git a/include/linux/rotary_encoder.h b/include/linux/rotary_encoder.h
-index 3f594dc..b33f2d2 100644
---- a/include/linux/rotary_encoder.h
-+++ b/include/linux/rotary_encoder.h
-@@ -11,6 +11,7 @@ struct rotary_encoder_platform_data {
- bool relative_axis;
- bool rollover;
- bool half_period;
-+ bool wakeup_source;
- };
-
- #endif /* __ROTARY_ENCODER_H__ */
-
-commit 648b15cb79e90d80f7b53d0184bdb14132a03754
-Author: Ben Gamari <bgamari.foss@gmail.com>
-Date: Tue Oct 13 23:37:28 2015 -0700
-
- Input: rotary-encoder - use of_property_read_bool
-
- This commit makes uses of_property_read_bool() to read
- boolean properties. This is just cosmetic cleanup.
-
- Signed-off-by: Ben Gamari <bgamari.foss@gmail.com>
- Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
-
-diff --git a/drivers/input/misc/rotary_encoder.c b/drivers/input/misc/rotary_encoder.c
-index d166554..962f9e8 100644
---- a/drivers/input/misc/rotary_encoder.c
-+++ b/drivers/input/misc/rotary_encoder.c
-@@ -175,14 +175,12 @@ static struct rotary_encoder_platform_data *rotary_encoder_parse_dt(struct devic
- pdata->gpio_b = of_get_gpio_flags(np, 1, &flags);
- pdata->inverted_b = flags & OF_GPIO_ACTIVE_LOW;
-
-- pdata->relative_axis = !!of_get_property(np,
-- "rotary-encoder,relative-axis", NULL);
-- pdata->rollover = !!of_get_property(np,
-- "rotary-encoder,rollover", NULL);
-- pdata->half_period = !!of_get_property(np,
-- "rotary-encoder,half-period", NULL);
-- pdata->wakeup_source = !!of_get_property(np,
-- "wakeup-source", NULL);
-+ pdata->relative_axis =
-+ of_property_read_bool(np, "rotary-encoder,relative-axis");
-+ pdata->rollover = of_property_read_bool(np, "rotary-encoder,rollover");
-+ pdata->half_period =
-+ of_property_read_bool(np, "rotary-encoder,half-period");
-+ pdata->wakeup_source = of_property_read_bool(np, "wakeup-source");
-
- return pdata;
- }
-
-commit 3a341a4c30d427fd05617087db1564a595f65093
-Author: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
-Date: Tue Oct 13 23:39:50 2015 -0700
-
- Input: rotary-encoder - add support for quarter-period mode
-
- Some encoders have both outputs low in stable states, others also have
- a stable state with both outputs high (half-period mode) and some have
- a stable state in all steps (quarter-period mode). The driver used to
- support the former states and with this change it can also support the
- later.
-
- This commit also deprecates the 'half-period' property and introduces
- a new property 'steps-per-period'. This property specifies the
- number of steps (stable states) produced by the rotary encoder
- for each GPIO period.
-
- Signed-off-by: Guido Martínez <guido@vanguardiasur.com.ar>
- Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
- Acked-by: Rob Herring <robh@kernel.org>
- Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
-
-diff --git a/Documentation/devicetree/bindings/input/rotary-encoder.txt b/Documentation/devicetree/bindings/input/rotary-encoder.txt
-index 891ddba..de99cbb 100644
---- a/Documentation/devicetree/bindings/input/rotary-encoder.txt
-+++ b/Documentation/devicetree/bindings/input/rotary-encoder.txt
-@@ -14,9 +14,18 @@ Optional properties:
- device, hence no steps need to be passed.
- - rotary-encoder,rollover: Automatic rollove when the rotary value becomes
- greater than the specified steps or smaller than 0. For absolute axis only.
--- rotary-encoder,half-period: Makes the driver work on half-period mode.
-+- rotary-encoder,steps-per-period: Number of steps (stable states) per period.
-+ The values have the following meaning:
-+ 1: Full-period mode (default)
-+ 2: Half-period mode
-+ 4: Quarter-period mode
- - wakeup-source: Boolean, rotary encoder can wake up the system.
-
-+Deprecated properties:
-+- rotary-encoder,half-period: Makes the driver work on half-period mode.
-+ This property is deprecated. Instead, a 'steps-per-period ' value should
-+ be used, such as "rotary-encoder,steps-per-period = <2>".
-+
- See Documentation/input/rotary-encoder.txt for more information.
-
- Example:
-diff --git a/Documentation/input/rotary-encoder.txt b/Documentation/input/rotary-encoder.txt
-index bddbee1..46a74f0 100644
---- a/Documentation/input/rotary-encoder.txt
-+++ b/Documentation/input/rotary-encoder.txt
-@@ -9,8 +9,9 @@ peripherals with two wires. The outputs are phase-shifted by 90 degrees
- and by triggering on falling and rising edges, the turn direction can
- be determined.
-
--Some encoders have both outputs low in stable states, whereas others also have
--a stable state with both outputs high (half-period mode).
-+Some encoders have both outputs low in stable states, others also have
-+a stable state with both outputs high (half-period mode) and some have
-+a stable state in all steps (quarter-period mode).
-
- The phase diagram of these two outputs look like this:
-
-@@ -32,6 +33,9 @@ The phase diagram of these two outputs look like this:
- |<-->|
- one step (half-period mode)
-
-+ |<>|
-+ one step (quarter-period mode)
-+
- For more information, please see
- https://en.wikipedia.org/wiki/Rotary_encoder
-
-diff --git a/drivers/input/misc/rotary_encoder.c b/drivers/input/misc/rotary_encoder.c
-index 962f9e8..8aee719 100644
---- a/drivers/input/misc/rotary_encoder.c
-+++ b/drivers/input/misc/rotary_encoder.c
-@@ -143,6 +143,55 @@ static irqreturn_t rotary_encoder_half_period_irq(int irq, void *dev_id)
- return IRQ_HANDLED;
- }
-
-+static irqreturn_t rotary_encoder_quarter_period_irq(int irq, void *dev_id)
-+{
-+ struct rotary_encoder *encoder = dev_id;
-+ unsigned char sum;
-+ int state;
-+
-+ state = rotary_encoder_get_state(encoder->pdata);
-+
-+ /*
-+ * We encode the previous and the current state using a byte.
-+ * The previous state in the MSB nibble, the current state in the LSB
-+ * nibble. Then use a table to decide the direction of the turn.
-+ */
-+ sum = (encoder->last_stable << 4) + state;
-+ switch (sum) {
-+ case 0x31:
-+ case 0x10:
-+ case 0x02:
-+ case 0x23:
-+ encoder->dir = 0; /* clockwise */
-+ break;
-+
-+ case 0x13:
-+ case 0x01:
-+ case 0x20:
-+ case 0x32:
-+ encoder->dir = 1; /* counter-clockwise */
-+ break;
-+
-+ default:
-+ /*
-+ * Ignore all other values. This covers the case when the
-+ * state didn't change (a spurious interrupt) and the
-+ * cases where the state changed by two steps, making it
-+ * impossible to tell the direction.
-+ *
-+ * In either case, don't report any event and save the
-+ * state for later.
-+ */
-+ goto out;
-+ }
-+
-+ rotary_encoder_report_event(encoder);
-+
-+out:
-+ encoder->last_stable = state;
-+ return IRQ_HANDLED;
-+}
-+
- #ifdef CONFIG_OF
- static const struct of_device_id rotary_encoder_of_match[] = {
- { .compatible = "rotary-encoder", },
-@@ -157,6 +206,7 @@ static struct rotary_encoder_platform_data *rotary_encoder_parse_dt(struct devic
- struct device_node *np = dev->of_node;
- struct rotary_encoder_platform_data *pdata;
- enum of_gpio_flags flags;
-+ int error;
-
- if (!of_id || !np)
- return NULL;
-@@ -178,8 +228,23 @@ static struct rotary_encoder_platform_data *rotary_encoder_parse_dt(struct devic
- pdata->relative_axis =
- of_property_read_bool(np, "rotary-encoder,relative-axis");
- pdata->rollover = of_property_read_bool(np, "rotary-encoder,rollover");
-- pdata->half_period =
-- of_property_read_bool(np, "rotary-encoder,half-period");
-+
-+ error = of_property_read_u32(np, "rotary-encoder,steps-per-period",
-+ &pdata->steps_per_period);
-+ if (error) {
-+ /*
-+ * The 'half-period' property has been deprecated, you must use
-+ * 'steps-per-period' and set an appropriate value, but we still
-+ * need to parse it to maintain compatibility.
-+ */
-+ if (of_property_read_bool(np, "rotary-encoder,half-period")) {
-+ pdata->steps_per_period = 2;
-+ } else {
-+ /* Fallback to one step per period behavior */
-+ pdata->steps_per_period = 1;
-+ }
-+ }
-+
- pdata->wakeup_source = of_property_read_bool(np, "wakeup-source");
-
- return pdata;
-@@ -251,12 +316,23 @@ static int rotary_encoder_probe(struct platform_device *pdev)
- encoder->irq_a = gpio_to_irq(pdata->gpio_a);
- encoder->irq_b = gpio_to_irq(pdata->gpio_b);
-
-- /* request the IRQs */
-- if (pdata->half_period) {
-+ switch (pdata->steps_per_period) {
-+ case 4:
-+ handler = &rotary_encoder_quarter_period_irq;
-+ encoder->last_stable = rotary_encoder_get_state(pdata);
-+ break;
-+ case 2:
- handler = &rotary_encoder_half_period_irq;
- encoder->last_stable = rotary_encoder_get_state(pdata);
-- } else {
-+ break;
-+ case 1:
- handler = &rotary_encoder_irq;
-+ break;
-+ default:
-+ dev_err(dev, "'%d' is not a valid steps-per-period value\n",
-+ pdata->steps_per_period);
-+ err = -EINVAL;
-+ goto exit_free_gpio_b;
- }
-
- err = request_irq(encoder->irq_a, handler,
-diff --git a/include/linux/rotary_encoder.h b/include/linux/rotary_encoder.h
-index b33f2d2..fe3dc64 100644
---- a/include/linux/rotary_encoder.h
-+++ b/include/linux/rotary_encoder.h
-@@ -8,9 +8,9 @@ struct rotary_encoder_platform_data {
- unsigned int gpio_b;
- unsigned int inverted_a;
- unsigned int inverted_b;
-+ unsigned int steps_per_period;
- bool relative_axis;
- bool rollover;
-- bool half_period;
- bool wakeup_source;
- };
-
-
commit 0f940be407b87ca629fa2f3085f613483a075b16
Author: Timo Teräs <timo.teras@iki.fi>
Date: Fri Jan 15 15:24:14 2016 +0200
diff --git a/main/linux-rpi/rpi-cirrus-4.1.y-20151218.patch b/main/linux-rpi/rpi-cirrus-4.4.y-20160327.patch
index 06ab4c3ede..d430efa34d 100644
--- a/main/linux-rpi/rpi-cirrus-4.1.y-20151218.patch
+++ b/main/linux-rpi/rpi-cirrus-4.4.y-20160327.patch
@@ -1,11 +1,11 @@
diff --git a/Documentation/devicetree/bindings/mfd/arizona.txt b/Documentation/devicetree/bindings/mfd/arizona.txt
-index 7665aa9..ec7979e 100644
+index 18be0cb..4b3510a 100644
--- a/Documentation/devicetree/bindings/mfd/arizona.txt
+++ b/Documentation/devicetree/bindings/mfd/arizona.txt
-@@ -42,6 +42,23 @@ Optional properties:
+@@ -44,6 +44,23 @@ Required properties:
+ Optional properties:
- wlf,reset : GPIO specifier for the GPIO controlling /RESET
- - wlf,ldoena : GPIO specifier for the GPIO controlling LDOENA
+ - wlf,clk32k-src : set input source for codec 32kHz clock.
+ 0 = default, 1 = MCLK1, 2 = MCLK2, 3 = None
+
@@ -26,7 +26,7 @@ index 7665aa9..ec7979e 100644
- wlf,gpio-defaults : A list of GPIO configuration register values. Defines
for the appropriate values can found in <dt-bindings/mfd/arizona.txt>. If
-@@ -49,6 +66,10 @@ Optional properties:
+@@ -51,6 +68,10 @@ Optional properties:
a value that is out of range for a 16 bit register then the chip default
will be used. If present exactly five values must be specified.
@@ -37,7 +37,7 @@ index 7665aa9..ec7979e 100644
- wlf,inmode : A list of INn_MODE register values, where n is the number
of input signals. Valid values are 0 (Differential), 1 (Single-ended) and
2 (Digital Microphone). If absent, INn_MODE registers set to 0 by default.
-@@ -85,6 +106,19 @@ codec: wm5102@1a {
+@@ -87,6 +108,19 @@ codec: wm5102@1a {
gpio-controller;
#gpio-cells = <2>;
@@ -57,7 +57,7 @@ index 7665aa9..ec7979e 100644
wlf,gpio-defaults = <
ARIZONA_GP_FN_TXLRCLK
ARIZONA_GP_DEFAULT
-@@ -92,4 +126,6 @@ codec: wm5102@1a {
+@@ -94,4 +128,6 @@ codec: wm5102@1a {
ARIZONA_GP_DEFAULT
ARIZONA_GP_DEFAULT
>;
@@ -65,17 +65,17 @@ index 7665aa9..ec7979e 100644
+ wlf,dmic-ref = <0 0 1 0>;
};
diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile
-index 1a60e9c..ab63db7 100644
+index 4c3db73..b38e598 100644
--- a/arch/arm/boot/dts/overlays/Makefile
+++ b/arch/arm/boot/dts/overlays/Makefile
-@@ -44,6 +44,7 @@ dtb-$(RPI_DT_OVERLAYS) += pwm-overlay.dtb
- dtb-$(RPI_DT_OVERLAYS) += pwm-2chan-overlay.dtb
- dtb-$(RPI_DT_OVERLAYS) += raspidac3-overlay.dtb
- dtb-$(RPI_DT_OVERLAYS) += rpi-backlight-overlay.dtb
-+dtb-$(RPI_DT_OVERLAYS) += rpi-cirrus-wm5102-overlay.dtb
- dtb-$(RPI_DT_OVERLAYS) += rpi-dac-overlay.dtb
- dtb-$(RPI_DT_OVERLAYS) += rpi-display-overlay.dtb
- dtb-$(RPI_DT_OVERLAYS) += rpi-ft5406-overlay.dtb
+@@ -52,6 +52,7 @@ dtbo-$(RPI_DT_OVERLAYS) += pwm-2chan.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += qca7000.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += raspidac3.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += rpi-backlight.dtbo
++dtbo-$(RPI_DT_OVERLAYS) += rpi-cirrus-wm5102.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += rpi-dac.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += rpi-display.dtbo
+ dtbo-$(RPI_DT_OVERLAYS) += rpi-ft5406.dtbo
diff --git a/arch/arm/boot/dts/overlays/rpi-cirrus-wm5102-overlay.dts b/arch/arm/boot/dts/overlays/rpi-cirrus-wm5102-overlay.dts
new file mode 100644
index 0000000..3cb63a5
@@ -221,10 +221,10 @@ index 0000000..3cb63a5
+ };
+};
diff --git a/arch/arm/configs/bcm2709_defconfig b/arch/arm/configs/bcm2709_defconfig
-index d06b9c8..37c18ac 100644
+index b63632d..ee84684 100644
--- a/arch/arm/configs/bcm2709_defconfig
+++ b/arch/arm/configs/bcm2709_defconfig
-@@ -641,6 +641,9 @@ CONFIG_STMPE_SPI=y
+@@ -645,6 +645,9 @@ CONFIG_STMPE_SPI=y
CONFIG_MFD_ARIZONA_I2C=m
CONFIG_MFD_ARIZONA_SPI=m
CONFIG_MFD_WM5102=y
@@ -234,7 +234,7 @@ index d06b9c8..37c18ac 100644
CONFIG_MEDIA_SUPPORT=m
CONFIG_MEDIA_CAMERA_SUPPORT=y
CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
-@@ -847,6 +850,7 @@ CONFIG_SND_BCM2708_SOC_RPI_DAC=m
+@@ -853,6 +856,7 @@ CONFIG_SND_BCM2708_SOC_RPI_DAC=m
CONFIG_SND_BCM2708_SOC_RPI_PROTO=m
CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m
CONFIG_SND_BCM2708_SOC_RASPIDAC3=m
@@ -243,10 +243,10 @@ index d06b9c8..37c18ac 100644
CONFIG_SND_SOC_WM8804_I2C=m
CONFIG_SND_SIMPLE_CARD=m
diff --git a/arch/arm/configs/bcmrpi_defconfig b/arch/arm/configs/bcmrpi_defconfig
-index e04f122..8c8e512 100644
+index e720c74..b7d8ad8 100644
--- a/arch/arm/configs/bcmrpi_defconfig
+++ b/arch/arm/configs/bcmrpi_defconfig
-@@ -634,6 +634,9 @@ CONFIG_STMPE_SPI=y
+@@ -637,6 +637,9 @@ CONFIG_STMPE_SPI=y
CONFIG_MFD_ARIZONA_I2C=m
CONFIG_MFD_ARIZONA_SPI=m
CONFIG_MFD_WM5102=y
@@ -256,7 +256,7 @@ index e04f122..8c8e512 100644
CONFIG_MEDIA_SUPPORT=m
CONFIG_MEDIA_CAMERA_SUPPORT=y
CONFIG_MEDIA_ANALOG_TV_SUPPORT=y
-@@ -840,6 +843,7 @@ CONFIG_SND_BCM2708_SOC_RPI_DAC=m
+@@ -845,6 +848,7 @@ CONFIG_SND_BCM2708_SOC_RPI_DAC=m
CONFIG_SND_BCM2708_SOC_RPI_PROTO=m
CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC=m
CONFIG_SND_BCM2708_SOC_RASPIDAC3=m
@@ -264,229 +264,89 @@ index e04f122..8c8e512 100644
CONFIG_SND_SOC_ADAU1701=m
CONFIG_SND_SOC_WM8804_I2C=m
CONFIG_SND_SIMPLE_CARD=m
-diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
-index 1b9c3be..39b6698 100644
---- a/arch/arm/mach-bcm2708/bcm2708.c
-+++ b/arch/arm/mach-bcm2708/bcm2708.c
-@@ -62,10 +62,17 @@
- #include "bcm2708.h"
- #include "armctrl.h"
-
-+#include <linux/mfd/arizona/pdata.h>
-+#include <linux/regulator/machine.h>
-+#include <linux/regulator/fixed.h>
+diff --git a/drivers/dma/bcm2835-dma.c b/drivers/dma/bcm2835-dma.c
+index 985019b..77be442 100644
+--- a/drivers/dma/bcm2835-dma.c
++++ b/drivers/dma/bcm2835-dma.c
+@@ -144,12 +144,6 @@ struct bcm2835_desc {
+ */
+ #define MAX_LITE_TRANSFER (SZ_64K - 4)
+
+-/*
+- * Transfers larger than 32k cause issues with the bcm2708-i2s driver,
+- * so limit transfer size to 32k as bcm2708-dmaengine did.
+- */
+-#define MAX_CYCLIC_LITE_TRANSFER SZ_32K
+-
+ static inline struct bcm2835_dmadev *to_bcm2835_dma_dev(struct dma_device *d)
+ {
+ return container_of(d, struct bcm2835_dmadev, ddev);
+@@ -385,6 +379,15 @@ static struct dma_async_tx_descriptor *bcm2835_dma_prep_dma_cyclic(
+ unsigned int frame, max_size;
+ int i;
+
++ if (!buf_len || !period_len)
++ return NULL;
++
++ if (buf_len % period_len) {
++ dev_err(chan->device->dev,
++ "Buffer length should be a multiple of period\n");
++ return NULL;
++ }
+
- #ifdef CONFIG_BCM_VC_CMA
- #include <linux/broadcom/vc_cma.h>
- #endif
-
-+#define GPIO_WM5102_IRQ 27
-+#define GPIO_WM5102_RST 17
-+#define GPIO_WM5102_LDOEN 22
-
- /* Effectively we have an IOMMU (ARM<->VideoCore map) that is set up to
- * give us IO access only to 64Mbytes of physical memory (26 bits). We could
-@@ -587,7 +594,9 @@ static struct spi_board_info bcm2708_spi_devices[] = {
- .bus_num = 0,
- .chip_select = 0,
- .mode = SPI_MODE_0,
-- }, {
-+ },
-+#if !defined (CONFIG_SND_BCM2708_SOC_RPI_CODEC_WSP_MODULE) && !defined (CONFIG_SND_BCM2708_SOC_RPI_CODEC_WSP)
-+ {
- .modalias = "spidev",
- .max_speed_hz = 500000,
- .bus_num = 0,
-@@ -595,6 +604,7 @@ static struct spi_board_info bcm2708_spi_devices[] = {
- .mode = SPI_MODE_0,
+ /* Grab configuration */
+ if (!is_slave_direction(direction)) {
+ dev_err(chan->device->dev, "%s: bad direction?\n", __func__);
+@@ -410,6 +413,18 @@ static struct dma_async_tx_descriptor *bcm2835_dma_prep_dma_cyclic(
+ return NULL;
}
- #endif
-+#endif
- };
- #endif
-
-@@ -663,6 +673,123 @@ static struct platform_device bcm2708_i2s_device = {
- };
- #endif
-+#if defined(CONFIG_REGULATOR_FIXED_VOLTAGE_MODULE) || defined(CONFIG_REGULATOR_FIXED_VOLTAGE)
-+static struct regulator_consumer_supply dc1v8_consumers[] = {
-+ REGULATOR_SUPPLY("LDOVDD", "spi0.1"),
-+ REGULATOR_SUPPLY("AVDD", "spi0.1"),
-+ REGULATOR_SUPPLY("DBVDD1", "spi0.1"),
-+ REGULATOR_SUPPLY("CPVDD", "spi0.1"),
-+ REGULATOR_SUPPLY("DBVDD2", "spi0.1"),
-+ REGULATOR_SUPPLY("DBVDD3", "spi0.1"),
-+ REGULATOR_SUPPLY("PVDD", "1-003a"),
-+ REGULATOR_SUPPLY("DVDD", "1-003a"),
-+};
-+
-+static struct regulator_init_data dc1v8_data = {
-+ .constraints = {
-+ .always_on = 1,
-+ },
-+ .num_consumer_supplies = ARRAY_SIZE(dc1v8_consumers),
-+ .consumer_supplies = dc1v8_consumers,
-+};
-+
-+static struct fixed_voltage_config dc1v8vdd_pdata = {
-+ .supply_name = "DC_1V8",
-+ .microvolts = 1800000,
-+ .init_data = &dc1v8_data,
-+ .gpio = -1,
-+};
-+
-+static struct platform_device dc1v8_device = {
-+ .name = "reg-fixed-voltage",
-+ .id = 0,
-+ .dev = {
-+ .platform_data = &dc1v8vdd_pdata,
-+ },
-+};
-+
-+static struct regulator_consumer_supply dc5v_consumers[] = {
-+ REGULATOR_SUPPLY("SPKVDDL", "spi0.1"),
-+ REGULATOR_SUPPLY("SPKVDDR", "spi0.1"),
-+};
-+
-+static struct regulator_init_data dc5v_data = {
-+ .constraints = {
-+ .always_on = 1,
-+ },
-+ .num_consumer_supplies = ARRAY_SIZE(dc5v_consumers),
-+ .consumer_supplies = dc5v_consumers,
-+};
-+
-+static struct fixed_voltage_config dc5vvdd_pdata = {
-+ .supply_name = "DC_5V",
-+ .microvolts = 5000000,
-+ .init_data = &dc5v_data,
-+ .gpio = -1,
-+};
-+
-+static struct platform_device dc5v_device = {
-+ .name = "reg-fixed-voltage",
-+ .id = 1,
-+ .dev = {
-+ .platform_data = &dc5vvdd_pdata,
-+ },
-+};
-+#endif
-+
-+#if defined(CONFIG_SND_BCM2708_SOC_RPI_CODEC_WSP_MODULE) || defined(CONFIG_SND_BCM2708_SOC_RPI_CODEC_WSP)
-+#include <linux/mfd/arizona/registers.h>
-+
-+static struct platform_device snd_rpi_wsp_device = {
-+ .name = "snd-rpi-wsp",
-+ .id = 0,
-+ .num_resources = 0,
-+};
-+
-+static struct arizona_micd_config wm5102_micd[] = {
-+ { 0, 1, 0 },
-+};
-+
-+static struct arizona_pdata snd_rpi_wsp_spi_platform_data = {
-+ .reset = GPIO_WM5102_RST,
-+ .ldoena = GPIO_WM5102_LDOEN,
-+ .irq_flags = IRQF_TRIGGER_RISING,
-+ .gpio_defaults = {
-+ [2] = 0x04, /* OPCLK */
-+ [3] = 0x3d, /* ASYNC OPCLK */
-+ },
-+ .micd_configs = wm5102_micd,
-+ .num_micd_configs = ARRAY_SIZE(wm5102_micd),
-+ .dmic_ref = {
-+ [1] = ARIZONA_DMIC_MICBIAS2,
-+ },
-+ .inmode = {
-+ [1] = ARIZONA_INMODE_DMIC,
-+ [2] = ARIZONA_INMODE_SE,
-+ },
-+ .clk32k_src = ARIZONA_32KZ_NONE,
-+ .irq_gpio = GPIO_WM5102_IRQ,
-+};
++ if (c->ch >= 8) /* LITE channel */
++ max_size = MAX_LITE_TRANSFER;
++ else
++ max_size = MAX_NORMAL_TRANSFER;
+
-+static struct spi_board_info __initdata snd_rpi_wsp_spi_devices[] = {
-+ {
-+ .modalias = "wm5102",
-+ .platform_data = &snd_rpi_wsp_spi_platform_data,
-+ .max_speed_hz = 500000,
-+ .bus_num = 0,
-+ .chip_select = 1,
-+ .mode = SPI_MODE_0,
++ if (period_len > max_size) {
++ dev_err(chan->device->dev,
++ "Period length %d larger than maximum %d\n",
++ period_len, max_size);
++ return NULL;
+ }
-+};
-+
-+static struct i2c_board_info __initdata snd_rpi_wsp_i2c_devices[] = {
-+ {
-+ I2C_BOARD_INFO("wm8804", 0x3A),
-+ },
-+};
+
-+#endif
-+
- #if defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) || defined(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC_MODULE)
- static struct platform_device snd_hifiberry_dac_device = {
- .name = "snd-hifiberry-dac",
-@@ -772,6 +899,9 @@ int __init bcm_register_device(struct platform_device *pdev)
- #define i2c_register_board_info_dt(busnum, info, n) \
- if (!use_dt) i2c_register_board_info(busnum, info, n)
-
-+#define spi_register_board_info_dt(info, n) \
-+ if (!use_dt) spi_register_board_info(info, n)
-+
- int calc_rsts(int partition)
- {
- return PM_PASSWORD |
-@@ -965,6 +1095,18 @@ void __init bcm2708_init(void)
- i2c_register_board_info_dt(1, snd_pcm512x_i2c_devices, ARRAY_SIZE(snd_pcm512x_i2c_devices));
- #endif
-
-+#if defined(CONFIG_REGULATOR_FIXED_VOLTAGE_MODULE) || defined(CONFIG_REGULATOR_FIXED_VOLTAGE)
-+ bcm_register_device_dt(&dc1v8_device);
-+ bcm_register_device_dt(&dc5v_device);
-+#endif
-+
-+#if defined(CONFIG_SND_BCM2708_SOC_RPI_CODEC_WSP_MODULE) || defined(CONFIG_SND_BCM2708_SOC_RPI_CODEC_WSP)
-+ bcm_register_device_dt(&snd_rpi_wsp_device);
-+ spi_register_board_info_dt(snd_rpi_wsp_spi_devices, ARRAY_SIZE(snd_rpi_wsp_spi_devices));
-+ i2c_register_board_info_dt(1, snd_rpi_wsp_i2c_devices,
-+ ARRAY_SIZE(snd_rpi_wsp_i2c_devices));
-+#endif
-+
- if (!use_dt) {
- for (i = 0; i < ARRAY_SIZE(amba_devs); i++) {
- struct amba_device *d = amba_devs[i];
-diff --git a/drivers/dma/bcm2708-dmaengine.c b/drivers/dma/bcm2708-dmaengine.c
-index 85ce18b..abf8763 100644
---- a/drivers/dma/bcm2708-dmaengine.c
-+++ b/drivers/dma/bcm2708-dmaengine.c
-@@ -421,7 +421,12 @@ struct bcm2835_desc {
- #define BCM2835_DMA_CHAN(n) ((n) << 8) /* Base address */
- #define BCM2835_DMA_CHANIO(base, n) ((base) + BCM2835_DMA_CHAN(n))
-
--#define MAX_LITE_TRANSFER 32768
-+/*
-+ * Max length on a Lite channel is 65535 bytes.
-+ * DMA handles byte-enables on SDRAM reads and writes even on 128-bit accesses,
-+ * but byte-enables don't exist on peripheral addresses, so align to 32-bit.
-+ */
-+#define MAX_LITE_TRANSFER (SZ_64K - 4)
- #define MAX_NORMAL_TRANSFER 1073741824
-
- static inline struct bcm2835_dmadev *to_bcm2835_dma_dev(struct dma_device *d)
-@@ -710,7 +715,7 @@ static struct dma_async_tx_descriptor *bcm2835_dma_prep_dma_cyclic(
- max_size = MAX_NORMAL_TRANSFER;
- period_len = min(period_len, max_size);
-
-- d->frames = (buf_len-1) / period_len + 1;
-+ d->frames = DIV_ROUND_UP(buf_len, period_len);
+ /* Now allocate and setup the descriptor. */
+ d = kzalloc(sizeof(*d), GFP_NOWAIT);
+ if (!d)
+@@ -417,12 +432,8 @@ static struct dma_async_tx_descriptor *bcm2835_dma_prep_dma_cyclic(
+
+ d->c = c;
+ d->dir = direction;
+- if (c->ch >= 8) /* LITE channel */
+- max_size = MAX_CYCLIC_LITE_TRANSFER;
+- else
+- max_size = MAX_NORMAL_TRANSFER;
+- period_len = min(period_len, max_size);
+- d->frames = (buf_len - 1) / (period_len + 1);
++ d->frames = buf_len / period_len;
++ d->size = buf_len;
+
+ d->cb_list = kcalloc(d->frames, sizeof(*d->cb_list), GFP_KERNEL);
+ if (!d->cb_list) {
+@@ -470,12 +481,7 @@ static struct dma_async_tx_descriptor *bcm2835_dma_prep_dma_cyclic(
+ BCM2835_DMA_PER_MAP(c->dreq);
+
+ /* Length of a frame */
+- if (frame != d->frames - 1)
+- control_block->length = period_len;
+- else
+- control_block->length = buf_len - (d->frames - 1) *
+- period_len;
+- d->size += control_block->length;
++ control_block->length = period_len;
- /* Allocate memory for control blocks */
- d->control_block_size = d->frames * sizeof(struct bcm2835_dma_cb);
+ /*
+ * Next block is the next frame.
diff --git a/drivers/mfd/arizona-core.c b/drivers/mfd/arizona-core.c
-index 6523903..4211644 100644
+index d474732..a899b57 100644
--- a/drivers/mfd/arizona-core.c
+++ b/drivers/mfd/arizona-core.c
@@ -16,6 +16,7 @@
@@ -497,100 +357,8 @@ index 6523903..4211644 100644
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/of_gpio.h>
-@@ -94,6 +95,91 @@ int arizona_clk32k_disable(struct arizona *arizona)
- }
- EXPORT_SYMBOL_GPL(arizona_clk32k_disable);
-
-+int arizona_dvfs_up(struct arizona *arizona, unsigned int flags)
-+{
-+ unsigned int new_flags;
-+ int ret = 0;
-+
-+ mutex_lock(&arizona->subsys_max_lock);
-+
-+ new_flags = arizona->subsys_max_rq | flags;
-+
-+ if (arizona->subsys_max_rq != new_flags) {
-+ switch (arizona->type) {
-+ case WM5102:
-+ case WM8997:
-+ ret = regulator_set_voltage(arizona->dcvdd,
-+ 1800000, 1800000);
-+ if (ret != 0) {
-+ dev_err(arizona->dev,
-+ "Failed to set DCVDD (DVFS up): %d\n",
-+ ret);
-+ goto err;
-+ }
-+
-+ ret = regmap_update_bits(arizona->regmap,
-+ ARIZONA_DYNAMIC_FREQUENCY_SCALING_1,
-+ ARIZONA_SUBSYS_MAX_FREQ, 1);
-+ if (ret != 0) {
-+ dev_err(arizona->dev,
-+ "Failed to enable subsys max: %d\n",
-+ ret);
-+ regulator_set_voltage(arizona->dcvdd,
-+ 1200000, 1800000);
-+ goto err;
-+ }
-+ break;
-+
-+ default:
-+ break;
-+ }
-+
-+ arizona->subsys_max_rq = new_flags;
-+ }
-+err:
-+ mutex_unlock(&arizona->subsys_max_lock);
-+ return ret;
-+}
-+EXPORT_SYMBOL_GPL(arizona_dvfs_up);
-+
-+int arizona_dvfs_down(struct arizona *arizona, unsigned int flags)
-+{
-+ int ret = 0;
-+
-+ mutex_lock(&arizona->subsys_max_lock);
-+
-+ arizona->subsys_max_rq &= ~flags;
-+
-+ if (arizona->subsys_max_rq == 0) {
-+ switch (arizona->type) {
-+ case WM5102:
-+ case WM8997:
-+ ret = regmap_update_bits(arizona->regmap,
-+ ARIZONA_DYNAMIC_FREQUENCY_SCALING_1,
-+ ARIZONA_SUBSYS_MAX_FREQ, 0);
-+ if (ret != 0)
-+ dev_err(arizona->dev,
-+ "Failed to disable subsys max: %d\n",
-+ ret);
-+
-+ ret = regulator_set_voltage(arizona->dcvdd,
-+ 1200000, 1800000);
-+ if (ret != 0)
-+ dev_err(arizona->dev,
-+ "Failed to set DCVDD (DVFS down): %d\n",
-+ ret);
-+ break;
-+
-+ default:
-+ break;
-+ }
-+ }
-+
-+ mutex_unlock(&arizona->subsys_max_lock);
-+ return ret;
-+}
-+EXPORT_SYMBOL_GPL(arizona_dvfs_down);
-+
- static irqreturn_t arizona_clkgen_err(int irq, void *data)
- {
- struct arizona *arizona = data;
-@@ -330,6 +416,20 @@ err_fll:
- return err;
+@@ -460,6 +461,20 @@ static int wm5102_clear_write_sequencer(struct arizona *arizona)
+ return 0;
}
+static int arizona_dcvdd_notify(struct notifier_block *nb,
@@ -608,9 +376,9 @@ index 6523903..4211644 100644
+}
+
#ifdef CONFIG_PM
- static int arizona_runtime_resume(struct device *dev)
+ static int arizona_isolate_dcvdd(struct arizona *arizona)
{
-@@ -519,6 +619,154 @@ int arizona_of_get_named_gpio(struct arizona *arizona, const char *prop,
+@@ -800,6 +815,154 @@ int arizona_of_get_named_gpio(struct arizona *arizona, const char *prop,
}
EXPORT_SYMBOL_GPL(arizona_of_get_named_gpio);
@@ -765,7 +533,7 @@ index 6523903..4211644 100644
static int arizona_of_get_core_pdata(struct arizona *arizona)
{
struct arizona_pdata *pdata = &arizona->pdata;
-@@ -552,6 +800,15 @@ static int arizona_of_get_core_pdata(struct arizona *arizona)
+@@ -833,6 +996,15 @@ static int arizona_of_get_core_pdata(struct arizona *arizona)
ret);
}
@@ -780,8 +548,8 @@ index 6523903..4211644 100644
+
of_property_for_each_u32(arizona->dev->of_node, "wlf,inmode", prop,
cur, val) {
- if (count == ARRAY_SIZE(arizona->pdata.inmode))
-@@ -571,6 +828,9 @@ static int arizona_of_get_core_pdata(struct arizona *arizona)
+ if (count == ARRAY_SIZE(pdata->inmode))
+@@ -852,6 +1024,9 @@ static int arizona_of_get_core_pdata(struct arizona *arizona)
count++;
}
@@ -791,15 +559,7 @@ index 6523903..4211644 100644
return 0;
}
-@@ -670,6 +930,7 @@ int arizona_dev_init(struct arizona *arizona)
-
- dev_set_drvdata(arizona->dev, arizona);
- mutex_init(&arizona->clk_lock);
-+ mutex_init(&arizona->subsys_max_lock);
-
- if (dev_get_platdata(arizona->dev))
- memcpy(&arizona->pdata, dev_get_platdata(arizona->dev),
-@@ -726,6 +987,14 @@ int arizona_dev_init(struct arizona *arizona)
+@@ -1029,6 +1204,14 @@ int arizona_dev_init(struct arizona *arizona)
goto err_early;
}
@@ -813,9 +573,9 @@ index 6523903..4211644 100644
+
if (arizona->pdata.reset) {
/* Start out with /RESET low to put the chip into reset */
- ret = gpio_request_one(arizona->pdata.reset,
-@@ -733,16 +1002,19 @@ int arizona_dev_init(struct arizona *arizona)
- "arizona /RESET");
+ ret = devm_gpio_request_one(arizona->dev, arizona->pdata.reset,
+@@ -1036,16 +1219,19 @@ int arizona_dev_init(struct arizona *arizona)
+ "arizona /RESET");
if (ret != 0) {
dev_err(dev, "Failed to request /RESET: %d\n", ret);
- goto err_dcvdd;
@@ -836,7 +596,7 @@ index 6523903..4211644 100644
}
ret = regulator_enable(arizona->dcvdd);
-@@ -1060,6 +1332,8 @@ err_reset:
+@@ -1420,6 +1606,8 @@ err_reset:
err_enable:
regulator_bulk_disable(arizona->num_core_supplies,
arizona->core_supplies);
@@ -845,7 +605,7 @@ index 6523903..4211644 100644
err_dcvdd:
regulator_put(arizona->dcvdd);
err_early:
-@@ -1073,6 +1347,7 @@ int arizona_dev_exit(struct arizona *arizona)
+@@ -1433,6 +1621,7 @@ int arizona_dev_exit(struct arizona *arizona)
pm_runtime_disable(arizona->dev);
regulator_disable(arizona->dcvdd);
@@ -854,22 +614,10 @@ index 6523903..4211644 100644
mfd_remove_devices(arizona->dev);
diff --git a/drivers/regulator/arizona-ldo1.c b/drivers/regulator/arizona-ldo1.c
-index a1d07d3..353b930 100644
+index f7c88ff..19fdcd4 100644
--- a/drivers/regulator/arizona-ldo1.c
+++ b/drivers/regulator/arizona-ldo1.c
-@@ -78,11 +78,6 @@ static int arizona_ldo1_hc_set_voltage_sel(struct regulator_dev *rdev,
- if (ret != 0)
- return ret;
-
-- ret = regmap_update_bits(regmap, ARIZONA_DYNAMIC_FREQUENCY_SCALING_1,
-- ARIZONA_SUBSYS_MAX_FREQ, val);
-- if (ret != 0)
-- return ret;
--
- if (val)
- return 0;
-
-@@ -268,6 +263,7 @@ static int arizona_ldo1_probe(struct platform_device *pdev)
+@@ -288,6 +288,7 @@ static int arizona_ldo1_probe(struct platform_device *pdev)
}
config.ena_gpio = arizona->pdata.ldoena;
@@ -878,50 +626,22 @@ index a1d07d3..353b930 100644
if (arizona->pdata.ldo1)
config.init_data = arizona->pdata.ldo1;
diff --git a/include/linux/mfd/arizona/core.h b/include/linux/mfd/arizona/core.h
-index 16a498f..e54676c 100644
+index 79e607e..39a23eb 100644
--- a/include/linux/mfd/arizona/core.h
+++ b/include/linux/mfd/arizona/core.h
-@@ -117,6 +117,7 @@ struct arizona {
+@@ -119,6 +119,7 @@ struct arizona {
int num_core_supplies;
struct regulator_bulk_data core_supplies[ARIZONA_MAX_CORE_SUPPLIES];
struct regulator *dcvdd;
+ struct notifier_block dcvdd_notifier;
+ bool has_fully_powered_off;
struct arizona_pdata pdata;
-
-@@ -135,6 +136,9 @@ struct arizona {
-
- bool ctrlif_error;
-
-+ struct mutex subsys_max_lock;
-+ unsigned int subsys_max_rq;
-+
- struct snd_soc_dapm_context *dapm;
-
- int tdm_width[ARIZONA_MAX_AIF];
-@@ -145,8 +149,17 @@ struct arizona {
- struct mutex dac_comp_lock;
- };
-
-+#define ARIZONA_DVFS_SR1_RQ 0x00000001
-+#define ARIZONA_DVFS_SR2_RQ 0x00000002
-+#define ARIZONA_DVFS_SR3_RQ 0x00000004
-+#define ARIZONA_DVFS_ASR1_RQ 0x00000010
-+#define ARIZONA_DVFS_ASR2_RQ 0x00000020
-+#define ARIZONA_DVFS_ADSP1_RQ 0x00010000
-+
- int arizona_clk32k_enable(struct arizona *arizona);
- int arizona_clk32k_disable(struct arizona *arizona);
-+int arizona_dvfs_up(struct arizona *arizona, unsigned int mask);
-+int arizona_dvfs_down(struct arizona *arizona, unsigned int mask);
-
- int arizona_request_irq(struct arizona *arizona, int irq, char *name,
- irq_handler_t handler, void *data);
diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h
-index 1065095..edd011a 100644
+index 95a937e..8262719 100644
--- a/include/sound/soc-dapm.h
+++ b/include/sound/soc-dapm.h
-@@ -377,10 +377,11 @@ int snd_soc_dapm_new_dai_widgets(struct snd_soc_dapm_context *dapm,
+@@ -383,10 +383,11 @@ int snd_soc_dapm_new_dai_widgets(struct snd_soc_dapm_context *dapm,
int snd_soc_dapm_link_dai_widgets(struct snd_soc_card *card);
void snd_soc_dapm_connect_dai_link_widgets(struct snd_soc_card *card);
int snd_soc_dapm_new_pcm(struct snd_soc_card *card,
@@ -935,7 +655,7 @@ index 1065095..edd011a 100644
/* dapm path setup */
int snd_soc_dapm_new_widgets(struct snd_soc_card *card);
-@@ -530,7 +531,7 @@ struct snd_soc_dapm_widget {
+@@ -553,7 +554,7 @@ struct snd_soc_dapm_widget {
void *priv; /* widget specific data */
struct regulator *regulator; /* attached regulator */
@@ -945,10 +665,10 @@ index 1065095..edd011a 100644
unsigned int params_select; /* currently selected param for dai link */
diff --git a/include/sound/soc.h b/include/sound/soc.h
-index 8d948aa..e1b47ed 100644
+index fb955e6..bbdc05d 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
-@@ -956,7 +956,9 @@ struct snd_soc_dai_link {
+@@ -989,7 +989,9 @@ struct snd_soc_dai_link {
struct device_node *platform_of_node;
int be_id; /* optional ID for machine driver BE identification */
@@ -960,26 +680,26 @@ index 8d948aa..e1b47ed 100644
unsigned int dai_fmt; /* format to set on init */
diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig
-index 3db2852..25793a2 100644
+index 1a3f826..020cfb1 100644
--- a/sound/soc/bcm/Kconfig
+++ b/sound/soc/bcm/Kconfig
-@@ -75,3 +75,11 @@ config SND_BCM2708_SOC_RASPIDAC3
+@@ -64,3 +64,11 @@ config SND_BCM2708_SOC_RASPIDAC3
select SND_SOC_TPA6130A2
help
Say Y or M if you want to add support for RaspiDAC Rev.3x.
+
+config SND_BCM2708_SOC_RPI_CODEC_WSP
+ tristate "Support for Cirrus sound pi"
-+ depends on SND_BCM2708_SOC_I2S
++ depends on SND_BCM2708_SOC_I2S || SND_BCM2835_SOC_I2S
+ select SND_SOC_WM5102
+ select SND_SOC_WM8804
+ help
+ Say Y or M if you want to add support for Cirrus sound pi
diff --git a/sound/soc/bcm/Makefile b/sound/soc/bcm/Makefile
-index 621358b..485af3c 100644
+index b21e11e..4cb717f 100644
--- a/sound/soc/bcm/Makefile
+++ b/sound/soc/bcm/Makefile
-@@ -17,6 +17,7 @@ snd-soc-rpi-dac-objs := rpi-dac.o
+@@ -12,6 +12,7 @@ snd-soc-rpi-dac-objs := rpi-dac.o
snd-soc-rpi-proto-objs := rpi-proto.o
snd-soc-iqaudio-dac-objs := iqaudio-dac.o
snd-soc-raspidac3-objs := raspidac3.o
@@ -987,16 +707,16 @@ index 621358b..485af3c 100644
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DAC) += snd-soc-hifiberry-dac.o
obj-$(CONFIG_SND_BCM2708_SOC_HIFIBERRY_DACPLUS) += snd-soc-hifiberry-dacplus.o
-@@ -26,3 +27,4 @@ obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o
+@@ -21,3 +22,4 @@ obj-$(CONFIG_SND_BCM2708_SOC_RPI_DAC) += snd-soc-rpi-dac.o
obj-$(CONFIG_SND_BCM2708_SOC_RPI_PROTO) += snd-soc-rpi-proto.o
obj-$(CONFIG_SND_BCM2708_SOC_IQAUDIO_DAC) += snd-soc-iqaudio-dac.o
obj-$(CONFIG_SND_BCM2708_SOC_RASPIDAC3) += snd-soc-raspidac3.o
+obj-$(CONFIG_SND_BCM2708_SOC_RPI_CODEC_WSP) += snd-soc-rpi-wsp.o
-diff --git a/sound/soc/bcm/bcm2708-i2s.c b/sound/soc/bcm/bcm2708-i2s.c
-index 5e93cd6..aa8cd0f 100644
---- a/sound/soc/bcm/bcm2708-i2s.c
-+++ b/sound/soc/bcm/bcm2708-i2s.c
-@@ -881,7 +881,7 @@ static struct snd_pcm_hardware bcm2708_pcm_hardware = {
+diff --git a/sound/soc/bcm/bcm2835-i2s.c b/sound/soc/bcm/bcm2835-i2s.c
+index 04c1d13..815509b 100644
+--- a/sound/soc/bcm/bcm2835-i2s.c
++++ b/sound/soc/bcm/bcm2835-i2s.c
+@@ -806,16 +806,16 @@ static struct snd_pcm_hardware bcm2835_pcm_hardware = {
SNDRV_PCM_FMTBIT_S24_LE |
SNDRV_PCM_FMTBIT_S32_LE,
.period_bytes_min = 32,
@@ -1004,13 +724,24 @@ index 5e93cd6..aa8cd0f 100644
+ .period_bytes_max = SZ_64K - 4,
.periods_min = 2,
.periods_max = 255,
- .buffer_bytes_max = 128 * PAGE_SIZE,
+- .buffer_bytes_max = 128 * PAGE_SIZE,
++ .buffer_bytes_max = SZ_512K,
+ };
+
+ static const struct snd_dmaengine_pcm_config bcm2835_dmaengine_pcm_config = {
+ .prepare_slave_config = snd_dmaengine_pcm_prepare_slave_config,
+ .pcm_hardware = &bcm2835_pcm_hardware,
+- .prealloc_buffer_size = 256 * PAGE_SIZE,
++ .prealloc_buffer_size = SZ_1M,
+ };
+
+ static int bcm2835_i2s_probe(struct platform_device *pdev)
diff --git a/sound/soc/bcm/rpi-cirrus-sound-pi.c b/sound/soc/bcm/rpi-cirrus-sound-pi.c
new file mode 100644
-index 0000000..bc86996
+index 0000000..3abfff1
--- /dev/null
+++ b/sound/soc/bcm/rpi-cirrus-sound-pi.c
-@@ -0,0 +1,529 @@
+@@ -0,0 +1,638 @@
+/*
+ * ASoC machine driver for Cirrus Audio Card (with a WM5102 and WM8804 codecs )
+ * connected to a Raspberry Pi
@@ -1026,6 +757,7 @@ index 0000000..bc86996
+ */
+
+#include <linux/module.h>
++#include <linux/mutex.h>
+#include <linux/slab.h>
+#include <sound/pcm_params.h>
+
@@ -1038,19 +770,18 @@ index 0000000..bc86996
+#define WM5102_MAX_SYSCLK_1 49152000 /*max sysclk for 4K family*/
+#define WM5102_MAX_SYSCLK_2 45158400 /*max sysclk for 11.025K family*/
+
++#define DAI_WM5102 0
++#define DAI_WM8804 1
++
+static struct snd_soc_card snd_rpi_wsp;
+
+struct wm5102_machine_priv {
+ int wm8804_sr;
+ int wm5102_sr;
+ int sync_path_enable;
-+};
-+
-+enum {
-+ GPIO_FSEL_INPUT, GPIO_FSEL_OUTPUT,
-+ GPIO_FSEL_ALT5, GPIO_FSEL_ALT_4,
-+ GPIO_FSEL_ALT0, GPIO_FSEL_ALT1,
-+ GPIO_FSEL_ALT2, GPIO_FSEL_ALT3,
++ int fll1_freq; /* negative means RefClock in spdif rx case */
++ /* mutex for synchronzing FLL1 access with DAPM */
++ struct mutex fll1_mutex;
+};
+
+int spdif_rx_enable_event(struct snd_soc_dapm_widget *w,
@@ -1058,13 +789,28 @@ index 0000000..bc86996
+{
+ struct snd_soc_card *card = &snd_rpi_wsp;
+ struct wm5102_machine_priv *priv = snd_soc_card_get_drvdata(card);
-+ struct snd_soc_codec *wm5102_codec = card->rtd[0].codec;
++ struct snd_soc_pcm_runtime *wm5102_rtd;
++ struct snd_soc_codec *wm5102_codec;
+ int ret = 0;
+ int clk_freq;
+ int sr = priv->wm8804_sr;
+
++ dev_dbg(card->dev, "spdif_rx event %d\n", event);
++
++ wm5102_rtd = snd_soc_get_pcm_runtime(card, card->dai_link[DAI_WM5102].name);
++ if (!wm5102_rtd) {
++ dev_warn(card->dev, "spdif_rx_enable_event: couldn't get WM5102 rtd\n");
++ return -EFAULT;
++ }
++ wm5102_codec = wm5102_rtd->codec;
++
+ switch (event) {
+ case SND_SOC_DAPM_POST_PMU:
++ mutex_lock(&priv->fll1_mutex);
++
++ dev_dbg(wm5102_codec->dev,
++ "spdif_rx: changing FLL1 to use Ref Clock\n");
++
+ /* Enable sync path in case of SPDIF capture use case */
+ clk_freq = (sr % 4000 == 0) ? WM5102_MAX_SYSCLK_1 : WM5102_MAX_SYSCLK_2;
+
@@ -1080,12 +826,19 @@ index 0000000..bc86996
+ clk_freq);
+ if (ret != 0) {
+ dev_err(wm5102_codec->dev, "Failed to enable FLL1 with Ref Clock Loop: %d\n", ret);
++ mutex_unlock(&priv->fll1_mutex);
+ return ret;
+ }
+
+ ret = snd_soc_codec_set_pll(wm5102_codec, WM5102_FLL1,
+ ARIZONA_CLK_SRC_AIF2BCLK,
+ sr * 64, clk_freq);
++ if (!ret)
++ /* set to negative to indicate we're doing spdif rx */
++ priv->fll1_freq = -clk_freq;
++
++ mutex_unlock(&priv->fll1_mutex);
++
+ if (ret != 0) {
+ dev_err(wm5102_codec->dev, "Failed to enable FLL1 Sync Clock Loop: %d\n", ret);
+ return ret;
@@ -1140,76 +893,124 @@ index 0000000..bc86996
+ struct snd_soc_dapm_context *dapm,
+ enum snd_soc_bias_level level)
+{
-+ struct snd_soc_codec *wm5102_codec = card->rtd[0].codec;
++ struct snd_soc_pcm_runtime *wm5102_rtd;
++ struct snd_soc_codec *wm5102_codec;
++ struct snd_soc_dai *wm5102_codec_dai;
+ struct wm5102_machine_priv *priv = snd_soc_card_get_drvdata(card);
+
+ int ret;
+ int sr = priv->wm5102_sr;
+ int clk_freq = (sr % 4000 == 0) ? WM5102_MAX_SYSCLK_1 : WM5102_MAX_SYSCLK_2;
+
++ wm5102_rtd = snd_soc_get_pcm_runtime(card, card->dai_link[DAI_WM5102].name);
++ if (!wm5102_rtd) {
++ dev_warn(card->dev, "rpi_set_bias_level: couldn't get WM5102 rtd\n");
++ return -EFAULT;
++ }
++ wm5102_codec = wm5102_rtd->codec;
++ wm5102_codec_dai = wm5102_rtd->codec_dai;
++
++ if (dapm->dev != wm5102_codec_dai->dev)
++ return 0;
++
++ dev_dbg(wm5102_codec->dev, "change bias level from %d to %d, sync=%d\n",
++ dapm->bias_level, level, priv->sync_path_enable);
++
+ switch (level) {
-+ case SND_SOC_BIAS_OFF:
-+ break;
+ case SND_SOC_BIAS_ON:
++ /* no need to check current level, it can only be PREPARE */
+ if (!priv->sync_path_enable) {
++ mutex_lock(&priv->fll1_mutex);
++
++ dev_dbg(wm5102_codec->dev,
++ "bias_on: changing FLL1 from %d to %d\n",
++ priv->fll1_freq, clk_freq);
++
+ ret = snd_soc_codec_set_pll(wm5102_codec, WM5102_FLL1,
+ ARIZONA_CLK_SRC_MCLK1,
+ WM8804_CLKOUT_HZ,
+ clk_freq);
++ if (!ret)
++ priv->fll1_freq = clk_freq;
++
++ mutex_unlock(&priv->fll1_mutex);
++
+ if (ret != 0) {
-+ dev_err(wm5102_codec->dev, "Failed to enable FLL1 with Ref Clock Loop: %d\n", ret);
++ dev_err(wm5102_codec->dev, "Failed to enable FLL1: %d\n", ret);
+ return ret;
+ }
+ }
+ break;
-+ default:
-+ break;
-+ }
-+
-+ dapm->bias_level = level;
++ case SND_SOC_BIAS_STANDBY:
++ if (dapm->bias_level != SND_SOC_BIAS_PREPARE)
++ break;
+
-+ return 0;
-+}
++ mutex_lock(&priv->fll1_mutex);
+
-+static int rpi_set_bias_level_post(struct snd_soc_card *card,
-+ struct snd_soc_dapm_context *dapm,
-+ enum snd_soc_bias_level level)
-+{
-+ struct snd_soc_codec *wm5102_codec = card->rtd[0].codec;
++ dev_dbg(wm5102_codec->dev,
++ "bias_standby: changing FLL1 from %d to off\n",
++ priv->fll1_freq);
+
-+ switch (level) {
-+ case SND_SOC_BIAS_STANDBY:
-+ snd_soc_codec_set_pll(wm5102_codec, WM5102_FLL1,
++ ret = snd_soc_codec_set_pll(wm5102_codec, WM5102_FLL1,
+ ARIZONA_FLL_SRC_NONE, 0, 0);
-+ snd_soc_codec_set_pll(wm5102_codec, WM5102_FLL1_REFCLK,
++ if (ret)
++ dev_warn(wm5102_codec->dev, "set_bias_level: Failed to stop FLL1: %d\n", ret);
++
++ ret = snd_soc_codec_set_pll(wm5102_codec, WM5102_FLL1_REFCLK,
+ ARIZONA_FLL_SRC_NONE, 0, 0);
++ if (ret)
++ dev_warn(wm5102_codec->dev, "set_bias_level: Failed to stop FLL1_REFCLK: %d\n", ret);
++
++ priv->fll1_freq = 0;
++
++ mutex_unlock(&priv->fll1_mutex);
++
+ break;
+ default:
+ break;
+ }
+
-+ dapm->bias_level = level;
-+
+ return 0;
+}
+
-+static int snd_rpi_wsp_config_5102_clks(struct snd_soc_codec *wm5102_codec, int sr)
++static int snd_rpi_wsp_config_5102_clks(
++ struct wm5102_machine_priv *priv,
++ struct snd_soc_codec *wm5102_codec, int sr)
+{
+ int ret;
+ int clk_freq = (sr % 4000 == 0) ? WM5102_MAX_SYSCLK_1 : WM5102_MAX_SYSCLK_2;
+
-+ /*reset FLL1*/
-+ snd_soc_codec_set_pll(wm5102_codec, WM5102_FLL1,
-+ ARIZONA_FLL_SRC_NONE, 0, 0);
++ /*
++ * Manually set up FLL1 if it's configured to another rate but only
++ * if we are not using spdif rx (fll1_freq negative).
++ * This is necessary if delayed DAPM powerdown hasn't stopped
++ * the FLL before.
++ */
++ if ((priv->fll1_freq > 0) && (priv->fll1_freq != clk_freq)) {
++ mutex_lock(&priv->fll1_mutex);
+
-+ ret = snd_soc_codec_set_pll(wm5102_codec, WM5102_FLL1,
-+ ARIZONA_CLK_SRC_MCLK1,
-+ WM8804_CLKOUT_HZ,
-+ clk_freq);
++ dev_dbg(wm5102_codec->dev,
++ "config_5102_clks: changing FLL1 from %d to %d\n",
++ priv->fll1_freq, clk_freq);
++
++ /*reset FLL1*/
++ snd_soc_codec_set_pll(wm5102_codec, WM5102_FLL1,
++ ARIZONA_FLL_SRC_NONE, 0, 0);
++
++ ret = snd_soc_codec_set_pll(wm5102_codec, WM5102_FLL1,
++ ARIZONA_CLK_SRC_MCLK1,
++ WM8804_CLKOUT_HZ,
++ clk_freq);
++ if (!ret)
++ priv->fll1_freq = clk_freq;
++
++ mutex_unlock(&priv->fll1_mutex);
++
++ if (ret) {
++ dev_err(wm5102_codec->dev, "Failed to set FLL1: %d\n", ret);
++ return ret;
++ }
+
-+ if (ret != 0) {
-+ dev_err(wm5102_codec->dev, "Failed to set FLL1: %d\n", ret);
-+ return ret;
+ }
+
+ ret = snd_soc_codec_set_sysclk(wm5102_codec,
@@ -1268,15 +1069,28 @@ index 0000000..bc86996
+{
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
+ struct snd_soc_card *card = rtd->card;
-+ struct snd_soc_codec *wm5102_codec = rtd->codec;
-+ struct snd_soc_dai *bcm_i2s_dai = rtd->cpu_dai;
-+ struct snd_soc_codec *wm8804_codec = card->rtd[1].codec;
-+ struct snd_soc_dai *wm8804_codec_dai = card->rtd[1].codec_dai;
++ struct snd_soc_pcm_runtime *wm5102_rtd, *wm8804_rtd;
++ struct snd_soc_codec *wm5102_codec, *wm8804_codec;
++ struct snd_soc_dai *wm8804_codec_dai, *bcm_i2s_dai = rtd->cpu_dai;
+ struct wm5102_machine_priv *priv = snd_soc_card_get_drvdata(card);
+ int ret, capture_stream_opened,playback_stream_opened;
+ unsigned int bclkratio, tx_mask, rx_mask;
+ int width, num_slots=1;
+
++ wm5102_rtd = snd_soc_get_pcm_runtime(card, card->dai_link[DAI_WM5102].name);
++ if (!wm5102_rtd) {
++ dev_warn(card->dev, "snd_rpi_wsp_hw_params: couldn't get WM5102 rtd\n");
++ return -EFAULT;
++ }
++ wm8804_rtd = snd_soc_get_pcm_runtime(card, card->dai_link[DAI_WM8804].name);
++ if (!wm8804_rtd) {
++ dev_warn(card->dev, "snd_rpi_wsp_hw_params: couldn't get WM8804 rtd\n");
++ return -EFAULT;
++ }
++ wm5102_codec = wm5102_rtd->codec;
++ wm8804_codec = wm8804_rtd->codec;
++ wm8804_codec_dai = wm8804_rtd->codec_dai;
++
+ bclkratio = 2 * snd_pcm_format_physical_width(params_format(params));
+
+ ret = snd_soc_dai_set_bclk_ratio(bcm_i2s_dai, bclkratio);
@@ -1306,7 +1120,7 @@ index 0000000..bc86996
+
+ priv->wm5102_sr = params_rate(params);
+
-+ ret = snd_rpi_wsp_config_5102_clks(wm5102_codec, params_rate(params));
++ ret = snd_rpi_wsp_config_5102_clks(priv, wm5102_codec, params_rate(params));
+ if (ret != 0) {
+ dev_err(wm5102_codec->dev, "snd_rpi_wsp_config_5102_clks failed: %d\n", ret);
+ return ret;
@@ -1419,35 +1233,54 @@ index 0000000..bc86996
+static int snd_rpi_wsp_late_probe(struct snd_soc_card *card)
+{
+ struct wm5102_machine_priv *priv = snd_soc_card_get_drvdata(card);
++ struct snd_soc_pcm_runtime *wm5102_rtd, *wm8804_rtd;
++ struct snd_soc_codec *wm5102_codec, *wm8804_codec;
++ struct snd_soc_dai *wm5102_codec_dai, *wm8804_codec_dai, *wm8804_cpu_dai;
+ int ret;
+
++ wm5102_rtd = snd_soc_get_pcm_runtime(card, card->dai_link[DAI_WM5102].name);
++ if (!wm5102_rtd) {
++ dev_warn(card->dev, "snd_rpi_wsp_late_probe: couldn't get WM5102 rtd\n");
++ return -EFAULT;
++ }
++ wm8804_rtd = snd_soc_get_pcm_runtime(card, card->dai_link[DAI_WM8804].name);
++ if (!wm8804_rtd) {
++ dev_warn(card->dev, "snd_rpi_wsp_late_probe: couldn't get WM8804 rtd\n");
++ return -EFAULT;
++ }
++ wm5102_codec = wm5102_rtd->codec;
++ wm5102_codec_dai = wm5102_rtd->codec_dai;
++ wm8804_codec = wm8804_rtd->codec;
++ wm8804_codec_dai = wm8804_rtd->codec_dai;
++ wm8804_cpu_dai = wm8804_rtd->cpu_dai;
++
+ priv->wm8804_sr = RPI_WLF_SR;
+ priv->wm5102_sr = RPI_WLF_SR;
+ priv->sync_path_enable = 0;
+
-+ ret = snd_soc_codec_set_sysclk(card->rtd[0].codec, ARIZONA_CLK_SYSCLK, ARIZONA_CLK_SRC_FLL1,
++ ret = snd_soc_codec_set_sysclk(wm5102_codec, ARIZONA_CLK_SYSCLK, ARIZONA_CLK_SRC_FLL1,
+ 0, SND_SOC_CLOCK_IN);
+ if (ret != 0) {
-+ dev_err(card->rtd[0].codec->dev, "Failed to set SYSCLK to Zero: %d\n", ret);
++ dev_err(wm5102_codec->dev, "Failed to set SYSCLK to Zero: %d\n", ret);
+ return ret;
+ }
+
-+ ret = snd_rpi_wsp_config_8804_clks(card->rtd[1].codec, card->rtd[1].codec_dai, RPI_WLF_SR);
++ ret = snd_rpi_wsp_config_8804_clks(wm8804_codec, wm8804_codec_dai, RPI_WLF_SR);
+
+ if (ret != 0) {
-+ dev_err(card->rtd[1].codec->dev, "snd_rpi_wsp_config_8804_clks failed: %d\n", ret);
++ dev_err(wm8804_codec->dev, "snd_rpi_wsp_config_8804_clks failed: %d\n", ret);
+ return ret;
+ }
+
-+ ret = snd_soc_dai_set_sysclk(card->rtd[0].codec_dai, ARIZONA_CLK_SYSCLK, 0, 0);
++ ret = snd_soc_dai_set_sysclk(wm5102_codec_dai, ARIZONA_CLK_SYSCLK, 0, 0);
+ if (ret != 0) {
-+ dev_err(card->rtd[0].codec->dev, "Failed to set codec dai clk domain: %d\n", ret);
++ dev_err(wm5102_codec_dai->dev, "Failed to set codec dai clk domain: %d\n", ret);
+ return ret;
+ }
+
-+ ret = snd_soc_dai_set_sysclk(card->rtd[1].cpu_dai, ARIZONA_CLK_SYSCLK, 0, 0);
++ ret = snd_soc_dai_set_sysclk(wm8804_cpu_dai, ARIZONA_CLK_SYSCLK, 0, 0);
+ if (ret != 0) {
-+ dev_err(card->rtd[0].codec->dev, "Failed to set codec dai clk domain: %d\n", ret);
++ dev_err(wm8804_cpu_dai->dev, "Failed to set codec dai clk domain: %d\n", ret);
+ return ret;
+ }
+
@@ -1457,6 +1290,7 @@ index 0000000..bc86996
+/* audio machine driver */
+static struct snd_soc_card snd_rpi_wsp = {
+ .name = "snd_rpi_wsp",
++ .owner = THIS_MODULE,
+ .dai_link = snd_rpi_wsp_dai,
+ .num_links = ARRAY_SIZE(snd_rpi_wsp_dai),
+ .late_probe = snd_rpi_wsp_late_probe,
@@ -1467,7 +1301,6 @@ index 0000000..bc86996
+ .dapm_routes = rpi_wsp_dapm_routes,
+ .num_dapm_routes = ARRAY_SIZE(rpi_wsp_dapm_routes),
+ .set_bias_level = rpi_set_bias_level,
-+ .set_bias_level_post = rpi_set_bias_level_post,
+};
+
+static int snd_rpi_wsp_probe(struct platform_device *pdev)
@@ -1479,11 +1312,14 @@ index 0000000..bc86996
+ if (!wm5102)
+ return -ENOMEM;
+
++ wm5102->fll1_freq = 0;
++ mutex_init(&wm5102->fll1_mutex);
++
+ snd_soc_card_set_drvdata(&snd_rpi_wsp, wm5102);
+
+ if (pdev->dev.of_node) {
+ struct device_node *i2s_node;
-+ struct snd_soc_dai_link *dai = &snd_rpi_wsp_dai[0];
++ struct snd_soc_dai_link *dai = &snd_rpi_wsp_dai[DAI_WM5102];
+ i2s_node = of_parse_phandle(pdev->dev.of_node,
+ "i2s-controller", 0);
+
@@ -1498,7 +1334,11 @@ index 0000000..bc86996
+ snd_rpi_wsp.dev = &pdev->dev;
+ ret = snd_soc_register_card(&snd_rpi_wsp);
+ if (ret) {
-+ dev_err(&pdev->dev, "Failed to register card: %d\n", ret);
++ if (ret == -EPROBE_DEFER)
++ dev_dbg(&pdev->dev, "register card requested probe deferral\n");
++ else
++ dev_err(&pdev->dev, "Failed to register card: %d\n", ret);
++
+ kfree(wm5102);
+ }
+
@@ -1541,69 +1381,42 @@ index 0000000..bc86996
+MODULE_DESCRIPTION("ASoC Driver for Raspberry Pi connected to Cirrus sound pi");
+MODULE_LICENSE("GPL");
diff --git a/sound/soc/codecs/arizona.c b/sound/soc/codecs/arizona.c
-index ee91edc..b501471 100644
+index 93b4008..1be8d2e 100644
--- a/sound/soc/codecs/arizona.c
+++ b/sound/soc/codecs/arizona.c
-@@ -1266,7 +1266,7 @@ static int arizona_hw_params_rate(struct snd_pcm_substream *substream,
- struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec);
- struct arizona_dai_priv *dai_priv = &priv->dai[dai->id - 1];
- int base = dai->driver->base;
-- int i, sr_val;
-+ int i, sr_val, ret;
-
- /*
- * We will need to be more flexible than this in future,
-@@ -1282,6 +1282,26 @@ static int arizona_hw_params_rate(struct snd_pcm_substream *substream,
- }
- sr_val = i;
+@@ -1095,7 +1095,7 @@ int arizona_set_sysclk(struct snd_soc_codec *codec, int clk_id,
+ unsigned int reg;
+ unsigned int mask = ARIZONA_SYSCLK_FREQ_MASK | ARIZONA_SYSCLK_SRC_MASK;
+ unsigned int val = source << ARIZONA_SYSCLK_SRC_SHIFT;
+- unsigned int *clk;
++ int *clk;
+
+ switch (clk_id) {
+ case ARIZONA_CLK_SYSCLK:
+@@ -1375,6 +1375,9 @@ static int arizona_startup(struct snd_pcm_substream *substream,
+ const struct snd_pcm_hw_constraint_list *constraint;
+ unsigned int base_rate;
-+ switch (priv->arizona->type) {
-+ case WM5102:
-+ case WM8997:
-+ if (arizona_sr_vals[sr_val] >= 88200)
-+ ret = arizona_dvfs_up(priv->arizona,
-+ ARIZONA_DVFS_SR1_RQ);
-+ else
-+ ret = arizona_dvfs_down(priv->arizona,
-+ ARIZONA_DVFS_SR1_RQ);
-+
-+ if (ret != 0) {
-+ arizona_aif_err(dai, "Failed to change DVFS %d\n", ret);
-+ return ret;
-+ }
-+ break;
-+
-+ default:
-+ break;
-+ }
++ if (!substream->runtime)
++ return 0;
+
switch (dai_priv->clk) {
case ARIZONA_CLK_SYSCLK:
- switch (priv->arizona->type) {
-@@ -1967,19 +1987,15 @@ static int arizona_enable_fll(struct arizona_fll *fll)
-
- arizona_fll_dbg(fll, "Waiting for FLL lock...\n");
- val = 0;
-- for (i = 0; i < 15; i++) {
-- if (i < 5)
-- usleep_range(200, 400);
-- else
-- msleep(20);
--
-+ for (i = 0; i < 25; i++) {
- regmap_read(arizona->regmap,
- ARIZONA_INTERRUPT_RAW_STATUS_5,
- &val);
- if (val & (ARIZONA_FLL1_CLOCK_OK_STS << (fll->id - 1)))
- break;
-+ msleep(10);
+ base_rate = priv->sysclk;
+@@ -2093,9 +2096,9 @@ static int arizona_enable_fll(struct arizona_fll *fll)
+ /* Facilitate smooth refclk across the transition */
+ regmap_update_bits_async(fll->arizona->regmap, fll->base + 0x9,
+ ARIZONA_FLL1_GAIN_MASK, 0);
+- regmap_update_bits_async(fll->arizona->regmap, fll->base + 1,
+- ARIZONA_FLL1_FREERUN,
+- ARIZONA_FLL1_FREERUN);
++ regmap_update_bits(fll->arizona->regmap, fll->base + 1,
++ ARIZONA_FLL1_FREERUN, ARIZONA_FLL1_FREERUN);
++ udelay(32);
}
-- if (i == 15)
-+ if (i == 25)
- arizona_fll_warn(fll, "Timed out waiting for lock\n");
- else
- arizona_fll_dbg(fll, "FLL locked (%d polls)\n", i);
-@@ -1991,6 +2007,8 @@ static void arizona_disable_fll(struct arizona_fll *fll)
+
+ /*
+@@ -2180,6 +2183,8 @@ static void arizona_disable_fll(struct arizona_fll *fll)
{
struct arizona *arizona = fll->arizona;
bool change;
@@ -1612,21 +1425,25 @@ index ee91edc..b501471 100644
regmap_update_bits_async(arizona->regmap, fll->base + 1,
ARIZONA_FLL1_FREERUN, ARIZONA_FLL1_FREERUN);
-@@ -2001,6 +2019,21 @@ static void arizona_disable_fll(struct arizona_fll *fll)
+@@ -2190,6 +2195,25 @@ static void arizona_disable_fll(struct arizona_fll *fll)
regmap_update_bits_async(arizona->regmap, fll->base + 1,
ARIZONA_FLL1_FREERUN, 0);
+ arizona_fll_dbg(fll, "Waiting for FLL disable...\n");
+ val = 0;
-+ for (i = 0; i < 25; i++) {
++ for (i = 0; i < 15; i++) {
++ if (i < 5)
++ usleep_range(200, 400);
++ else
++ msleep(20);
++
+ regmap_read(arizona->regmap,
+ ARIZONA_INTERRUPT_RAW_STATUS_5,
+ &val);
+ if (!(val & (ARIZONA_FLL1_CLOCK_OK_STS << (fll->id - 1))))
+ break;
-+ msleep(10);
+ }
-+ if (i == 25)
++ if (i == 15)
+ arizona_fll_warn(fll, "Timed out waiting for disable\n");
+ else
+ arizona_fll_dbg(fll, "FLL disabled (%d polls)\n", i);
@@ -1634,228 +1451,11 @@ index ee91edc..b501471 100644
if (change)
pm_runtime_put_autosuspend(arizona->dev);
}
-diff --git a/sound/soc/codecs/wm5102.c b/sound/soc/codecs/wm5102.c
-index d476221..fc50c6d 100644
---- a/sound/soc/codecs/wm5102.c
-+++ b/sound/soc/codecs/wm5102.c
-@@ -613,6 +613,49 @@ static int wm5102_sysclk_ev(struct snd_soc_dapm_widget *w,
- return 0;
- }
-
-+static int wm5102_adsp_power_ev(struct snd_soc_dapm_widget *w,
-+ struct snd_kcontrol *kcontrol, int event)
-+{
-+ struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
-+ struct arizona *arizona = dev_get_drvdata(codec->dev->parent);
-+ unsigned int v;
-+ int ret;
-+
-+ switch (event) {
-+ case SND_SOC_DAPM_PRE_PMU:
-+ ret = regmap_read(arizona->regmap, ARIZONA_SYSTEM_CLOCK_1, &v);
-+ if (ret != 0) {
-+ dev_err(codec->dev,
-+ "Failed to read SYSCLK state: %d\n", ret);
-+ return -EIO;
-+ }
-+
-+ v = (v & ARIZONA_SYSCLK_FREQ_MASK) >> ARIZONA_SYSCLK_FREQ_SHIFT;
-+
-+ if (v >= 3) {
-+ ret = arizona_dvfs_up(arizona, ARIZONA_DVFS_ADSP1_RQ);
-+ if (ret != 0) {
-+ dev_err(codec->dev,
-+ "Failed to raise DVFS: %d\n", ret);
-+ return ret;
-+ }
-+ }
-+ break;
-+
-+ case SND_SOC_DAPM_POST_PMD:
-+ ret = arizona_dvfs_down(arizona, ARIZONA_DVFS_ADSP1_RQ);
-+ if (ret != 0)
-+ dev_warn(codec->dev,
-+ "Failed to lower DVFS: %d\n", ret);
-+ break;
-+
-+ default:
-+ break;
-+ }
-+
-+ return wm_adsp2_early_event(w, kcontrol, event);
-+}
-+
- static int wm5102_out_comp_coeff_get(struct snd_kcontrol *kcontrol,
- struct snd_ctl_elem_value *ucontrol)
- {
-@@ -1367,7 +1410,7 @@ ARIZONA_MUX_WIDGETS(ISRC2DEC2, "ISRC2DEC2"),
- ARIZONA_MUX_WIDGETS(ISRC2INT1, "ISRC2INT1"),
- ARIZONA_MUX_WIDGETS(ISRC2INT2, "ISRC2INT2"),
-
--WM_ADSP2("DSP1", 0),
-+WM_ADSP2_E("DSP1", 0, wm5102_adsp_power_ev),
-
- SND_SOC_DAPM_OUTPUT("HPOUT1L"),
- SND_SOC_DAPM_OUTPUT("HPOUT1R"),
-@@ -1918,7 +1961,7 @@ static int wm5102_probe(struct platform_device *pdev)
- wm5102->core.adsp[0].mem = wm5102_dsp1_regions;
- wm5102->core.adsp[0].num_mems = ARRAY_SIZE(wm5102_dsp1_regions);
-
-- ret = wm_adsp2_init(&wm5102->core.adsp[0], true);
-+ ret = wm_adsp2_init(&wm5102->core.adsp[0]);
- if (ret != 0)
- return ret;
-
-diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c
-index d01c209..bbbc5c2 100644
---- a/sound/soc/codecs/wm_adsp.c
-+++ b/sound/soc/codecs/wm_adsp.c
-@@ -1531,35 +1531,6 @@ static void wm_adsp2_boot_work(struct work_struct *work)
- return;
- }
-
-- if (dsp->dvfs) {
-- ret = regmap_read(dsp->regmap,
-- dsp->base + ADSP2_CLOCKING, &val);
-- if (ret != 0) {
-- adsp_err(dsp, "Failed to read clocking: %d\n", ret);
-- return;
-- }
--
-- if ((val & ADSP2_CLK_SEL_MASK) >= 3) {
-- ret = regulator_enable(dsp->dvfs);
-- if (ret != 0) {
-- adsp_err(dsp,
-- "Failed to enable supply: %d\n",
-- ret);
-- return;
-- }
--
-- ret = regulator_set_voltage(dsp->dvfs,
-- 1800000,
-- 1800000);
-- if (ret != 0) {
-- adsp_err(dsp,
-- "Failed to raise supply: %d\n",
-- ret);
-- return;
-- }
-- }
-- }
--
- ret = wm_adsp2_ena(dsp);
- if (ret != 0)
- return;
-@@ -1653,21 +1624,6 @@ int wm_adsp2_event(struct snd_soc_dapm_widget *w,
- regmap_write(dsp->regmap, dsp->base + ADSP2_WDMA_CONFIG_2, 0);
- regmap_write(dsp->regmap, dsp->base + ADSP2_RDMA_CONFIG_1, 0);
-
-- if (dsp->dvfs) {
-- ret = regulator_set_voltage(dsp->dvfs, 1200000,
-- 1800000);
-- if (ret != 0)
-- adsp_warn(dsp,
-- "Failed to lower supply: %d\n",
-- ret);
--
-- ret = regulator_disable(dsp->dvfs);
-- if (ret != 0)
-- adsp_err(dsp,
-- "Failed to enable supply: %d\n",
-- ret);
-- }
--
- list_for_each_entry(ctl, &dsp->ctl_list, list)
- ctl->enabled = 0;
-
-@@ -1694,7 +1650,7 @@ err:
- }
- EXPORT_SYMBOL_GPL(wm_adsp2_event);
-
--int wm_adsp2_init(struct wm_adsp *adsp, bool dvfs)
-+int wm_adsp2_init(struct wm_adsp *adsp)
- {
- int ret;
-
-@@ -1713,33 +1669,6 @@ int wm_adsp2_init(struct wm_adsp *adsp, bool dvfs)
- INIT_LIST_HEAD(&adsp->ctl_list);
- INIT_WORK(&adsp->boot_work, wm_adsp2_boot_work);
-
-- if (dvfs) {
-- adsp->dvfs = devm_regulator_get(adsp->dev, "DCVDD");
-- if (IS_ERR(adsp->dvfs)) {
-- ret = PTR_ERR(adsp->dvfs);
-- adsp_err(adsp, "Failed to get DCVDD: %d\n", ret);
-- return ret;
-- }
--
-- ret = regulator_enable(adsp->dvfs);
-- if (ret != 0) {
-- adsp_err(adsp, "Failed to enable DCVDD: %d\n", ret);
-- return ret;
-- }
--
-- ret = regulator_set_voltage(adsp->dvfs, 1200000, 1800000);
-- if (ret != 0) {
-- adsp_err(adsp, "Failed to initialise DVFS: %d\n", ret);
-- return ret;
-- }
--
-- ret = regulator_disable(adsp->dvfs);
-- if (ret != 0) {
-- adsp_err(adsp, "Failed to disable DCVDD: %d\n", ret);
-- return ret;
-- }
-- }
--
- return 0;
- }
- EXPORT_SYMBOL_GPL(wm_adsp2_init);
-diff --git a/sound/soc/codecs/wm_adsp.h b/sound/soc/codecs/wm_adsp.h
-index a4f6b64..a86e531 100644
---- a/sound/soc/codecs/wm_adsp.h
-+++ b/sound/soc/codecs/wm_adsp.h
-@@ -56,8 +56,6 @@ struct wm_adsp {
- int fw;
- bool running;
-
-- struct regulator *dvfs;
--
- struct list_head ctl_list;
-
- struct work_struct boot_work;
-@@ -67,19 +65,22 @@ struct wm_adsp {
- SND_SOC_DAPM_PGA_E(wname, SND_SOC_NOPM, num, 0, NULL, 0, \
- wm_adsp1_event, SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD)
-
--#define WM_ADSP2(wname, num) \
-+#define WM_ADSP2_E(wname, num, event_fn) \
- { .id = snd_soc_dapm_dai_link, .name = wname " Preloader", \
-- .reg = SND_SOC_NOPM, .shift = num, .event = wm_adsp2_early_event, \
-- .event_flags = SND_SOC_DAPM_PRE_PMU }, \
-+ .reg = SND_SOC_NOPM, .shift = num, .event = event_fn, \
-+ .event_flags = SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD }, \
- { .id = snd_soc_dapm_out_drv, .name = wname, \
- .reg = SND_SOC_NOPM, .shift = num, .event = wm_adsp2_event, \
- .event_flags = SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD }
-
-+#define WM_ADSP2(wname, num) \
-+ WM_ADSP2_E(wname, num, wm_adsp2_early_event)
-+
- extern const struct snd_kcontrol_new wm_adsp1_fw_controls[];
- extern const struct snd_kcontrol_new wm_adsp2_fw_controls[];
-
- int wm_adsp1_init(struct wm_adsp *adsp);
--int wm_adsp2_init(struct wm_adsp *adsp, bool dvfs);
-+int wm_adsp2_init(struct wm_adsp *adsp);
- int wm_adsp1_event(struct snd_soc_dapm_widget *w,
- struct snd_kcontrol *kcontrol, int event);
- int wm_adsp2_early_event(struct snd_soc_dapm_widget *w,
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
-index 2373252..ee92ec7 100644
+index a1305f8..31f36e6 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
-@@ -1299,7 +1299,7 @@ static int soc_link_dai_widgets(struct snd_soc_card *card,
+@@ -1295,7 +1295,7 @@ static int soc_link_dai_widgets(struct snd_soc_card *card,
if (play_w && capture_w) {
ret = snd_soc_dapm_new_pcm(card, dai_link->params,
dai_link->num_params, capture_w,
@@ -1864,7 +1464,7 @@ index 2373252..ee92ec7 100644
if (ret != 0) {
dev_err(card->dev, "ASoC: Can't link %s to %s: %d\n",
play_w->name, capture_w->name, ret);
-@@ -1312,7 +1312,7 @@ static int soc_link_dai_widgets(struct snd_soc_card *card,
+@@ -1308,7 +1308,7 @@ static int soc_link_dai_widgets(struct snd_soc_card *card,
if (play_w && capture_w) {
ret = snd_soc_dapm_new_pcm(card, dai_link->params,
dai_link->num_params, capture_w,
@@ -1874,10 +1474,10 @@ index 2373252..ee92ec7 100644
dev_err(card->dev, "ASoC: Can't link %s to %s: %d\n",
play_w->name, capture_w->name, ret);
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
-index b6c12dc..e767365 100644
+index 416514f..92832eb 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
-@@ -3227,11 +3227,12 @@ static int snd_soc_dai_link_event(struct snd_soc_dapm_widget *w,
+@@ -3443,11 +3443,12 @@ static int snd_soc_dai_link_event(struct snd_soc_dapm_widget *w,
{
struct snd_soc_dapm_path *source_p, *sink_p;
struct snd_soc_dai *source, *sink;
@@ -1891,8 +1491,8 @@ index b6c12dc..e767365 100644
+ int ret = 0;
if (WARN_ON(!config) ||
- WARN_ON(list_empty(&w->sources) || list_empty(&w->sinks)))
-@@ -3251,6 +3252,16 @@ static int snd_soc_dai_link_event(struct snd_soc_dapm_widget *w,
+ WARN_ON(list_empty(&w->edges[SND_SOC_DAPM_DIR_OUT]) ||
+@@ -3465,6 +3466,16 @@ static int snd_soc_dai_link_event(struct snd_soc_dapm_widget *w,
source = source_p->source->priv;
sink = sink_p->sink->priv;
@@ -1909,7 +1509,7 @@ index b6c12dc..e767365 100644
/* Be a little careful as we don't want to overflow the mask array */
if (config->formats) {
fmt = ffs(config->formats) - 1;
-@@ -3350,10 +3361,11 @@ static int snd_soc_dapm_dai_link_put(struct snd_kcontrol *kcontrol,
+@@ -3594,10 +3605,11 @@ static int snd_soc_dapm_dai_link_put(struct snd_kcontrol *kcontrol,
}
int snd_soc_dapm_new_pcm(struct snd_soc_card *card,
@@ -1923,7 +1523,7 @@ index b6c12dc..e767365 100644
{
struct snd_soc_dapm_widget template;
struct snd_soc_dapm_widget *w;
-@@ -3455,6 +3467,7 @@ int snd_soc_dapm_new_pcm(struct snd_soc_card *card,
+@@ -3699,6 +3711,7 @@ int snd_soc_dapm_new_pcm(struct snd_soc_card *card,
w->params = params;
w->num_params = num_params;