|  |  |  | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# Processor Type | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +CONFIG_CPU_V7=y | 
|---|
|  |  |  | +CONFIG_CPU_THUMB_CAPABLE=y | 
|---|
|  |  |  | +CONFIG_CPU_32v6K=y | 
|---|
|  |  |  | +CONFIG_CPU_32v7=y | 
|---|
|  |  |  | +CONFIG_CPU_ABRT_EV7=y | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# CONFIG_ARM_CPUIDLE is not set | 
|---|
|  |  |  | +CONFIG_ARM_AT91_CPUIDLE=y | 
|---|
|  |  |  | +# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# Floating point emulation | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +# IPVS SH scheduler | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +CONFIG_IP_VS_SH_TAB_BITS=8 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# IPVS MH scheduler | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +CONFIG_IP_VS_MH_TAB_INDEX=12 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# IPVS application helper | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +CONFIG_SPI=y | 
|---|
|  |  |  | +# CONFIG_SPI_DEBUG is not set | 
|---|
|  |  |  | +CONFIG_SPI_MASTER=y | 
|---|
|  |  |  | +CONFIG_SPI_MEM=y | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# SPI Master Controller Drivers | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# SDR tuner chips | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# Miscellaneous helper chips | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# CONFIG_SOC_CAMERA_TW9910 is not set | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# Media SPI Adapters | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# Tools to develop new frontends | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# CONFIG_DVB_DUMMY_FE is not set | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# Graphics support | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +CONFIG_SND_ARM=y | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# Atmel devices (AVR32 and AT91) | 
|---|
|  |  |  | +# Atmel devices (AT91) | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# CONFIG_SND_ATMEL_AC97C is not set | 
|---|
|  |  |  | +CONFIG_SND_SPI=y | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +CONFIG_RTC_SYSTOHC=y | 
|---|
|  |  |  | +CONFIG_RTC_SYSTOHC_DEVICE="rtc0" | 
|---|
|  |  |  | +# CONFIG_RTC_DEBUG is not set | 
|---|
|  |  |  | +CONFIG_RTC_NVMEM=y | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# RTC interfaces | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +# SSP Sensor Common | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# CONFIG_IIO_SSP_SENSORHUB is not set | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# Counters | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# Digital to analog converters | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +# CONFIG_AFE4403 is not set | 
|---|
|  |  |  | +# CONFIG_AFE4404 is not set | 
|---|
|  |  |  | +# CONFIG_MAX30100 is not set | 
|---|
|  |  |  | +# CONFIG_MAX30102 is not set | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# Humidity sensors | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# CONFIG_SENSORS_HMC5843_SPI is not set | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# Multiplexers | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# CONFIG_IIO_MUX is not set | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# Inclinometer sensors | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +# | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +# 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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +CONFIG_GENERIC_STRNLEN_USER=y | 
|---|
|  |  |  | +CONFIG_GENERIC_NET_UTILS=y | 
|---|
|  |  |  | +CONFIG_GENERIC_PCI_IOMAP=y | 
|---|
|  |  |  | +CONFIG_GENERIC_IO=y | 
|---|
|  |  |  | +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y | 
|---|
|  |  |  | +CONFIG_CRC_CCITT=y | 
|---|
|  |  |  | +CONFIG_CRC16=y | 
|---|
|  |  |  | 
|---|
|  |  |  | +# CONFIG_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 | 
|---|
|  |  |  | 
|---|
|  |  |  | +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, ¶ms); | 
|---|
|  |  |  | +} | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +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, ¶ms); | 
|---|
|  |  |  | +} | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +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, ¶ms.curve_id); | 
|---|
|  |  |  | +   if (err) | 
|---|
|  |  |  | +      return err; | 
|---|
|  |  |  | + | 
|---|
|  |  |  | +   err = kpp_ecdh_set_secret(tfm, ¶ms); | 
|---|
|  |  |  | +   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, ¶ms) < 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, ¶ms->p_size, sizeof(params->p_size)); | 
|---|
|  |  |  | ptr = dh_pack_data(ptr, end, ¶ms->q_size, sizeof(params->q_size)); | 
|---|
|  |  |  | ptr = dh_pack_data(ptr, end, ¶ms->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" */ | 
|---|
|  |  |  | + | 
|---|
|  |  |  | 
|---|
|  |  |  | +    }; | 
|---|
|  |  |  | +}; | 
|---|
|  |  |  | 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; | 
|---|