SAMA5D4 Xplained Ultra Board BSP
guowenxue
2019-08-26 912f9e0ee8303384e42bbe9626cf5a2684143696
linux-bsp/patches/linux-at91-sama5d4.patch
@@ -1,77 +1,95 @@
diff -Nuar linux-at91/arch/arm/boot/dts/at91-sama5d4_xplained.dts linux-at91-sama5d4/arch/arm/boot/dts/at91-sama5d4_xplained.dts
--- linux-at91/arch/arm/boot/dts/at91-sama5d4_xplained.dts   2019-08-18 17:24:46.000000000 +0800
+++ linux-at91-sama5d4/arch/arm/boot/dts/at91-sama5d4_xplained.dts   2019-08-22 23:05:47.351524760 +0800
@@ -128,6 +128,12 @@
--- linux-at91/arch/arm/boot/dts/at91-sama5d4_xplained.dts   2019-07-10 18:07:41.000000000 +0800
+++ linux-at91-sama5d4/arch/arm/boot/dts/at91-sama5d4_xplained.dts   2019-08-26 01:03:57.000632839 +0800
@@ -91,7 +91,23 @@
          spi1: spi@fc018000 {
             cs-gpios = <&pioB 21 0>;
             status = "okay";
-            status = "okay";
+            status = "okay";
+
+                spidev@0 {
+                /* add spidev by guowenxue, 2019.8.25 */
+                /*
+                spidev@0 {
+                    compatible = "linux,spidev";
+                    spi-max-frequency = <24000000>;
+                    reg = <0>;
+                };
+                */
+                bal: nxprdlib-bal@0 {
+                    compatible = "nxp,bal";
+                    reg = <0>;
+                    busy-pin-gpio = <&pioD 9 0>;
+                    spi-max-frequency = <6000000>;
+                    status = "okay";
+                };
          };
 
          adc0: adc@fc034000 {
@@ -201,35 +207,25 @@
          atmel,has-pmecc;
          status = "okay";
          tcb2: timer@fc024000 {
@@ -193,40 +209,26 @@
                   #address-cells = <1>;
                   #size-cells = <1>;
 
-         at91bootstrap@0 {
-            label = "at91bootstrap";
-            reg = <0x0 0x40000>;
-         };
-                  at91bootstrap@0 {
-                     label = "at91bootstrap";
-                     reg = <0x0 0x40000>;
-                  };
-
-         bootloader@40000 {
-            label = "bootloader";
-            reg = <0x40000 0x80000>;
-         };
-                  bootloader@40000 {
-                     label = "bootloader";
-                     reg = <0x40000 0xc0000>;
-                  };
-
-         bootloaderenv@c0000 {
-            label = "bootloader env";
-            reg = <0xc0000 0xc0000>;
-         };
-                  bootloaderenvred@100000 {
-                     label = "bootloader env redundant";
-                     reg = <0x100000 0x40000>;
-                  };
-
-         dtb@180000 {
-            label = "device tree";
-            reg = <0x180000 0x80000>;
-         };
-                  bootloaderenv@140000 {
-                     label = "bootloader env";
-                     reg = <0x140000 0x40000>;
-                  };
-
-         kernel@200000 {
-            label = "kernel";
-            reg = <0x200000 0x600000>;
-         };
-                  dtb@180000 {
-                     label = "device tree";
-                     reg = <0x180000 0x80000>;
-                  };
-
-         rootfs@800000 {
-            label = "rootfs";
-            reg = <0x800000 0x0f800000>;
-         };
+            bootloader@0 { /* 1MB: 0~40000(bootstrap) 40000~C0000(u-boot.bin) C0000~100000(u-boot.env) */
+                label = "bootloader";
+                reg = <0x0 0x100000>;
+            };
-                  kernel@200000 {
-                     label = "kernel";
-                     reg = <0x200000 0x600000>;
-                  };
-
-                  rootfs@800000 {
-                     label = "rootfs";
-                     reg = <0x800000 0x1f800000>;
-                  };
+                        /* modify nandflash partition by guowenxue, 2019.08.25 */
+                        bootloader@0 { /* 1MB: 0~40000(bootstrap) 40000~C0000(u-boot.bin) C0000~100000(u-boot.env) */
+                            label = "bootloader";
+                            reg = <0x0 0x100000>;
+                        };
+
+            linux@100000 { /* 7MB */
+                label = "linux";
+                reg = <0x100000 0x700000>;
+            };
+                        linux@100000 { /* 7MB */
+                            label = "linux";
+                            reg = <0x100000 0x700000>;
+                        };
+
+            rootfs@800000 { /* 200MB */
+                label = "rootfs";
+                reg = <0x800000 0xc800000>;
+            };
+                        rootfs@800000 { /* 200MB */
+                            label = "rootfs";
+                            reg = <0x800000 0xc800000>;
+                        };
+
+            apps@800000 { /* 48MB */
+                label = "apps";
+                reg = <0xD000000 0x3000000>;
+            };
       };
    };
+                        apps@800000 { /* 48MB */
+                            label = "apps";
+                            reg = <0xD000000 0x3000000>;
+                        };
                };
             };
          };
diff -Nuar linux-at91/build.sh linux-at91-sama5d4/build.sh
--- linux-at91/build.sh   1970-01-01 08:00:00.000000000 +0800
+++ linux-at91-sama5d4/build.sh   2019-08-22 23:15:52.059536360 +0800
+++ linux-at91-sama5d4/build.sh   2019-08-26 00:44:57.984610990 +0800
@@ -0,0 +1,85 @@
+#!/bin/bash
+
@@ -160,31 +178,20 @@
+
diff -Nuar linux-at91/.cfg-sama5d4 linux-at91-sama5d4/.cfg-sama5d4
--- linux-at91/.cfg-sama5d4   1970-01-01 08:00:00.000000000 +0800
+++ linux-at91-sama5d4/.cfg-sama5d4   2019-08-23 00:02:44.587590311 +0800
@@ -0,0 +1,4073 @@
+++ linux-at91-sama5d4/.cfg-sama5d4   2019-08-26 01:08:24.548637971 +0800
@@ -0,0 +1,4387 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# Linux/arm 4.9.151-linux4sam_5.8+ Kernel Configuration
+# Linux/arm 4.19.56-linux4sam-6.1 Kernel Configuration
+#
+CONFIG_ARM=y
+CONFIG_ARM_HAS_SG_CHAIN=y
+CONFIG_MIGHT_HAVE_PCI=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_HAVE_PROC_CPU=y
+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
+CONFIG_ARCH_SUPPORTS_UPROBES=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_ARM_PATCH_PHYS_VIRT=y
+CONFIG_GENERIC_BUG=y
+CONFIG_PGTABLE_LEVELS=2
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Compiler: arm-linux-gcc.br_real (Buildroot 2019.02.4) 7.4.0
+#
+CONFIG_CC_IS_GCC=y
+CONFIG_GCC_VERSION=70400
+CONFIG_CLANG_VERSION=0
+CONFIG_CC_HAS_ASM_GOTO=y
+CONFIG_IRQ_WORK=y
+CONFIG_BUILDTIME_EXTABLE_SORT=y
+
@@ -193,10 +200,10 @@
+#
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_CROSS_COMPILE=""
+# CONFIG_COMPILE_TEST is not set
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_BUILD_SALT=""
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_LZMA=y
+CONFIG_HAVE_KERNEL_XZ=y
@@ -213,7 +220,6 @@
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+CONFIG_CROSS_MEMORY_ATTACH=y
+CONFIG_FHANDLE=y
+CONFIG_USELIB=y
+# CONFIG_AUDIT is not set
+CONFIG_HAVE_ARCH_AUDITSYSCALL=y
@@ -228,9 +234,10 @@
+CONFIG_GENERIC_IRQ_CHIP=y
+CONFIG_IRQ_DOMAIN=y
+CONFIG_HANDLE_DOMAIN_IRQ=y
+CONFIG_IRQ_DOMAIN_DEBUG=y
+CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_SPARSE_IRQ=y
+# CONFIG_GENERIC_IRQ_DEBUGFS is not set
+CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
+CONFIG_ARCH_CLOCKSOURCE_DATA=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+
@@ -241,6 +248,9 @@
+# CONFIG_NO_HZ_IDLE is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+
+#
+# CPU/Task time and stats accounting
@@ -257,27 +267,24 @@
+CONFIG_TINY_RCU=y
+# CONFIG_RCU_EXPERT is not set
+CONFIG_SRCU=y
+# CONFIG_TASKS_RCU is not set
+# CONFIG_RCU_STALL_COMMON is not set
+# CONFIG_TREE_RCU_TRACE is not set
+# CONFIG_RCU_EXPEDITE_BOOT is not set
+# CONFIG_BUILD_BIN2C is not set
+CONFIG_TINY_SRCU=y
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=16
+CONFIG_NMI_LOG_BUF_SHIFT=13
+CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13
+CONFIG_GENERIC_SCHED_CLOCK=y
+CONFIG_CGROUPS=y
+# CONFIG_MEMCG is not set
+# CONFIG_BLK_CGROUP is not set
+# CONFIG_CGROUP_SCHED is not set
+# CONFIG_CGROUP_PIDS is not set
+# CONFIG_CGROUP_RDMA is not set
+# CONFIG_CGROUP_FREEZER is not set
+# CONFIG_CPUSETS is not set
+# CONFIG_CGROUP_DEVICE is not set
+# CONFIG_CGROUP_CPUACCT is not set
+# CONFIG_CGROUP_DEBUG is not set
+# CONFIG_CHECKPOINT_RESTORE is not set
+CONFIG_SOCK_CGROUP_DATA=y
+# CONFIG_NAMESPACES is not set
+# CONFIG_CHECKPOINT_RESTORE is not set
+# CONFIG_SCHED_AUTOGROUP is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
@@ -294,29 +301,35 @@
+# CONFIG_SGETMASK_SYSCALL is not set
+CONFIG_SYSFS_SYSCALL=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_ABSOLUTE_PERCPU is not set
+CONFIG_KALLSYMS_BASE_RELATIVE=y
+CONFIG_FHANDLE=y
+CONFIG_POSIX_TIMERS=y
+CONFIG_PRINTK=y
+CONFIG_PRINTK_NMI=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_FUTEX_PI=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+# CONFIG_BPF_SYSCALL is not set
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+CONFIG_ADVISE_SYSCALLS=y
+# CONFIG_USERFAULTFD is not set
+CONFIG_MEMBARRIER=y
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+CONFIG_KALLSYMS_BASE_RELATIVE=y
+# CONFIG_BPF_SYSCALL is not set
+# CONFIG_USERFAULTFD is not set
+CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y
+CONFIG_RSEQ=y
+# CONFIG_DEBUG_RSEQ is not set
+CONFIG_EMBEDDED=y
+CONFIG_HAVE_PERF_EVENTS=y
+CONFIG_PERF_USE_VMALLOC=y
+# CONFIG_PC104 is not set
+
+#
+# Kernel Performance Events And Counters
@@ -327,113 +340,34 @@
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_SLAB_MERGE_DEFAULT=y
+# CONFIG_SLAB_FREELIST_RANDOM is not set
+# CONFIG_SYSTEM_DATA_VERIFICATION is not set
+CONFIG_SYSTEM_DATA_VERIFICATION=y
+# CONFIG_PROFILING is not set
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+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
+CONFIG_ARCH_USE_BUILTIN_BSWAP=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_OPTPROBES=y
+CONFIG_HAVE_NMI=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_CONTIGUOUS=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
+CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_DMA_API_DEBUG=y
+CONFIG_HAVE_PERF_REGS=y
+CONFIG_HAVE_PERF_USER_STACK_DUMP=y
+CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
+CONFIG_HAVE_GCC_PLUGINS=y
+# CONFIG_GCC_PLUGINS is not set
+CONFIG_HAVE_CC_STACKPROTECTOR=y
+# CONFIG_CC_STACKPROTECTOR is not set
+CONFIG_CC_STACKPROTECTOR_NONE=y
+# CONFIG_CC_STACKPROTECTOR_REGULAR is not set
+# CONFIG_CC_STACKPROTECTOR_STRONG is not set
+CONFIG_HAVE_CONTEXT_TRACKING=y
+CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
+CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
+CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
+CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
+CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
+CONFIG_HAVE_EXIT_THREAD=y
+CONFIG_ARCH_MMAP_RND_BITS_MIN=8
+CONFIG_ARCH_MMAP_RND_BITS_MAX=16
+CONFIG_ARCH_MMAP_RND_BITS=8
+# CONFIG_HAVE_ARCH_HASH is not set
+# CONFIG_ISA_BUS_API is not set
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_OLD_SIGACTION=y
+# CONFIG_CPU_NO_EFFICIENT_FFS is not set
+# CONFIG_HAVE_ARCH_VMAP_STACK is not set
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_GCOV_KERNEL is not set
+CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_FORCE_LOAD=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+# CONFIG_MODULE_SIG is not set
+# CONFIG_MODULE_COMPRESS is not set
+# CONFIG_TRIM_UNUSED_KSYMS is not set
+CONFIG_BLOCK=y
+CONFIG_LBDAF=y
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_BSGLIB is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+# CONFIG_BLK_CMDLINE_PARSER is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_EFI_PARTITION=y
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_IOSCHED_CFQ is not set
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
+CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
+CONFIG_INLINE_READ_UNLOCK=y
+CONFIG_INLINE_READ_UNLOCK_IRQ=y
+CONFIG_INLINE_WRITE_UNLOCK=y
+CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
+CONFIG_FREEZER=y
+CONFIG_ARM=y
+CONFIG_ARM_HAS_SG_CHAIN=y
+CONFIG_MIGHT_HAVE_PCI=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_HAVE_PROC_CPU=y
+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_ARCH_SUPPORTS_UPROBES=y
+CONFIG_ARM_PATCH_PHYS_VIRT=y
+CONFIG_GENERIC_BUG=y
+CONFIG_PGTABLE_LEVELS=2
+
+#
+# System Type
+#
+CONFIG_MMU=y
+CONFIG_ARCH_MMAP_RND_BITS_MIN=8
+CONFIG_ARCH_MMAP_RND_BITS_MAX=16
+CONFIG_ARCH_MULTIPLATFORM=y
+# CONFIG_ARCH_GEMINI is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
@@ -463,34 +397,36 @@
+# CONFIG_ARCH_MULTI_V6 is not set
+CONFIG_ARCH_MULTI_V7=y
+CONFIG_ARCH_MULTI_V6_V7=y
+# CONFIG_ARCH_MULTI_CPU_AUTO is not set
+# CONFIG_ARCH_VIRT is not set
+# CONFIG_ARCH_MVEBU is not set
+# CONFIG_ARCH_ACTIONS is not set
+# CONFIG_ARCH_ALPINE is not set
+# CONFIG_ARCH_ARTPEC is not set
+CONFIG_ARCH_AT91=y
+CONFIG_SOC_SAMA5D2=y
+CONFIG_SOC_SAMA5D3=y
+# CONFIG_SOC_SAMA5D2 is not set
+# CONFIG_SOC_SAMA5D3 is not set
+CONFIG_SOC_SAMA5D4=y
+# CONFIG_AT91_VDEC_G1 is not set
+CONFIG_AT91_VDEC_G1=y
+CONFIG_HAVE_AT91_UTMI=y
+CONFIG_HAVE_AT91_USB_CLK=y
+CONFIG_COMMON_CLK_AT91=y
+CONFIG_HAVE_AT91_SMD=y
+CONFIG_HAVE_AT91_H32MX=y
+CONFIG_HAVE_AT91_GENERATED_CLK=y
+CONFIG_HAVE_AT91_AUDIO_PLL=y
+CONFIG_SOC_SAM_V7=y
+CONFIG_SOC_SAMA5=y
+CONFIG_ATMEL_PM=y
+# CONFIG_ARCH_BCM is not set
+# CONFIG_ARCH_BERLIN is not set
+# CONFIG_ARCH_DIGICOLOR is not set
+# CONFIG_ARCH_EXYNOS is not set
+# CONFIG_ARCH_HIGHBANK is not set
+# CONFIG_ARCH_HISI is not set
+# CONFIG_ARCH_KEYSTONE is not set
+# CONFIG_ARCH_MESON is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_KEYSTONE is not set
+# CONFIG_ARCH_MEDIATEK is not set
+# CONFIG_ARCH_MESON is not set
+# CONFIG_ARCH_MMP is not set
+# CONFIG_ARCH_MVEBU is not set
+# CONFIG_ARCH_NPCM is not set
+
+#
+# TI OMAP/AM/DM/DRA Family
@@ -501,18 +437,17 @@
+# CONFIG_SOC_AM33XX is not set
+# CONFIG_SOC_AM43XX is not set
+# CONFIG_SOC_DRA7XX is not set
+# CONFIG_ARCH_MMP is not set
+# CONFIG_ARCH_SIRF is not set
+# CONFIG_ARCH_QCOM is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_ROCKCHIP is not set
+# CONFIG_ARCH_S5PV210 is not set
+# CONFIG_ARCH_RENESAS is not set
+# CONFIG_ARCH_SOCFPGA is not set
+# CONFIG_PLAT_SPEAR is not set
+# CONFIG_ARCH_STI is not set
+# CONFIG_ARCH_S5PV210 is not set
+# CONFIG_ARCH_EXYNOS is not set
+# CONFIG_ARCH_RENESAS is not set
+# CONFIG_ARCH_STM32 is not set
+# CONFIG_ARCH_SUNXI is not set
+# CONFIG_ARCH_SIRF is not set
+# CONFIG_ARCH_TANGO is not set
+# CONFIG_ARCH_TEGRA is not set
+# CONFIG_ARCH_UNIPHIER is not set
@@ -526,6 +461,7 @@
+# Processor Type
+#
+CONFIG_CPU_V7=y
+CONFIG_CPU_THUMB_CAPABLE=y
+CONFIG_CPU_32v6K=y
+CONFIG_CPU_32v7=y
+CONFIG_CPU_ABRT_EV7=y
@@ -542,7 +478,6 @@
+# Processor Features
+#
+# CONFIG_ARM_LPAE is not set
+# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
+CONFIG_ARM_THUMB=y
+# CONFIG_ARM_THUMBEE is not set
+CONFIG_ARM_VIRT_EXT=y
@@ -566,9 +501,7 @@
+CONFIG_ARM_L1_CACHE_SHIFT=6
+CONFIG_ARM_DMA_MEM_BUFFERABLE=y
+CONFIG_ARM_HEAVY_MB=y
+CONFIG_DEBUG_RODATA=y
+CONFIG_DEBUG_ALIGN_RODATA=y
+CONFIG_MULTI_IRQ_HANDLER=y
+# CONFIG_ARM_ERRATA_430973 is not set
+# CONFIG_ARM_ERRATA_720789 is not set
+# CONFIG_ARM_ERRATA_754322 is not set
@@ -584,8 +517,11 @@
+# Bus support
+#
+# CONFIG_PCI is not set
+# CONFIG_PCI_DOMAINS_GENERIC is not set
+# CONFIG_PCI_SYSCALL is not set
+
+#
+# PCI Endpoint
+#
+# CONFIG_PCI_ENDPOINT is not set
+# CONFIG_PCCARD is not set
+
+#
@@ -601,9 +537,6 @@
+CONFIG_PAGE_OFFSET=0xC0000000
+# CONFIG_ARM_PSCI is not set
+CONFIG_ARCH_NR_GPIO=0
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+CONFIG_HZ_FIXED=0
+CONFIG_HZ_100=y
+# CONFIG_HZ_200 is not set
@@ -612,48 +545,19 @@
+# CONFIG_HZ_500 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=100
+# CONFIG_SCHED_HRTICK is not set
+# CONFIG_THUMB2_KERNEL is not set
+CONFIG_ARM_PATCH_IDIV=y
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
+CONFIG_HAVE_ARCH_PFN_VALID=y
+# CONFIG_HIGHMEM is not set
+CONFIG_CPU_SW_DOMAIN_PAN=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_SPLIT_PTLOCK_CPUS=4
+CONFIG_COMPACTION=y
+CONFIG_MIGRATION=y
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+# CONFIG_KSM is not set
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_NEED_PER_CPU_KM=y
+# CONFIG_CLEANCACHE is not set
+CONFIG_CMA=y
+# CONFIG_CMA_DEBUG is not set
+CONFIG_CMA_DEBUGFS=y
+CONFIG_CMA_AREAS=7
+# CONFIG_ZPOOL is not set
+# CONFIG_ZBUD is not set
+# CONFIG_ZSMALLOC is not set
+CONFIG_GENERIC_EARLY_IOREMAP=y
+# CONFIG_IDLE_PAGE_TRACKING is not set
+CONFIG_FRAME_VECTOR=y
+CONFIG_FORCE_MAX_ZONEORDER=15
+CONFIG_ALIGNMENT_TRAP=y
+CONFIG_UACCESS_WITH_MEMCPY=y
+# CONFIG_SECCOMP is not set
+CONFIG_SWIOTLB=y
+CONFIG_IOMMU_HELPER=y
+# CONFIG_PARAVIRT is not set
+# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
+# CONFIG_XEN is not set
@@ -693,7 +597,6 @@
+#
+# CONFIG_ARM_CPUIDLE is not set
+CONFIG_ARM_AT91_CPUIDLE=y
+# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set
+
+#
+# Floating point emulation
@@ -706,18 +609,6 @@
+CONFIG_VFPv3=y
+CONFIG_NEON=y
+CONFIG_KERNEL_MODE_NEON=y
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_ELFCORE=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+CONFIG_BINFMT_SCRIPT=y
+# CONFIG_BINFMT_FLAT is not set
+# CONFIG_HAVE_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+CONFIG_COREDUMP=y
+
+#
+# Power management options
@@ -740,6 +631,170 @@
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARM_CPU_SUSPEND=y
+CONFIG_ARCH_HIBERNATION_POSSIBLE=y
+
+#
+# Firmware Drivers
+#
+# CONFIG_FIRMWARE_MEMMAP is not set
+# CONFIG_FW_CFG_SYSFS is not set
+CONFIG_HAVE_ARM_SMCCC=y
+# CONFIG_GOOGLE_FIRMWARE is not set
+
+#
+# Tegra firmware driver
+#
+# CONFIG_ARM_CRYPTO is not set
+# CONFIG_VIRTUALIZATION is not set
+
+#
+# General architecture-dependent options
+#
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+CONFIG_JUMP_LABEL=y
+# CONFIG_STATIC_KEYS_SELFTEST is not set
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_ARCH_USE_BUILTIN_BSWAP=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_OPTPROBES=y
+CONFIG_HAVE_NMI=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_CONTIGUOUS=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
+CONFIG_ARCH_HAS_FORTIFY_SOURCE=y
+CONFIG_ARCH_HAS_SET_MEMORY=y
+CONFIG_HAVE_ARCH_THREAD_STRUCT_WHITELIST=y
+CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
+CONFIG_HAVE_RSEQ=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_PERF_REGS=y
+CONFIG_HAVE_PERF_USER_STACK_DUMP=y
+CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
+CONFIG_HAVE_STACKPROTECTOR=y
+CONFIG_CC_HAS_STACKPROTECTOR_NONE=y
+CONFIG_STACKPROTECTOR=y
+CONFIG_STACKPROTECTOR_STRONG=y
+CONFIG_HAVE_CONTEXT_TRACKING=y
+CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
+CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
+CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
+CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
+CONFIG_HAVE_ARCH_MMAP_RND_BITS=y
+CONFIG_HAVE_EXIT_THREAD=y
+CONFIG_ARCH_MMAP_RND_BITS=8
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_OLD_SIGACTION=y
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
+CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
+CONFIG_STRICT_KERNEL_RWX=y
+CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
+CONFIG_STRICT_MODULE_RWX=y
+CONFIG_ARCH_HAS_PHYS_TO_DMA=y
+CONFIG_REFCOUNT_FULL=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_GCOV_KERNEL is not set
+CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
+CONFIG_PLUGIN_HOSTCC=""
+CONFIG_HAVE_GCC_PLUGINS=y
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_FORCE_LOAD=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+# CONFIG_MODULE_SIG is not set
+# CONFIG_MODULE_COMPRESS is not set
+# CONFIG_TRIM_UNUSED_KSYMS is not set
+CONFIG_BLOCK=y
+CONFIG_LBDAF=y
+CONFIG_BLK_SCSI_REQUEST=y
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_BSGLIB is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+# CONFIG_BLK_DEV_ZONED is not set
+# CONFIG_BLK_CMDLINE_PARSER is not set
+# CONFIG_BLK_WBT is not set
+CONFIG_BLK_DEBUG_FS=y
+# CONFIG_BLK_SED_OPAL is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_EFI_PARTITION=y
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_IOSCHED_CFQ is not set
+CONFIG_DEFAULT_NOOP=y
+CONFIG_DEFAULT_IOSCHED="noop"
+CONFIG_MQ_IOSCHED_DEADLINE=y
+CONFIG_MQ_IOSCHED_KYBER=y
+# CONFIG_IOSCHED_BFQ is not set
+CONFIG_ASN1=y
+CONFIG_INLINE_SPIN_UNLOCK_IRQ=y
+CONFIG_INLINE_READ_UNLOCK=y
+CONFIG_INLINE_READ_UNLOCK_IRQ=y
+CONFIG_INLINE_WRITE_UNLOCK=y
+CONFIG_INLINE_WRITE_UNLOCK_IRQ=y
+CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
+CONFIG_FREEZER=y
+
+#
+# Executable file formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_ELF_FDPIC is not set
+CONFIG_ELFCORE=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+CONFIG_BINFMT_SCRIPT=y
+# CONFIG_BINFMT_FLAT is not set
+# CONFIG_BINFMT_MISC is not set
+CONFIG_COREDUMP=y
+
+#
+# Memory Management options
+#
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_HAVE_MEMBLOCK=y
+CONFIG_NO_BOOTMEM=y
+CONFIG_MEMORY_ISOLATION=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_COMPACTION=y
+CONFIG_MIGRATION=y
+# CONFIG_KSM is not set
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_NEED_PER_CPU_KM=y
+# CONFIG_CLEANCACHE is not set
+CONFIG_CMA=y
+# CONFIG_CMA_DEBUG is not set
+CONFIG_CMA_DEBUGFS=y
+CONFIG_CMA_AREAS=7
+# CONFIG_ZPOOL is not set
+# CONFIG_ZBUD is not set
+# CONFIG_ZSMALLOC is not set
+CONFIG_GENERIC_EARLY_IOREMAP=y
+# CONFIG_IDLE_PAGE_TRACKING is not set
+CONFIG_FRAME_VECTOR=y
+# CONFIG_PERCPU_STATS is not set
+# CONFIG_GUP_BENCHMARK is not set
+CONFIG_NET=y
+CONFIG_NET_INGRESS=y
+
@@ -750,6 +805,7 @@
+# CONFIG_PACKET_DIAG is not set
+CONFIG_UNIX=y
+# CONFIG_UNIX_DIAG is not set
+# CONFIG_TLS is not set
+# CONFIG_XFRM_USER is not set
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
@@ -763,19 +819,16 @@
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE_DEMUX is not set
+# CONFIG_NET_IP_TUNNEL is not set
+CONFIG_IP_MROUTE_COMMON=y
+CONFIG_IP_MROUTE=y
+# CONFIG_IP_MROUTE_MULTIPLE_TABLES is not set
+# CONFIG_IP_PIMSM_V1 is not set
+# CONFIG_IP_PIMSM_V2 is not set
+CONFIG_SYN_COOKIES=y
+# CONFIG_NET_UDP_TUNNEL is not set
+# CONFIG_NET_FOU is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
@@ -786,10 +839,8 @@
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IPV6 is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NET_PTP_CLASSIFY is not set
+# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
+CONFIG_NETFILTER=y
+CONFIG_NETFILTER_DEBUG=y
+CONFIG_NETFILTER_ADVANCED=y
+CONFIG_BRIDGE_NETFILTER=y
+
@@ -798,11 +849,16 @@
+#
+CONFIG_NETFILTER_INGRESS=y
+CONFIG_NETFILTER_NETLINK=y
+CONFIG_NETFILTER_FAMILY_BRIDGE=y
+CONFIG_NETFILTER_FAMILY_ARP=y
+CONFIG_NETFILTER_NETLINK_ACCT=y
+CONFIG_NETFILTER_NETLINK_QUEUE=y
+CONFIG_NETFILTER_NETLINK_LOG=y
+CONFIG_NETFILTER_NETLINK_OSF=y
+CONFIG_NF_CONNTRACK=y
+CONFIG_NF_LOG_COMMON=y
+# CONFIG_NF_LOG_NETDEV is not set
+CONFIG_NETFILTER_CONNCOUNT=y
+CONFIG_NF_CONNTRACK_MARK=y
+# CONFIG_NF_CONNTRACK_ZONES is not set
+CONFIG_NF_CONNTRACK_PROCFS=y
@@ -826,7 +882,6 @@
+CONFIG_NF_CONNTRACK_SIP=y
+CONFIG_NF_CONNTRACK_TFTP=y
+CONFIG_NF_CT_NETLINK=y
+CONFIG_NF_CT_NETLINK_TIMEOUT=y
+# CONFIG_NETFILTER_NETLINK_GLUE_CT is not set
+CONFIG_NF_NAT=y
+CONFIG_NF_NAT_NEEDED=y
@@ -841,24 +896,28 @@
+CONFIG_NF_NAT_REDIRECT=y
+CONFIG_NETFILTER_SYNPROXY=y
+CONFIG_NF_TABLES=y
+# CONFIG_NF_TABLES_SET is not set
+# CONFIG_NF_TABLES_NETDEV is not set
+CONFIG_NFT_EXTHDR=y
+CONFIG_NFT_META=y
+# CONFIG_NFT_NUMGEN is not set
+CONFIG_NFT_CT=y
+# CONFIG_NFT_SET_RBTREE is not set
+# CONFIG_NFT_SET_HASH is not set
+CONFIG_NFT_COUNTER=y
+# CONFIG_NFT_CONNLIMIT is not set
+CONFIG_NFT_LOG=y
+CONFIG_NFT_LIMIT=y
+CONFIG_NFT_MASQ=y
+CONFIG_NFT_REDIR=y
+CONFIG_NFT_NAT=y
+# CONFIG_NFT_TUNNEL is not set
+# CONFIG_NFT_OBJREF is not set
+CONFIG_NFT_QUEUE=y
+# CONFIG_NFT_QUOTA is not set
+CONFIG_NFT_REJECT=y
+CONFIG_NFT_COMPAT=y
+CONFIG_NFT_HASH=y
+# CONFIG_NFT_SOCKET is not set
+# CONFIG_NFT_OSF is not set
+# CONFIG_NFT_TPROXY is not set
+# CONFIG_NF_FLOW_TABLE is not set
+CONFIG_NETFILTER_XTABLES=y
+
+#
@@ -936,7 +995,7 @@
+CONFIG_NETFILTER_XT_MATCH_REALM=y
+CONFIG_NETFILTER_XT_MATCH_RECENT=y
+CONFIG_NETFILTER_XT_MATCH_SCTP=y
+CONFIG_NETFILTER_XT_MATCH_SOCKET=y
+# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set
+CONFIG_NETFILTER_XT_MATCH_STATE=y
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=y
+CONFIG_NETFILTER_XT_MATCH_STRING=y
@@ -953,6 +1012,7 @@
+CONFIG_IP_SET_HASH_IPPORT=y
+CONFIG_IP_SET_HASH_IPPORTIP=y
+CONFIG_IP_SET_HASH_IPPORTNET=y
+# CONFIG_IP_SET_HASH_IPMAC is not set
+CONFIG_IP_SET_HASH_MAC=y
+CONFIG_IP_SET_HASH_NETPORTNET=y
+CONFIG_IP_SET_HASH_NET=y
@@ -987,6 +1047,7 @@
+CONFIG_IP_VS_LBLCR=y
+CONFIG_IP_VS_DH=y
+CONFIG_IP_VS_SH=y
+# CONFIG_IP_VS_MH is not set
+CONFIG_IP_VS_SED=y
+CONFIG_IP_VS_NQ=y
+
@@ -994,6 +1055,11 @@
+# IPVS SH scheduler
+#
+CONFIG_IP_VS_SH_TAB_BITS=8
+
+#
+# IPVS MH scheduler
+#
+CONFIG_IP_VS_MH_TAB_INDEX=12
+
+#
+# IPVS application helper
@@ -1006,19 +1072,21 @@
+# IP: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV4=y
+CONFIG_NF_CONNTRACK_IPV4=y
+# CONFIG_NF_SOCKET_IPV4 is not set
+CONFIG_NF_TPROXY_IPV4=y
+CONFIG_NF_TABLES_IPV4=y
+CONFIG_NFT_CHAIN_ROUTE_IPV4=y
+CONFIG_NFT_REJECT_IPV4=y
+# CONFIG_NFT_DUP_IPV4 is not set
+# CONFIG_NFT_FIB_IPV4 is not set
+CONFIG_NF_TABLES_ARP=y
+CONFIG_NF_DUP_IPV4=y
+CONFIG_NF_LOG_ARP=y
+CONFIG_NF_LOG_IPV4=y
+CONFIG_NF_REJECT_IPV4=y
+CONFIG_NF_NAT_IPV4=y
+CONFIG_NFT_CHAIN_NAT_IPV4=y
+CONFIG_NF_NAT_MASQUERADE_IPV4=y
+CONFIG_NFT_CHAIN_NAT_IPV4=y
+CONFIG_NFT_MASQ_IPV4=y
+CONFIG_NFT_REDIR_IPV4=y
+CONFIG_NF_NAT_SNMP_BASIC=y
@@ -1046,7 +1114,6 @@
+CONFIG_IP_NF_ARPFILTER=y
+CONFIG_IP_NF_ARP_MANGLE=y
+CONFIG_NF_TABLES_BRIDGE=y
+CONFIG_NFT_BRIDGE_META=y
+CONFIG_NF_LOG_BRIDGE=y
+CONFIG_BRIDGE_NF_EBTABLES=y
+CONFIG_BRIDGE_EBT_BROUTE=y
@@ -1068,6 +1135,7 @@
+CONFIG_BRIDGE_EBT_SNAT=y
+CONFIG_BRIDGE_EBT_LOG=y
+CONFIG_BRIDGE_EBT_NFLOG=y
+# CONFIG_BPFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_RDS is not set
@@ -1083,7 +1151,6 @@
+# CONFIG_DECNET is not set
+CONFIG_LLC=y
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
@@ -1097,11 +1164,11 @@
+# CONFIG_VSOCKETS is not set
+# CONFIG_NETLINK_DIAG is not set
+# CONFIG_MPLS is not set
+# CONFIG_NET_NSH is not set
+# CONFIG_HSR is not set
+# CONFIG_NET_SWITCHDEV is not set
+# CONFIG_NET_L3_MASTER_DEV is not set
+# CONFIG_NET_NCSI is not set
+CONFIG_SOCK_CGROUP_DATA=y
+# CONFIG_CGROUP_NET_PRIO is not set
+CONFIG_CGROUP_NET_CLASSID=y
+CONFIG_NET_RX_BUSY_POLL=y
@@ -1114,11 +1181,9 @@
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+# CONFIG_AF_KCM is not set
+# CONFIG_STREAM_PARSER is not set
+CONFIG_FIB_RULES=y
+CONFIG_WIRELESS=y
+CONFIG_WEXT_CORE=y
@@ -1127,12 +1192,12 @@
+# CONFIG_NL80211_TESTMODE is not set
+# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
+# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
+CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y
+CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y
+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 is not set
+CONFIG_MAC80211=y
+CONFIG_MAC80211_HAS_RC=y
+CONFIG_MAC80211_RC_MINSTREL=y
@@ -1150,17 +1215,28 @@
+CONFIG_RFKILL=y
+CONFIG_RFKILL_LEDS=y
+CONFIG_RFKILL_INPUT=y
+# CONFIG_RFKILL_REGULATOR is not set
+# CONFIG_RFKILL_GPIO is not set
+# CONFIG_NET_9P is not set
+# CONFIG_CAIF is not set
+# CONFIG_CEPH_LIB is not set
+# CONFIG_NFC is not set
+CONFIG_NFC=y
+# CONFIG_NFC_DIGITAL is not set
+# CONFIG_NFC_NCI is not set
+# CONFIG_NFC_HCI is not set
+
+#
+# Near Field Communication (NFC) devices
+#
+CONFIG_NXPRDLIB_BAL=y
+# CONFIG_NFC_PN533_USB is not set
+# CONFIG_NFC_PN533_I2C is not set
+# CONFIG_PSAMPLE is not set
+# CONFIG_NET_IFE is not set
+# CONFIG_LWTUNNEL is not set
+# CONFIG_DST_CACHE is not set
+# CONFIG_NET_DEVLINK is not set
+CONFIG_MAY_USE_DEVLINK=y
+CONFIG_HAVE_CBPF_JIT=y
+# CONFIG_FAILOVER is not set
+CONFIG_HAVE_EBPF_JIT=y
+
+#
+# Device Drivers
@@ -1175,23 +1251,26 @@
+CONFIG_DEVTMPFS_MOUNT=y
+# CONFIG_STANDALONE is not set
+# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+
+#
+# Firmware loader
+#
+CONFIG_FW_LOADER=y
+CONFIG_FIRMWARE_IN_KERNEL=y
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set
+# CONFIG_FW_LOADER_USER_HELPER is not set
+CONFIG_ALLOW_DEV_COREDUMP=y
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_GENERIC_CPU_DEVICES is not set
+# CONFIG_TEST_ASYNC_DRIVER_PROBE is not set
+CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_SOC_BUS=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_SPI=y
+CONFIG_REGMAP_MMIO=y
+CONFIG_DMA_SHARED_BUFFER=y
+# CONFIG_FENCE_TRACE is not set
+# CONFIG_DMA_FENCE_TRACE is not set
+CONFIG_DMA_CMA=y
+
+#
@@ -1208,8 +1287,10 @@
+# Bus devices
+#
+# CONFIG_BRCMSTB_GISB_ARB is not set
+# CONFIG_SIMPLE_PM_BUS is not set
+# CONFIG_VEXPRESS_CONFIG is not set
+# CONFIG_CONNECTOR is not set
+# CONFIG_GNSS is not set
+CONFIG_MTD=y
+# CONFIG_MTD_TESTS is not set
+# CONFIG_MTD_REDBOOT_PARTS is not set
@@ -1217,6 +1298,10 @@
+# CONFIG_MTD_AFS_PARTS is not set
+CONFIG_MTD_OF_PARTS=y
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# Partition parsers
+#
+
+#
+# User Modules And Translation Layers
@@ -1242,13 +1327,8 @@
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_CFI_INTELEXT is not set
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
@@ -1270,6 +1350,7 @@
+#
+# CONFIG_MTD_DATAFLASH is not set
+CONFIG_MTD_M25P80=y
+# CONFIG_MTD_MCHP23K256 is not set
+# CONFIG_MTD_SST25L is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
@@ -1280,24 +1361,20 @@
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOCG3 is not set
+# CONFIG_MTD_ONENAND is not set
+CONFIG_MTD_NAND_ECC=y
+# CONFIG_MTD_NAND_ECC_SMC is not set
+CONFIG_MTD_NAND=y
+# CONFIG_MTD_NAND_ECC_BCH is not set
+# CONFIG_MTD_SM_COMMON is not set
+# CONFIG_MTD_NAND_DENALI_DT is not set
+# CONFIG_MTD_NAND_GPIO is not set
+# CONFIG_MTD_NAND_OMAP_BCH_BUILD is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_DOCG4 is not set
+CONFIG_MTD_NAND_ATMEL=y
+# CONFIG_MTD_NAND_NANDSIM is not set
+# CONFIG_MTD_NAND_BRCMNAND is not set
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_NAND_HISI504 is not set
+# CONFIG_MTD_NAND_MTK is not set
+# CONFIG_MTD_ONENAND is not set
+# CONFIG_MTD_SPI_NAND is not set
+
+#
+# LPDDR & LPDDR2 PCM memory drivers
@@ -1307,7 +1384,6 @@
+CONFIG_MTD_SPI_NOR=y
+# CONFIG_MTD_MT81xx_NOR is not set
+# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
+CONFIG_SPI_ATMEL_QUADSPI=y
+# CONFIG_SPI_CADENCE_QUADSPI is not set
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
@@ -1320,6 +1396,7 @@
+# CONFIG_OF_UNITTEST is not set
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_KOBJ=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_NET=y
@@ -1330,9 +1407,8 @@
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_NULL_BLK is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=4
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_DRBD is not set
+# CONFIG_BLK_DEV_NBD is not set
@@ -1341,14 +1417,17 @@
+CONFIG_BLK_DEV_RAM_SIZE=8192
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+# CONFIG_MG_DISK is not set
+# CONFIG_BLK_DEV_RBD is not set
+
+#
+# NVME Support
+#
+# CONFIG_NVME_FC is not set
+# CONFIG_NVME_TARGET is not set
+
+#
+# Misc devices
+#
+# CONFIG_SENSORS_LIS3LV02D is not set
+# CONFIG_AD525X_DPOT is not set
+CONFIG_ATMEL_TCLIB=y
+CONFIG_ATMEL_TCB_CLKSRC=y
@@ -1365,10 +1444,10 @@
+# CONFIG_SENSORS_APDS990X is not set
+# CONFIG_HMC6352 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_TI_DAC7512 is not set
+# CONFIG_USB_SWITCH_FSA9480 is not set
+# CONFIG_LATTICE_ECP3_CONFIG is not set
+CONFIG_SRAM=y
+CONFIG_SRAM_EXEC=y
+# CONFIG_C2PORT is not set
+
+#
@@ -1380,6 +1459,7 @@
+# CONFIG_EEPROM_MAX6875 is not set
+CONFIG_EEPROM_93CX6=y
+# CONFIG_EEPROM_93XX46 is not set
+# CONFIG_EEPROM_IDT_89HPESX is not set
+
+#
+# Texas Instruments shared transport line discipline
@@ -1387,11 +1467,11 @@
+# CONFIG_TI_ST is not set
+# CONFIG_SENSORS_LIS3_SPI is not set
+# CONFIG_SENSORS_LIS3_I2C is not set
+# CONFIG_ALTERA_STAPL is not set
+
+#
+# Altera FPGA firmware download module
+# Intel MIC & related support
+#
+# CONFIG_ALTERA_STAPL is not set
+
+#
+# Intel MIC Bus Driver
@@ -1425,8 +1505,7 @@
+# VOP Driver
+#
+# CONFIG_ECHO is not set
+# CONFIG_CXL_BASE is not set
+# CONFIG_CXL_AFU_DRIVER_OPS is not set
+# CONFIG_MISC_RTSX_USB is not set
+
+#
+# SCSI device support
@@ -1435,7 +1514,6 @@
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_NETLINK is not set
+# CONFIG_SCSI_MQ_DEFAULT is not set
+CONFIG_SCSI_PROC_FS=y
+
@@ -1479,11 +1557,11 @@
+# CONFIG_EQUALIZER is not set
+# CONFIG_NET_TEAM is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_IPVLAN is not set
+# CONFIG_VXLAN is not set
+# CONFIG_GTP is not set
+# CONFIG_MACSEC is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_TUN is not set
+# CONFIG_TUN_VNET_CROSS_LE is not set
+# CONFIG_VETH is not set
@@ -1497,59 +1575,74 @@
+# Distributed Switch Architecture drivers
+#
+CONFIG_ETHERNET=y
+# CONFIG_NET_VENDOR_ALACRITECH is not set
+# CONFIG_ALTERA_TSE is not set
+# CONFIG_NET_VENDOR_AMAZON is not set
+# CONFIG_NET_VENDOR_AQUANTIA is not set
+# CONFIG_NET_VENDOR_ARC is not set
+# CONFIG_NET_VENDOR_AURORA is not set
+CONFIG_NET_CADENCE=y
+CONFIG_MACB=y
+# CONFIG_NET_VENDOR_BROADCOM is not set
+CONFIG_NET_VENDOR_CADENCE=y
+CONFIG_MACB=y
+CONFIG_MACB_USE_HWSTAMP=y
+# CONFIG_NET_VENDOR_CAVIUM is not set
+# CONFIG_NET_VENDOR_CIRRUS is not set
+# CONFIG_NET_VENDOR_CORTINA is not set
+# CONFIG_DM9000 is not set
+# CONFIG_DNET is not set
+# CONFIG_NET_VENDOR_EZCHIP is not set
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_HISILICON is not set
+# CONFIG_NET_VENDOR_HUAWEI is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
+# CONFIG_NET_VENDOR_MELLANOX is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_MICROCHIP is not set
+# CONFIG_NET_VENDOR_MICROSEMI is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+# CONFIG_NET_VENDOR_NETRONOME is not set
+# CONFIG_NET_VENDOR_NI is not set
+# CONFIG_ETHOC is not set
+# CONFIG_NET_VENDOR_QUALCOMM is not set
+# CONFIG_NET_VENDOR_RENESAS is not set
+# CONFIG_NET_VENDOR_ROCKER is not set
+# CONFIG_NET_VENDOR_SAMSUNG is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+# CONFIG_NET_VENDOR_SOLARFLARE is not set
+# CONFIG_NET_VENDOR_SMSC is not set
+# CONFIG_NET_VENDOR_SOCIONEXT is not set
+# CONFIG_NET_VENDOR_STMICRO is not set
+# CONFIG_NET_VENDOR_SYNOPSYS is not set
+# CONFIG_NET_VENDOR_VIA is not set
+# CONFIG_NET_VENDOR_WIZNET is not set
+CONFIG_PHYLIB=y
+CONFIG_SWPHY=y
+
+#
+# MDIO bus device drivers
+#
+CONFIG_MDIO_DEVICE=y
+CONFIG_MDIO_BUS=y
+# CONFIG_MDIO_BCM_UNIMAC is not set
+# CONFIG_MDIO_BITBANG is not set
+# CONFIG_MDIO_BUS_MUX_GPIO is not set
+# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
+# CONFIG_MDIO_HISI_FEMAC is not set
+# CONFIG_MDIO_MSCC_MIIM is not set
+CONFIG_PHYLIB=y
+CONFIG_SWPHY=y
+# CONFIG_LED_TRIGGER_PHY is not set
+
+#
+# MII PHY device drivers
+#
+# CONFIG_AMD_PHY is not set
+# CONFIG_AQUANTIA_PHY is not set
+# CONFIG_ASIX_PHY is not set
+# CONFIG_AT803X_PHY is not set
+# CONFIG_BCM7XXX_PHY is not set
+# CONFIG_BCM87XX_PHY is not set
+# CONFIG_BROADCOM_PHY is not set
+# CONFIG_CICADA_PHY is not set
+# CONFIG_CORTINA_PHY is not set
+# CONFIG_DAVICOM_PHY is not set
+# CONFIG_DP83822_PHY is not set
+# CONFIG_DP83TC811_PHY is not set
+# CONFIG_DP83848_PHY is not set
+# CONFIG_DP83867_PHY is not set
+CONFIG_FIXED_PHY=y
@@ -1558,12 +1651,16 @@
+# CONFIG_LSI_ET1011C_PHY is not set
+# CONFIG_LXT_PHY is not set
+# CONFIG_MARVELL_PHY is not set
+# CONFIG_MARVELL_10G_PHY is not set
+CONFIG_MICREL_PHY=y
+# CONFIG_MICROCHIP_PHY is not set
+# CONFIG_MICROCHIP_T1_PHY is not set
+# CONFIG_MICROSEMI_PHY is not set
+# CONFIG_NATIONAL_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+# CONFIG_REALTEK_PHY is not set
+# CONFIG_RENESAS_PHY is not set
+# CONFIG_ROCKCHIP_PHY is not set
+# CONFIG_SMSC_PHY is not set
+# CONFIG_STE10XP is not set
+# CONFIG_TERANETICS_PHY is not set
@@ -1585,13 +1682,14 @@
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+CONFIG_USB_RTL8150=y
+# CONFIG_USB_RTL8150 is not set
+CONFIG_USB_RTL8152=y
+# CONFIG_USB_LAN78XX is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_USB_HSO is not set
+# CONFIG_USB_IPHETH is not set
+CONFIG_WLAN=y
+# CONFIG_WIRELESS_WDS is not set
+# CONFIG_WLAN_VENDOR_ADMTEK is not set
+# CONFIG_WLAN_VENDOR_ATH is not set
+# CONFIG_WLAN_VENDOR_ATMEL is not set
@@ -1602,6 +1700,12 @@
+# CONFIG_WLAN_VENDOR_MARVELL is not set
+CONFIG_WLAN_VENDOR_MEDIATEK=y
+CONFIG_MT7601U=y
+CONFIG_MT76_CORE=y
+CONFIG_MT76_LEDS=y
+CONFIG_MT76_USB=y
+CONFIG_MT76x2_COMMON=y
+CONFIG_MT76x0U=y
+CONFIG_MT76x2U=y
+CONFIG_WLAN_VENDOR_RALINK=y
+CONFIG_RT2X00=y
+# CONFIG_RT2500USB is not set
@@ -1634,6 +1738,7 @@
+# CONFIG_WLAN_VENDOR_ST is not set
+# CONFIG_WLAN_VENDOR_TI is not set
+# CONFIG_WLAN_VENDOR_ZYDAS is not set
+# CONFIG_WLAN_VENDOR_QUANTENNA is not set
+# CONFIG_MAC80211_HWSIM is not set
+# CONFIG_USB_NET_RNDIS_WLAN is not set
+
@@ -1641,8 +1746,9 @@
+# Enable WiMAX (Networking options) to see the WiMAX drivers
+#
+# CONFIG_WAN is not set
+# CONFIG_NETDEVSIM is not set
+# CONFIG_NET_FAILOVER is not set
+# CONFIG_ISDN is not set
+# CONFIG_NVM is not set
+
+#
+# Input device support
@@ -1657,10 +1763,7 @@
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=320
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
@@ -1675,6 +1778,7 @@
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_QT1070 is not set
+# CONFIG_KEYBOARD_QT2160 is not set
+# CONFIG_KEYBOARD_DLINK_DIR685 is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_KEYBOARD_GPIO_POLLED=y
@@ -1692,6 +1796,7 @@
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_OMAP4 is not set
+# CONFIG_KEYBOARD_TM2_TOUCHKEY is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_CAP11XX is not set
+# CONFIG_KEYBOARD_BCM is not set
@@ -1724,6 +1829,7 @@
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_N_GSM is not set
+# CONFIG_TRACE_SINK is not set
+CONFIG_LDISC_AUTOLOAD=y
+CONFIG_DEVMEM=y
+CONFIG_DEVKMEM=y
+
@@ -1756,15 +1862,14 @@
+# 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_SERIAL_MCTRL_GPIO=y
+# CONFIG_SERIAL_DEV_BUS is not set
+# CONFIG_TTY_PRINTK is not set
+# 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_ATMEL=y
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+# CONFIG_XILLYBUS is not set
@@ -1783,11 +1888,14 @@
+#
+# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set
+# CONFIG_I2C_MUX_GPIO is not set
+# CONFIG_I2C_MUX_GPMUX is not set
+# CONFIG_I2C_MUX_LTC4306 is not set
+# CONFIG_I2C_MUX_PCA9541 is not set
+# CONFIG_I2C_MUX_PCA954x is not set
+# CONFIG_I2C_MUX_PINCTRL is not set
+# CONFIG_I2C_MUX_REG is not set
+# CONFIG_I2C_DEMUX_PINCTRL is not set
+# CONFIG_I2C_MUX_MLXCPLD is not set
+CONFIG_I2C_HELPER_AUTO=y
+CONFIG_I2C_ALGOBIT=y
+
@@ -1803,9 +1911,9 @@
+# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
+# CONFIG_I2C_EMEV2 is not set
+CONFIG_I2C_GPIO=y
+# CONFIG_I2C_GPIO_FAULT_INJECTOR is not set
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PCA_PLATFORM is not set
+# CONFIG_I2C_PXA_PCI is not set
+# CONFIG_I2C_RK3X is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_XILINX is not set
@@ -1830,6 +1938,7 @@
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+CONFIG_SPI_MEM=y
+
+#
+# SPI Master Controller Drivers
@@ -1837,6 +1946,7 @@
+# CONFIG_SPI_ALTERA is not set
+CONFIG_SPI_ATMEL=y
+# CONFIG_SPI_AT91_USART is not set
+CONFIG_SPI_ATMEL_QUADSPI=y
+# CONFIG_SPI_AXI_SPI_ENGINE is not set
+CONFIG_SPI_BITBANG=y
+# CONFIG_SPI_CADENCE is not set
@@ -1844,7 +1954,6 @@
+CONFIG_SPI_GPIO=y
+# CONFIG_SPI_FSL_SPI is not set
+# CONFIG_SPI_OC_TINY is not set
+# CONFIG_SPI_PXA2XX_PCI is not set
+# CONFIG_SPI_ROCKCHIP is not set
+# CONFIG_SPI_SC18IS602 is not set
+# CONFIG_SPI_XCOMM is not set
@@ -1857,17 +1966,10 @@
+CONFIG_SPI_SPIDEV=y
+# CONFIG_SPI_LOOPBACK_TEST is not set
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_SPI_SLAVE is not set
+# CONFIG_SPMI is not set
+# CONFIG_HSI is not set
+
+#
+# PPS support
+#
+# CONFIG_PPS is not set
+
+#
+# PPS generators support
+#
+
+#
+# PTP clock support
@@ -1878,10 +1980,6 @@
+# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
+#
+CONFIG_PINCTRL=y
+
+#
+# Pin controllers
+#
+CONFIG_PINMUX=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
@@ -1889,9 +1987,12 @@
+CONFIG_PINCTRL_AT91=y
+CONFIG_PINCTRL_AT91PIO4=y
+# CONFIG_PINCTRL_AMD is not set
+# CONFIG_PINCTRL_MCP23S08 is not set
+# CONFIG_PINCTRL_SINGLE is not set
+# CONFIG_PINCTRL_SX150X is not set
+CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
+CONFIG_GPIOLIB=y
+CONFIG_GPIOLIB_FASTPATH_LIMIT=512
+CONFIG_OF_GPIO=y
+CONFIG_GPIOLIB_IRQCHIP=y
+# CONFIG_DEBUG_GPIO is not set
@@ -1903,15 +2004,17 @@
+# CONFIG_GPIO_74XX_MMIO is not set
+# CONFIG_GPIO_ALTERA is not set
+# CONFIG_GPIO_DWAPB is not set
+# CONFIG_GPIO_EM is not set
+# CONFIG_GPIO_FTGPIO010 is not set
+# CONFIG_GPIO_GENERIC_PLATFORM is not set
+# CONFIG_GPIO_GRGPIO is not set
+# CONFIG_GPIO_HLWD is not set
+# CONFIG_GPIO_MB86S7X is not set
+# CONFIG_GPIO_MOCKUP is not set
+# CONFIG_GPIO_MPC8XXX is not set
+# CONFIG_GPIO_SAMA5D2_PIOBU is not set
+CONFIG_GPIO_SYSCON=y
+# CONFIG_GPIO_XILINX is not set
+# CONFIG_GPIO_ZEVIO is not set
+# CONFIG_GPIO_ZX is not set
+
+#
+# I2C GPIO expanders
@@ -1922,9 +2025,7 @@
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
+# CONFIG_GPIO_SX150X is not set
+# CONFIG_GPIO_TPIC2810 is not set
+# CONFIG_GPIO_TS4900 is not set
+
+#
+# MFD GPIO expanders
@@ -1935,14 +2036,11 @@
+# SPI GPIO expanders
+#
+# CONFIG_GPIO_74X164 is not set
+# CONFIG_GPIO_MAX3191X is not set
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MC33880 is not set
+# CONFIG_GPIO_PISOSR is not set
+
+#
+# SPI or I2C GPIO expanders
+#
+# CONFIG_GPIO_MCP23S08 is not set
+# CONFIG_GPIO_XRA1403 is not set
+
+#
+# USB GPIO expanders
@@ -1968,11 +2066,15 @@
+# CONFIG_PDA_POWER is not set
+# CONFIG_GENERIC_ADC_BATTERY is not set
+# CONFIG_TEST_POWER is not set
+# CONFIG_CHARGER_ADP5061 is not set
+CONFIG_BATTERY_ACT8945A=y
+# CONFIG_BATTERY_DS2780 is not set
+# CONFIG_BATTERY_DS2781 is not set
+# CONFIG_BATTERY_DS2782 is not set
+# CONFIG_BATTERY_LEGO_EV3 is not set
+# CONFIG_BATTERY_SBS is not set
+# CONFIG_CHARGER_SBS is not set
+# CONFIG_MANAGER_SBS is not set
+# CONFIG_BATTERY_BQ27XXX is not set
+# CONFIG_BATTERY_MAX17040 is not set
+# CONFIG_BATTERY_MAX17042 is not set
@@ -1980,8 +2082,9 @@
+# CONFIG_CHARGER_LP8727 is not set
+# CONFIG_CHARGER_GPIO is not set
+# CONFIG_CHARGER_MANAGER is not set
+# CONFIG_CHARGER_LTC3651 is not set
+# CONFIG_CHARGER_DETECTOR_MAX14656 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
@@ -1993,6 +2096,7 @@
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED=y
+# CONFIG_WATCHDOG_SYSFS is not set
+
+#
@@ -2005,6 +2109,7 @@
+CONFIG_AT91SAM9X_WATCHDOG=y
+CONFIG_SAMA5D4_WATCHDOG=y
+# CONFIG_CADENCE_WATCHDOG is not set
+# CONFIG_FTWDT010_WATCHDOG is not set
+# CONFIG_DW_WATCHDOG is not set
+# CONFIG_MAX63XX_WATCHDOG is not set
+# CONFIG_MEN_A21_WDT is not set
@@ -2019,16 +2124,8 @@
+#
+# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+# CONFIG_SSB is not set
+CONFIG_BCMA_POSSIBLE=y
+
+#
+# Broadcom specific AMBA
+#
+# CONFIG_BCMA is not set
+
+#
@@ -2043,9 +2140,12 @@
+CONFIG_MFD_AT91_USART=y
+CONFIG_MFD_ATMEL_FLEXCOM=y
+CONFIG_MFD_ATMEL_HLCDC=y
+CONFIG_MFD_ATMEL_SMC=y
+# CONFIG_MFD_BCM590XX is not set
+# CONFIG_MFD_BD9571MWV is not set
+# CONFIG_MFD_AXP20X_I2C is not set
+# CONFIG_MFD_CROS_EC is not set
+# CONFIG_MFD_MADERA is not set
+# CONFIG_MFD_ASIC3 is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_MFD_DA9052_SPI is not set
@@ -2055,13 +2155,11 @@
+# CONFIG_MFD_DA9063 is not set
+# CONFIG_MFD_DA9150 is not set
+# CONFIG_MFD_DLN2 is not set
+# CONFIG_MFD_EXYNOS_LPASS is not set
+# CONFIG_MFD_MC13XXX_SPI is not set
+# CONFIG_MFD_MC13XXX_I2C is not set
+# CONFIG_MFD_HI6421_PMIC is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_HTC_I2CPLD is not set
+# CONFIG_INTEL_SOC_PMIC is not set
+# CONFIG_MFD_KEMPLD is not set
+# CONFIG_MFD_88PM800 is not set
+# CONFIG_MFD_88PM805 is not set
@@ -2078,12 +2176,12 @@
+# CONFIG_MFD_MT6397 is not set
+# CONFIG_MFD_MENF21BMC is not set
+# CONFIG_EZX_PCAP is not set
+# CONFIG_MFD_CPCAP is not set
+# CONFIG_MFD_VIPERBOARD is not set
+# CONFIG_MFD_RETU is not set
+# CONFIG_MFD_PCF50633 is not set
+# CONFIG_MFD_PM8921_CORE is not set
+# CONFIG_MFD_PM8XXX is not set
+# CONFIG_MFD_RT5033 is not set
+# CONFIG_MFD_RTSX_USB is not set
+# CONFIG_MFD_RC5T583 is not set
+# CONFIG_MFD_RK808 is not set
+# CONFIG_MFD_RN5T618 is not set
@@ -2098,6 +2196,7 @@
+# CONFIG_MFD_TI_AM335X_TSCADC is not set
+# CONFIG_MFD_LP3943 is not set
+# CONFIG_MFD_LP8788 is not set
+# CONFIG_MFD_TI_LMU is not set
+# CONFIG_MFD_PALMAS is not set
+# CONFIG_TPS6105X is not set
+# CONFIG_TPS65010 is not set
@@ -2106,6 +2205,7 @@
+# CONFIG_MFD_TPS65090 is not set
+# CONFIG_MFD_TPS65217 is not set
+# CONFIG_MFD_TI_LP873X is not set
+# CONFIG_MFD_TI_LP87565 is not set
+# CONFIG_MFD_TPS65218 is not set
+# CONFIG_MFD_TPS6586X is not set
+# CONFIG_MFD_TPS65910 is not set
@@ -2117,7 +2217,6 @@
+# CONFIG_MFD_WL1273_CORE is not set
+# CONFIG_MFD_LM3533 is not set
+# CONFIG_MFD_TC3589X is not set
+# CONFIG_MFD_TMIO is not set
+# CONFIG_MFD_T7L66XB is not set
+# CONFIG_MFD_TC6387XB is not set
+# CONFIG_MFD_TC6393XB is not set
@@ -2128,11 +2227,13 @@
+# CONFIG_MFD_WM831X_SPI is not set
+# CONFIG_MFD_WM8350_I2C is not set
+# CONFIG_MFD_WM8994 is not set
+# CONFIG_MFD_ROHM_BD718XX is not set
+CONFIG_REGULATOR=y
+# CONFIG_REGULATOR_DEBUG is not set
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_REGULATOR_VIRTUAL_CONSUMER=y
+# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
+# CONFIG_REGULATOR_88PG86X is not set
+CONFIG_REGULATOR_ACT8865=y
+CONFIG_REGULATOR_ACT8945A=y
+# CONFIG_REGULATOR_AD5398 is not set
@@ -2153,17 +2254,36 @@
+# CONFIG_REGULATOR_MAX8649 is not set
+# CONFIG_REGULATOR_MAX8660 is not set
+# CONFIG_REGULATOR_MAX8952 is not set
+# CONFIG_REGULATOR_MCP16502 is not set
+# CONFIG_REGULATOR_MT6311 is not set
+# CONFIG_REGULATOR_PFUZE100 is not set
+# CONFIG_REGULATOR_PV88060 is not set
+# CONFIG_REGULATOR_PV88080 is not set
+# CONFIG_REGULATOR_PV88090 is not set
+# CONFIG_REGULATOR_PWM is not set
+# CONFIG_REGULATOR_SY8106A is not set
+# CONFIG_REGULATOR_TPS51632 is not set
+# CONFIG_REGULATOR_TPS62360 is not set
+# CONFIG_REGULATOR_TPS65023 is not set
+# CONFIG_REGULATOR_TPS6507X is not set
+# CONFIG_REGULATOR_TPS65132 is not set
+# CONFIG_REGULATOR_TPS6524X is not set
+# CONFIG_REGULATOR_VCTRL is not set
+CONFIG_RC_CORE=y
+CONFIG_RC_MAP=y
+# CONFIG_LIRC is not set
+CONFIG_RC_DECODERS=y
+CONFIG_IR_NEC_DECODER=y
+CONFIG_IR_RC5_DECODER=y
+CONFIG_IR_RC6_DECODER=y
+CONFIG_IR_JVC_DECODER=y
+CONFIG_IR_SONY_DECODER=y
+CONFIG_IR_SANYO_DECODER=y
+CONFIG_IR_SHARP_DECODER=y
+CONFIG_IR_MCE_KBD_DECODER=y
+CONFIG_IR_XMP_DECODER=y
+# CONFIG_IR_IMON_DECODER is not set
+# CONFIG_RC_DEVICES is not set
+CONFIG_MEDIA_SUPPORT=y
+
+#
@@ -2174,20 +2294,14 @@
+# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set
+# CONFIG_MEDIA_RADIO_SUPPORT is not set
+# CONFIG_MEDIA_SDR_SUPPORT is not set
+# CONFIG_MEDIA_RC_SUPPORT is not set
+# CONFIG_MEDIA_CEC_SUPPORT is not set
+CONFIG_MEDIA_CONTROLLER=y
+# CONFIG_MEDIA_CONTROLLER_DVB is not set
+CONFIG_VIDEO_DEV=y
+CONFIG_VIDEO_V4L2_SUBDEV_API=y
+CONFIG_VIDEO_V4L2=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+CONFIG_VIDEOBUF_GEN=y
+CONFIG_VIDEOBUF2_CORE=y
+CONFIG_VIDEOBUF2_MEMOPS=y
+CONFIG_VIDEOBUF2_DMA_CONTIG=y
+CONFIG_VIDEOBUF2_VMALLOC=y
+# CONFIG_TTPCI_EEPROM is not set
+CONFIG_V4L2_FWNODE=y
+
+#
+# Media drivers
@@ -2212,6 +2326,8 @@
+#
+# CONFIG_VIDEO_EM28XX is not set
+CONFIG_V4L_PLATFORM_DRIVERS=y
+# CONFIG_VIDEO_CADENCE is not set
+# CONFIG_VIDEO_MUX is not set
+CONFIG_SOC_CAMERA=y
+# CONFIG_SOC_CAMERA_PLATFORM is not set
+# CONFIG_VIDEO_XILINX is not set
@@ -2224,11 +2340,17 @@
+# Supported MMC/SDIO adapters
+#
+# CONFIG_CYPRESS_FIRMWARE is not set
+CONFIG_VIDEOBUF2_CORE=y
+CONFIG_VIDEOBUF2_V4L2=y
+CONFIG_VIDEOBUF2_MEMOPS=y
+CONFIG_VIDEOBUF2_DMA_CONTIG=y
+CONFIG_VIDEOBUF2_VMALLOC=y
+
+#
+# Media ancillary drivers (tuners, sensors, i2c, spi, frontends)
+#
+CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
+CONFIG_VIDEO_IR_I2C=y
+
+#
+# Audio decoders, processors and mixers
@@ -2267,6 +2389,10 @@
+#
+
+#
+# SDR tuner chips
+#
+
+#
+# Miscellaneous helper chips
+#
+
@@ -2277,14 +2403,11 @@
+#
+# soc_camera sensor drivers
+#
+# CONFIG_SOC_CAMERA_IMX074 is not set
+# CONFIG_SOC_CAMERA_MT9M001 is not set
+# CONFIG_SOC_CAMERA_MT9M111 is not set
+# CONFIG_SOC_CAMERA_MT9T031 is not set
+# CONFIG_SOC_CAMERA_MT9T112 is not set
+# CONFIG_SOC_CAMERA_MT9V022 is not set
+# CONFIG_SOC_CAMERA_OV5642 is not set
+# CONFIG_SOC_CAMERA_OV6650 is not set
+# CONFIG_SOC_CAMERA_OV772X is not set
+# CONFIG_SOC_CAMERA_OV9640 is not set
+# CONFIG_SOC_CAMERA_OV9740 is not set
@@ -2292,9 +2415,12 @@
+# CONFIG_SOC_CAMERA_TW9910 is not set
+
+#
+# Media SPI Adapters
+#
+
+#
+# Tools to develop new frontends
+#
+# CONFIG_DVB_DUMMY_FE is not set
+
+#
+# Graphics support
@@ -2303,10 +2429,15 @@
+# CONFIG_IMX_IPUV3_CORE is not set
+CONFIG_DRM=y
+# CONFIG_DRM_DP_AUX_CHARDEV is not set
+# CONFIG_DRM_DEBUG_MM is not set
+# CONFIG_DRM_DEBUG_SELFTEST is not set
+CONFIG_DRM_KMS_HELPER=y
+CONFIG_DRM_KMS_FB_HELPER=y
+CONFIG_DRM_FBDEV_EMULATION=y
+CONFIG_DRM_FBDEV_OVERALLOC=100
+# CONFIG_DRM_FBDEV_LEAK_PHYS_SMEM is not set
+# CONFIG_DRM_LOAD_EDID_FIRMWARE is not set
+# CONFIG_DRM_DP_CEC is not set
+CONFIG_DRM_GEM_CMA_HELPER=y
+CONFIG_DRM_KMS_CMA_HELPER=y
+
@@ -2316,44 +2447,71 @@
+# CONFIG_DRM_I2C_CH7006 is not set
+# CONFIG_DRM_I2C_SIL164 is not set
+# CONFIG_DRM_I2C_NXP_TDA998X is not set
+# CONFIG_DRM_I2C_NXP_TDA9950 is not set
+# CONFIG_DRM_HDLCD is not set
+# CONFIG_DRM_MALI_DISPLAY is not set
+
+#
+# ACP (Audio CoProcessor) Configuration
+#
+
+#
+# AMD Library routines
+#
+# CONFIG_DRM_VGEM is not set
+# CONFIG_DRM_VKMS is not set
+# CONFIG_DRM_EXYNOS is not set
+# CONFIG_DRM_UDL is not set
+# CONFIG_DRM_ARMADA is not set
+CONFIG_DRM_ATMEL_HLCDC=y
+# CONFIG_DRM_RCAR_DW_HDMI is not set
+# CONFIG_DRM_RCAR_LVDS is not set
+# CONFIG_DRM_OMAP is not set
+# CONFIG_DRM_TILCDC is not set
+# CONFIG_DRM_FSL_DCU is not set
+# CONFIG_DRM_STM is not set
+CONFIG_DRM_PANEL=y
+
+#
+# Display Panels
+#
+# CONFIG_DRM_PANEL_ARM_VERSATILE is not set
+# CONFIG_DRM_PANEL_LVDS is not set
+CONFIG_DRM_PANEL_SIMPLE=y
+# CONFIG_DRM_PANEL_ILITEK_IL9322 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_LD9040 is not set
+# CONFIG_DRM_PANEL_LG_LG4573 is not set
+# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set
+# CONFIG_DRM_PANEL_SEIKO_43WVF1G is not set
+# CONFIG_DRM_PANEL_SITRONIX_ST7789V is not set
+CONFIG_DRM_BRIDGE=y
+CONFIG_DRM_PANEL_BRIDGE=y
+
+#
+# Display Interface Bridges
+#
+# CONFIG_DRM_ANALOGIX_ANX78XX is not set
+# CONFIG_DRM_CDNS_DSI is not set
+# CONFIG_DRM_DUMB_VGA_DAC is not set
+# CONFIG_DRM_LVDS_ENCODER is not set
+# CONFIG_DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW is not set
+# CONFIG_DRM_NXP_PTN3460 is not set
+# CONFIG_DRM_PARADE_PS8622 is not set
+# CONFIG_DRM_SIL_SII8620 is not set
+# CONFIG_DRM_SII902X is not set
+# CONFIG_DRM_SII9234 is not set
+# CONFIG_DRM_THINE_THC63LVD1024 is not set
+# CONFIG_DRM_TOSHIBA_TC358767 is not set
+# CONFIG_DRM_TI_TFP410 is not set
+# CONFIG_DRM_I2C_ADV7511 is not set
+# CONFIG_DRM_STI is not set
+# CONFIG_DRM_ARCPGU is not set
+# CONFIG_DRM_MXSFB is not set
+# CONFIG_DRM_TINYDRM is not set
+# CONFIG_DRM_PL111 is not set
+# CONFIG_DRM_TVE200 is not set
+# CONFIG_DRM_LEGACY is not set
+CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y
+
+#
+# Frame buffer Devices
@@ -2362,21 +2520,15 @@
+# CONFIG_FIRMWARE_EDID is not set
+CONFIG_FB_CMDLINE=y
+CONFIG_FB_NOTIFY=y
+# CONFIG_FB_DDC is not set
+# CONFIG_FB_BOOT_VESA_SUPPORT is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+CONFIG_FB_SYS_FILLRECT=y
+CONFIG_FB_SYS_COPYAREA=y
+CONFIG_FB_SYS_IMAGEBLIT=y
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+CONFIG_FB_SYS_FOPS=y
+CONFIG_FB_DEFERRED_IO=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
@@ -2392,7 +2544,6 @@
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_METRONOME is not set
+# CONFIG_FB_BROADSHEET is not set
+# CONFIG_FB_AUO_K190X is not set
+# CONFIG_FB_SIMPLE is not set
+# CONFIG_FB_SSD1307 is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
@@ -2410,6 +2561,7 @@
+# CONFIG_LCD_AMS369FG06 is not set
+# CONFIG_LCD_LMS501KF03 is not set
+# CONFIG_LCD_HX8357 is not set
+# CONFIG_LCD_OTM3225A is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_GENERIC is not set
+CONFIG_BACKLIGHT_PWM=y
@@ -2422,7 +2574,7 @@
+# CONFIG_BACKLIGHT_GPIO is not set
+# CONFIG_BACKLIGHT_LV5207LP is not set
+# CONFIG_BACKLIGHT_BD6107 is not set
+# CONFIG_VGASTATE is not set
+# CONFIG_BACKLIGHT_ARCXCNN is not set
+CONFIG_VIDEOMODE_HELPERS=y
+CONFIG_HDMI=y
+
@@ -2433,16 +2585,13 @@
+# CONFIG_FRAMEBUFFER_CONSOLE is not set
+# CONFIG_LOGO is not set
+CONFIG_SOUND=y
+# CONFIG_SOUND_OSS_CORE is not set
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_DMAENGINE_PCM=y
+CONFIG_SND_JACK=y
+CONFIG_SND_JACK_INPUT_DEV=y
+# CONFIG_SND_SEQUENCER is not set
+# CONFIG_SND_MIXER_OSS is not set
+# CONFIG_SND_PCM_OSS is not set
+# CONFIG_SND_OSSEMUL is not set
+CONFIG_SND_PCM_TIMER=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
@@ -2450,11 +2599,7 @@
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+# CONFIG_SND_RAWMIDI_SEQ is not set
+# CONFIG_SND_OPL3_LIB_SEQ is not set
+# CONFIG_SND_OPL4_LIB_SEQ is not set
+# CONFIG_SND_SBAWE_SEQ is not set
+# CONFIG_SND_EMU10K1_SEQ is not set
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_DRIVERS=y
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_ALOOP is not set
@@ -2469,7 +2614,7 @@
+CONFIG_SND_ARM=y
+
+#
+# Atmel devices (AVR32 and AT91)
+# Atmel devices (AT91)
+#
+# CONFIG_SND_ATMEL_AC97C is not set
+CONFIG_SND_SPI=y
@@ -2497,7 +2642,9 @@
+# CONFIG_SND_AT91_SOC_SAM9X5_WM8731 is not set
+CONFIG_SND_ATMEL_SOC_CLASSD=y
+CONFIG_SND_ATMEL_SOC_PDMIC=y
+# CONFIG_SND_ATMEL_SOC_TSE850_PCM5142 is not set
+CONFIG_SND_ATMEL_SOC_I2S=y
+# CONFIG_SND_SOC_MIKROE_PROTO is not set
+# CONFIG_SND_DESIGNWARE_I2S is not set
+
+#
@@ -2513,8 +2660,14 @@
+# 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_I2S_HI6210_I2S is not set
+# CONFIG_SND_SOC_IMG is not set
+
+#
+# STMicroelectronics STM32 SOC audio support
+#
+# CONFIG_SND_SOC_XTFPGA_I2S is not set
+# CONFIG_ZX_TDM is not set
+CONFIG_SND_SOC_I2C_AND_SPI=y
+
+#
@@ -2522,16 +2675,24 @@
+#
+# CONFIG_SND_SOC_AC97_CODEC is not set
+# CONFIG_SND_SOC_ADAU1701 is not set
+# CONFIG_SND_SOC_ADAU1761_I2C is not set
+# CONFIG_SND_SOC_ADAU1761_SPI is not set
+# CONFIG_SND_SOC_ADAU7002 is not set
+# CONFIG_SND_SOC_AK4104 is not set
+# CONFIG_SND_SOC_AK4458 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_AK5558 is not set
+# CONFIG_SND_SOC_ALC5623 is not set
+# CONFIG_SND_SOC_BD28623 is not set
+# CONFIG_SND_SOC_BT_SCO is not set
+# CONFIG_SND_SOC_CS35L32 is not set
+# CONFIG_SND_SOC_CS35L33 is not set
+# CONFIG_SND_SOC_CS35L34 is not set
+# CONFIG_SND_SOC_CS35L35 is not set
+# CONFIG_SND_SOC_CS42L42 is not set
+# CONFIG_SND_SOC_CS42L51_I2C is not set
+# CONFIG_SND_SOC_CS42L52 is not set
+# CONFIG_SND_SOC_CS42L56 is not set
@@ -2541,26 +2702,39 @@
+# 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_CS43130 is not set
+# CONFIG_SND_SOC_CS4349 is not set
+# CONFIG_SND_SOC_CS53L30 is not set
+# CONFIG_SND_SOC_ES8328 is not set
+# CONFIG_SND_SOC_ES7134 is not set
+# CONFIG_SND_SOC_ES7241 is not set
+# CONFIG_SND_SOC_ES8316 is not set
+# CONFIG_SND_SOC_ES8328_I2C is not set
+# CONFIG_SND_SOC_ES8328_SPI is not set
+# CONFIG_SND_SOC_GTM601 is not set
+# CONFIG_SND_SOC_INNO_RK3036 is not set
+# CONFIG_SND_SOC_MAX98504 is not set
+# CONFIG_SND_SOC_MAX9867 is not set
+# CONFIG_SND_SOC_MAX98927 is not set
+# CONFIG_SND_SOC_MAX98373 is not set
+# CONFIG_SND_SOC_MAX9860 is not set
+# CONFIG_SND_SOC_MSM8916_WCD_DIGITAL is not set
+# CONFIG_SND_SOC_PCM1681 is not set
+# CONFIG_SND_SOC_PCM1789_I2C is not set
+# CONFIG_SND_SOC_PCM179X_I2C is not set
+# CONFIG_SND_SOC_PCM179X_SPI is not set
+# CONFIG_SND_SOC_PCM186X_I2C is not set
+# CONFIG_SND_SOC_PCM186X_SPI is not set
+# CONFIG_SND_SOC_PCM3168A_I2C is not set
+# CONFIG_SND_SOC_PCM3168A_SPI is not set
+# CONFIG_SND_SOC_PCM512x_I2C is not set
+# CONFIG_SND_SOC_PCM512x_SPI is not set
+# CONFIG_SND_SOC_RT5616 is not set
+# CONFIG_SND_SOC_RT5631 is not set
+# CONFIG_SND_SOC_RT5677_SPI is not set
+# CONFIG_SND_SOC_SGTL5000 is not set
+# CONFIG_SND_SOC_SIMPLE_AMPLIFIER is not set
+# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set
+# CONFIG_SND_SOC_SPDIF is not set
+# CONFIG_SND_SOC_SSM2305 is not set
+# CONFIG_SND_SOC_SSM2602_SPI is not set
+# CONFIG_SND_SOC_SSM2602_I2C is not set
+# CONFIG_SND_SOC_SSM4567 is not set
@@ -2571,14 +2745,21 @@
+# CONFIG_SND_SOC_TAS5086 is not set
+# CONFIG_SND_SOC_TAS571X is not set
+# CONFIG_SND_SOC_TAS5720 is not set
+# CONFIG_SND_SOC_TAS6424 is not set
+# CONFIG_SND_SOC_TDA7419 is not set
+# CONFIG_SND_SOC_TFA9879 is not set
+# CONFIG_SND_SOC_TLV320AIC23_I2C is not set
+# CONFIG_SND_SOC_TLV320AIC23_SPI is not set
+# CONFIG_SND_SOC_TLV320AIC31XX is not set
+# CONFIG_SND_SOC_TLV320AIC32X4_I2C is not set
+# CONFIG_SND_SOC_TLV320AIC32X4_SPI is not set
+# CONFIG_SND_SOC_TLV320AIC3X is not set
+# CONFIG_SND_SOC_TS3A227E is not set
+# CONFIG_SND_SOC_TSCS42XX is not set
+# CONFIG_SND_SOC_TSCS454 is not set
+# CONFIG_SND_SOC_WM8510 is not set
+# CONFIG_SND_SOC_WM8523 is not set
+# CONFIG_SND_SOC_WM8524 is not set
+# CONFIG_SND_SOC_WM8580 is not set
+# CONFIG_SND_SOC_WM8711 is not set
+# CONFIG_SND_SOC_WM8728 is not set
@@ -2589,6 +2770,7 @@
+# CONFIG_SND_SOC_WM8753 is not set
+# CONFIG_SND_SOC_WM8770 is not set
+# CONFIG_SND_SOC_WM8776 is not set
+# CONFIG_SND_SOC_WM8782 is not set
+# CONFIG_SND_SOC_WM8804_I2C is not set
+# CONFIG_SND_SOC_WM8804_SPI is not set
+# CONFIG_SND_SOC_WM8903 is not set
@@ -2598,11 +2780,17 @@
+# CONFIG_SND_SOC_WM8974 is not set
+# CONFIG_SND_SOC_WM8978 is not set
+# CONFIG_SND_SOC_WM8985 is not set
+# CONFIG_SND_SOC_ZX_AUD96P22 is not set
+# CONFIG_SND_SOC_MAX9759 is not set
+# CONFIG_SND_SOC_MT6351 is not set
+# CONFIG_SND_SOC_NAU8540 is not set
+# CONFIG_SND_SOC_NAU8810 is not set
+# CONFIG_SND_SOC_NAU8824 is not set
+# CONFIG_SND_SOC_TPA6130A2 is not set
+# CONFIG_SND_SIMPLE_CARD is not set
+# CONFIG_SND_SIMPLE_SCU_CARD is not set
+# CONFIG_SOUND_PRIME is not set
+# CONFIG_SND_AUDIO_GRAPH_CARD is not set
+# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set
+
+#
+# HID support
@@ -2617,27 +2805,31 @@
+# Special HID drivers
+#
+# CONFIG_HID_A4TECH is not set
+# CONFIG_HID_ACCUTOUCH is not set
+# CONFIG_HID_ACRUX is not set
+# CONFIG_HID_APPLE is not set
+# CONFIG_HID_APPLEIR is not set
+# CONFIG_HID_ASUS is not set
+# CONFIG_HID_AUREAL is not set
+# CONFIG_HID_BELKIN is not set
+# CONFIG_HID_BETOP_FF is not set
+# CONFIG_HID_CHERRY is not set
+# CONFIG_HID_CHICONY is not set
+# CONFIG_HID_CORSAIR is not set
+# CONFIG_HID_COUGAR is not set
+# CONFIG_HID_PRODIKEYS is not set
+# CONFIG_HID_CMEDIA is not set
+# CONFIG_HID_CP2112 is not set
+# CONFIG_HID_CYPRESS is not set
+# CONFIG_HID_DRAGONRISE is not set
+# CONFIG_HID_EMS_FF is not set
+# CONFIG_HID_ELAN is not set
+# CONFIG_HID_ELECOM is not set
+# CONFIG_HID_ELO is not set
+# CONFIG_HID_EZKEY is not set
+# CONFIG_HID_GEMBIRD is not set
+# CONFIG_HID_GFRM is not set
+# CONFIG_HID_HOLTEK is not set
+# CONFIG_HID_GOOGLE_HAMMER is not set
+# CONFIG_HID_GT683R is not set
+# CONFIG_HID_KEYTOUCH is not set
+# CONFIG_HID_KYE is not set
@@ -2645,6 +2837,8 @@
+# CONFIG_HID_WALTOP is not set
+# CONFIG_HID_GYRATION is not set
+# CONFIG_HID_ICADE is not set
+# CONFIG_HID_ITE is not set
+# CONFIG_HID_JABRA is not set
+# CONFIG_HID_TWINHAN is not set
+# CONFIG_HID_KENSINGTON is not set
+# CONFIG_HID_LCPOWER is not set
@@ -2652,9 +2846,12 @@
+# CONFIG_HID_LENOVO is not set
+# CONFIG_HID_LOGITECH is not set
+# CONFIG_HID_MAGICMOUSE is not set
+# CONFIG_HID_MAYFLASH is not set
+# CONFIG_HID_REDRAGON is not set
+# CONFIG_HID_MICROSOFT is not set
+# CONFIG_HID_MONTEREY is not set
+# CONFIG_HID_MULTITOUCH is not set
+# CONFIG_HID_NTI is not set
+# CONFIG_HID_NTRIG is not set
+# CONFIG_HID_ORTEK is not set
+# CONFIG_HID_PANTHERLORD is not set
@@ -2663,11 +2860,13 @@
+# CONFIG_HID_PICOLCD is not set
+# CONFIG_HID_PLANTRONICS is not set
+# CONFIG_HID_PRIMAX is not set
+# CONFIG_HID_RETRODE is not set
+# CONFIG_HID_ROCCAT is not set
+# CONFIG_HID_SAITEK is not set
+# CONFIG_HID_SAMSUNG is not set
+# CONFIG_HID_SONY is not set
+# CONFIG_HID_SPEEDLINK is not set
+# CONFIG_HID_STEAM is not set
+# CONFIG_HID_STEELSERIES is not set
+# CONFIG_HID_SUNPLUS is not set
+# CONFIG_HID_RMI is not set
@@ -2677,6 +2876,7 @@
+# CONFIG_HID_TOPSEED is not set
+# CONFIG_HID_THINGM is not set
+# CONFIG_HID_THRUSTMASTER is not set
+# CONFIG_HID_UDRAW_PS3 is not set
+# CONFIG_HID_WACOM is not set
+# CONFIG_HID_WIIMOTE is not set
+# CONFIG_HID_XINMO is not set
@@ -2727,7 +2927,6 @@
+# CONFIG_USB_EHCI_HCD_PLATFORM is not set
+# CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_ISP1362_HCD is not set
+# CONFIG_USB_FOTG210_HCD is not set
+# CONFIG_USB_MAX3421_HCD is not set
+CONFIG_USB_OHCI_HCD=y
@@ -2804,6 +3003,7 @@
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_F81232 is not set
+# CONFIG_USB_SERIAL_F8153X is not set
+# CONFIG_USB_SERIAL_GARMIN is not set
+# CONFIG_USB_SERIAL_IPW is not set
+# CONFIG_USB_SERIAL_IUU is not set
@@ -2836,6 +3036,7 @@
+# CONFIG_USB_SERIAL_WISHBONE is not set
+# CONFIG_USB_SERIAL_SSU100 is not set
+# CONFIG_USB_SERIAL_QT2 is not set
+# CONFIG_USB_SERIAL_UPD78F0730 is not set
+# CONFIG_USB_SERIAL_DEBUG is not set
+
+#
@@ -2862,6 +3063,7 @@
+# CONFIG_USB_ISIGHTFW is not set
+# CONFIG_USB_YUREX is not set
+# CONFIG_USB_EZUSB_FX2 is not set
+# CONFIG_USB_HUB_USB251XB is not set
+# CONFIG_USB_HSIC_USB3503 is not set
+# CONFIG_USB_HSIC_USB4604 is not set
+# CONFIG_USB_LINK_LAYER_TEST is not set
@@ -2870,7 +3072,6 @@
+#
+# USB Physical Layer drivers
+#
+# CONFIG_USB_PHY is not set
+# CONFIG_NOP_USB_XCEIV is not set
+# CONFIG_USB_GPIO_VBUS is not set
+# CONFIG_USB_ISP1301 is not set
@@ -2895,6 +3096,7 @@
+# CONFIG_USB_PXA27X is not set
+# CONFIG_USB_MV_UDC is not set
+# CONFIG_USB_MV_U3D is not set
+# CONFIG_USB_SNP_UDC_PLAT is not set
+# CONFIG_USB_M66592 is not set
+# CONFIG_USB_BDC_UDC is not set
+# CONFIG_USB_NET2272 is not set
@@ -2931,31 +3133,29 @@
+CONFIG_USB_G_HID=m
+# CONFIG_USB_G_DBGP is not set
+CONFIG_USB_G_WEBCAM=m
+# CONFIG_TYPEC is not set
+# CONFIG_USB_ROLE_SWITCH is not set
+# CONFIG_USB_LED_TRIG is not set
+# CONFIG_USB_ULPI_BUS is not set
+# CONFIG_UWB is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_PWRSEQ_EMMC=y
+CONFIG_PWRSEQ_SIMPLE=y
+
+#
+# MMC/SD/SDIO Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_MINORS=8
+# CONFIG_MMC_BLOCK_BOUNCE is not set
+# CONFIG_SDIO_UART is not set
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_IO_ACCESSORS=y
+CONFIG_MMC_SDHCI_PLTFM=y
+# CONFIG_MMC_SDHCI_OF_ARASAN is not set
+CONFIG_MMC_SDHCI_OF_AT91=y
+# CONFIG_MMC_SDHCI_OF_DWCMSHC is not set
+# CONFIG_MMC_SDHCI_CADENCE is not set
+# CONFIG_MMC_SDHCI_F_SDH30 is not set
+CONFIG_MMC_ATMELMCI=y
+# CONFIG_MMC_SPI is not set
@@ -2963,22 +3163,29 @@
+# CONFIG_MMC_VUB300 is not set
+# CONFIG_MMC_USHC is not set
+# CONFIG_MMC_USDHI6ROL0 is not set
+# CONFIG_MMC_CQHCI is not set
+# CONFIG_MMC_MTK is not set
+# CONFIG_MMC_SDHCI_XENON is not set
+# CONFIG_MMC_SDHCI_OMAP is not set
+# CONFIG_MEMSTICK is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+# CONFIG_LEDS_CLASS_FLASH is not set
+# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_BCM6328 is not set
+# CONFIG_LEDS_BCM6358 is not set
+# CONFIG_LEDS_CR0014114 is not set
+# CONFIG_LEDS_LM3530 is not set
+# CONFIG_LEDS_LM3642 is not set
+# CONFIG_LEDS_LM3692X is not set
+# CONFIG_LEDS_PCA9532 is not set
+CONFIG_LEDS_GPIO=y
+# CONFIG_LEDS_LP3944 is not set
+# CONFIG_LEDS_LP3952 is not set
+# CONFIG_LEDS_LP5521 is not set
+# CONFIG_LEDS_LP5523 is not set
+# CONFIG_LEDS_LP5562 is not set
@@ -3002,6 +3209,8 @@
+#
+# CONFIG_LEDS_BLINKM is not set
+# CONFIG_LEDS_SYSCON is not set
+# CONFIG_LEDS_MLXREG is not set
+# CONFIG_LEDS_USER is not set
+
+#
+# LED Triggers
@@ -3013,6 +3222,7 @@
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set
+CONFIG_LEDS_TRIGGER_CPU=y
+# CONFIG_LEDS_TRIGGER_ACTIVITY is not set
+CONFIG_LEDS_TRIGGER_GPIO=y
+# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set
+
@@ -3022,10 +3232,11 @@
+# CONFIG_LEDS_TRIGGER_TRANSIENT is not set
+# CONFIG_LEDS_TRIGGER_CAMERA is not set
+# CONFIG_LEDS_TRIGGER_PANIC is not set
+# CONFIG_LEDS_TRIGGER_NETDEV is not set
+# CONFIG_ACCESSIBILITY is not set
+# CONFIG_INFINIBAND 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=y
@@ -3033,6 +3244,7 @@
+CONFIG_RTC_SYSTOHC=y
+CONFIG_RTC_SYSTOHC_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+CONFIG_RTC_NVMEM=y
+
+#
+# RTC interfaces
@@ -3056,9 +3268,11 @@
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_ISL12022 is not set
+# CONFIG_RTC_DRV_ISL12026 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8523 is not set
+# CONFIG_RTC_DRV_PCF85063 is not set
+# CONFIG_RTC_DRV_PCF85363 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
@@ -3123,7 +3337,9 @@
+#
+CONFIG_RTC_DRV_AT91RM9200=y
+# CONFIG_RTC_DRV_AT91SAM9 is not set
+# CONFIG_RTC_DRV_FTRTC010 is not set
+# CONFIG_RTC_DRV_SNVS is not set
+# CONFIG_RTC_DRV_R7301 is not set
+
+#
+# HID Sensor RTC drivers
@@ -3137,8 +3353,10 @@
+#
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_OF=y
+# CONFIG_ALTERA_MSGDMA is not set
+CONFIG_AT_HDMAC=y
+CONFIG_AT_XDMAC=y
+# CONFIG_DW_AXI_DMAC is not set
+# CONFIG_FSL_EDMA is not set
+# CONFIG_INTEL_IDMA64 is not set
+# CONFIG_NBPFAXI_DMA is not set
@@ -3155,14 +3373,12 @@
+#
+# DMABUF options
+#
+# CONFIG_SYNC_FILE is not set
+CONFIG_SYNC_FILE=y
+# CONFIG_SW_SYNC is not set
+# CONFIG_AUXDISPLAY is not set
+# CONFIG_UIO is not set
+# CONFIG_VIRT_DRIVERS is not set
+
+#
+# Virtio drivers
+#
+CONFIG_VIRTIO_MENU=y
+# CONFIG_VIRTIO_MMIO is not set
+
+#
@@ -3172,6 +3388,7 @@
+# CONFIG_PRISM2_USB is not set
+# CONFIG_COMEDI is not set
+# CONFIG_RTLLIB is not set
+# CONFIG_RTL8723BS is not set
+# CONFIG_R8712U is not set
+# CONFIG_R8188EU is not set
+# CONFIG_VT6656 is not set
@@ -3183,11 +3400,8 @@
+#
+# Accelerometers
+#
+# CONFIG_ADIS16201 is not set
+# CONFIG_ADIS16203 is not set
+# CONFIG_ADIS16209 is not set
+# CONFIG_ADIS16240 is not set
+# CONFIG_SCA3000 is not set
+
+#
+# Analog to digital converters
@@ -3217,42 +3431,20 @@
+# CONFIG_AD9834 is not set
+
+#
+# Digital gyroscope sensors
+#
+# CONFIG_ADIS16060 is not set
+
+#
+# Network Analyzer, Impedance Converters
+#
+# CONFIG_AD5933 is not set
+
+#
+# Light sensors
+#
+# CONFIG_SENSORS_ISL29018 is not set
+# CONFIG_SENSORS_ISL29028 is not set
+# CONFIG_TSL2583 is not set
+# CONFIG_TSL2x7x is not set
+
+#
+# Active energy metering IC
+#
+# CONFIG_ADE7753 is not set
+# CONFIG_ADE7754 is not set
+# CONFIG_ADE7758 is not set
+# CONFIG_ADE7759 is not set
+# CONFIG_ADE7854 is not set
+
+#
+# Resolver to digital converters
+#
+# CONFIG_AD2S90 is not set
+# CONFIG_AD2S1200 is not set
+# CONFIG_AD2S1210 is not set
+
+#
+# Triggers - standalone
+#
+
+#
+# Speakup console speech
@@ -3266,15 +3458,27 @@
+# CONFIG_STAGING_BOARD is not set
+# CONFIG_LTE_GDM724X is not set
+# CONFIG_MTD_SPINAND_MT29F is not set
+# CONFIG_LNET is not set
+# CONFIG_GS_FPGABOOT is not set
+# CONFIG_UNISYSSPAR is not set
+# CONFIG_COMMON_CLK_XLNX_CLKWZRD is not set
+# CONFIG_FB_TFT is not set
+CONFIG_WLAN_VENDOR_MCHP=y
+# CONFIG_WILC_SDIO is not set
+# CONFIG_WILC_SPI is not set
+# CONFIG_MOST is not set
+# CONFIG_KS7010 is not set
+# CONFIG_GREYBUS is not set
+# CONFIG_PI433 is not set
+# CONFIG_MTK_MMC is not set
+
+#
+# Gasket devices
+#
+# CONFIG_XIL_AXIS_FIFO is not set
+# CONFIG_EROFS_FS is not set
+# CONFIG_GOLDFISH is not set
+# CONFIG_CHROME_PLATFORMS is not set
+# CONFIG_MELLANOX_PLATFORM is not set
+CONFIG_CLKDEV_LOOKUP=y
+CONFIG_HAVE_CLK_PREPARE=y
+CONFIG_COMMON_CLK=y
@@ -3282,47 +3486,47 @@
+#
+# Common Clock Framework
+#
+# CONFIG_CLK_HSDK is not set
+# CONFIG_COMMON_CLK_MAX9485 is not set
+# CONFIG_COMMON_CLK_SI5351 is not set
+# CONFIG_COMMON_CLK_SI514 is not set
+# CONFIG_COMMON_CLK_SI544 is not set
+# CONFIG_COMMON_CLK_SI570 is not set
+# CONFIG_COMMON_CLK_CDCE706 is not set
+# CONFIG_COMMON_CLK_CDCE925 is not set
+# CONFIG_COMMON_CLK_CS2000_CP is not set
+# CONFIG_CLK_QORIQ is not set
+# CONFIG_COMMON_CLK_NXP is not set
+# CONFIG_COMMON_CLK_PWM is not set
+# CONFIG_COMMON_CLK_PXA is not set
+# CONFIG_COMMON_CLK_PIC32 is not set
+
+#
+# Hardware Spinlock drivers
+#
+# CONFIG_COMMON_CLK_VC5 is not set
+# CONFIG_HWSPINLOCK is not set
+
+#
+# Clock Source drivers
+#
+CONFIG_CLKSRC_OF=y
+CONFIG_CLKSRC_PROBE=y
+CONFIG_TIMER_OF=y
+CONFIG_TIMER_PROBE=y
+# CONFIG_ARM_TIMER_SP804 is not set
+CONFIG_ATMEL_PIT=y
+# CONFIG_SH_TIMER_CMT is not set
+# CONFIG_SH_TIMER_MTU2 is not set
+# CONFIG_SH_TIMER_TMU is not set
+# CONFIG_EM_TIMER_STI is not set
+# CONFIG_MAILBOX is not set
+# CONFIG_IOMMU_SUPPORT is not set
+
+#
+# Remoteproc drivers
+#
+# CONFIG_STE_MODEM_RPROC is not set
+# CONFIG_REMOTEPROC is not set
+
+#
+# Rpmsg drivers
+#
+# CONFIG_RPMSG_VIRTIO is not set
+# CONFIG_SOUNDWIRE is not set
+
+#
+# SOC (System On Chip) specific Drivers
+#
+
+#
+# Amlogic SoC drivers
+#
+CONFIG_AT91_SOC_ID=y
+
@@ -3330,8 +3534,24 @@
+# Broadcom SoC drivers
+#
+# CONFIG_SOC_BRCMSTB is not set
+# CONFIG_SUNXI_SRAM is not set
+
+#
+# NXP/Freescale QorIQ SoC drivers
+#
+
+#
+# i.MX SoC drivers
+#
+
+#
+# Qualcomm SoC drivers
+#
+# CONFIG_SOC_TI is not set
+
+#
+# Xilinx SoC drivers
+#
+# CONFIG_XILINX_VCU is not set
+# CONFIG_PM_DEVFREQ is not set
+# CONFIG_EXTCON is not set
+CONFIG_MEMORY=y
@@ -3340,6 +3560,7 @@
+CONFIG_IIO=y
+CONFIG_IIO_BUFFER=y
+# CONFIG_IIO_BUFFER_CB is not set
+# CONFIG_IIO_BUFFER_HW_CONSUMER is not set
+CONFIG_IIO_KFIFO_BUF=y
+CONFIG_IIO_TRIGGERED_BUFFER=y
+# CONFIG_IIO_CONFIGFS is not set
@@ -3351,11 +3572,19 @@
+#
+# Accelerometers
+#
+# CONFIG_ADIS16201 is not set
+# CONFIG_ADIS16209 is not set
+# CONFIG_ADXL345_I2C is not set
+# CONFIG_ADXL345_SPI is not set
+# CONFIG_BMA180 is not set
+# CONFIG_BMA220 is not set
+# CONFIG_BMC150_ACCEL is not set
+# CONFIG_DA280 is not set
+# CONFIG_DA311 is not set
+# CONFIG_DMARD06 is not set
+# CONFIG_DMARD09 is not set
+# CONFIG_DMARD10 is not set
+# CONFIG_IIO_CROS_EC_ACCEL_LEGACY is not set
+# CONFIG_IIO_ST_ACCEL_3AXIS is not set
+# CONFIG_KXSD9 is not set
+# CONFIG_KXCJK1013 is not set
@@ -3368,6 +3597,7 @@
+# CONFIG_MMA9553 is not set
+# CONFIG_MXC4005 is not set
+# CONFIG_MXC6255 is not set
+# CONFIG_SCA3000 is not set
+# CONFIG_STK8312 is not set
+# CONFIG_STK8BA50 is not set
+
@@ -3378,6 +3608,7 @@
+# CONFIG_AD7291 is not set
+# CONFIG_AD7298 is not set
+# CONFIG_AD7476 is not set
+# CONFIG_AD7766 is not set
+# CONFIG_AD7791 is not set
+# CONFIG_AD7793 is not set
+# CONFIG_AD7887 is not set
@@ -3386,22 +3617,39 @@
+CONFIG_AT91_ADC=y
+CONFIG_AT91_SAMA5D2_ADC=y
+# CONFIG_CC10001_ADC is not set
+# CONFIG_ENVELOPE_DETECTOR is not set
+# CONFIG_HI8435 is not set
+# CONFIG_HX711 is not set
+# CONFIG_INA2XX_ADC is not set
+# CONFIG_LTC2471 is not set
+# CONFIG_LTC2485 is not set
+# CONFIG_LTC2497 is not set
+# CONFIG_MAX1027 is not set
+# CONFIG_MAX11100 is not set
+# CONFIG_MAX1118 is not set
+# CONFIG_MAX1363 is not set
+# CONFIG_MAX9611 is not set
+# CONFIG_MCP320X is not set
+# CONFIG_MCP3422 is not set
+# CONFIG_NAU7802 is not set
+# CONFIG_SD_ADC_MODULATOR is not set
+# CONFIG_TI_ADC081C is not set
+# CONFIG_TI_ADC0832 is not set
+# CONFIG_TI_ADC084S021 is not set
+# CONFIG_TI_ADC12138 is not set
+# CONFIG_TI_ADC108S102 is not set
+# CONFIG_TI_ADC128S052 is not set
+# CONFIG_TI_ADC161S626 is not set
+# CONFIG_TI_ADS1015 is not set
+# CONFIG_TI_ADS7950 is not set
+# CONFIG_TI_ADS8688 is not set
+# CONFIG_TI_TLC4541 is not set
+# CONFIG_VF610_ADC is not set
+
+#
+# Analog Front Ends
+#
+# CONFIG_IIO_RESCALE is not set
+
+#
+# Amplifiers
@@ -3412,6 +3660,8 @@
+# Chemical Sensors
+#
+# CONFIG_ATLAS_PH_SENSOR is not set
+# CONFIG_BME680 is not set
+# CONFIG_CCS811 is not set
+# CONFIG_IAQCORE is not set
+# CONFIG_VZ89X is not set
+
@@ -3423,6 +3673,10 @@
+# SSP Sensor Common
+#
+# CONFIG_IIO_SSP_SENSORHUB is not set
+
+#
+# Counters
+#
+
+#
+# Digital to analog converters
@@ -3437,18 +3691,25 @@
+# CONFIG_AD5593R is not set
+# CONFIG_AD5504 is not set
+# CONFIG_AD5624R_SPI is not set
+# CONFIG_AD5686 is not set
+# CONFIG_LTC2632 is not set
+# CONFIG_AD5686_SPI is not set
+# CONFIG_AD5696_I2C is not set
+# CONFIG_AD5755 is not set
+# CONFIG_AD5758 is not set
+# CONFIG_AD5761 is not set
+# CONFIG_AD5764 is not set
+# CONFIG_AD5791 is not set
+# CONFIG_AD7303 is not set
+# CONFIG_AD8801 is not set
+# CONFIG_DPOT_DAC is not set
+# CONFIG_DS4424 is not set
+# CONFIG_M62332 is not set
+# CONFIG_MAX517 is not set
+# CONFIG_MAX5821 is not set
+# CONFIG_MCP4725 is not set
+# CONFIG_MCP4922 is not set
+# CONFIG_TI_DAC082S085 is not set
+# CONFIG_TI_DAC5571 is not set
+# CONFIG_VF610_DAC is not set
+
+#
@@ -3478,6 +3739,7 @@
+# CONFIG_ADIS16260 is not set
+# CONFIG_ADXRS450 is not set
+# CONFIG_BMG160 is not set
+# CONFIG_MPU3050_I2C is not set
+# CONFIG_IIO_ST_GYRO_3AXIS is not set
+# CONFIG_ITG3200 is not set
+
@@ -3491,6 +3753,7 @@
+# CONFIG_AFE4403 is not set
+# CONFIG_AFE4404 is not set
+# CONFIG_MAX30100 is not set
+# CONFIG_MAX30102 is not set
+
+#
+# Humidity sensors
@@ -3498,6 +3761,7 @@
+# CONFIG_AM2315 is not set
+# CONFIG_DHT11 is not set
+# CONFIG_HDC100X is not set
+# CONFIG_HTS221 is not set
+# CONFIG_HTU21 is not set
+# CONFIG_SI7005 is not set
+# CONFIG_SI7020 is not set
@@ -3512,6 +3776,7 @@
+# CONFIG_KMX61 is not set
+# CONFIG_INV_MPU6050_I2C is not set
+# CONFIG_INV_MPU6050_SPI is not set
+# CONFIG_IIO_ST_LSM6DSX is not set
+
+#
+# Light sensors
@@ -3525,24 +3790,34 @@
+# CONFIG_CM32181 is not set
+# CONFIG_CM3232 is not set
+# CONFIG_CM3323 is not set
+# CONFIG_CM3605 is not set
+# CONFIG_CM36651 is not set
+# CONFIG_GP2AP020A00F is not set
+# CONFIG_SENSORS_ISL29018 is not set
+# CONFIG_SENSORS_ISL29028 is not set
+# CONFIG_ISL29125 is not set
+# CONFIG_JSA1212 is not set
+# CONFIG_RPR0521 is not set
+# CONFIG_LTR501 is not set
+# CONFIG_LV0104CS is not set
+# CONFIG_MAX44000 is not set
+# CONFIG_OPT3001 is not set
+# CONFIG_PA12203001 is not set
+# CONFIG_SI1133 is not set
+# CONFIG_SI1145 is not set
+# CONFIG_STK3310 is not set
+# CONFIG_ST_UVIS25 is not set
+# CONFIG_TCS3414 is not set
+# CONFIG_TCS3472 is not set
+# CONFIG_SENSORS_TSL2563 is not set
+# CONFIG_TSL2583 is not set
+# CONFIG_TSL2772 is not set
+# CONFIG_TSL4531 is not set
+# CONFIG_US5182D is not set
+# CONFIG_VCNL4000 is not set
+# CONFIG_VEML6070 is not set
+# CONFIG_VL6180 is not set
+# CONFIG_ZOPT2201 is not set
+
+#
+# Magnetometer sensors
@@ -3559,6 +3834,11 @@
+# CONFIG_SENSORS_HMC5843_SPI is not set
+
+#
+# Multiplexers
+#
+# CONFIG_IIO_MUX is not set
+
+#
+# Inclinometer sensors
+#
+
@@ -3571,15 +3851,24 @@
+#
+# Digital potentiometers
+#
+# CONFIG_AD5272 is not set
+# CONFIG_DS1803 is not set
+# CONFIG_MAX5481 is not set
+# CONFIG_MAX5487 is not set
+# CONFIG_MCP4018 is not set
+# CONFIG_MCP4131 is not set
+# CONFIG_MCP4531 is not set
+# CONFIG_TPL0102 is not set
+
+#
+# Digital potentiostats
+#
+# CONFIG_LMP91000 is not set
+
+#
+# Pressure sensors
+#
+# CONFIG_ABP060MG is not set
+# CONFIG_BMP280 is not set
+# CONFIG_HP03 is not set
+# CONFIG_MPL115_I2C is not set
@@ -3598,17 +3887,28 @@
+# CONFIG_AS3935 is not set
+
+#
+# Proximity sensors
+# Proximity and distance sensors
+#
+# CONFIG_ISL29501 is not set
+# CONFIG_LIDAR_LITE_V2 is not set
+# CONFIG_RFD77402 is not set
+# CONFIG_SRF04 is not set
+# CONFIG_SX9500 is not set
+# CONFIG_SRF08 is not set
+
+#
+# Resolver to digital converters
+#
+# CONFIG_AD2S1200 is not set
+
+#
+# Temperature sensors
+#
+# CONFIG_MAXIM_THERMOCOUPLE is not set
+# CONFIG_MLX90614 is not set
+# CONFIG_MLX90632 is not set
+# CONFIG_TMP006 is not set
+# CONFIG_TMP007 is not set
+# CONFIG_TSYS01 is not set
+# CONFIG_TSYS02D is not set
+CONFIG_PWM=y
@@ -3618,62 +3918,54 @@
+CONFIG_PWM_ATMEL_TCB=y
+# CONFIG_PWM_FSL_FTM is not set
+# CONFIG_PWM_PCA9685 is not set
+
+#
+# IRQ chip support
+#
+CONFIG_IRQCHIP=y
+CONFIG_ARM_GIC_MAX_NR=1
+CONFIG_ATMEL_AIC5_IRQ=y
+# CONFIG_IPACK_BUS is not set
+CONFIG_RESET_CONTROLLER=y
+# CONFIG_RESET_ATH79 is not set
+# CONFIG_RESET_BERLIN is not set
+# CONFIG_RESET_LPC18XX is not set
+# CONFIG_RESET_MESON is not set
+# CONFIG_RESET_PISTACHIO is not set
+# CONFIG_RESET_SOCFPGA is not set
+# CONFIG_RESET_STM32 is not set
+# CONFIG_RESET_SUNXI is not set
+# CONFIG_TI_SYSCON_RESET is not set
+# CONFIG_RESET_ZYNQ is not set
+# CONFIG_RESET_TI_SYSCON is not set
+# CONFIG_FMC is not set
+
+#
+# PHY Subsystem
+#
+# CONFIG_GENERIC_PHY is not set
+# CONFIG_BCM_KONA_USB2_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_PHY_CPCAP_USB is not set
+# CONFIG_PHY_MAPPHONE_MDM6600 is not set
+# CONFIG_POWERCAP is not set
+# CONFIG_MCB is not set
+
+#
+# Performance monitor support
+#
+# CONFIG_RAS is not set
+
+#
+# Android
+#
+# CONFIG_ANDROID is not set
+# CONFIG_DAX is not set
+CONFIG_NVMEM=y
+
+#
+# HW tracing support
+#
+# CONFIG_STM is not set
+# CONFIG_INTEL_TH is not set
+
+#
+# FPGA Configuration Support
+#
+# CONFIG_FPGA is not set
+
+#
+# Firmware Drivers
+#
+# CONFIG_FIRMWARE_MEMMAP is not set
+# CONFIG_FW_CFG_SYSFS is not set
+CONFIG_HAVE_ARM_SMCCC=y
+# CONFIG_FSI is not set
+# CONFIG_TEE is not set
+# CONFIG_SIOX is not set
+# CONFIG_SLIMBUS is not set
+
+#
+# File systems
+#
+CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_FS_IOMAP=y
+# CONFIG_EXT2_FS is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
@@ -3695,7 +3987,6 @@
+# CONFIG_BTRFS_FS is not set
+# CONFIG_NILFS2_FS is not set
+# CONFIG_F2FS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+CONFIG_EXPORTFS=y
+# CONFIG_EXPORTFS_BLOCK_OPS is not set
+CONFIG_FILE_LOCKING=y
@@ -3706,8 +3997,8 @@
+CONFIG_INOTIFY_USER=y
+CONFIG_FANOTIFY=y
+# CONFIG_QUOTA is not set
+# CONFIG_QUOTACTL is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_FUSE_FS is not set
+# CONFIG_OVERLAY_FS is not set
+
@@ -3747,7 +4038,7 @@
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_TMPFS_XATTR is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_MEMFD_CREATE=y
+CONFIG_CONFIGFS_FS=y
+CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ORANGEFS_FS is not set
@@ -3767,15 +4058,15 @@
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_UBIFS_FS=y
+CONFIG_UBIFS_FS_ADVANCED_COMPR=y
+CONFIG_UBIFS_FS_LZO=y
+CONFIG_UBIFS_FS_ZLIB=y
+# CONFIG_UBIFS_ATIME_SUPPORT is not set
+# CONFIG_LOGFS is not set
+CONFIG_UBIFS_FS_XATTR=y
+# CONFIG_UBIFS_FS_ENCRYPTION is not set
+CONFIG_UBIFS_FS_SECURITY=y
+# CONFIG_CRAMFS is not set
+# CONFIG_SQUASHFS is not set
+# CONFIG_VXFS_FS is not set
@@ -3808,7 +4099,6 @@
+# CONFIG_SUNRPC_DEBUG is not set
+# CONFIG_CEPH_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+CONFIG_NLS=y
@@ -3865,158 +4155,6 @@
+# CONFIG_DLM is not set
+
+#
+# Kernel hacking
+#
+
+#
+# printk and dmesg options
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_DYNAMIC_DEBUG is not set
+
+#
+# Compile-time checks and compiler options
+#
+# CONFIG_DEBUG_INFO is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
+CONFIG_STRIP_ASM_SYMS=y
+# CONFIG_READABLE_ASM is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_PAGE_OWNER is not set
+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 is not set
+CONFIG_DEBUG_KERNEL=y
+
+#
+# Memory Debugging
+#
+# CONFIG_PAGE_EXTENSION is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_PAGE_POISONING is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_DEBUG_MEMORY_INIT=y
+# CONFIG_DEBUG_SHIRQ is not set
+
+#
+# Debug Lockups and Hangs
+#
+# CONFIG_LOCKUP_DETECTOR is not set
+# CONFIG_DETECT_HUNG_TASK is not set
+# CONFIG_WQ_WATCHDOG is not set
+# CONFIG_PANIC_ON_OOPS is not set
+CONFIG_PANIC_ON_OOPS_VALUE=0
+CONFIG_PANIC_TIMEOUT=0
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_SCHED_INFO is not set
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_SCHED_STACK_END_CHECK is not set
+# CONFIG_DEBUG_TIMEKEEPING is not set
+# CONFIG_TIMER_STATS is not set
+
+#
+# Lock Debugging (spinlocks, mutexes, etc...)
+#
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_LOCK_TORTURE_TEST is not set
+# CONFIG_STACKTRACE is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_PI_LIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_DEBUG_CREDENTIALS is not set
+
+#
+# RCU Debugging
+#
+# CONFIG_PROVE_RCU is not set
+# CONFIG_SPARSE_RCU_POINTER is not set
+# CONFIG_TORTURE_TEST is not set
+# CONFIG_RCU_PERF_TEST is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_TRACE is not set
+# CONFIG_RCU_EQS_DEBUG is not set
+# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_NOTIFIER_ERROR_INJECTION is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
+CONFIG_HAVE_C_RECORDMCOUNT=y
+CONFIG_TRACING_SUPPORT=y
+# CONFIG_FTRACE is not set
+
+#
+# Runtime Testing
+#
+# CONFIG_LKDTM is not set
+# CONFIG_TEST_LIST_SORT is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_RBTREE_TEST is not set
+# CONFIG_INTERVAL_TREE_TEST is not set
+# CONFIG_PERCPU_TEST is not set
+# CONFIG_ATOMIC64_SELFTEST is not set
+# 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_BITMAP is not set
+# CONFIG_TEST_UUID is not set
+# CONFIG_TEST_RHASHTABLE is not set
+# CONFIG_TEST_HASH is not set
+# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_TEST_LKM is not set
+# CONFIG_TEST_USER_COPY is not set
+# CONFIG_TEST_BPF is not set
+# 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 is not set
+# CONFIG_ARCH_WANTS_UBSAN_NO_NULL is not set
+# CONFIG_UBSAN is not set
+CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
+# CONFIG_STRICT_DEVMEM is not set
+# CONFIG_ARM_PTDUMP is not set
+CONFIG_ARM_UNWIND=y
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_LL is not set
+CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
+# CONFIG_DEBUG_UART_8250 is not set
+CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
+# CONFIG_PID_IN_CONTEXTIDR is not set
+# CONFIG_DEBUG_SET_MODULE_RONX is not set
+# CONFIG_CORESIGHT is not set
+
+#
+# Security options
+#
+CONFIG_KEYS=y
@@ -4028,8 +4166,9 @@
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITYFS is not set
+CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y
+CONFIG_HAVE_ARCH_HARDENED_USERCOPY=y
+# CONFIG_HARDENED_USERCOPY is not set
+# CONFIG_FORTIFY_SOURCE is not set
+# CONFIG_STATIC_USERMODEHELPER is not set
+CONFIG_DEFAULT_SECURITY_DAC=y
+CONFIG_DEFAULT_SECURITY=""
+CONFIG_CRYPTO=y
@@ -4049,13 +4188,16 @@
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_RNG_DEFAULT=y
+CONFIG_CRYPTO_AKCIPHER2=y
+CONFIG_CRYPTO_AKCIPHER=y
+CONFIG_CRYPTO_KPP2=y
+# CONFIG_CRYPTO_RSA is not set
+CONFIG_CRYPTO_KPP=y
+CONFIG_CRYPTO_ACOMP2=y
+CONFIG_CRYPTO_RSA=y
+# CONFIG_CRYPTO_DH is not set
+# CONFIG_CRYPTO_ECDH is not set
+CONFIG_CRYPTO_ECDH=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+# CONFIG_CRYPTO_USER is not set
+CONFIG_CRYPTO_USER=y
+CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
+CONFIG_CRYPTO_GF128MUL=y
+CONFIG_CRYPTO_NULL=y
@@ -4072,25 +4214,31 @@
+CONFIG_CRYPTO_CCM=y
+CONFIG_CRYPTO_GCM=y
+# CONFIG_CRYPTO_CHACHA20POLY1305 is not set
+# CONFIG_CRYPTO_AEGIS128 is not set
+# CONFIG_CRYPTO_AEGIS128L is not set
+# CONFIG_CRYPTO_AEGIS256 is not set
+# CONFIG_CRYPTO_MORUS640 is not set
+# CONFIG_CRYPTO_MORUS1280 is not set
+CONFIG_CRYPTO_SEQIV=y
+CONFIG_CRYPTO_ECHAINIV=m
+CONFIG_CRYPTO_ECHAINIV=y
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_CFB is not set
+CONFIG_CRYPTO_CTR=y
+# CONFIG_CRYPTO_CTS is not set
+CONFIG_CRYPTO_ECB=y
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_XTS is not set
+CONFIG_CRYPTO_XTS=y
+# CONFIG_CRYPTO_KEYWRAP is not set
+
+#
+# Hash modes
+#
+# CONFIG_CRYPTO_CMAC is not set
+CONFIG_CRYPTO_CMAC=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_VMAC is not set
@@ -4104,7 +4252,7 @@
+CONFIG_CRYPTO_GHASH=y
+# CONFIG_CRYPTO_POLY1305 is not set
+# CONFIG_CRYPTO_MD4 is not set
+# CONFIG_CRYPTO_MD5 is not set
+CONFIG_CRYPTO_MD5=y
+# CONFIG_CRYPTO_MICHAEL_MIC is not set
+# CONFIG_CRYPTO_RMD128 is not set
+# CONFIG_CRYPTO_RMD160 is not set
@@ -4114,6 +4262,7 @@
+CONFIG_CRYPTO_SHA256=y
+CONFIG_CRYPTO_SHA512=y
+# CONFIG_CRYPTO_SHA3 is not set
+# CONFIG_CRYPTO_SM3 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_WP512 is not set
+
@@ -4121,6 +4270,7 @@
+# Ciphers
+#
+CONFIG_CRYPTO_AES=y
+# CONFIG_CRYPTO_AES_TI is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_ARC4=y
+# CONFIG_CRYPTO_BLOWFISH is not set
@@ -4134,6 +4284,7 @@
+# CONFIG_CRYPTO_CHACHA20 is not set
+# CONFIG_CRYPTO_SEED is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_SM4 is not set
+# CONFIG_CRYPTO_TEA is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+
@@ -4145,6 +4296,7 @@
+# CONFIG_CRYPTO_842 is not set
+# CONFIG_CRYPTO_LZ4 is not set
+# CONFIG_CRYPTO_LZ4HC is not set
+# CONFIG_CRYPTO_ZSTD is not set
+
+#
+# Random Number Generation
@@ -4160,19 +4312,32 @@
+CONFIG_CRYPTO_USER_API_HASH=y
+CONFIG_CRYPTO_USER_API_SKCIPHER=y
+CONFIG_CRYPTO_USER_API_RNG=y
+# CONFIG_CRYPTO_USER_API_AEAD is not set
+CONFIG_CRYPTO_USER_API_AEAD=y
+CONFIG_CRYPTO_USER_API_AKCIPHER=y
+# CONFIG_CRYPTO_USER_API_KPP is not set
+CONFIG_CRYPTO_HASH_INFO=y
+CONFIG_CRYPTO_HW=y
+# CONFIG_CRYPTO_DEV_ATMEL_AUTHENC is not set
+CONFIG_CRYPTO_DEV_ATMEL_AUTHENC=y
+CONFIG_CRYPTO_DEV_ATMEL_AES=y
+CONFIG_CRYPTO_DEV_ATMEL_TDES=y
+CONFIG_CRYPTO_DEV_ATMEL_SHA=y
+# CONFIG_ASYMMETRIC_KEY_TYPE is not set
+CONFIG_CRYPTO_DEV_ATMEL_ECC=y
+CONFIG_CRYPTO_DEV_CCREE=y
+CONFIG_ASYMMETRIC_KEY_TYPE=y
+CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y
+CONFIG_X509_CERTIFICATE_PARSER=y
+CONFIG_PKCS7_MESSAGE_PARSER=y
+# CONFIG_PKCS7_TEST_KEY is not set
+# CONFIG_SIGNED_PE_FILE_VERIFICATION is not set
+
+#
+# Certificates for signature checking
+#
+# CONFIG_ARM_CRYPTO is not set
+# CONFIG_BINARY_PRINTF is not set
+CONFIG_SYSTEM_TRUSTED_KEYRING=y
+CONFIG_SYSTEM_TRUSTED_KEYS=""
+# CONFIG_SYSTEM_EXTRA_CERTIFICATE is not set
+# CONFIG_SECONDARY_TRUSTED_KEYRING is not set
+# CONFIG_SYSTEM_BLACKLIST_KEYRING is not set
+
+#
+# Library routines
@@ -4184,7 +4349,6 @@
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_NET_UTILS=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_IO=y
+CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
+CONFIG_CRC_CCITT=y
+CONFIG_CRC16=y
@@ -4196,10 +4360,11 @@
+# CONFIG_CRC32_SLICEBY4 is not set
+# CONFIG_CRC32_SARWATE is not set
+# CONFIG_CRC32_BIT is not set
+# CONFIG_CRC64 is not set
+# CONFIG_CRC4 is not set
+# CONFIG_CRC7 is not set
+CONFIG_LIBCRC32C=y
+# CONFIG_CRC8 is not set
+# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set
+# CONFIG_RANDOM32_SELFTEST is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
@@ -4223,70 +4388,2332 @@
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT_MAP=y
+CONFIG_HAS_DMA=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SGL_ALLOC=y
+CONFIG_DQL=y
+CONFIG_GLOB=y
+# CONFIG_GLOB_SELFTEST is not set
+CONFIG_NLATTR=y
+CONFIG_CLZ_TAB=y
+# CONFIG_CORDIC is not set
+# CONFIG_DDR is not set
+# CONFIG_IRQ_POLL is not set
+CONFIG_MPILIB=y
+CONFIG_LIBFDT=y
+CONFIG_OID_REGISTRY=y
+# CONFIG_SG_SPLIT is not set
+CONFIG_SG_POOL=y
+CONFIG_ARCH_HAS_SG_CHAIN=y
+CONFIG_SBITMAP=y
+# CONFIG_VIRTUALIZATION is not set
diff -Nuar linux-at91/drivers/net/wireless/ralink/rt2x00/rt2800usb.c linux-at91-sama5d4/drivers/net/wireless/ralink/rt2x00/rt2800usb.c
--- linux-at91/drivers/net/wireless/ralink/rt2x00/rt2800usb.c   2019-08-18 17:24:53.000000000 +0800
+++ linux-at91-sama5d4/drivers/net/wireless/ralink/rt2x00/rt2800usb.c   2019-08-22 23:05:23.819524309 +0800
@@ -123,7 +123,8 @@
    if (!test_bit(ENTRY_DATA_STATUS_PENDING, &entry->flags))
       return false;
-   tout = time_after(jiffies, entry->last_action + msecs_to_jiffies(100));
+    /* modify from 100 by guowenxue 2019.08.18  */
+   tout = time_after(jiffies, entry->last_action + msecs_to_jiffies(500));
    if (unlikely(tout))
       rt2x00_dbg(entry->queue->rt2x00dev,
             "TX status timeout for entry %d in queue %d\n",
diff -Nuar linux-at91/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h linux-at91-sama5d4/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
--- linux-at91/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h   2019-08-18 17:24:53.000000000 +0800
+++ linux-at91-sama5d4/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h   2019-08-22 23:05:23.819524309 +0800
@@ -632,7 +632,8 @@
 {
    if (!test_bit(ENTRY_OWNER_DEVICE_DATA, &entry->flags))
       return false;
-   return time_after(jiffies, entry->last_action + msecs_to_jiffies(100));
+    /*modify from by guowenxue 2019.08.18*/
+   return time_after(jiffies, entry->last_action + msecs_to_jiffies(500));
+# CONFIG_STRING_SELFTEST is not set
+
+#
+# Kernel hacking
+#
+
+#
+# printk and dmesg options
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7
+CONFIG_CONSOLE_LOGLEVEL_QUIET=4
+CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_DYNAMIC_DEBUG is not set
+
+#
+# Compile-time checks and compiler options
+#
+# CONFIG_DEBUG_INFO is not set
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
+CONFIG_STRIP_ASM_SYMS=y
+# CONFIG_READABLE_ASM is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_PAGE_OWNER is not set
+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 is not set
+CONFIG_DEBUG_KERNEL=y
+
+#
+# Memory Debugging
+#
+# CONFIG_PAGE_EXTENSION is not set
+# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_PAGE_POISONING is not set
+# CONFIG_DEBUG_RODATA_TEST is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_DEBUG_SLAB is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_VM is not set
+CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
+# CONFIG_DEBUG_VIRTUAL is not set
+CONFIG_DEBUG_MEMORY_INIT=y
+CONFIG_ARCH_HAS_KCOV=y
+CONFIG_CC_HAS_SANCOV_TRACE_PC=y
+# CONFIG_KCOV is not set
+# CONFIG_DEBUG_SHIRQ is not set
+
+#
+# Debug Lockups and Hangs
+#
+# CONFIG_SOFTLOCKUP_DETECTOR is not set
+# CONFIG_DETECT_HUNG_TASK is not set
+# CONFIG_WQ_WATCHDOG is not set
+# CONFIG_PANIC_ON_OOPS is not set
+CONFIG_PANIC_ON_OOPS_VALUE=0
+CONFIG_PANIC_TIMEOUT=0
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_SCHEDSTATS is not set
+# CONFIG_SCHED_STACK_END_CHECK is not set
+# CONFIG_DEBUG_TIMEKEEPING is not set
+
+#
+# Lock Debugging (spinlocks, mutexes, etc...)
+#
+CONFIG_LOCK_DEBUGGING_SUPPORT=y
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+# CONFIG_DEBUG_MUTEXES is not set
+# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_LOCK_TORTURE_TEST is not set
+# CONFIG_WW_MUTEX_SELFTEST is not set
+# CONFIG_STACKTRACE is not set
+# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set
+# CONFIG_DEBUG_KOBJECT is not set
+CONFIG_DEBUG_BUGVERBOSE=y
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_PI_LIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_DEBUG_CREDENTIALS is not set
+
+#
+# RCU Debugging
+#
+# CONFIG_RCU_PERF_TEST is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_TRACE is not set
+# CONFIG_RCU_EQS_DEBUG is not set
+# CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_NOTIFIER_ERROR_INJECTION is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
+CONFIG_HAVE_C_RECORDMCOUNT=y
+CONFIG_TRACING_SUPPORT=y
+# CONFIG_FTRACE is not set
+# CONFIG_DMA_API_DEBUG is not set
+CONFIG_RUNTIME_TESTING_MENU=y
+# CONFIG_LKDTM is not set
+# CONFIG_TEST_LIST_SORT is not set
+# CONFIG_TEST_SORT is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_RBTREE_TEST is not set
+# CONFIG_INTERVAL_TREE_TEST is not set
+# CONFIG_PERCPU_TEST is not set
+# CONFIG_ATOMIC64_SELFTEST is not set
+# 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_BITMAP is not set
+# CONFIG_TEST_BITFIELD is not set
+# CONFIG_TEST_UUID is not set
+# CONFIG_TEST_OVERFLOW is not set
+# CONFIG_TEST_RHASHTABLE is not set
+# CONFIG_TEST_HASH is not set
+# CONFIG_TEST_IDA is not set
+# CONFIG_TEST_LKM is not set
+# CONFIG_TEST_USER_COPY is not set
+# CONFIG_TEST_BPF is not set
+# CONFIG_FIND_BIT_BENCHMARK is not set
+# CONFIG_TEST_FIRMWARE is not set
+# CONFIG_TEST_SYSCTL is not set
+# CONFIG_TEST_UDELAY is not set
+# CONFIG_TEST_STATIC_KEYS is not set
+# CONFIG_TEST_KMOD is not set
+# CONFIG_MEMTEST is not set
+# CONFIG_BUG_ON_DATA_CORRUPTION is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+# CONFIG_UBSAN is not set
+CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y
+# CONFIG_STRICT_DEVMEM is not set
+# CONFIG_ARM_PTDUMP_DEBUGFS is not set
+# CONFIG_DEBUG_WX is not set
+CONFIG_ARM_UNWIND=y
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_LL is not set
+CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
+CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
+# CONFIG_PID_IN_CONTEXTIDR is not set
+# CONFIG_CORESIGHT is not set
diff -Nuar linux-at91/crypto/af_alg.c linux-at91-sama5d4/crypto/af_alg.c
--- linux-at91/crypto/af_alg.c   2019-07-10 18:07:41.000000000 +0800
+++ linux-at91-sama5d4/crypto/af_alg.c   2019-08-26 00:44:57.988610990 +0800
@@ -207,13 +207,17 @@
 }
 
 /**
diff -Nuar linux-at91/drivers/net/wireless/ralink/rt2x00/rt2x00usb.h linux-at91-sama5d4/drivers/net/wireless/ralink/rt2x00/rt2x00usb.h
--- linux-at91/drivers/net/wireless/ralink/rt2x00/rt2x00usb.h   2019-08-18 17:24:53.000000000 +0800
+++ linux-at91-sama5d4/drivers/net/wireless/ralink/rt2x00/rt2x00usb.h   2019-08-22 23:05:23.823524309 +0800
@@ -38,7 +38,7 @@
  * a higher value is required. In that case we use the REGISTER_TIMEOUT_FIRMWARE
  * and EEPROM_TIMEOUT.
  */
-#define REGISTER_TIMEOUT      100
+#define REGISTER_TIMEOUT      300 /* modify from 100 by guowenxue 2019.08.18 */
 #define REGISTER_TIMEOUT_FIRMWARE   1000
 #define EEPROM_TIMEOUT         2000
 static int alg_setkey(struct sock *sk, char __user *ukey,
-            unsigned int keylen)
+            unsigned int keylen,
+            int (*setkey)(void *private, const u8 *key,
+                unsigned int keylen))
 {
    struct alg_sock *ask = alg_sk(sk);
-   const struct af_alg_type *type = ask->type;
    u8 *key;
    int err;
 
+   if (!setkey)
+      return -ENOPROTOOPT;
+
    key = sock_kmalloc(sk, keylen, GFP_KERNEL);
    if (!key)
       return -ENOMEM;
@@ -222,7 +226,7 @@
    if (copy_from_user(key, ukey, keylen))
       goto out;
-   err = type->setkey(ask->private, key, keylen);
+   err = setkey(ask->private, key, keylen);
 out:
    sock_kzfree_s(sk, key, keylen);
@@ -248,18 +252,23 @@
    if (level != SOL_ALG || !type)
       goto unlock;
+   if (sock->state == SS_CONNECTED)
+      goto unlock;
+
    switch (optname) {
    case ALG_SET_KEY:
-      if (sock->state == SS_CONNECTED)
-         goto unlock;
-      if (!type->setkey)
-         goto unlock;
-
-      err = alg_setkey(sk, optval, optlen);
+      err = alg_setkey(sk, optval, optlen, type->setkey);
+      break;
+   case ALG_SET_PUBKEY:
+      err = alg_setkey(sk, optval, optlen, type->setpubkey);
+      break;
+   case ALG_SET_DH_PARAMETERS:
+      err = alg_setkey(sk, optval, optlen, type->dhparams);
+      break;
+   case ALG_SET_ECDH_CURVE:
+      err = alg_setkey(sk, optval, optlen, type->ecdhcurve);
       break;
    case ALG_SET_AEAD_AUTHSIZE:
-      if (sock->state == SS_CONNECTED)
-         goto unlock;
       if (!type->setauthsize)
          goto unlock;
       err = type->setauthsize(ask->private, optlen);
@@ -834,7 +843,7 @@
    struct af_alg_tsgl *sgl;
    struct af_alg_control con = {};
    long copied = 0;
-   bool enc = 0;
+   int op = 0;
    bool init = 0;
    int err = 0;
@@ -845,11 +854,13 @@
       init = 1;
       switch (con.op) {
+      case ALG_OP_VERIFY:
+      case ALG_OP_SIGN:
       case ALG_OP_ENCRYPT:
-         enc = 1;
-         break;
       case ALG_OP_DECRYPT:
-         enc = 0;
+      case ALG_OP_KEYGEN:
+      case ALG_OP_SSGEN:
+         op = con.op;
          break;
       default:
          return -EINVAL;
@@ -866,7 +877,7 @@
    }
    if (init) {
-      ctx->enc = enc;
+      ctx->op = op;
       if (con.iv)
          memcpy(ctx->iv, con.iv->iv, ivsize);
diff -Nuar linux-at91/crypto/algif_aead.c linux-at91-sama5d4/crypto/algif_aead.c
--- linux-at91/crypto/algif_aead.c   2019-07-10 18:07:41.000000000 +0800
+++ linux-at91-sama5d4/crypto/algif_aead.c   2019-08-26 00:44:57.988610990 +0800
@@ -59,7 +59,7 @@
     * The minimum amount of memory needed for an AEAD cipher is
     * the AAD and in case of decryption the tag.
     */
-   return ctx->used >= ctx->aead_assoclen + (ctx->enc ? 0 : as);
+   return ctx->used >= ctx->aead_assoclen + (ctx->op ? 0 : as);
 }
 static int aead_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
@@ -75,6 +75,19 @@
    return af_alg_sendmsg(sock, msg, size, ivsize);
 }
+static inline int aead_cipher_op(struct af_alg_ctx *ctx,
+             struct af_alg_async_req *areq)
+{
+   switch (ctx->op) {
+   case ALG_OP_ENCRYPT:
+      return crypto_aead_encrypt(&areq->cra_u.aead_req);
+   case ALG_OP_DECRYPT:
+      return crypto_aead_decrypt(&areq->cra_u.aead_req);
+   default:
+      return -EOPNOTSUPP;
+   }
+}
+
 static int crypto_aead_copy_sgl(struct crypto_skcipher *null_tfm,
             struct scatterlist *src,
             struct scatterlist *dst, unsigned int len)
@@ -142,7 +155,7 @@
     * buffer provides the tag which is consumed resulting in only the
     * plaintext without a buffer for the tag returned to the caller.
     */
-   if (ctx->enc)
+   if (ctx->op)
       outlen = used + as;
    else
       outlen = used - as;
@@ -216,7 +229,7 @@
    /* Use the RX SGL as source (and destination) for crypto op. */
    rsgl_src = areq->first_rsgl.sgl.sg;
-   if (ctx->enc) {
+   if (ctx->op == ALG_OP_ENCRYPT) {
       /*
        * Encryption operation - The in-place cipher operation is
        * achieved by the following operation:
@@ -232,7 +245,7 @@
       if (err)
          goto free;
       af_alg_pull_tsgl(sk, processed, NULL, 0);
-   } else {
+   } else if (ctx->op == ALG_OP_DECRYPT) {
       /*
        * Decryption operation - To achieve an in-place cipher
        * operation, the following  SGL structure is used:
@@ -297,8 +310,7 @@
       aead_request_set_callback(&areq->cra_u.aead_req,
                  CRYPTO_TFM_REQ_MAY_BACKLOG,
                  af_alg_async_cb, areq);
-      err = ctx->enc ? crypto_aead_encrypt(&areq->cra_u.aead_req) :
-             crypto_aead_decrypt(&areq->cra_u.aead_req);
+      err = aead_cipher_op(ctx, areq);
       /* AIO operation in progress */
       if (err == -EINPROGRESS || err == -EBUSY)
@@ -310,10 +322,7 @@
       aead_request_set_callback(&areq->cra_u.aead_req,
                  CRYPTO_TFM_REQ_MAY_BACKLOG,
                  crypto_req_done, &ctx->wait);
-      err = crypto_wait_req(ctx->enc ?
-            crypto_aead_encrypt(&areq->cra_u.aead_req) :
-            crypto_aead_decrypt(&areq->cra_u.aead_req),
-            &ctx->wait);
+      err = crypto_wait_req(aead_cipher_op(ctx, areq), &ctx->wait);
    }
@@ -569,7 +578,7 @@
    atomic_set(&ctx->rcvused, 0);
    ctx->more = 0;
    ctx->merge = 0;
-   ctx->enc = 0;
+   ctx->op = 0;
    ctx->aead_assoclen = 0;
    crypto_init_wait(&ctx->wait);
diff -Nuar linux-at91/crypto/algif_akcipher.c linux-at91-sama5d4/crypto/algif_akcipher.c
--- linux-at91/crypto/algif_akcipher.c   1970-01-01 08:00:00.000000000 +0800
+++ linux-at91-sama5d4/crypto/algif_akcipher.c   2019-08-26 00:44:57.988610990 +0800
@@ -0,0 +1,474 @@
+/*
+ * algif_akcipher: User-space interface for asymmetric cipher algorithms
+ *
+ * Copyright (C) 2018 - 2019, Stephan Mueller <smueller@chronox.de>
+ *
+ * This file provides the user-space API for asymmetric ciphers.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * The following concept of the memory management is used:
+ *
+ * The kernel maintains two SGLs, the TX SGL and the RX SGL. The TX SGL is
+ * filled by user space with the data submitted via sendpage/sendmsg. Filling
+ * up the TX SGL does not cause a crypto operation -- the data will only be
+ * tracked by the kernel. Upon receipt of one recvmsg call, the caller must
+ * provide a buffer which is tracked with the RX SGL.
+ *
+ * During the processing of the recvmsg operation, the cipher request is
+ * allocated and prepared. As part of the recvmsg operation, the processed
+ * TX buffers are extracted from the TX SGL into a separate SGL.
+ *
+ * After the completion of the crypto operation, the RX SGL and the cipher
+ * request is released. The extracted TX SGL parts are released together with
+ * the RX SGL release.
+ */
+
+#include <crypto/akcipher.h>
+#include <crypto/if_alg.h>
+#include <crypto/scatterwalk.h>
+#include <linux/init.h>
+#include <linux/list.h>
+#include <linux/kernel.h>
+#include <linux/mm.h>
+#include <linux/module.h>
+#include <linux/net.h>
+#include <net/sock.h>
+
+struct akcipher_tfm {
+   struct crypto_akcipher *akcipher;
+   bool has_key;
+};
+
+static int akcipher_sendmsg(struct socket *sock, struct msghdr *msg,
+             size_t size)
+{
+   return af_alg_sendmsg(sock, msg, size, 0);
+}
+
+static inline int akcipher_cipher_op(struct af_alg_ctx *ctx,
+                 struct af_alg_async_req *areq)
+{
+   switch (ctx->op) {
+   case ALG_OP_ENCRYPT:
+      return crypto_akcipher_encrypt(&areq->cra_u.akcipher_req);
+   case ALG_OP_DECRYPT:
+      return crypto_akcipher_decrypt(&areq->cra_u.akcipher_req);
+   case ALG_OP_SIGN:
+      return crypto_akcipher_sign(&areq->cra_u.akcipher_req);
+   case ALG_OP_VERIFY:
+      return crypto_akcipher_verify(&areq->cra_u.akcipher_req);
+   default:
+      return -EOPNOTSUPP;
+   }
+}
+
+static int _akcipher_recvmsg(struct socket *sock, struct msghdr *msg,
+              size_t ignored, int flags)
+{
+   struct sock *sk = sock->sk;
+   struct alg_sock *ask = alg_sk(sk);
+   struct sock *psk = ask->parent;
+   struct alg_sock *pask = alg_sk(psk);
+   struct af_alg_ctx *ctx = ask->private;
+   struct akcipher_tfm *akc = pask->private;
+   struct crypto_akcipher *tfm = akc->akcipher;
+   struct af_alg_async_req *areq;
+   size_t len;
+   size_t used;
+   int err;
+   int maxsize;
+
+   if (!ctx->used) {
+      err = af_alg_wait_for_data(sk, flags);
+      if (err)
+         return err;
+   }
+
+   maxsize = crypto_akcipher_maxsize(tfm);
+   if (maxsize < 0)
+      return maxsize;
+
+   /* Allocate cipher request for current operation. */
+   areq = af_alg_alloc_areq(sk, sizeof(struct af_alg_async_req) +
+                 crypto_akcipher_reqsize(tfm));
+   if (IS_ERR(areq))
+      return PTR_ERR(areq);
+
+   /* convert iovecs of output buffers into RX SGL */
+   err = af_alg_get_rsgl(sk, msg, flags, areq, maxsize, &len);
+   if (err)
+      goto free;
+
+   /* ensure output buffer is sufficiently large */
+   if (len < maxsize) {
+      err = -EMSGSIZE;
+      goto free;
+   }
+
+   /*
+    * Create a per request TX SGL for this request which tracks the
+    * SG entries from the global TX SGL.
+    */
+   used = ctx->used;
+   areq->tsgl_entries = af_alg_count_tsgl(sk, used, 0);
+   if (!areq->tsgl_entries)
+      areq->tsgl_entries = 1;
+   areq->tsgl = sock_kmalloc(sk, sizeof(*areq->tsgl) * areq->tsgl_entries,
+              GFP_KERNEL);
+   if (!areq->tsgl) {
+      err = -ENOMEM;
+      goto free;
+   }
+   sg_init_table(areq->tsgl, areq->tsgl_entries);
+   af_alg_pull_tsgl(sk, used, areq->tsgl, 0);
+
+   /* Initialize the crypto operation */
+   akcipher_request_set_tfm(&areq->cra_u.akcipher_req, tfm);
+   akcipher_request_set_crypt(&areq->cra_u.akcipher_req, areq->tsgl,
+               areq->first_rsgl.sgl.sg, used, len);
+
+   if (msg->msg_iocb && !is_sync_kiocb(msg->msg_iocb)) {
+      /* AIO operation */
+      sock_hold(sk);
+      areq->iocb = msg->msg_iocb;
+
+      /* Remember output size that will be generated. */
+      areq->outlen = areq->cra_u.akcipher_req.dst_len ?
+            areq->cra_u.akcipher_req.dst_len : len;
+
+      akcipher_request_set_callback(&areq->cra_u.akcipher_req,
+                     CRYPTO_TFM_REQ_MAY_SLEEP,
+                     af_alg_async_cb, areq);
+      err = akcipher_cipher_op(ctx, areq);
+
+      /* AIO operation in progress */
+      if (err == -EINPROGRESS || err == -EBUSY)
+         return -EIOCBQUEUED;
+
+      sock_put(sk);
+   } else {
+      /* Synchronous operation */
+      akcipher_request_set_callback(&areq->cra_u.akcipher_req,
+                     CRYPTO_TFM_REQ_MAY_SLEEP |
+                     CRYPTO_TFM_REQ_MAY_BACKLOG,
+                     crypto_req_done,
+                     &ctx->wait);
+      err = crypto_wait_req(akcipher_cipher_op(ctx, areq),
+                  &ctx->wait);
+   }
+
+free:
+   af_alg_free_resources(areq);
+
+   return err ? err : areq->cra_u.akcipher_req.dst_len;
+}
+
+static int akcipher_recvmsg(struct socket *sock, struct msghdr *msg,
+             size_t ignored, int flags)
+{
+   struct sock *sk = sock->sk;
+   struct alg_sock *ask = alg_sk(sk);
+   struct sock *psk = ask->parent;
+   struct alg_sock *pask = alg_sk(psk);
+   struct akcipher_tfm *akc = pask->private;
+   struct crypto_akcipher *tfm = akc->akcipher;
+   int ret = 0;
+   int err;
+
+   lock_sock(sk);
+
+   while (msg_data_left(msg)) {
+      err = _akcipher_recvmsg(sock, msg, ignored, flags);
+
+      /*
+       * This error covers -EIOCBQUEUED which implies that we can
+       * only handle one AIO request. If the caller wants to have
+       * multiple AIO requests in parallel, he must make multiple
+       * separate AIO calls.
+       */
+      if (err <= 0) {
+         if (err == -EIOCBQUEUED || err == -EBADMSG || !ret)
+            ret = err;
+         goto out;
+      }
+
+      ret += err;
+
+      /*
+       * The caller must provide crypto_akcipher_maxsize per request.
+       * If he provides more, we conclude that multiple akcipher
+       * operations are requested.
+       */
+      iov_iter_advance(&msg->msg_iter,
+             crypto_akcipher_maxsize(tfm) - err);
+   }
+
+out:
+   af_alg_wmem_wakeup(sk);
+   release_sock(sk);
+   return ret;
+}
+
+static struct proto_ops algif_akcipher_ops = {
+   .family      =   PF_ALG,
+
+   .connect   =   sock_no_connect,
+   .socketpair   =   sock_no_socketpair,
+   .getname   =   sock_no_getname,
+   .ioctl      =   sock_no_ioctl,
+   .listen      =   sock_no_listen,
+   .shutdown   =   sock_no_shutdown,
+   .getsockopt   =   sock_no_getsockopt,
+   .mmap      =   sock_no_mmap,
+   .bind      =   sock_no_bind,
+   .accept      =   sock_no_accept,
+   .setsockopt   =   sock_no_setsockopt,
+
+   .release   =   af_alg_release,
+   .sendmsg   =   akcipher_sendmsg,
+   .sendpage   =   af_alg_sendpage,
+   .recvmsg   =   akcipher_recvmsg,
+   .poll      =   af_alg_poll,
+};
+
+static int akcipher_check_key(struct socket *sock)
+{
+   struct sock *psk;
+   struct alg_sock *pask;
+   struct akcipher_tfm *tfm;
+   struct sock *sk = sock->sk;
+   struct alg_sock *ask = alg_sk(sk);
+   int err = 0;
+
+   lock_sock(sk);
+   if (ask->refcnt)
+      goto unlock_child;
+
+   psk = ask->parent;
+   pask = alg_sk(ask->parent);
+   tfm = pask->private;
+
+   lock_sock_nested(psk, SINGLE_DEPTH_NESTING);
+   if (!tfm->has_key) {
+      err = -ENOKEY;
+      goto unlock;
+   }
+
+   if (!pask->refcnt++)
+      sock_hold(psk);
+
+   ask->refcnt = 1;
+   sock_put(psk);
+
+   err = 0;
+
+unlock:
+   release_sock(psk);
+unlock_child:
+   release_sock(sk);
+
+   return err;
+}
+
+static int akcipher_sendmsg_nokey(struct socket *sock, struct msghdr *msg,
+              size_t size)
+{
+   int err;
+
+   err = akcipher_check_key(sock);
+   if (err)
+      return err;
+
+   return akcipher_sendmsg(sock, msg, size);
+}
+
+static ssize_t akcipher_sendpage_nokey(struct socket *sock, struct page *page,
+                   int offset, size_t size, int flags)
+{
+   int err;
+
+   err = akcipher_check_key(sock);
+   if (err)
+      return err;
+
+   return af_alg_sendpage(sock, page, offset, size, flags);
+}
+
+static int akcipher_recvmsg_nokey(struct socket *sock, struct msghdr *msg,
+              size_t ignored, int flags)
+{
+   int err;
+
+   err = akcipher_check_key(sock);
+   if (err)
+      return err;
+
+   return akcipher_recvmsg(sock, msg, ignored, flags);
+}
+
+static struct proto_ops algif_akcipher_ops_nokey = {
+   .family      =   PF_ALG,
+
+   .connect   =   sock_no_connect,
+   .socketpair   =   sock_no_socketpair,
+   .getname   =   sock_no_getname,
+   .ioctl      =   sock_no_ioctl,
+   .listen      =   sock_no_listen,
+   .shutdown   =   sock_no_shutdown,
+   .getsockopt   =   sock_no_getsockopt,
+   .mmap      =   sock_no_mmap,
+   .bind      =   sock_no_bind,
+   .accept      =   sock_no_accept,
+   .setsockopt   =   sock_no_setsockopt,
+
+   .release   =   af_alg_release,
+   .sendmsg   =   akcipher_sendmsg_nokey,
+   .sendpage   =   akcipher_sendpage_nokey,
+   .recvmsg   =   akcipher_recvmsg_nokey,
+   .poll      =   af_alg_poll,
+};
+
+static void *akcipher_bind(const char *name, u32 type, u32 mask)
+{
+   struct akcipher_tfm *tfm;
+   struct crypto_akcipher *akcipher;
+
+   tfm = kmalloc(sizeof(*tfm), GFP_KERNEL);
+   if (!tfm)
+      return ERR_PTR(-ENOMEM);
+
+   akcipher = crypto_alloc_akcipher(name, type, mask);
+   if (IS_ERR(akcipher)) {
+      kfree(tfm);
+      return ERR_CAST(akcipher);
+   }
+
+   tfm->akcipher = akcipher;
+   tfm->has_key = false;
+
+   return tfm;
+}
+
+static void akcipher_release(void *private)
+{
+   struct akcipher_tfm *tfm = private;
+   struct crypto_akcipher *akcipher = tfm->akcipher;
+
+   crypto_free_akcipher(akcipher);
+   kfree(tfm);
+}
+
+static int akcipher_setprivkey(void *private, const u8 *key,
+                unsigned int keylen)
+{
+   struct akcipher_tfm *tfm = private;
+   struct crypto_akcipher *akcipher = tfm->akcipher;
+   int err;
+
+   err = crypto_akcipher_set_priv_key(akcipher, key, keylen);
+   tfm->has_key = !err;
+
+   /* Return the maximum size of the akcipher operation. */
+   if (!err)
+      err = crypto_akcipher_maxsize(akcipher);
+
+   return err;
+}
+
+static int akcipher_setpubkey(void *private, const u8 *key, unsigned int keylen)
+{
+   struct akcipher_tfm *tfm = private;
+   struct crypto_akcipher *akcipher = tfm->akcipher;
+   int err;
+
+   err = crypto_akcipher_set_pub_key(akcipher, key, keylen);
+   tfm->has_key = !err;
+
+   /* Return the maximum size of the akcipher operation. */
+   if (!err)
+      err = crypto_akcipher_maxsize(akcipher);
+
+   return err;
+}
+
+static void akcipher_sock_destruct(struct sock *sk)
+{
+   struct alg_sock *ask = alg_sk(sk);
+   struct af_alg_ctx *ctx = ask->private;
+
+   af_alg_pull_tsgl(sk, ctx->used, NULL, 0);
+   sock_kfree_s(sk, ctx, ctx->len);
+   af_alg_release_parent(sk);
+}
+
+static int akcipher_accept_parent_nokey(void *private, struct sock *sk)
+{
+   struct af_alg_ctx *ctx;
+   struct alg_sock *ask = alg_sk(sk);
+   unsigned int len = sizeof(*ctx);
+
+   ctx = sock_kmalloc(sk, len, GFP_KERNEL);
+   if (!ctx)
+      return -ENOMEM;
+
+   INIT_LIST_HEAD(&ctx->tsgl_list);
+   ctx->len = len;
+   ctx->used = 0;
+   atomic_set(&ctx->rcvused, 0);
+   ctx->more = 0;
+   ctx->merge = 0;
+   ctx->op = 0;
+   crypto_init_wait(&ctx->wait);
+
+   ask->private = ctx;
+
+   sk->sk_destruct = akcipher_sock_destruct;
+
+   return 0;
+}
+
+static int akcipher_accept_parent(void *private, struct sock *sk)
+{
+   struct akcipher_tfm *tfm = private;
+
+   if (!tfm->has_key)
+      return -ENOKEY;
+
+   return akcipher_accept_parent_nokey(private, sk);
+}
+
+static const struct af_alg_type algif_type_akcipher = {
+   .bind      =   akcipher_bind,
+   .release   =   akcipher_release,
+   .setkey      =   akcipher_setprivkey,
+   .setpubkey   =   akcipher_setpubkey,
+   .setauthsize   =   NULL,
+   .accept      =   akcipher_accept_parent,
+   .accept_nokey   =   akcipher_accept_parent_nokey,
+   .ops      =   &algif_akcipher_ops,
+   .ops_nokey   =   &algif_akcipher_ops_nokey,
+   .name      =   "akcipher",
+   .owner      =   THIS_MODULE
+};
+
+static int __init algif_akcipher_init(void)
+{
+   return af_alg_register_type(&algif_type_akcipher);
+}
+
+static void __exit algif_akcipher_exit(void)
+{
+   int err = af_alg_unregister_type(&algif_type_akcipher);
+
+   BUG_ON(err);
+}
+
+module_init(algif_akcipher_init);
+module_exit(algif_akcipher_exit);
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Stephan Mueller <smueller@chronox.de>");
+MODULE_DESCRIPTION("Asymmetric kernel crypto API user space interface");
diff -Nuar linux-at91/crypto/algif_kpp.c linux-at91-sama5d4/crypto/algif_kpp.c
--- linux-at91/crypto/algif_kpp.c   1970-01-01 08:00:00.000000000 +0800
+++ linux-at91-sama5d4/crypto/algif_kpp.c   2019-08-26 00:44:57.988610990 +0800
@@ -0,0 +1,612 @@
+/*
+ * algif_kpp: User-space interface for key protocol primitives algorithms
+ *
+ * Copyright (C) 2018 - 2019, Stephan Mueller <smueller@chronox.de>
+ *
+ * This file provides the user-space API for key protocol primitives.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * The following concept of the memory management is used:
+ *
+ * The kernel maintains two SGLs, the TX SGL and the RX SGL. The TX SGL is
+ * filled by user space with the data submitted via sendpage/sendmsg. Filling
+ * up the TX SGL does not cause a crypto operation -- the data will only be
+ * tracked by the kernel. Upon receipt of one recvmsg call, the caller must
+ * provide a buffer which is tracked with the RX SGL.
+ *
+ * During the processing of the recvmsg operation, the cipher request is
+ * allocated and prepared. As part of the recvmsg operation, the processed
+ * TX buffers are extracted from the TX SGL into a separate SGL.
+ *
+ * After the completion of the crypto operation, the RX SGL and the cipher
+ * request is released. The extracted TX SGL parts are released together with
+ * the RX SGL release.
+ */
+
+#include <crypto/dh.h>
+#include <crypto/ecdh.h>
+#include <crypto/kpp.h>
+#include <crypto/rng.h>
+#include <crypto/if_alg.h>
+#include <crypto/scatterwalk.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/list.h>
+#include <linux/mm.h>
+#include <linux/module.h>
+#include <linux/net.h>
+#include <net/sock.h>
+
+struct kpp_tfm {
+   struct crypto_kpp *kpp;
+   bool has_key;
+
+#define KPP_NO_PARAMS   0
+#define KPP_DH_PARAMS   1
+#define KPP_ECDH_PARAMS   2
+   int has_params;      /* Type of KPP mechanism */
+};
+
+static int kpp_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
+{
+   return af_alg_sendmsg(sock, msg, size, 0);
+}
+
+static inline int kpp_cipher_op(struct af_alg_ctx *ctx,
+            struct af_alg_async_req *areq)
+{
+   switch (ctx->op) {
+   case ALG_OP_KEYGEN:
+      return crypto_kpp_generate_public_key(&areq->cra_u.kpp_req);
+   case ALG_OP_SSGEN:
+      return crypto_kpp_compute_shared_secret(&areq->cra_u.kpp_req);
+   default:
+      return -EOPNOTSUPP;
+   }
+}
+
+static int _kpp_recvmsg(struct socket *sock, struct msghdr *msg,
+              size_t ignored, int flags)
+{
+   struct sock *sk = sock->sk;
+   struct alg_sock *ask = alg_sk(sk);
+   struct sock *psk = ask->parent;
+   struct alg_sock *pask = alg_sk(psk);
+   struct af_alg_ctx *ctx = ask->private;
+   struct kpp_tfm *kpp = pask->private;
+   struct crypto_kpp *tfm = kpp->kpp;
+   struct af_alg_async_req *areq;
+   size_t len;
+   size_t used = 0;
+   int err;
+   int maxsize;
+
+   if (!ctx->used) {
+      err = af_alg_wait_for_data(sk, flags);
+      if (err)
+         return err;
+   }
+
+   maxsize = crypto_kpp_maxsize(tfm);
+   if (maxsize < 0)
+      return maxsize;
+
+   /* Allocate cipher request for current operation. */
+   areq = af_alg_alloc_areq(sk, sizeof(struct af_alg_async_req) +
+                   crypto_kpp_reqsize(tfm));
+   if (IS_ERR(areq))
+      return PTR_ERR(areq);
+
+   /* convert iovecs of output buffers into RX SGL */
+   err = af_alg_get_rsgl(sk, msg, flags, areq, maxsize, &len);
+   if (err)
+      goto free;
+
+   /* ensure output buffer is sufficiently large */
+   if (len < maxsize) {
+      err = -EMSGSIZE;
+      goto free;
+   }
+
+   /*
+    * Create a per request TX SGL for this request which tracks the
+    * SG entries from the global TX SGL.
+    */
+   if (ctx->op == ALG_OP_SSGEN) {
+      used = ctx->used;
+
+      areq->tsgl_entries = af_alg_count_tsgl(sk, used, 0);
+      if (!areq->tsgl_entries)
+         areq->tsgl_entries = 1;
+      areq->tsgl = sock_kmalloc(
+            sk, sizeof(*areq->tsgl) * areq->tsgl_entries,
+            GFP_KERNEL);
+      if (!areq->tsgl) {
+         err = -ENOMEM;
+         goto free;
+      }
+      sg_init_table(areq->tsgl, areq->tsgl_entries);
+      af_alg_pull_tsgl(sk, used, areq->tsgl, 0);
+   }
+
+   /* Initialize the crypto operation */
+   kpp_request_set_input(&areq->cra_u.kpp_req, areq->tsgl, used);
+   kpp_request_set_output(&areq->cra_u.kpp_req, areq->first_rsgl.sgl.sg,
+                len);
+   kpp_request_set_tfm(&areq->cra_u.kpp_req, tfm);
+
+   if (msg->msg_iocb && !is_sync_kiocb(msg->msg_iocb)) {
+      /* AIO operation */
+      sock_hold(sk);
+      areq->iocb = msg->msg_iocb;
+
+      /* Remember output size that will be generated. */
+      areq->outlen = len;
+
+      kpp_request_set_callback(&areq->cra_u.kpp_req,
+                     CRYPTO_TFM_REQ_MAY_SLEEP,
+                     af_alg_async_cb, areq);
+      err = kpp_cipher_op(ctx, areq);
+
+      /* AIO operation in progress */
+      if (err == -EINPROGRESS || err == -EBUSY)
+         return -EIOCBQUEUED;
+
+      sock_put(sk);
+   } else {
+      /* Synchronous operation */
+      kpp_request_set_callback(&areq->cra_u.kpp_req,
+                     CRYPTO_TFM_REQ_MAY_SLEEP |
+                     CRYPTO_TFM_REQ_MAY_BACKLOG,
+                     crypto_req_done,
+                     &ctx->wait);
+      err = crypto_wait_req(kpp_cipher_op(ctx, areq), &ctx->wait);
+   }
+
+free:
+   af_alg_free_resources(areq);
+
+   return err ? err : len;
+}
+
+static int kpp_recvmsg(struct socket *sock, struct msghdr *msg,
+             size_t ignored, int flags)
+{
+   struct sock *sk = sock->sk;
+   struct alg_sock *ask = alg_sk(sk);
+   struct sock *psk = ask->parent;
+   struct alg_sock *pask = alg_sk(psk);
+   struct kpp_tfm *kpp = pask->private;
+   struct crypto_kpp *tfm = kpp->kpp;
+   int ret = 0;
+   int err;
+
+   lock_sock(sk);
+
+   while (msg_data_left(msg)) {
+      err = _kpp_recvmsg(sock, msg, ignored, flags);
+
+      /*
+       * This error covers -EIOCBQUEUED which implies that we can
+       * only handle one AIO request. If the caller wants to have
+       * multiple AIO requests in parallel, he must make multiple
+       * separate AIO calls.
+       */
+      if (err <= 0) {
+         if (err == -EIOCBQUEUED || err == -EBADMSG || !ret)
+            ret = err;
+         goto out;
+      }
+
+      ret += err;
+
+      /*
+       * The caller must provide crypto_kpp_maxsize per request.
+       * If he provides more, we conclude that multiple kpp
+       * operations are requested.
+       */
+      iov_iter_advance(&msg->msg_iter,
+             crypto_kpp_maxsize(tfm) - err);
+   }
+
+out:
+
+   af_alg_wmem_wakeup(sk);
+   release_sock(sk);
+   return ret;
+}
+
+static struct proto_ops algif_kpp_ops = {
+   .family      =   PF_ALG,
+
+   .connect   =   sock_no_connect,
+   .socketpair   =   sock_no_socketpair,
+   .getname   =   sock_no_getname,
+   .ioctl      =   sock_no_ioctl,
+   .listen      =   sock_no_listen,
+   .shutdown   =   sock_no_shutdown,
+   .getsockopt   =   sock_no_getsockopt,
+   .mmap      =   sock_no_mmap,
+   .bind      =   sock_no_bind,
+   .accept      =   sock_no_accept,
+   .setsockopt   =   sock_no_setsockopt,
+
+   .release   =   af_alg_release,
+   .sendmsg   =   kpp_sendmsg,
+   .sendpage   =   af_alg_sendpage,
+   .recvmsg   =   kpp_recvmsg,
+   .poll      =   af_alg_poll,
+};
+
+static int kpp_check_key(struct socket *sock)
+{
+   struct sock *psk;
+   struct alg_sock *pask;
+   struct kpp_tfm *tfm;
+   struct sock *sk = sock->sk;
+   struct alg_sock *ask = alg_sk(sk);
+   int err = 0;
+
+   lock_sock(sk);
+   if (ask->refcnt)
+      goto unlock_child;
+
+   psk = ask->parent;
+   pask = alg_sk(ask->parent);
+   tfm = pask->private;
+
+   lock_sock_nested(psk, SINGLE_DEPTH_NESTING);
+   if (!tfm->has_key || (tfm->has_params == KPP_NO_PARAMS)) {
+      err = -ENOKEY;
+      goto unlock;
+   }
+
+   if (!pask->refcnt++)
+      sock_hold(psk);
+
+   ask->refcnt = 1;
+   sock_put(psk);
+
+   err = 0;
+
+unlock:
+   release_sock(psk);
+unlock_child:
+   release_sock(sk);
+
+   return err;
+}
+
+static int kpp_sendmsg_nokey(struct socket *sock, struct msghdr *msg,
+              size_t size)
+{
+   int err;
+
+   err = kpp_check_key(sock);
+   if (err)
+      return err;
+
+   return kpp_sendmsg(sock, msg, size);
+}
+
+static ssize_t kpp_sendpage_nokey(struct socket *sock, struct page *page,
+                   int offset, size_t size, int flags)
+{
+   int err;
+
+   err = kpp_check_key(sock);
+   if (err)
+      return err;
+
+   return af_alg_sendpage(sock, page, offset, size, flags);
+}
+
+static int kpp_recvmsg_nokey(struct socket *sock, struct msghdr *msg,
+              size_t ignored, int flags)
+{
+   int err;
+
+   err = kpp_check_key(sock);
+   if (err)
+      return err;
+
+   return kpp_recvmsg(sock, msg, ignored, flags);
+}
+
+static struct proto_ops algif_kpp_ops_nokey = {
+   .family      =   PF_ALG,
+
+   .connect   =   sock_no_connect,
+   .socketpair   =   sock_no_socketpair,
+   .getname   =   sock_no_getname,
+   .ioctl      =   sock_no_ioctl,
+   .listen      =   sock_no_listen,
+   .shutdown   =   sock_no_shutdown,
+   .getsockopt   =   sock_no_getsockopt,
+   .mmap      =   sock_no_mmap,
+   .bind      =   sock_no_bind,
+   .accept      =   sock_no_accept,
+   .setsockopt   =   sock_no_setsockopt,
+
+   .release   =   af_alg_release,
+   .sendmsg   =   kpp_sendmsg_nokey,
+   .sendpage   =   kpp_sendpage_nokey,
+   .recvmsg   =   kpp_recvmsg_nokey,
+   .poll      =   af_alg_poll,
+};
+
+static void *kpp_bind(const char *name, u32 type, u32 mask)
+{
+   struct kpp_tfm *tfm;
+   struct crypto_kpp *kpp;
+
+   tfm = kmalloc(sizeof(*tfm), GFP_KERNEL);
+   if (!tfm)
+      return ERR_PTR(-ENOMEM);
+
+   kpp = crypto_alloc_kpp(name, type, mask);
+   if (IS_ERR(kpp)) {
+      kfree(tfm);
+      return ERR_CAST(kpp);
+   }
+
+   tfm->kpp = kpp;
+   tfm->has_key = false;
+   tfm->has_params = KPP_NO_PARAMS;
+
+   return tfm;
+}
+
+static void kpp_release(void *private)
+{
+   struct kpp_tfm *tfm = private;
+   struct crypto_kpp *kpp = tfm->kpp;
+
+   crypto_free_kpp(kpp);
+   kfree(tfm);
+}
+
+static int kpp_dh_set_secret(struct crypto_kpp *tfm, struct dh *params)
+{
+   char *packed_key = NULL;
+   unsigned int packed_key_len;
+   int ret;
+
+   packed_key_len = crypto_dh_key_len(params);
+   packed_key = kmalloc(packed_key_len, GFP_KERNEL);
+   if (!packed_key)
+      return -ENOMEM;
+
+   ret = crypto_dh_encode_key(packed_key, packed_key_len, params);
+   if (ret)
+      goto out;
+
+   ret = crypto_kpp_set_secret(tfm, packed_key, packed_key_len);
+
+out:
+   kfree(packed_key);
+   return ret;
+}
+
+static int kpp_dh_set_privkey(struct crypto_kpp *tfm, const u8 *key,
+               unsigned int keylen)
+{
+   struct dh params = {
+      .key = key,
+      .key_size = keylen,
+      .p = NULL,
+      .p_size = 0,
+      .g = NULL,
+      .g_size = 0,
+   };
+
+   return kpp_dh_set_secret(tfm, &params);
+}
+
+static int kpp_ecdh_set_secret(struct crypto_kpp *tfm, struct ecdh *params)
+{
+   char *packed_key = NULL;
+   unsigned int packed_key_len;
+   int ret;
+
+   packed_key_len = crypto_ecdh_key_len(params);
+   packed_key = kmalloc(packed_key_len, GFP_KERNEL);
+   if (!packed_key)
+      return -ENOMEM;
+
+   ret = crypto_ecdh_encode_key(packed_key, packed_key_len, params);
+   if (ret)
+      goto out;
+
+   ret = crypto_kpp_set_secret(tfm, packed_key, packed_key_len);
+
+out:
+   kfree(packed_key);
+   return ret;
+}
+
+static int kpp_ecdh_set_privkey(struct crypto_kpp *tfm, const u8 *key,
+            unsigned int keylen)
+{
+   struct ecdh params = {
+      .curve_id = 0,
+      .key = key,
+      .key_size = keylen,
+   };
+
+   return kpp_ecdh_set_secret(tfm, &params);
+}
+
+static int kpp_setprivkey(void *private, const u8 *key, unsigned int keylen)
+{
+   struct kpp_tfm *kpp = private;
+   struct crypto_kpp *tfm = kpp->kpp;
+   int err;
+
+   if (kpp->has_params == KPP_NO_PARAMS)
+      return -ENOKEY;
+
+   /* The DH code cannot generate private keys. ECDH can do that */
+   if ((!key || !keylen) && (kpp->has_params == KPP_DH_PARAMS)) {
+      kpp->has_key = false;
+      return -EOPNOTSUPP;
+   }
+
+   switch (kpp->has_params) {
+   case KPP_DH_PARAMS:
+      err = kpp_dh_set_privkey(tfm, key, keylen);
+      break;
+   case KPP_ECDH_PARAMS:
+      err = kpp_ecdh_set_privkey(tfm, key, keylen);
+      break;
+   default:
+      err = -EFAULT;
+   }
+
+   kpp->has_key = !err;
+
+   /* Return the maximum size of the kpp operation. */
+   if (!err)
+      err = crypto_kpp_maxsize(tfm);
+
+   return err;
+}
+
+static int kpp_dh_setparams_pkcs3(void *private, const u8 *params,
+              unsigned int paramslen)
+{
+   struct kpp_tfm *kpp = private;
+   struct crypto_kpp *tfm = kpp->kpp;
+   int err;
+
+   /* If parameters were already set, disallow setting them again. */
+   if (kpp->has_params != KPP_NO_PARAMS)
+      return -EINVAL;
+
+   err = crypto_kpp_set_params(tfm, params, paramslen);
+   if (!err) {
+      kpp->has_params = KPP_DH_PARAMS;
+      /* Return the maximum size of the kpp operation. */
+      err = crypto_kpp_maxsize(tfm);
+   } else
+      kpp->has_params = KPP_NO_PARAMS;
+
+   return err;
+}
+
+static int kpp_ecdh_setcurve(void *private, const u8 *curveid,
+              unsigned int curveidlen)
+{
+   struct kpp_tfm *kpp = private;
+   struct crypto_kpp *tfm = kpp->kpp;
+   int err;
+   struct ecdh params = {
+      .key = NULL,
+      .key_size = 0,
+   };
+
+   /* If parameters were already set, disallow setting them again. */
+   if (kpp->has_params != KPP_NO_PARAMS)
+      return -EINVAL;
+
+   if (curveidlen != sizeof(unsigned long))
+      return -EINVAL;
+
+   err = kstrtou16(curveid, 10, &params.curve_id);
+   if (err)
+      return err;
+
+   err = kpp_ecdh_set_secret(tfm, &params);
+   if (!err) {
+      kpp->has_params = KPP_ECDH_PARAMS;
+      /* Return the maximum size of the kpp operation. */
+      err = crypto_kpp_maxsize(tfm);
+   } else
+      kpp->has_params = KPP_NO_PARAMS;
+
+   return err;
+}
+
+static void kpp_sock_destruct(struct sock *sk)
+{
+   struct alg_sock *ask = alg_sk(sk);
+   struct af_alg_ctx *ctx = ask->private;
+
+   af_alg_pull_tsgl(sk, ctx->used, NULL, 0);
+   sock_kfree_s(sk, ctx, ctx->len);
+   af_alg_release_parent(sk);
+}
+
+static int kpp_accept_parent_nokey(void *private, struct sock *sk)
+{
+   struct af_alg_ctx *ctx;
+   struct alg_sock *ask = alg_sk(sk);
+   unsigned int len = sizeof(*ctx);
+
+   ctx = sock_kmalloc(sk, len, GFP_KERNEL);
+   if (!ctx)
+      return -ENOMEM;
+
+   INIT_LIST_HEAD(&ctx->tsgl_list);
+   ctx->len = len;
+   ctx->used = 0;
+   atomic_set(&ctx->rcvused, 0);
+   ctx->more = 0;
+   ctx->merge = 0;
+   ctx->op = 0;
+   crypto_init_wait(&ctx->wait);
+
+   ask->private = ctx;
+
+   sk->sk_destruct = kpp_sock_destruct;
+
+   return 0;
+}
+
+static int kpp_accept_parent(void *private, struct sock *sk)
+{
+   struct kpp_tfm *tfm = private;
+
+   if (!tfm->has_key || (tfm->has_params == KPP_NO_PARAMS))
+      return -ENOKEY;
+
+   return kpp_accept_parent_nokey(private, sk);
+}
+
+static const struct af_alg_type algif_type_kpp = {
+   .bind      =   kpp_bind,
+   .release   =   kpp_release,
+   .setkey      =   kpp_setprivkey,
+   .setpubkey   =   NULL,
+   .dhparams   =   kpp_dh_setparams_pkcs3,
+   .ecdhcurve   =   kpp_ecdh_setcurve,
+   .setauthsize   =   NULL,
+   .accept      =   kpp_accept_parent,
+   .accept_nokey   =   kpp_accept_parent_nokey,
+   .ops      =   &algif_kpp_ops,
+   .ops_nokey   =   &algif_kpp_ops_nokey,
+   .name      =   "kpp",
+   .owner      =   THIS_MODULE
+};
+
+static int __init algif_kpp_init(void)
+{
+   return af_alg_register_type(&algif_type_kpp);
+}
+
+static void __exit algif_kpp_exit(void)
+{
+   int err = af_alg_unregister_type(&algif_type_kpp);
+
+   BUG_ON(err);
+}
+
+module_init(algif_kpp_init);
+module_exit(algif_kpp_exit);
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("Stephan Mueller <smueller@chronox.de>");
+MODULE_DESCRIPTION("Key protocol primitives kernel crypto API user space interface");
diff -Nuar linux-at91/crypto/algif_skcipher.c linux-at91-sama5d4/crypto/algif_skcipher.c
--- linux-at91/crypto/algif_skcipher.c   2019-07-10 18:07:41.000000000 +0800
+++ linux-at91-sama5d4/crypto/algif_skcipher.c   2019-08-26 00:44:57.988610990 +0800
@@ -51,6 +51,19 @@
    return af_alg_sendmsg(sock, msg, size, ivsize);
 }
+static inline int skcipher_cipher_op(struct af_alg_ctx *ctx,
+                 struct af_alg_async_req *areq)
+{
+   switch (ctx->op) {
+   case ALG_OP_ENCRYPT:
+      return crypto_skcipher_encrypt(&areq->cra_u.skcipher_req);
+   case ALG_OP_DECRYPT:
+      return crypto_skcipher_decrypt(&areq->cra_u.skcipher_req);
+   default:
+      return -EOPNOTSUPP;
+   }
+}
+
 static int _skcipher_recvmsg(struct socket *sock, struct msghdr *msg,
               size_t ignored, int flags)
 {
@@ -126,9 +139,7 @@
       skcipher_request_set_callback(&areq->cra_u.skcipher_req,
                      CRYPTO_TFM_REQ_MAY_SLEEP,
                      af_alg_async_cb, areq);
-      err = ctx->enc ?
-         crypto_skcipher_encrypt(&areq->cra_u.skcipher_req) :
-         crypto_skcipher_decrypt(&areq->cra_u.skcipher_req);
+      err = skcipher_cipher_op(ctx, areq);
       /* AIO operation in progress */
       if (err == -EINPROGRESS || err == -EBUSY)
@@ -141,10 +152,8 @@
                      CRYPTO_TFM_REQ_MAY_SLEEP |
                      CRYPTO_TFM_REQ_MAY_BACKLOG,
                      crypto_req_done, &ctx->wait);
-      err = crypto_wait_req(ctx->enc ?
-         crypto_skcipher_encrypt(&areq->cra_u.skcipher_req) :
-         crypto_skcipher_decrypt(&areq->cra_u.skcipher_req),
-                   &ctx->wait);
+      err = crypto_wait_req(skcipher_cipher_op(ctx, areq),
+                  &ctx->wait);
    }
@@ -360,7 +369,7 @@
    atomic_set(&ctx->rcvused, 0);
    ctx->more = 0;
    ctx->merge = 0;
-   ctx->enc = 0;
+   ctx->op = 0;
    crypto_init_wait(&ctx->wait);
    ask->private = ctx;
diff -Nuar linux-at91/crypto/dh.c linux-at91-sama5d4/crypto/dh.c
--- linux-at91/crypto/dh.c   2019-07-10 18:07:41.000000000 +0800
+++ linux-at91-sama5d4/crypto/dh.c   2019-08-26 00:44:57.988610990 +0800
@@ -22,15 +22,25 @@
    MPI xa;   /* Value is guaranteed to be set. */
 };
-static void dh_clear_ctx(struct dh_ctx *ctx)
+static inline void dh_clear_params(struct dh_ctx *ctx)
 {
    mpi_free(ctx->p);
    mpi_free(ctx->q);
+}
+
+static inline void dh_clear_key(struct dh_ctx *ctx)
+{
    mpi_free(ctx->g);
    mpi_free(ctx->xa);
    memset(ctx, 0, sizeof(*ctx));
 }
+static void dh_clear_ctx(struct dh_ctx *ctx)
+{
+    dh_clear_params(ctx);
+    dh_clear_key(ctx);
+}
+
 /*
  * If base is g we compute the public key
  *   ya = g^xa mod p; [RFC2631 sec 2.1.1]
@@ -55,6 +65,10 @@
 static int dh_set_params(struct dh_ctx *ctx, struct dh *params)
 {
+   /* If DH parameters are not given, do not check them. */
+   if (!params->p_size && !params->g_size)
+      return 0;
+
    if (dh_check_params_length(params->p_size << 3))
       return -EINVAL;
@@ -75,6 +89,23 @@
    return 0;
 }
+static int dh_set_params_pkcs3(struct crypto_kpp *tfm, const void *param,
+                unsigned int param_len)
+{
+   struct dh_ctx *ctx = dh_get_ctx(tfm);
+   struct dh parsed_params;
+   int ret;
+
+   /* Free the old parameter if any */
+   dh_clear_params(ctx);
+
+   ret = dh_parse_params_pkcs3(&parsed_params, param, param_len);
+   if (ret)
+      return ret;
+
+   return dh_set_params(ctx, &parsed_params);
+}
+
 static int dh_set_secret(struct crypto_kpp *tfm, const void *buf,
           unsigned int len)
 {
@@ -82,7 +113,7 @@
    struct dh params;
    /* Free the old MPI key if any */
-   dh_clear_ctx(ctx);
+   dh_clear_key(ctx);
    if (crypto_dh_decode_key(buf, len, &params) < 0)
       goto err_clear_ctx;
@@ -157,11 +188,10 @@
    MPI base, val = mpi_alloc(0);
    int ret = 0;
    int sign;
-
    if (!val)
       return -ENOMEM;
-   if (unlikely(!ctx->xa)) {
+   if (unlikely(!ctx->xa || !ctx->p || !ctx->g)) {
       ret = -EINVAL;
       goto err_free_val;
    }
@@ -212,6 +242,7 @@
 }
 static struct kpp_alg dh = {
+   .set_params = dh_set_params_pkcs3,
    .set_secret = dh_set_secret,
    .generate_public_key = dh_compute_value,
    .compute_shared_secret = dh_compute_value,
diff -Nuar linux-at91/crypto/dh_helper.c linux-at91-sama5d4/crypto/dh_helper.c
--- linux-at91/crypto/dh_helper.c   2019-07-10 18:07:41.000000000 +0800
+++ linux-at91-sama5d4/crypto/dh_helper.c   2019-08-26 00:44:57.988610990 +0800
@@ -13,6 +13,7 @@
 #include <linux/string.h>
 #include <crypto/dh.h>
 #include <crypto/kpp.h>
+#include "dhparameter-asn1.h"
 #define DH_KPP_SECRET_MIN_SIZE (sizeof(struct kpp_secret) + 4 * sizeof(int))
@@ -59,10 +60,13 @@
    ptr = dh_pack_data(ptr, end, &params->p_size, sizeof(params->p_size));
    ptr = dh_pack_data(ptr, end, &params->q_size, sizeof(params->q_size));
    ptr = dh_pack_data(ptr, end, &params->g_size, sizeof(params->g_size));
-   ptr = dh_pack_data(ptr, end, params->key, params->key_size);
-   ptr = dh_pack_data(ptr, end, params->p, params->p_size);
-   ptr = dh_pack_data(ptr, end, params->q, params->q_size);
-   ptr = dh_pack_data(ptr, end, params->g, params->g_size);
+    if (params->key)
+        ptr = dh_pack_data(ptr, end, params->key, params->key_size);
+    if (params->p)
+        ptr = dh_pack_data(ptr, end, params->p, params->p_size);
+    ptr = dh_pack_data(ptr, end, params->q, params->q_size);
+    if (params->g)
+        ptr = dh_pack_data(ptr, end, params->g, params->g_size);
    if (ptr != end)
       return -EINVAL;
    return 0;
@@ -96,6 +100,10 @@
        params->g_size > params->p_size || params->q_size > params->p_size)
       return -EINVAL;
+    /*  Prevention of out-of-bounds access in decode code path */
+    if ((!params->key && params->key_size) || (!params->p && params->p_size) || (!params->g && params->g_size))
+               return -EINVAL;
+
    /* Don't allocate memory. Set pointers to data within
     * the given buffer
     */
@@ -120,3 +128,40 @@
    return 0;
 }
 EXPORT_SYMBOL_GPL(crypto_dh_decode_key);
+
+int dh_get_p(void *context, size_t hdrlen, unsigned char tag, const void *value,
+        size_t vlen)
+{
+   struct dh *dh = context;
+
+   /* invalid key provided */
+   if (!value || !vlen)
+      return -EINVAL;
+
+   dh->p = value;
+   dh->p_size = vlen;
+
+   return 0;
+}
+
+int dh_get_g(void *context, size_t hdrlen, unsigned char tag,
+        const void *value, size_t vlen)
+{
+   struct dh *dh = context;
+
+   /* invalid base provided */
+   if (!value || !dh->p_size || !vlen || vlen > dh->p_size)
+      return -EINVAL;
+
+   dh->g = value;
+   dh->g_size = vlen;
+
+   return 0;
+}
+
+int dh_parse_params_pkcs3(struct dh *dh, const void *param,
+          unsigned int param_len)
+{
+   return asn1_ber_decoder(&dhparameter_decoder, dh, param, param_len);
+}
+EXPORT_SYMBOL_GPL(dh_parse_params_pkcs3);
diff -Nuar linux-at91/crypto/dhparameter.asn1 linux-at91-sama5d4/crypto/dhparameter.asn1
--- linux-at91/crypto/dhparameter.asn1   1970-01-01 08:00:00.000000000 +0800
+++ linux-at91-sama5d4/crypto/dhparameter.asn1   2019-08-26 00:44:57.988610990 +0800
@@ -0,0 +1,4 @@
+DHParameter ::= SEQUENCE {
+   prime         INTEGER ({ dh_get_p }),
+   base         INTEGER ({ dh_get_g })
+}
diff -Nuar linux-at91/crypto/Kconfig linux-at91-sama5d4/crypto/Kconfig
--- linux-at91/crypto/Kconfig   2019-07-10 18:07:41.000000000 +0800
+++ linux-at91-sama5d4/crypto/Kconfig   2019-08-26 00:44:57.988610990 +0800
@@ -1862,6 +1862,25 @@
      This option enables the user-spaces interface for AEAD
      cipher algorithms.
+config CRYPTO_USER_API_AKCIPHER
+   tristate "User-space interface for asymmetric key cipher algorithms"
+   depends on NET
+   select CRYPTO_AKCIPHER2
+   select CRYPTO_USER_API
+   help
+     This option enables the user-space interface for asymmetric
+     key cipher algorithms.
+
+config CRYPTO_USER_API_KPP
+   tristate "User-space interface for key protocol primitives algorithms"
+   depends on NET
+   select CRYPTO_KPP2
+   select CRYPTO_USER_API
+   help
+     This option enables the user-spaces interface for key protocol
+     primitives algorithms. This covers Diffie-Hellman and EC
+     Diffie-Hellman.
+
 config CRYPTO_HASH_INFO
    bool
diff -Nuar linux-at91/crypto/Makefile linux-at91-sama5d4/crypto/Makefile
--- linux-at91/crypto/Makefile   2019-07-10 18:07:41.000000000 +0800
+++ linux-at91-sama5d4/crypto/Makefile   2019-08-26 00:44:57.988610990 +0800
@@ -31,7 +31,12 @@
 obj-$(CONFIG_CRYPTO_AKCIPHER2) += akcipher.o
 obj-$(CONFIG_CRYPTO_KPP2) += kpp.o
-dh_generic-y := dh.o
+$(obj)/dhparameter-asn1.o: $(obj)/dhparameter-asn1.c $(obj)/dhparameter-asn1.h
+$(obj)/dh_helper.o: $(obj)/dhparameter-asn1.h
+clean-files += dhparameter-asn1.c dhparameter-asn1.h
+
+dh_generic-y := dhparameter-asn1.o
+dh_generic-y += dh.o
 dh_generic-y += dh_helper.o
 obj-$(CONFIG_CRYPTO_DH) += dh_generic.o
@@ -141,6 +146,8 @@
 obj-$(CONFIG_CRYPTO_USER_API_SKCIPHER) += algif_skcipher.o
 obj-$(CONFIG_CRYPTO_USER_API_RNG) += algif_rng.o
 obj-$(CONFIG_CRYPTO_USER_API_AEAD) += algif_aead.o
+obj-$(CONFIG_CRYPTO_USER_API_AKCIPHER) += algif_akcipher.o
+obj-$(CONFIG_CRYPTO_USER_API_KPP) += algif_kpp.o
 obj-$(CONFIG_CRYPTO_ZSTD) += zstd.o
 ecdh_generic-y := ecc.o
diff -Nuar linux-at91/Documentation/crypto/api-kpp.rst linux-at91-sama5d4/Documentation/crypto/api-kpp.rst
--- linux-at91/Documentation/crypto/api-kpp.rst   2019-07-10 18:07:41.000000000 +0800
+++ linux-at91-sama5d4/Documentation/crypto/api-kpp.rst   2019-08-26 00:44:57.988610990 +0800
@@ -11,7 +11,7 @@
    :doc: Generic Key-agreement Protocol Primitives API
 .. kernel-doc:: include/crypto/kpp.h
-   :functions: crypto_alloc_kpp crypto_free_kpp crypto_kpp_set_secret crypto_kpp_generate_public_key crypto_kpp_compute_shared_secret crypto_kpp_maxsize
+   :functions: crypto_alloc_kpp crypto_free_kpp crypto_kpp_set_params crypto_kpp_set_secret crypto_kpp_generate_public_key crypto_kpp_compute_shared_secret crypto_kpp_maxsize
 Key-agreement Protocol Primitives (KPP) Cipher Request Handle
 -------------------------------------------------------------
diff -Nuar linux-at91/drivers/nfc/Kconfig linux-at91-sama5d4/drivers/nfc/Kconfig
--- linux-at91/drivers/nfc/Kconfig   2019-07-10 18:07:41.000000000 +0800
+++ linux-at91-sama5d4/drivers/nfc/Kconfig   2019-08-26 00:57:27.196625361 +0800
@@ -48,6 +48,17 @@
      If unsure, say N.
+config NXPRDLIB_BAL
+   tristate "NXP NFCRdLib BAL(Bus Abstraction Layer) driver"
+   depends on SPI
+   help
+      It allows having the BAL within the Kernel while the NFCRdLib runs in
+      user space. This may be required in order to reduce the  latency introduced
+      by unnecessary context switches when BAL also runs in user space.
+
+     If unsure, say N.
+
+
 source "drivers/nfc/fdp/Kconfig"
 source "drivers/nfc/pn544/Kconfig"
 source "drivers/nfc/pn533/Kconfig"
diff -Nuar linux-at91/drivers/nfc/Makefile linux-at91-sama5d4/drivers/nfc/Makefile
--- linux-at91/drivers/nfc/Makefile   2019-07-10 18:07:41.000000000 +0800
+++ linux-at91-sama5d4/drivers/nfc/Makefile   2019-08-26 00:55:27.780623071 +0800
@@ -14,6 +14,7 @@
 obj-$(CONFIG_NFC_TRF7970A)   += trf7970a.o
 obj-$(CONFIG_NFC_ST21NFCA)     += st21nfca/
 obj-$(CONFIG_NFC_ST_NCI)   += st-nci/
+obj-$(CONFIG_NXPRDLIB_BAL)   += nxprdlib_bal.o
 obj-$(CONFIG_NFC_NXP_NCI)   += nxp-nci/
 obj-$(CONFIG_NFC_S3FWRN5)   += s3fwrn5/
 obj-$(CONFIG_NFC_ST95HF)   += st95hf/
diff -Nuar linux-at91/drivers/nfc/nxprdlib_bal.c linux-at91-sama5d4/drivers/nfc/nxprdlib_bal.c
--- linux-at91/drivers/nfc/nxprdlib_bal.c   1970-01-01 08:00:00.000000000 +0800
+++ linux-at91-sama5d4/drivers/nfc/nxprdlib_bal.c   2019-08-26 01:04:45.272633765 +0800
@@ -0,0 +1,328 @@
+/*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include <linux/init.h>
+#include <linux/module.h>
+#include <linux/ioctl.h>
+#include <linux/fs.h>
+#include <linux/device.h>
+#include <linux/err.h>
+#include <linux/list.h>
+#include <linux/errno.h>
+#include <linux/mutex.h>
+#include <linux/slab.h>
+#include <linux/compat.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
+#include <linux/of_gpio.h>
+#include <linux/spi/spi.h>
+#include <linux/spi/spidev.h>
+#include <linux/uaccess.h>
+#include <linux/interrupt.h>
+#include "nxprdlib_bal.h"
+
+#define BALDEV_NAME "bal"
+#define BALDEV_MAJOR         100
+#define BALDEV_MINOR         0
+
+#define BAL_IOCTL_MODE         (0x0U)
+
+#define BAL_MAX_BUF_SIZE      1024
+#define BAL_BUSY_TIMEOUT_SECS      3
+
+#define BAL_MODE_NORMAL         (0x0U)
+#define BAL_MODE_DWL         (0x1U)
+
+#define BAL_DWL_DIRECTION_BYTE_WR       (0x7fU)
+#define BAL_DWL_DIRECTION_BYTE_RD       (0xffU)
+
+struct bal_data {
+   dev_t         devt;
+   spinlock_t      spi_lock;
+   struct spi_device   *spi;
+   struct list_head   device_entry;
+
+   struct mutex      use_lock;
+   bool         in_use;
+   unsigned int      busy_pin;
+   int         busy_irq;
+   struct completion   busy_done;
+   bool         first_xfer;
+   u8         *buffer;
+   u8         mode;
+};
+
+
+static struct bal_data bal;
+static struct class *baldev_class;
+
+static irqreturn_t
+bal_busy_isr(int irq, void *dev_id)
+{
+   complete(&bal.busy_done);
+   return IRQ_HANDLED;
+}
+
+static int
+bal_spi_sync_xfer(size_t count)
+{
+   struct spi_transfer t = {
+      .rx_buf      = bal.buffer,
+      .tx_buf      = bal.buffer,
+      .len      = count,
+   };
+
+   return spi_sync_transfer(bal.spi, &t, 1);
+}
+
+static ssize_t
+baldev_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos)
+{
+   ssize_t         status = 0;
+
+   if (count > BAL_MAX_BUF_SIZE)
+      return -EMSGSIZE;
+
+   status = wait_for_completion_timeout(
+      &bal.busy_done, (BAL_BUSY_TIMEOUT_SECS * HZ));
+   if (status < 0) {
+      dev_err(&bal.spi->dev, "Timeout waiting for BUSY\n");
+      return status;
+   }
+   if (bal.mode == BAL_MODE_DWL)
+      bal.buffer[0] = BAL_DWL_DIRECTION_BYTE_RD;
+   status = bal_spi_sync_xfer(count);
+   if (status < 0)
+      return status;
+
+   if (copy_to_user(buf, bal.buffer, count))
+      return -EFAULT;
+   return count;
+}
+
+
+static ssize_t
+baldev_write(struct file *filp, const char __user *buf,
+      size_t count, loff_t *f_pos)
+{
+   ssize_t status = 0;
+
+   if (count > BAL_MAX_BUF_SIZE)
+      return -ENOMEM;
+   if (copy_from_user(bal.buffer, buf, count))
+      return -EFAULT;
+   if ((bal.mode == BAL_MODE_NORMAL) &&
+      !bal.first_xfer) {
+      status = wait_for_completion_timeout(
+         &bal.busy_done, (BAL_BUSY_TIMEOUT_SECS * HZ));
+      if (status < 0) {
+         dev_err(&bal.spi->dev, "Timeout waiting for BUSY\n");
+         return status;
+      }
+   }
+   bal.first_xfer = false;
+   status = bal_spi_sync_xfer(count);
+   if (status < 0)
+      return status;
+
+   return count;
+}
+
+
+static int baldev_open(struct inode *inode, struct file *filp)
+{
+   int status;
+
+   mutex_lock(&bal.use_lock);
+   if (bal.in_use) {
+      dev_err(&bal.spi->dev, "Can only be opened once!\n");
+      status = -EBUSY;
+      goto err;
+   }
+   bal.buffer = kmalloc(BAL_MAX_BUF_SIZE, GFP_KERNEL | GFP_DMA);
+   if (bal.buffer == NULL) {
+      status = -ENOMEM;
+      goto err;
+   }
+   bal.mode = BAL_MODE_NORMAL;
+   status = request_threaded_irq(bal.busy_irq, bal_busy_isr,
+                     NULL,
+                     IRQF_TRIGGER_FALLING,
+                     "bal", &bal);
+   if (status < 0) {
+      dev_err(&bal.spi->dev, "Can't request IRQ %d!\n", bal.busy_irq);
+      goto err;
+   }
+   bal.in_use = true;
+   reinit_completion(&bal.busy_done);
+   bal.first_xfer = true;
+   mutex_unlock(&bal.use_lock);
+
+   nonseekable_open(inode, filp);
+   try_module_get(THIS_MODULE);
+
+   return 0;
+err:
+   mutex_unlock(&bal.use_lock);
+   return status;
+}
+
+static int baldev_release(struct inode *inode, struct file *filp)
+{
+   int status = 0;
+
+   free_irq(bal.busy_irq, &bal);
+   module_put(THIS_MODULE);
+   kfree(bal.buffer);
+   bal.in_use = false;
+   return status;
+}
+
+static long
+baldev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
+{
+   int status = 0;
+   int flag;
+
+   if (cmd == BAL_IOCTL_MODE) {
+      bal.mode = (u8)arg;
+      if (bal.mode == BAL_MODE_NORMAL)
+         flag = IRQF_TRIGGER_FALLING;
+      else
+         flag = IRQF_TRIGGER_RISING;
+      free_irq(bal.busy_irq, &bal);
+      status = request_threaded_irq(bal.busy_irq, bal_busy_isr,
+               NULL, flag, "bal", &bal);
+      if (status < 0)
+         dev_err(&bal.spi->dev,
+            "Can't request IRQ %d!\n", bal.busy_irq);
+   } else
+      status = -EINVAL;
+
+   return status;
+}
+
+static const struct file_operations baldev_fops = {
+   .owner =   THIS_MODULE,
+   .write =   baldev_write,
+   .read =      baldev_read,
+   .open =      baldev_open,
+   .unlocked_ioctl = baldev_ioctl,
+   .release =   baldev_release,
+   .llseek =   no_llseek,
+};
+
+
+#ifdef CONFIG_OF
+static const struct of_device_id baldev_dt_ids[] = {
+      { .compatible = "nxp,bal" },
+      {},
+};
+MODULE_DEVICE_TABLE(of, baldev_dt_ids);
+#endif
+
+
+static int bal_spi_remove(struct spi_device *spi)
+{
+   dev_info(&spi->dev, "Removing SPI driver\n");
+   device_destroy(baldev_class, bal.devt);
+   return 0;
+}
+
+static int bal_spi_probe(struct spi_device *spi)
+{
+   struct device *dev;
+
+   dev_info(&spi->dev, "Probing BAL driver\n");
+   mutex_init(&bal.use_lock);
+   if (spi->dev.of_node) {
+      bal.busy_pin =
+         of_get_named_gpio(spi->dev.of_node, "busy-pin-gpio", 0);
+   } else {
+      struct bal_spi_platform_data *platform_data =
+            spi->dev.platform_data;
+
+      if (!platform_data) {
+         dev_err(&spi->dev, "Platform data for BAL not specified!\n");
+         return -ENODEV;
+      }
+      bal.busy_pin = platform_data->busy_pin;
+   }
+   if (!gpio_is_valid(bal.busy_pin)) {
+      dev_err(&spi->dev, "BUSY pin mapped to an invalid GPIO!\n");
+      return -ENODEV;
+   }
+   bal.busy_irq = gpio_to_irq(bal.busy_pin);
+   if (bal.busy_irq < 0) {
+      dev_err(&spi->dev, "BUSY pin GPIO can't be used as IRQ!\n");
+      return bal.busy_irq;
+   }
+   bal.spi = spi;
+   bal.devt = MKDEV(BALDEV_MAJOR, BALDEV_MINOR);
+   init_completion(&bal.busy_done);
+
+   dev = device_create(baldev_class, &spi->dev, bal.devt, &bal, "bal");
+   if (IS_ERR(dev)) {
+      dev_err(&spi->dev, "Error creating device!\n");
+      return PTR_ERR(dev);
+   }
+
+   gpio_direction_input(bal.busy_pin);
+   spi_set_drvdata(spi, &bal);
+   return 0;
+}
+
+static struct spi_driver bal_spi_driver = {
+      .driver = {
+         .name      = "BAL_SPI_DRIVER",
+         .owner      = THIS_MODULE,
+         .of_match_table = of_match_ptr(baldev_dt_ids),
+      },
+
+      .probe      = bal_spi_probe,
+      .remove      = bal_spi_remove,
+   };
+
+static int __init baldev_init(void)
+{
+   int status;
+
+   baldev_class = class_create(THIS_MODULE, "bal");
+   if (IS_ERR(baldev_class))
+      return PTR_ERR(baldev_class);
+   status = register_chrdev(BALDEV_MAJOR, "bal", &baldev_fops);
+   if (status < 0)
+      goto err_reg_dev;
+   status = spi_register_driver(&bal_spi_driver);
+   if (status < 0)
+      goto err_reg_drv;
+   return 0;
+
+err_reg_drv:
+   unregister_chrdev(BALDEV_MAJOR, BALDEV_NAME);
+err_reg_dev:
+   class_destroy(baldev_class);
+   return status;
+}
+module_init(baldev_init);
+
+static void __exit baldev_exit(void)
+{
+   spi_unregister_driver(&bal_spi_driver);
+   class_destroy(baldev_class);
+   unregister_chrdev(BALDEV_MAJOR, BALDEV_NAME);
+}
+module_exit(baldev_exit);
+
+MODULE_AUTHOR("Christian Eisendle, <christian@eisendle.net>");
+MODULE_DESCRIPTION("NXP RdLib BAL Kernel Module");
+MODULE_LICENSE("GPL");
diff -Nuar linux-at91/drivers/nfc/nxprdlib_bal.h linux-at91-sama5d4/drivers/nfc/nxprdlib_bal.h
--- linux-at91/drivers/nfc/nxprdlib_bal.h   1970-01-01 08:00:00.000000000 +0800
+++ linux-at91-sama5d4/drivers/nfc/nxprdlib_bal.h   2019-08-26 00:50:21.772617201 +0800
@@ -0,0 +1,5 @@
+/* nxprdlib_bal.h */
+
+struct bal_spi_platform_data {
+   int busy_pin;
+};
diff -Nuar linux-at91/drivers/spi/spidev.c linux-at91-sama5d4/drivers/spi/spidev.c
--- linux-at91/drivers/spi/spidev.c   2019-08-18 17:24:57.000000000 +0800
+++ linux-at91-sama5d4/drivers/spi/spidev.c   2019-08-22 23:05:23.823524309 +0800
@@ -696,6 +696,7 @@
 static const struct of_device_id spidev_dt_ids[] = {
    { .compatible = "rohm,dh2228fv" },
--- linux-at91/drivers/spi/spidev.c   2019-07-10 18:07:41.000000000 +0800
+++ linux-at91-sama5d4/drivers/spi/spidev.c   2019-08-26 00:44:57.992610990 +0800
@@ -669,6 +669,7 @@
    { .compatible = "lineartechnology,ltc2488" },
+   { .compatible = "linux,spidev" },
    { .compatible = "ge,achc" },
    { .compatible = "semtech,sx1301" },
+    { .compatible = "linux,spidev" },  /* add by guowenxue, 2019.08.25 */
    {},
 };
 MODULE_DEVICE_TABLE(of, spidev_dt_ids);
diff -Nuar linux-at91/include/crypto/dh.h linux-at91-sama5d4/include/crypto/dh.h
--- linux-at91/include/crypto/dh.h   2019-07-10 18:07:41.000000000 +0800
+++ linux-at91-sama5d4/include/crypto/dh.h   2019-08-26 00:44:57.992610990 +0800
@@ -37,10 +37,10 @@
  * @g_size:   Size of DH generator G
  */
 struct dh {
-   void *key;
-   void *p;
+   const void *key;
+   const void *p;
    void *q;
-   void *g;
+   const void *g;
    unsigned int key_size;
    unsigned int p_size;
    unsigned int q_size;
@@ -88,4 +88,19 @@
  */
 int crypto_dh_decode_key(const char *buf, unsigned int len, struct dh *params);
+/**
+ * dh_parse_params_pkcs3() - decodes the PKCS#3 BER encoded buffer of the DH
+ *             parameters and stores in the provided struct dh,
+ *             pointers to the raw p and g parameters as is, so
+ *             that the caller can copy it or MPI parse it, etc.
+ *
+ * @dh:      struct dh representation
+ * @param:   DH parameters in BER format following PKCS#3
+ * @param_len:   length of parameter buffer
+ *
+ * Return:   0 on success or error code in case of error
+ */
+int dh_parse_params_pkcs3(struct dh *dh, const void *param,
+           unsigned int param_len);
+
 #endif
diff -Nuar linux-at91/include/crypto/ecdh.h linux-at91-sama5d4/include/crypto/ecdh.h
--- linux-at91/include/crypto/ecdh.h   2019-07-10 18:07:41.000000000 +0800
+++ linux-at91-sama5d4/include/crypto/ecdh.h   2019-08-26 00:44:57.992610990 +0800
@@ -40,7 +40,7 @@
  */
 struct ecdh {
    unsigned short curve_id;
-   char *key;
+   const char *key;
    unsigned short key_size;
 };
diff -Nuar linux-at91/include/crypto/if_alg.h linux-at91-sama5d4/include/crypto/if_alg.h
--- linux-at91/include/crypto/if_alg.h   2019-07-10 18:07:41.000000000 +0800
+++ linux-at91-sama5d4/include/crypto/if_alg.h   2019-08-26 00:44:57.992610990 +0800
@@ -23,6 +23,8 @@
 #include <crypto/aead.h>
 #include <crypto/skcipher.h>
+#include <crypto/akcipher.h>
+#include <crypto/kpp.h>
 #define ALG_MAX_PAGES         16
@@ -51,6 +53,9 @@
    void *(*bind)(const char *name, u32 type, u32 mask);
    void (*release)(void *private);
    int (*setkey)(void *private, const u8 *key, unsigned int keylen);
+   int (*setpubkey)(void *private, const u8 *key, unsigned int keylen);
+   int (*dhparams)(void *private, const u8 *param, unsigned int paramlen);
+   int (*ecdhcurve)(void *private, const u8 *param, unsigned int paramlen);
    int (*accept)(void *private, struct sock *sk);
    int (*accept_nokey)(void *private, struct sock *sk);
    int (*setauthsize)(void *private, unsigned int authsize);
@@ -114,6 +119,8 @@
    union {
       struct aead_request aead_req;
       struct skcipher_request skcipher_req;
+      struct akcipher_request akcipher_req;
+      struct kpp_request kpp_req;
    } cra_u;
    /* req ctx trails this struct */
@@ -138,7 +145,7 @@
  * @more:      More data to be expected from user space?
  * @merge:      Shall new data from user space be merged into existing
  *         SG?
- * @enc:      Cryptographic operation to be performed when
+ * @op:         Cryptographic operation to be performed when
  *         recvmsg is invoked.
  * @len:      Length of memory allocated for this data structure.
  */
@@ -155,7 +162,7 @@
    bool more;
    bool merge;
-   bool enc;
+   int op;
    unsigned int len;
 };
diff -Nuar linux-at91/include/crypto/kpp.h linux-at91-sama5d4/include/crypto/kpp.h
--- linux-at91/include/crypto/kpp.h   2019-07-10 18:07:41.000000000 +0800
+++ linux-at91-sama5d4/include/crypto/kpp.h   2019-08-26 00:44:57.992610990 +0800
@@ -51,6 +51,9 @@
 /**
  * struct kpp_alg - generic key-agreement protocol primitives
  *
+ * @set_params:   Function allows the caller to set the parameters
+ *         separately from the key. The format of the parameters
+ *         is protocol specific.
  * @set_secret:      Function invokes the protocol specific function to
  *         store the secret private key along with parameters.
  *         The implementation knows how to decode the buffer
@@ -74,6 +77,8 @@
  * @base:      Common crypto API algorithm data structure
  */
 struct kpp_alg {
+   int (*set_params)(struct crypto_kpp *tfm, const void *buffer,
+           unsigned int len);
    int (*set_secret)(struct crypto_kpp *tfm, const void *buffer,
            unsigned int len);
    int (*generate_public_key)(struct kpp_request *req);
@@ -269,6 +274,29 @@
 };
 /**
+ * crypto_kpp_set_params() - Set parameters needed for kpp operation
+ *
+ * Function invokes the specific kpp operation for a given alg.
+ *
+ * @tfm:   tfm handle
+ * @buffer:   Buffer holding the protocol specific representation of the
+ *      parameters (e.g. PKCS#3 DER for DH)
+ * @len:   Length of the parameter buffer.
+ *
+ * Return: zero on success; error code in case of error
+ */
+static inline int crypto_kpp_set_params(struct crypto_kpp *tfm,
+                    const void *buffer, unsigned int len)
+{
+   struct kpp_alg *alg = crypto_kpp_alg(tfm);
+
+   if (alg->set_params)
+      return alg->set_params(tfm, buffer, len);
+   else
+      return -EOPNOTSUPP;
+}
+
+/**
  * crypto_kpp_set_secret() - Invoke kpp operation
  *
  * Function invokes the specific kpp operation for a given alg.
diff -Nuar linux-at91/include/uapi/linux/if_alg.h linux-at91-sama5d4/include/uapi/linux/if_alg.h
--- linux-at91/include/uapi/linux/if_alg.h   2019-07-10 18:07:41.000000000 +0800
+++ linux-at91-sama5d4/include/uapi/linux/if_alg.h   2019-08-26 00:44:57.992610990 +0800
@@ -35,9 +35,16 @@
 #define ALG_SET_OP         3
 #define ALG_SET_AEAD_ASSOCLEN      4
 #define ALG_SET_AEAD_AUTHSIZE      5
+#define ALG_SET_PUBKEY         6
+#define ALG_SET_DH_PARAMETERS      7
+#define ALG_SET_ECDH_CURVE      8
 /* Operations */
 #define ALG_OP_DECRYPT         0
 #define ALG_OP_ENCRYPT         1
+#define ALG_OP_SIGN         2
+#define ALG_OP_VERIFY         3
+#define ALG_OP_KEYGEN         4
+#define ALG_OP_SSGEN         5
 #endif   /* _LINUX_IF_ALG_H */
diff -Nuar linux-at91/linuxrom-sama5d4.its linux-at91-sama5d4/linuxrom-sama5d4.its
--- linux-at91/linuxrom-sama5d4.its   1970-01-01 08:00:00.000000000 +0800
+++ linux-at91-sama5d4/linuxrom-sama5d4.its   2019-08-22 22:54:12.063511423 +0800
+++ linux-at91-sama5d4/linuxrom-sama5d4.its   2019-08-26 00:44:57.992610990 +0800
@@ -0,0 +1,37 @@
+/* U-Boot uImage source file for "sama5d4_xplained" */
@@ -4326,25 +6753,28 @@
+    };
+};
diff -Nuar linux-at91/Makefile linux-at91-sama5d4/Makefile
--- linux-at91/Makefile   2019-08-18 17:24:45.000000000 +0800
+++ linux-at91-sama5d4/Makefile   2019-08-22 23:16:11.343536730 +0800
@@ -1,7 +1,7 @@
 VERSION = 4
 PATCHLEVEL = 9
 SUBLEVEL = 151
-EXTRAVERSION = -linux4sam_5.8+
+EXTRAVERSION = -linux4sam_5.8
 NAME = Roaring Lionus
 # *DOCUMENTATION*
@@ -254,8 +254,8 @@
 # "make" in the configured kernel build directory always uses that.
--- linux-at91/Makefile   2019-07-10 18:07:41.000000000 +0800
+++ linux-at91-sama5d4/Makefile   2019-08-26 01:05:15.808634350 +0800
@@ -319,7 +319,9 @@
 # Alternatively CROSS_COMPILE can be set in the environment.
 # Default value for CROSS_COMPILE is not to prefix executables
 # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
-ARCH      ?= $(SUBARCH)
-CROSS_COMPILE   ?= $(CONFIG_CROSS_COMPILE:"%"=%)
+ARCH         ?=  arm
+CROSS_COMPILE   ?=  /opt/buildroot/cortex-a5/bin/arm-linux-
+
 
 # Architecture as present in compile.h
 UTS_MACHINE    := $(ARCH)
diff -Nuar linux-at91/security/keys/dh.c linux-at91-sama5d4/security/keys/dh.c
--- linux-at91/security/keys/dh.c   2019-07-10 18:07:41.000000000 +0800
+++ linux-at91-sama5d4/security/keys/dh.c   2019-08-26 00:44:57.992610990 +0800
@@ -18,7 +18,7 @@
 #include <keys/user-type.h>
 #include "internal.h"
-static ssize_t dh_data_from_key(key_serial_t keyid, void **data)
+static ssize_t dh_data_from_key(key_serial_t keyid, const void **data)
 {
    struct key *key;
    key_ref_t key_ref;