From e007f80165be04bd0529de307b9b7149f59c37d6 Mon Sep 17 00:00:00 2001 From: Sergey Larin <cerg2010cerg2010@mail.ru> Date: Mon, 4 Feb 2019 20:25:21 +0300 Subject: [PATCH] samsung-i927: new device (Samsung Captive Glide) (!195) Runs an only slightly patched mainline kernel. For now: - flashing works (only SD card boot and kernel flashing tested) - boots - screen works - keyboard works - touch works - accelerated Xorg works (OGL not tested, xf86-video-tegra works, but sometims X crashes with invalid instruction error - open top menus in Xfce file manager to reproduce) - SD card works (troubles with GPIO insertion detection) - USB should work, not tested - WiFi should work, also not tested (a lot of warnings during boot) - Sound needs configuration - battery needs kernel driver (max8922/max8907c) - touchkey doesn't work - very strange hardware here... - cameras don't work - no DT bindings, but all drivers there Other functionality is broken/not tested. [skip ci]: already built successfully in CI --- device/device-samsung-i927/APKBUILD | 45 + device/device-samsung-i927/deviceinfo | 35 + device/device-samsung-i927/modules-load.conf | 5 + device/linux-samsung-i927/APKBUILD | 75 + .../config-samsung-i927.armhf | 4252 +++++++++++++++++ device/linux-samsung-i927/kernel.patch | 3087 ++++++++++++ firmware/firmware-samsung-i927/APKBUILD | 28 + 7 files changed, 7527 insertions(+) create mode 100644 device/device-samsung-i927/APKBUILD create mode 100644 device/device-samsung-i927/deviceinfo create mode 100644 device/device-samsung-i927/modules-load.conf create mode 100644 device/linux-samsung-i927/APKBUILD create mode 100644 device/linux-samsung-i927/config-samsung-i927.armhf create mode 100644 device/linux-samsung-i927/kernel.patch create mode 100644 firmware/firmware-samsung-i927/APKBUILD diff --git a/device/device-samsung-i927/APKBUILD b/device/device-samsung-i927/APKBUILD new file mode 100644 index 00000000000..885d33bb2e2 --- /dev/null +++ b/device/device-samsung-i927/APKBUILD @@ -0,0 +1,45 @@ +# Reference: <https://postmarketos.org/devicepkg> +pkgname="device-samsung-i927" +pkgdesc="Samsung Captivate Glide" +pkgver=0.1 +pkgrel=0 +url="https://postmarketos.org" +license="MIT" +arch="armhf" +options="!check !archcheck" +depends="postmarketos-base + linux-samsung-i927 + mkbootimg + alsa-utils + libdrm-grate + mesa-grate + mesa-grate-gl + mesa-grate-egl + mesa-grate-dri-swrast + mesa-grate-dri-tegra + xf86-video-opentegra + libvdpau-tegra" +makedepends="devicepkg-dev" +subpackages="$pkgname-nonfree-firmware:nonfree_firmware" +source="deviceinfo + modules-load.conf" + +build() { + devicepkg_build $startdir $pkgname +} + +package() { + devicepkg_package $startdir $pkgname + + install -D -m644 "$srcdir"/modules-load.conf \ + "$pkgdir"/etc/modules-load.d/00-${pkgname}.conf +} + +nonfree_firmware() { + pkgdesc="bcm4330 wifi firmware" + depends="firmware-samsung-i927" + mkdir "$subpkgdir" +} + +sha512sums="7edacfb24ec729bcf354ad3516aca0b17bceadef4090d848d30fb2fa77494a50d4e5901033222094c758a8b81d97710df1d460fd613541da11f566110ea4b9b0 deviceinfo +d8ce60ea7acaabf627ddca2f0887a4cda46f313b7aaf7934bef2fef8a6e0798ccefab849e4571e4e3fcd06ae34c1a6efe3b58b401e2e443416f6200e6d4ea769 modules-load.conf" diff --git a/device/device-samsung-i927/deviceinfo b/device/device-samsung-i927/deviceinfo new file mode 100644 index 00000000000..106d5d729a3 --- /dev/null +++ b/device/device-samsung-i927/deviceinfo @@ -0,0 +1,35 @@ +# Reference: <https://postmarketos.org/deviceinfo> +# Please use double quotes only. You can source this file in shell scripts. + +deviceinfo_format_version="0" +deviceinfo_name="Samsung Captivate Glide" +deviceinfo_manufacturer="Samsung" +deviceinfo_codename="samsung-i927" +deviceinfo_date="" +deviceinfo_dtb="" +deviceinfo_modules_initfs="" +deviceinfo_arch="armhf" + +# Device related +deviceinfo_keyboard="true" +deviceinfo_external_storage="true" +deviceinfo_screen_width="480" +deviceinfo_screen_height="800" +deviceinfo_dev_touchscreen="" +deviceinfo_dev_touchscreen_calibration="" +deviceinfo_dev_keyboard="" + +# Bootloader related +deviceinfo_flash_method="heimdall-bootimg" +deviceinfo_kernel_cmdline="console=pstore console=tty0 fbcon=rotate:1 brcmfmac.alternative_fw_path=postmarketos gpt ramoops.mem_address=0x25000000 ramoops.mem_size=0x100000 ramoops.mem_type=1 ramoops.dump_oops=1 ramoops.ftrace_size=0 ramoops.pmsg_size=0 ramoops.console_size=0x10000 ramoops.record_size=0x80000 PMOS_NO_OUTPUT_REDIRECT" +deviceinfo_generate_bootimg="true" +deviceinfo_bootimg_qcdt="false" +deviceinfo_flash_offset_base="0x10000000" +deviceinfo_flash_offset_kernel="0x00008000" +deviceinfo_flash_offset_ramdisk="0x01000000" +deviceinfo_flash_offset_second="0x00f00000" +deviceinfo_flash_offset_tags="0x00000100" +deviceinfo_flash_pagesize="2048" +deviceinfo_flash_heimdall_partition_kernel="LNX" +deviceinfo_flash_heimdall_partition_system="APP" + diff --git a/device/device-samsung-i927/modules-load.conf b/device/device-samsung-i927/modules-load.conf new file mode 100644 index 00000000000..a52c413a5ac --- /dev/null +++ b/device/device-samsung-i927/modules-load.conf @@ -0,0 +1,5 @@ +# This file contains the names of kernel modules that should be loaded +# at boot time, one per line. Lines beginning with "#" are ignored. + +# wifi module +brcmfmac diff --git a/device/linux-samsung-i927/APKBUILD b/device/linux-samsung-i927/APKBUILD new file mode 100644 index 00000000000..6acc8977319 --- /dev/null +++ b/device/linux-samsung-i927/APKBUILD @@ -0,0 +1,75 @@ +# Reference: <https://postmarketos.org/vendorkernel> +# Kernel config based on: arch/arm/configs/tegra_defconfig + +pkgname="linux-samsung-i927" +pkgver=4.20.4 +pkgrel=0 +pkgdesc="Samsung Captivate Glide kernel fork" +arch="armhf" +_carch="arm" +_flavor="samsung-i927" +url="https://kernel.org" +license="GPL-2.0-only" +options="!strip !check !tracedeps" +makedepends="perl sed installkernel bash gmp-dev bc linux-headers elfutils-dev devicepkg-dev flex bison openssl-dev" + +# Compiler: latest GCC from Alpine +HOSTCC="${CC:-gcc}" +HOSTCC="${HOSTCC#${CROSS_COMPILE}}" + +# Source +_repository="linux" +_config="config-${_flavor}.${arch}" +source=" + $pkgname-$pkgver.tar.gz::https://kernel.org/pub/linux/kernel/v4.x/linux-$pkgver.tar.gz + $_config + kernel.patch +" +builddir="$srcdir/${_repository}-${pkgver}" + +prepare() { + default_prepare + + # Prepare kernel config ('yes ""' for kernels lacking olddefconfig) + cp "$srcdir/$_config" "$builddir"/.config + yes "" | make -C "$builddir" ARCH="$_carch" HOSTCC="$HOSTCC" oldconfig +} + +build() { + unset LDFLAGS + make ARCH="$_carch" CC="${CC:-gcc}" \ + KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-postmarketOS" +} + +package() { + cat "$builddir/arch/arm/boot/zImage" \ + "$builddir/arch/arm/boot/dts/tegra20-glide.dtb" \ + > "$builddir/arch/arm/boot/zImage-dtb" + + # kernel.release + install -D "$builddir/include/config/kernel.release" \ + "$pkgdir/usr/share/kernel/$_flavor/kernel.release" + + # zImage (find the right one) + cd "$builddir/arch/$_carch/boot" + _target="$pkgdir/boot/vmlinuz-$_flavor" + for _zimg in zImage-dtb Image.gz-dtb *zImage Image; do + [ -e "$_zimg" ] || continue + msg "zImage found: $_zimg" + install -Dm644 "$_zimg" "$_target" + break + done + if ! [ -e "$_target" ]; then + error "Could not find zImage in $PWD!" + return 1 + fi + + cd "$builddir" + make modules_install \ + ARCH="$_carch" \ + INSTALL_MOD_PATH="$pkgdir" +} + +sha512sums="5f9eb065932e404091dd9e4afd5a92b6382ddbc81488684c42981cdfe227da9a423356c19ec236ca1a9a7f4bf042cf351aa8b3cd4f7488b0d8b1245d69221a5c linux-samsung-i927-4.20.4.tar.gz +fb556670c376c85f6c0ad0105179298e8d7b1564e32c7a50152924112407dcc294b5e322eb207e801f61e81f9511e28c52dcd663152c2e5a1ea1a9e0100d09ba config-samsung-i927.armhf +c65a89a07b20b3720d6187c6049f215823b07fd4ba647984691bf37d2488a71f4e00ce8bc9521c499b7e15f13fb1473289a8eeea42899d5a6c0c3247b0a94549 kernel.patch" diff --git a/device/linux-samsung-i927/config-samsung-i927.armhf b/device/linux-samsung-i927/config-samsung-i927.armhf new file mode 100644 index 00000000000..e69ed5e6b59 --- /dev/null +++ b/device/linux-samsung-i927/config-samsung-i927.armhf @@ -0,0 +1,4252 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/arm 4.20.4 Kernel Configuration +# + +# +# Compiler: arm-none-eabi-gcc (Arch Repository) 7.3.0 +# +CONFIG_CC_IS_GCC=y +CONFIG_GCC_VERSION=70300 +CONFIG_CLANG_VERSION=0 +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_EXTABLE_SORT=y + +# +# General setup +# +CONFIG_INIT_ENV_ARG_LIMIT=32 +# CONFIG_COMPILE_TEST is not set +CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y +CONFIG_BUILD_SALT="" +CONFIG_HAVE_KERNEL_GZIP=y +CONFIG_HAVE_KERNEL_LZMA=y +CONFIG_HAVE_KERNEL_XZ=y +CONFIG_HAVE_KERNEL_LZO=y +CONFIG_HAVE_KERNEL_LZ4=y +CONFIG_KERNEL_GZIP=y +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_XZ is not set +# CONFIG_KERNEL_LZO is not set +# CONFIG_KERNEL_LZ4 is not set +CONFIG_DEFAULT_HOSTNAME="(none)" +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +# CONFIG_POSIX_MQUEUE is not set +CONFIG_CROSS_MEMORY_ATTACH=y +# CONFIG_USELIB is not set +# CONFIG_AUDIT is not set +CONFIG_HAVE_ARCH_AUDITSYSCALL=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_IRQ_SHOW_LEVEL=y +CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_HANDLE_DOMAIN_IRQ=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_SPARSE_IRQ=y +CONFIG_GENERIC_IRQ_MULTI_HANDLER=y +CONFIG_ARCH_CLOCKSOURCE_DATA=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_ARCH_HAS_TICK_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y + +# +# Timers subsystem +# +CONFIG_TICK_ONESHOT=y +CONFIG_NO_HZ_COMMON=y +# CONFIG_HZ_PERIODIC is not set +CONFIG_NO_HZ_IDLE=y +# CONFIG_NO_HZ_FULL is not set +# CONFIG_NO_HZ is not set +CONFIG_HIGH_RES_TIMERS=y +# CONFIG_PREEMPT_NONE is not set +# CONFIG_PREEMPT_VOLUNTARY is not set +CONFIG_PREEMPT=y +CONFIG_PREEMPT_COUNT=y + +# +# CPU/Task time and stats accounting +# +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +# CONFIG_IRQ_TIME_ACCOUNTING is not set +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_TASKSTATS is not set +# CONFIG_PSI is not set +CONFIG_CPU_ISOLATION=y + +# +# RCU Subsystem +# +CONFIG_PREEMPT_RCU=y +# CONFIG_RCU_EXPERT is not set +CONFIG_SRCU=y +CONFIG_TREE_SRCU=y +CONFIG_TASKS_RCU=y +CONFIG_RCU_STALL_COMMON=y +CONFIG_RCU_NEED_SEGCBLIST=y +CONFIG_BUILD_BIN2C=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +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=y +CONFIG_FAIR_GROUP_SCHED=y +# CONFIG_CFS_BANDWIDTH is not set +CONFIG_RT_GROUP_SCHED=y +# CONFIG_CGROUP_PIDS is not set +# CONFIG_CGROUP_RDMA is not set +CONFIG_CGROUP_FREEZER=y +# CONFIG_CPUSETS is not set +# CONFIG_CGROUP_DEVICE is not set +CONFIG_CGROUP_CPUACCT=y +# CONFIG_CGROUP_PERF is not set +CONFIG_NAMESPACES=y +CONFIG_UTS_NS=y +CONFIG_IPC_NS=y +# CONFIG_USER_NS is not set +CONFIG_PID_NS=y +CONFIG_NET_NS=y +# CONFIG_CHECKPOINT_RESTORE is not set +# CONFIG_SCHED_AUTOGROUP is not set +# CONFIG_SYSFS_DEPRECATED is not set +# CONFIG_RELAY is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_RD_GZIP=y +# CONFIG_RD_BZIP2 is not set +# CONFIG_RD_LZMA is not set +# CONFIG_RD_XZ is not set +# CONFIG_RD_LZO is not set +# CONFIG_RD_LZ4 is not set +CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_SYSCTL=y +CONFIG_ANON_INODES=y +CONFIG_HAVE_UID16=y +CONFIG_BPF=y +# CONFIG_EXPERT is not set +CONFIG_UID16=y +CONFIG_MULTIUSER=y +CONFIG_SYSFS_SYSCALL=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_SHMEM=y +CONFIG_AIO=y +CONFIG_ADVISE_SYSCALLS=y +CONFIG_MEMBARRIER=y +CONFIG_KALLSYMS=y +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_EMBEDDED is not set +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_PERF_USE_VMALLOC=y + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +CONFIG_VM_EVENT_COUNTERS=y +CONFIG_SLUB_DEBUG=y +CONFIG_COMPAT_BRK=y +# CONFIG_SLAB is not set +CONFIG_SLUB=y +CONFIG_SLAB_MERGE_DEFAULT=y +# CONFIG_SLAB_FREELIST_RANDOM is not set +# CONFIG_SLAB_FREELIST_HARDENED is not set +CONFIG_SLUB_CPU_PARTIAL=y +CONFIG_SYSTEM_DATA_VERIFICATION=y +# CONFIG_PROFILING is not set +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_EBSA110 is not set +# CONFIG_ARCH_EP93XX is not set +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_NETX is not set +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_DOVE is not set +# CONFIG_ARCH_KS8695 is not set +# CONFIG_ARCH_W90X900 is not set +# CONFIG_ARCH_LPC32XX is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_S3C24XX is not set +# CONFIG_ARCH_DAVINCI is not set +# CONFIG_ARCH_OMAP1 is not set + +# +# Multiple platform selection +# + +# +# CPU Core family selection +# +# CONFIG_ARCH_MULTI_V6 is not set +CONFIG_ARCH_MULTI_V7=y +CONFIG_ARCH_MULTI_V6_V7=y +# CONFIG_ARCH_VIRT is not set +# CONFIG_ARCH_ACTIONS is not set +# CONFIG_ARCH_ALPINE is not set +# CONFIG_ARCH_ARTPEC is not set +# CONFIG_ARCH_AT91 is not set +# 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_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_ARCH_OMAP3 is not set +# CONFIG_ARCH_OMAP4 is not set +# CONFIG_SOC_OMAP5 is not set +# CONFIG_SOC_AM33XX is not set +# CONFIG_SOC_AM43XX is not set +# CONFIG_SOC_DRA7XX 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_STM32 is not set +# CONFIG_ARCH_SUNXI is not set +# CONFIG_ARCH_TANGO is not set +CONFIG_ARCH_TEGRA=y +# CONFIG_ARCH_UNIPHIER is not set +# CONFIG_ARCH_U8500 is not set +# CONFIG_ARCH_VEXPRESS is not set +# CONFIG_ARCH_WM8850 is not set +# CONFIG_ARCH_ZX is not set +# CONFIG_ARCH_ZYNQ is not set +CONFIG_ARCH_SUPPORTS_FIRMWARE=y +CONFIG_ARCH_SUPPORTS_TRUSTED_FOUNDATIONS=y + +# +# Firmware options +# +# CONFIG_TRUSTED_FOUNDATIONS 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 +CONFIG_CPU_PABRT_V7=y +CONFIG_CPU_CACHE_V7=y +CONFIG_CPU_CACHE_VIPT=y +CONFIG_CPU_COPY_V6=y +CONFIG_CPU_TLB_V7=y +CONFIG_CPU_HAS_ASID=y +CONFIG_CPU_CP15=y +CONFIG_CPU_CP15_MMU=y + +# +# Processor Features +# +# CONFIG_ARM_LPAE is not set +CONFIG_ARM_THUMB=y +# CONFIG_ARM_THUMBEE is not set +CONFIG_ARM_VIRT_EXT=y +CONFIG_SWP_EMULATE=y +# CONFIG_CPU_ICACHE_DISABLE is not set +# CONFIG_CPU_BPREDICT_DISABLE is not set +CONFIG_CPU_SPECTRE=y +CONFIG_HARDEN_BRANCH_PREDICTOR=y +CONFIG_KUSER_HELPERS=y +CONFIG_VDSO=y +CONFIG_OUTER_CACHE=y +CONFIG_OUTER_CACHE_SYNC=y +CONFIG_MIGHT_HAVE_CACHE_L2X0=y +CONFIG_CACHE_L2X0=y +# CONFIG_CACHE_L2X0_PMU is not set +# CONFIG_PL310_ERRATA_588369 is not set +CONFIG_PL310_ERRATA_727915=y +# CONFIG_PL310_ERRATA_753970 is not set +CONFIG_PL310_ERRATA_769419=y +CONFIG_ARM_L1_CACHE_SHIFT_6=y +CONFIG_ARM_L1_CACHE_SHIFT=6 +CONFIG_ARM_DMA_MEM_BUFFERABLE=y +CONFIG_ARM_HEAVY_MB=y +CONFIG_DEBUG_ALIGN_RODATA=y +# CONFIG_ARM_ERRATA_430973 is not set +# CONFIG_ARM_ERRATA_643719 is not set +CONFIG_ARM_ERRATA_720789=y +# CONFIG_ARM_ERRATA_754322 is not set +CONFIG_ARM_ERRATA_754327=y +CONFIG_ARM_ERRATA_764369=y +# CONFIG_ARM_ERRATA_775420 is not set +# CONFIG_ARM_ERRATA_798181 is not set +# CONFIG_ARM_ERRATA_773022 is not set +# CONFIG_ARM_ERRATA_818325_852422 is not set +# CONFIG_ARM_ERRATA_821420 is not set +# CONFIG_ARM_ERRATA_825619 is not set +# CONFIG_ARM_ERRATA_852421 is not set +# CONFIG_ARM_ERRATA_852423 is not set + +# +# Bus support +# +# CONFIG_PCI is not set + +# +# PCI Endpoint +# +# CONFIG_PCI_ENDPOINT is not set +# CONFIG_PCCARD is not set + +# +# Kernel Features +# +CONFIG_HAVE_SMP=y +CONFIG_SMP=y +# CONFIG_SMP_ON_UP is not set +CONFIG_ARM_CPU_TOPOLOGY=y +CONFIG_SCHED_MC=y +# CONFIG_SCHED_SMT is not set +CONFIG_HAVE_ARM_SCU=y +CONFIG_HAVE_ARM_ARCH_TIMER=y +CONFIG_HAVE_ARM_TWD=y +# CONFIG_MCPM is not set +# CONFIG_BIG_LITTLE is not set +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_3G_OPT is not set +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_NR_CPUS=2 +CONFIG_HOTPLUG_CPU=y +# CONFIG_ARM_PSCI is not set +CONFIG_ARCH_NR_GPIO=1024 +CONFIG_HZ_FIXED=0 +CONFIG_HZ_100=y +# CONFIG_HZ_200 is not set +# CONFIG_HZ_250 is not set +# CONFIG_HZ_300 is not set +# CONFIG_HZ_500 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=100 +CONFIG_SCHED_HRTICK=y +# CONFIG_THUMB2_KERNEL is not set +CONFIG_ARM_PATCH_IDIV=y +CONFIG_AEABI=y +# CONFIG_OABI_COMPAT is not set +CONFIG_HAVE_ARCH_PFN_VALID=y +CONFIG_HIGHMEM=y +CONFIG_HIGHPTE=y +CONFIG_CPU_SW_DOMAIN_PAN=y +CONFIG_HW_PERF_EVENTS=y +CONFIG_ARCH_WANT_GENERAL_HUGETLB=y +CONFIG_ARM_MODULE_PLTS=y +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_ALIGNMENT_TRAP=y +# CONFIG_UACCESS_WITH_MEMCPY is not set +# CONFIG_SECCOMP is not set +# CONFIG_PARAVIRT is not set +# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set +# CONFIG_XEN is not set + +# +# Boot options +# +CONFIG_USE_OF=y +CONFIG_ATAGS=y +# CONFIG_DEPRECATED_PARAM_STRUCT is not set +CONFIG_ZBOOT_ROM_TEXT=0 +CONFIG_ZBOOT_ROM_BSS=0 +CONFIG_ARM_APPENDED_DTB=y +CONFIG_ARM_ATAG_DTB_COMPAT=y +CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER=y +# CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND is not set +CONFIG_CMDLINE="" +# CONFIG_KEXEC is not set +# CONFIG_CRASH_DUMP is not set +CONFIG_AUTO_ZRELADDR=y +# CONFIG_EFI is not set + +# +# CPU Power Management +# + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_GOV_ATTR_SET=y +CONFIG_CPU_FREQ_STAT=y +# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set +# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set +# CONFIG_CPU_FREQ_GOV_USERSPACE is not set +# CONFIG_CPU_FREQ_GOV_ONDEMAND is not set +# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set +CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y + +# +# CPU frequency scaling drivers +# +# CONFIG_CPUFREQ_DT is not set +# CONFIG_ARM_BIG_LITTLE_CPUFREQ is not set +CONFIG_ARM_TEGRA20_CPUFREQ=y +# CONFIG_QORIQ_CPUFREQ is not set + +# +# CPU Idle +# +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_MULTIPLE_DRIVERS=y +# CONFIG_CPU_IDLE_GOV_LADDER is not set +CONFIG_CPU_IDLE_GOV_MENU=y +CONFIG_DT_IDLE_STATES=y + +# +# ARM CPU Idle Drivers +# +CONFIG_ARM_CPUIDLE=y +CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED=y + +# +# Floating point emulation +# + +# +# At least one emulation must be selected +# +CONFIG_VFP=y +CONFIG_VFPv3=y +# CONFIG_NEON is not set + +# +# Power management options +# +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +# CONFIG_HIBERNATION is not set +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +# CONFIG_PM_AUTOSLEEP is not set +# CONFIG_PM_WAKELOCKS is not set +CONFIG_PM=y +# CONFIG_PM_DEBUG is not set +CONFIG_APM_EMULATION=y +CONFIG_PM_CLK=y +# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set +CONFIG_CPU_PM=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARM_CPU_SUSPEND=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y + +# +# Firmware Drivers +# +# CONFIG_FW_CFG_SYSFS is not set +CONFIG_HAVE_ARM_SMCCC=y +# CONFIG_GOOGLE_FIRMWARE is not set + +# +# Tegra firmware driver +# +# CONFIG_TEGRA_IVC is not set +CONFIG_ARM_CRYPTO=y +CONFIG_CRYPTO_SHA1_ARM=y +# CONFIG_CRYPTO_SHA256_ARM is not set +# CONFIG_CRYPTO_SHA512_ARM is not set +CONFIG_CRYPTO_AES_ARM=y +# CONFIG_VIRTUALIZATION is not set + +# +# General architecture-dependent options +# +CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set +# CONFIG_JUMP_LABEL 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_HW_BREAKPOINT=y +CONFIG_HAVE_PERF_REGS=y +CONFIG_HAVE_PERF_USER_STACK_DUMP=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_HAVE_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_ARCH_HAS_GCOV_PROFILE_ALL=y +CONFIG_PLUGIN_HOSTCC="g++" +CONFIG_HAVE_GCC_PLUGINS=y +# CONFIG_GCC_PLUGINS is not set +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +# CONFIG_MODULE_SIG is not set +# CONFIG_MODULE_COMPRESS is not set +# CONFIG_TRIM_UNUSED_KSYMS is not set +CONFIG_MODULES_TREE_LOOKUP=y +CONFIG_BLOCK=y +CONFIG_LBDAF=y +CONFIG_BLK_SCSI_REQUEST=y +CONFIG_BLK_DEV_BSG=y +# 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=y +# CONFIG_BLK_WBT is not set +# CONFIG_BLK_SED_OPAL is not set + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_AIX_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_KARMA_PARTITION is not set +CONFIG_EFI_PARTITION=y +# CONFIG_SYSV68_PARTITION is not set +CONFIG_CMDLINE_PARTITION=y +CONFIG_BLK_PM=y + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_CFQ=y +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="cfq" +CONFIG_MQ_IOSCHED_DEADLINE=y +CONFIG_MQ_IOSCHED_KYBER=y +# CONFIG_IOSCHED_BFQ is not set +CONFIG_ASN1=y +CONFIG_UNINLINE_SPIN_UNLOCK=y +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_RWSEM_SPIN_ON_OWNER=y +CONFIG_LOCK_SPIN_ON_OWNER=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=y +CONFIG_BINFMT_SCRIPT=y +# CONFIG_BINFMT_FLAT is not set +CONFIG_BINFMT_MISC=y +CONFIG_COREDUMP=y + +# +# Memory Management options +# +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_COMPACTION=y +CONFIG_MIGRATION=y +CONFIG_BOUNCE=y +CONFIG_KSM=y +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +# CONFIG_CLEANCACHE is not set +# CONFIG_FRONTSWAP is not set +# CONFIG_CMA is not set +# 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_PERCPU_STATS is not set +# CONFIG_GUP_BENCHMARK is not set +CONFIG_NET=y +CONFIG_NET_INGRESS=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_DIAG is not set +CONFIG_UNIX=y +# CONFIG_UNIX_DIAG is not set +# CONFIG_TLS is not set +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +# CONFIG_XFRM_INTERFACE is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +CONFIG_IP_ADVANCED_ROUTER=y +# CONFIG_IP_FIB_TRIE_STATS is not set +# CONFIG_IP_MULTIPLE_TABLES is not set +# CONFIG_IP_ROUTE_MULTIPATH is not set +# CONFIG_IP_ROUTE_VERBOSE is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE_DEMUX is not set +CONFIG_NET_IP_TUNNEL=y +# CONFIG_SYN_COOKIES is not set +# CONFIG_NET_IPVTI is not set +# CONFIG_NET_FOU is not set +# CONFIG_NET_FOU_IP_TUNNELS is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +CONFIG_INET_TUNNEL=y +CONFIG_INET_XFRM_MODE_TRANSPORT=y +CONFIG_INET_XFRM_MODE_TUNNEL=y +CONFIG_INET_XFRM_MODE_BEET=y +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_INET_UDP_DIAG is not set +# CONFIG_INET_RAW_DIAG is not set +# CONFIG_INET_DIAG_DESTROY is not set +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +CONFIG_IPV6=y +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +# CONFIG_INET6_AH is not set +# CONFIG_INET6_ESP is not set +# CONFIG_INET6_IPCOMP is not set +# CONFIG_IPV6_MIP6 is not set +# CONFIG_IPV6_ILA is not set +CONFIG_INET6_XFRM_MODE_TRANSPORT=y +CONFIG_INET6_XFRM_MODE_TUNNEL=y +CONFIG_INET6_XFRM_MODE_BEET=y +# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set +# CONFIG_IPV6_VTI is not set +CONFIG_IPV6_SIT=y +# CONFIG_IPV6_SIT_6RD is not set +CONFIG_IPV6_NDISC_NODETYPE=y +# CONFIG_IPV6_TUNNEL is not set +# CONFIG_IPV6_MULTIPLE_TABLES is not set +# CONFIG_IPV6_MROUTE is not set +# CONFIG_IPV6_SEG6_LWTUNNEL is not set +# CONFIG_IPV6_SEG6_HMAC is not set +# CONFIG_NETWORK_SECMARK is not set +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_INGRESS=y +CONFIG_NETFILTER_FAMILY_ARP=y +# CONFIG_NETFILTER_NETLINK_ACCT is not set +# CONFIG_NETFILTER_NETLINK_QUEUE is not set +# CONFIG_NETFILTER_NETLINK_LOG is not set +# CONFIG_NETFILTER_NETLINK_OSF is not set +# CONFIG_NF_CONNTRACK is not set +# CONFIG_NF_LOG_NETDEV is not set +# CONFIG_NF_TABLES is not set +CONFIG_NETFILTER_XTABLES=y + +# +# Xtables combined modules +# +# CONFIG_NETFILTER_XT_MARK is not set + +# +# Xtables targets +# +# CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set +# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set +# CONFIG_NETFILTER_XT_TARGET_DSCP is not set +# CONFIG_NETFILTER_XT_TARGET_HL is not set +# CONFIG_NETFILTER_XT_TARGET_HMARK is not set +# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set +# CONFIG_NETFILTER_XT_TARGET_LOG is not set +# CONFIG_NETFILTER_XT_TARGET_MARK is not set +# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set +# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set +# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set +# CONFIG_NETFILTER_XT_TARGET_TEE is not set +# CONFIG_NETFILTER_XT_TARGET_TPROXY is not set +# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set +# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set + +# +# Xtables matches +# +# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE is not set +# CONFIG_NETFILTER_XT_MATCH_BPF is not set +# CONFIG_NETFILTER_XT_MATCH_CGROUP is not set +# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set +# CONFIG_NETFILTER_XT_MATCH_CPU is not set +# CONFIG_NETFILTER_XT_MATCH_DCCP is not set +# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set +# CONFIG_NETFILTER_XT_MATCH_DSCP is not set +# CONFIG_NETFILTER_XT_MATCH_ECN is not set +# CONFIG_NETFILTER_XT_MATCH_ESP is not set +# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set +CONFIG_NETFILTER_XT_MATCH_HL=y +# CONFIG_NETFILTER_XT_MATCH_IPCOMP is not set +# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set +# CONFIG_NETFILTER_XT_MATCH_L2TP is not set +# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set +# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_MAC is not set +# CONFIG_NETFILTER_XT_MATCH_MARK is not set +# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set +# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set +# CONFIG_NETFILTER_XT_MATCH_OSF is not set +# CONFIG_NETFILTER_XT_MATCH_OWNER is not set +# CONFIG_NETFILTER_XT_MATCH_POLICY is not set +# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set +# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set +# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set +# CONFIG_NETFILTER_XT_MATCH_REALM is not set +# CONFIG_NETFILTER_XT_MATCH_RECENT is not set +# CONFIG_NETFILTER_XT_MATCH_SCTP is not set +# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set +# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set +# CONFIG_NETFILTER_XT_MATCH_STRING is not set +# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set +# CONFIG_NETFILTER_XT_MATCH_TIME is not set +# CONFIG_NETFILTER_XT_MATCH_U32 is not set +# CONFIG_IP_SET is not set +# CONFIG_IP_VS is not set + +# +# IP: Netfilter Configuration +# +# CONFIG_NF_SOCKET_IPV4 is not set +# CONFIG_NF_TPROXY_IPV4 is not set +# CONFIG_NF_DUP_IPV4 is not set +# CONFIG_NF_LOG_ARP is not set +# CONFIG_NF_LOG_IPV4 is not set +CONFIG_NF_REJECT_IPV4=y +CONFIG_IP_NF_IPTABLES=y +# CONFIG_IP_NF_MATCH_AH is not set +# CONFIG_IP_NF_MATCH_ECN is not set +# CONFIG_IP_NF_MATCH_RPFILTER is not set +CONFIG_IP_NF_MATCH_TTL=y +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_TARGET_REJECT=y +CONFIG_IP_NF_MANGLE=y +# CONFIG_IP_NF_TARGET_ECN is not set +# CONFIG_IP_NF_TARGET_TTL is not set +# CONFIG_IP_NF_RAW is not set +CONFIG_IP_NF_ARPTABLES=y +CONFIG_IP_NF_ARPFILTER=y +# CONFIG_IP_NF_ARP_MANGLE is not set + +# +# IPv6: Netfilter Configuration +# +# CONFIG_NF_SOCKET_IPV6 is not set +# CONFIG_NF_TPROXY_IPV6 is not set +# CONFIG_NF_DUP_IPV6 is not set +# CONFIG_NF_REJECT_IPV6 is not set +# CONFIG_NF_LOG_IPV6 is not set +# CONFIG_IP6_NF_IPTABLES is not set +CONFIG_BPFILTER=y +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_RDS is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_L2TP is not set +# CONFIG_BRIDGE is not set +CONFIG_HAVE_NET_DSA=y +# CONFIG_NET_DSA is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_PHONET is not set +# CONFIG_6LOWPAN is not set +# CONFIG_IEEE802154 is not set +# CONFIG_NET_SCHED is not set +# CONFIG_DCB is not set +CONFIG_DNS_RESOLVER=y +# CONFIG_BATMAN_ADV is not set +# CONFIG_OPENVSWITCH 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_RPS=y +CONFIG_RFS_ACCEL=y +CONFIG_XPS=y +# CONFIG_CGROUP_NET_PRIO is not set +# CONFIG_CGROUP_NET_CLASSID is not set +CONFIG_NET_RX_BUSY_POLL=y +CONFIG_BQL=y +CONFIG_BPF_JIT=y +CONFIG_NET_FLOW_LIMIT=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_CAN is not set +CONFIG_BT=y +CONFIG_BT_BREDR=y +CONFIG_BT_RFCOMM=y +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=y +# CONFIG_BT_BNEP_MC_FILTER is not set +# CONFIG_BT_BNEP_PROTO_FILTER is not set +CONFIG_BT_HIDP=y +CONFIG_BT_HS=y +CONFIG_BT_LE=y +# CONFIG_BT_LEDS is not set + +# +# Bluetooth device drivers +# +CONFIG_BT_BCM=y +# CONFIG_BT_HCIBTUSB is not set +# CONFIG_BT_HCIBTSDIO is not set +CONFIG_BT_HCIUART=y +CONFIG_BT_HCIUART_SERDEV=y +CONFIG_BT_HCIUART_H4=y +# CONFIG_BT_HCIUART_NOKIA is not set +# CONFIG_BT_HCIUART_BCSP is not set +# CONFIG_BT_HCIUART_ATH3K is not set +# CONFIG_BT_HCIUART_LL is not set +# CONFIG_BT_HCIUART_3WIRE is not set +# CONFIG_BT_HCIUART_INTEL is not set +CONFIG_BT_HCIUART_BCM=y +# CONFIG_BT_HCIUART_QCA is not set +# CONFIG_BT_HCIUART_AG6XX is not set +# CONFIG_BT_HCIUART_MRVL is not set +# CONFIG_BT_HCIBCM203X is not set +# CONFIG_BT_HCIBPA10X is not set +# CONFIG_BT_HCIBFUSB is not set +# CONFIG_BT_HCIVHCI is not set +# CONFIG_BT_MRVL is not set +# CONFIG_BT_MTKUART is not set +# CONFIG_AF_RXRPC is not set +# CONFIG_AF_KCM is not set +CONFIG_WIRELESS=y +CONFIG_CFG80211=y +# CONFIG_NL80211_TESTMODE is not set +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +CONFIG_CFG80211_REQUIRE_SIGNED_REGDB=y +CONFIG_CFG80211_USE_KERNEL_REGDB_KEYS=y +CONFIG_CFG80211_DEFAULT_PS=y +CONFIG_CFG80211_CRDA_SUPPORT=y +# CONFIG_CFG80211_WEXT is not set +# CONFIG_MAC80211 is not set +CONFIG_MAC80211_STA_HASH_MAX_SIZE=0 +# CONFIG_WIMAX is not set +CONFIG_RFKILL=y +CONFIG_RFKILL_INPUT=y +# 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_PSAMPLE is not set +# CONFIG_NET_IFE is not set +# CONFIG_LWTUNNEL is not set +CONFIG_DST_CACHE=y +CONFIG_GRO_CELLS=y +# CONFIG_NET_DEVLINK is not set +CONFIG_MAY_USE_DEVLINK=y +# CONFIG_FAILOVER is not set +CONFIG_HAVE_EBPF_JIT=y + +# +# Device Drivers +# +CONFIG_ARM_AMBA=y +CONFIG_TEGRA_AHB=y + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER=y +CONFIG_UEVENT_HELPER_PATH="" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y + +# +# Firmware loader +# +CONFIG_FW_LOADER=y +CONFIG_EXTRA_FIRMWARE="" +# CONFIG_FW_LOADER_USER_HELPER is not set +CONFIG_ALLOW_DEV_COREDUMP=y +# 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_REGMAP_IRQ=y +CONFIG_DMA_SHARED_BUFFER=y +# CONFIG_DMA_FENCE_TRACE is not set +CONFIG_GENERIC_ARCH_TOPOLOGY=y + +# +# Bus devices +# +# CONFIG_BRCMSTB_GISB_ARB is not set +# CONFIG_SIMPLE_PM_BUS is not set +CONFIG_TEGRA_GMI=y +# CONFIG_VEXPRESS_CONFIG is not set +# CONFIG_CONNECTOR is not set +CONFIG_GNSS=y +CONFIG_GNSS_SIRF_SERIAL=y +# CONFIG_GNSS_UBX_SERIAL is not set +# CONFIG_MTD is not set +CONFIG_DTC=y +CONFIG_OF=y +# 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_OF_RESERVED_MEM=y +# CONFIG_OF_OVERLAY is not set +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_NULL_BLK is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +# 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 is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH 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_AD525X_DPOT=y +CONFIG_AD525X_DPOT_I2C=y +# CONFIG_AD525X_DPOT_SPI is not set +# CONFIG_DUMMY_IRQ is not set +# CONFIG_ICS932S401 is not set +# CONFIG_ENCLOSURE_SERVICES is not set +CONFIG_APDS9802ALS=y +# CONFIG_ISL29003 is not set +# CONFIG_ISL29020 is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_SENSORS_BH1770 is not set +# CONFIG_SENSORS_APDS990X is not set +# CONFIG_HMC6352 is not set +# CONFIG_DS1682 is not set +CONFIG_USB_SWITCH_FSA9480=y +# CONFIG_LATTICE_ECP3_CONFIG is not set +CONFIG_SRAM=y +CONFIG_SRAM_EXEC=y +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +# CONFIG_EEPROM_AT24 is not set +# CONFIG_EEPROM_AT25 is not set +# CONFIG_EEPROM_LEGACY is not set +# CONFIG_EEPROM_MAX6875 is not set +# CONFIG_EEPROM_93CX6 is not set +# CONFIG_EEPROM_93XX46 is not set +# CONFIG_EEPROM_IDT_89HPESX is not set +# CONFIG_EEPROM_EE1004 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 + +# +# Intel MIC & related support +# + +# +# Intel MIC Bus Driver +# + +# +# SCIF Bus Driver +# + +# +# VOP Bus Driver +# + +# +# Intel MIC Host Driver +# + +# +# Intel MIC Card Driver +# + +# +# SCIF Driver +# + +# +# Intel MIC Coprocessor State Management (COSM) Drivers +# + +# +# VOP Driver +# +# CONFIG_ECHO is not set +# CONFIG_MISC_RTSX_USB is not set + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +# CONFIG_RAID_ATTRS is not set +# CONFIG_SCSI is not set +# CONFIG_ATA is not set +CONFIG_MD=y +# CONFIG_BLK_DEV_MD is not set +# CONFIG_BCACHE is not set +CONFIG_BLK_DEV_DM_BUILTIN=y +CONFIG_BLK_DEV_DM=y +# CONFIG_DM_DEBUG is not set +# CONFIG_DM_UNSTRIPED is not set +CONFIG_DM_CRYPT=y +# CONFIG_DM_SNAPSHOT is not set +# CONFIG_DM_THIN_PROVISIONING is not set +# CONFIG_DM_CACHE is not set +# CONFIG_DM_WRITECACHE is not set +# CONFIG_DM_ERA is not set +# CONFIG_DM_MIRROR is not set +# CONFIG_DM_RAID is not set +# CONFIG_DM_ZERO is not set +# CONFIG_DM_MULTIPATH is not set +# CONFIG_DM_DELAY is not set +# CONFIG_DM_UEVENT is not set +# CONFIG_DM_FLAKEY is not set +# CONFIG_DM_VERITY is not set +# CONFIG_DM_SWITCH is not set +# CONFIG_DM_LOG_WRITES is not set +# CONFIG_DM_INTEGRITY is not set +# CONFIG_TARGET_CORE is not set +CONFIG_NETDEVICES=y +CONFIG_NET_CORE=y +# CONFIG_BONDING is not set +# CONFIG_DUMMY is not set +# 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_MACSEC is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_TUN is not set +# CONFIG_TUN_VNET_CROSS_LE is not set +# CONFIG_VETH is not set +# CONFIG_NLMON is not set + +# +# CAIF transport drivers +# + +# +# Distributed Switch Architecture drivers +# +# CONFIG_ETHERNET is not set +# CONFIG_MDIO_DEVICE is not set +# CONFIG_PHYLIB is not set +# CONFIG_MICREL_KS8995MA is not set +CONFIG_PPP=y +CONFIG_PPP_BSDCOMP=y +CONFIG_PPP_DEFLATE=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_MPPE=y +CONFIG_PPP_MULTILINK=y +CONFIG_PPPOE=y +CONFIG_PPP_ASYNC=y +CONFIG_PPP_SYNC_TTY=y +# CONFIG_SLIP is not set +CONFIG_SLHC=y +# CONFIG_USB_NET_DRIVERS is not set +CONFIG_WLAN=y +# CONFIG_WLAN_VENDOR_ADMTEK is not set +# CONFIG_WLAN_VENDOR_ATH is not set +# CONFIG_WLAN_VENDOR_ATMEL is not set +CONFIG_WLAN_VENDOR_BROADCOM=y +CONFIG_BRCMUTIL=m +CONFIG_BRCMFMAC=m +CONFIG_BRCMFMAC_PROTO_BCDC=y +CONFIG_BRCMFMAC_SDIO=y +# CONFIG_BRCMFMAC_USB is not set +# CONFIG_BRCM_TRACING is not set +# CONFIG_BRCMDBG is not set +# CONFIG_WLAN_VENDOR_CISCO is not set +# CONFIG_WLAN_VENDOR_INTEL is not set +# CONFIG_WLAN_VENDOR_INTERSIL is not set +# CONFIG_WLAN_VENDOR_MARVELL is not set +# CONFIG_WLAN_VENDOR_MEDIATEK is not set +# CONFIG_WLAN_VENDOR_RALINK is not set +# CONFIG_WLAN_VENDOR_REALTEK is not set +# CONFIG_WLAN_VENDOR_RSI 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_USB_NET_RNDIS_WLAN is not set + +# +# Enable WiMAX (Networking options) to see the WiMAX drivers +# +# CONFIG_WAN is not set +# CONFIG_NET_FAILOVER is not set +# CONFIG_ISDN is not set +# CONFIG_NVM is not set + +# +# Input device support +# +CONFIG_INPUT=y +CONFIG_INPUT_LEDS=y +CONFIG_INPUT_FF_MEMLESS=y +# CONFIG_INPUT_POLLDEV is not set +# CONFIG_INPUT_SPARSEKMAP is not set +CONFIG_INPUT_MATRIXKMAP=y + +# +# Userland interfaces +# +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# CONFIG_KEYBOARD_ADC is not set +# CONFIG_KEYBOARD_ADP5588 is not set +# CONFIG_KEYBOARD_ADP5589 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 is not set +# CONFIG_KEYBOARD_TCA6416 is not set +# CONFIG_KEYBOARD_TCA8418 is not set +# CONFIG_KEYBOARD_MATRIX is not set +# CONFIG_KEYBOARD_LM8323 is not set +# CONFIG_KEYBOARD_LM8333 is not set +# CONFIG_KEYBOARD_MAX7359 is not set +# CONFIG_KEYBOARD_MCS is not set +# CONFIG_KEYBOARD_MPR121 is not set +# CONFIG_KEYBOARD_NEWTON is not set +CONFIG_KEYBOARD_TEGRA=y +# CONFIG_KEYBOARD_OPENCORES is not set +# CONFIG_KEYBOARD_SAMSUNG is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_SUNKBD is not set +CONFIG_KEYBOARD_STMPE=y +# 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_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_TOUCHSCREEN_PROPERTIES=y +# CONFIG_TOUCHSCREEN_ADS7846 is not set +# CONFIG_TOUCHSCREEN_AD7877 is not set +# CONFIG_TOUCHSCREEN_AD7879 is not set +# CONFIG_TOUCHSCREEN_ADC is not set +# CONFIG_TOUCHSCREEN_AR1021_I2C is not set +CONFIG_TOUCHSCREEN_ATMEL_MXT=y +# CONFIG_TOUCHSCREEN_ATMEL_MXT_T37 is not set +# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set +# CONFIG_TOUCHSCREEN_BU21013 is not set +# CONFIG_TOUCHSCREEN_BU21029 is not set +# CONFIG_TOUCHSCREEN_CHIPONE_ICN8318 is not set +# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set +# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set +# CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set +# CONFIG_TOUCHSCREEN_DYNAPRO is not set +# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set +# CONFIG_TOUCHSCREEN_EETI is not set +# CONFIG_TOUCHSCREEN_EGALAX is not set +# CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set +# CONFIG_TOUCHSCREEN_EXC3000 is not set +# CONFIG_TOUCHSCREEN_FUJITSU is not set +# CONFIG_TOUCHSCREEN_GOODIX is not set +# CONFIG_TOUCHSCREEN_HIDEEP is not set +# CONFIG_TOUCHSCREEN_ILI210X is not set +# CONFIG_TOUCHSCREEN_S6SY761 is not set +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_TOUCHSCREEN_EKTF2127 is not set +# CONFIG_TOUCHSCREEN_ELAN is not set +# CONFIG_TOUCHSCREEN_ELO is not set +# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set +# CONFIG_TOUCHSCREEN_WACOM_I2C is not set +# CONFIG_TOUCHSCREEN_MAX11801 is not set +# CONFIG_TOUCHSCREEN_MCS5000 is not set +# CONFIG_TOUCHSCREEN_MMS114 is not set +# CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set +# CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_IMX6UL_TSC is not set +# CONFIG_TOUCHSCREEN_INEXIO is not set +# CONFIG_TOUCHSCREEN_MK712 is not set +# CONFIG_TOUCHSCREEN_PENMOUNT is not set +# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set +# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set +# CONFIG_TOUCHSCREEN_TOUCHWIN is not set +# CONFIG_TOUCHSCREEN_PIXCIR is not set +# CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set +# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set +# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set +# CONFIG_TOUCHSCREEN_TSC_SERIO is not set +# CONFIG_TOUCHSCREEN_TSC2004 is not set +# CONFIG_TOUCHSCREEN_TSC2005 is not set +# CONFIG_TOUCHSCREEN_TSC2007 is not set +# CONFIG_TOUCHSCREEN_RM_TS is not set +# CONFIG_TOUCHSCREEN_SILEAD is not set +# CONFIG_TOUCHSCREEN_SIS_I2C is not set +# CONFIG_TOUCHSCREEN_ST1232 is not set +# CONFIG_TOUCHSCREEN_STMFTS is not set +# CONFIG_TOUCHSCREEN_STMPE is not set +# CONFIG_TOUCHSCREEN_SURFACE3_SPI is not set +# CONFIG_TOUCHSCREEN_SX8654 is not set +# CONFIG_TOUCHSCREEN_TPS6507X is not set +# CONFIG_TOUCHSCREEN_ZET6223 is not set +# CONFIG_TOUCHSCREEN_ZFORCE is not set +# CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set +CONFIG_INPUT_MISC=y +# CONFIG_INPUT_AD714X is not set +# CONFIG_INPUT_ATMEL_CAPTOUCH is not set +# CONFIG_INPUT_BMA150 is not set +# CONFIG_INPUT_E3X0_BUTTON is not set +# CONFIG_INPUT_MMA8450 is not set +# CONFIG_INPUT_GP2A is not set +# CONFIG_INPUT_GPIO_BEEPER is not set +# CONFIG_INPUT_GPIO_DECODER is not set +# CONFIG_INPUT_ATI_REMOTE2 is not set +# CONFIG_INPUT_KEYSPAN_REMOTE is not set +# CONFIG_INPUT_KXTJ9 is not set +# CONFIG_INPUT_POWERMATE is not set +# CONFIG_INPUT_YEALINK is not set +# CONFIG_INPUT_CM109 is not set +# CONFIG_INPUT_REGULATOR_HAPTIC is not set +CONFIG_INPUT_UINPUT=y +# CONFIG_INPUT_PCF8574 is not set +# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set +# CONFIG_INPUT_ADXL34X is not set +# CONFIG_INPUT_IMS_PCU is not set +# CONFIG_INPUT_CMA3000 is not set +# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set +# CONFIG_INPUT_DRV260X_HAPTICS is not set +# CONFIG_INPUT_DRV2665_HAPTICS is not set +# CONFIG_INPUT_DRV2667_HAPTICS is not set +# CONFIG_RMI4_CORE is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_SERIO_SERPORT=y +# CONFIG_SERIO_AMBAKMI is not set +# CONFIG_SERIO_LIBPS2 is not set +# CONFIG_SERIO_RAW is not set +# CONFIG_SERIO_ALTERA_PS2 is not set +# CONFIG_SERIO_PS2MULT is not set +# CONFIG_SERIO_ARC_PS2 is not set +# CONFIG_SERIO_APBPS2 is not set +# CONFIG_SERIO_GPIO_PS2 is not set +# CONFIG_USERIO is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_TTY=y +CONFIG_VT=y +CONFIG_CONSOLE_TRANSLATIONS=y +CONFIG_VT_CONSOLE=y +CONFIG_VT_CONSOLE_SLEEP=y +CONFIG_HW_CONSOLE=y +CONFIG_VT_HW_CONSOLE_BINDING=y +CONFIG_UNIX98_PTYS=y +# CONFIG_LEGACY_PTYS is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_N_GSM is not set +# CONFIG_TRACE_SINK is not set +CONFIG_DEVMEM=y +# CONFIG_DEVKMEM is not set + +# +# Serial drivers +# +CONFIG_SERIAL_EARLYCON=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y +# CONFIG_SERIAL_8250_FINTEK is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_DMA=y +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_ASPEED_VUART is not set +CONFIG_SERIAL_8250_FSL=y +# CONFIG_SERIAL_8250_DW is not set +# CONFIG_SERIAL_8250_EM is not set +# CONFIG_SERIAL_8250_RT288X is not set +# CONFIG_SERIAL_OF_PLATFORM is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_AMBA_PL010 is not set +# CONFIG_SERIAL_AMBA_PL011 is not set +# CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST is not set +CONFIG_SERIAL_TEGRA=y +# CONFIG_SERIAL_MAX3100 is not set +# CONFIG_SERIAL_MAX310X is not set +# CONFIG_SERIAL_UARTLITE is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_SCCNXP is not set +# CONFIG_SERIAL_SC16IS7XX is not set +# CONFIG_SERIAL_BCM63XX is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_IFX6X60 is not set +# CONFIG_SERIAL_XILINX_PS_UART is not set +# CONFIG_SERIAL_ARC is not set +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SERIAL_CONEXANT_DIGICOLOR is not set +# CONFIG_SERIAL_ST_ASC is not set +CONFIG_SERIAL_DEV_BUS=y +CONFIG_SERIAL_DEV_CTRL_TTYPORT=y +# CONFIG_HVC_DCC is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_R3964 is not set +# CONFIG_RAW_DRIVER is not set +# CONFIG_TCG_TPM is not set +# CONFIG_XILLYBUS is not set + +# +# I2C support +# +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_COMPAT=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MUX=y + +# +# Multiplexer I2C Chip support +# +# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set +# CONFIG_I2C_MUX_GPIO is not set +# CONFIG_I2C_MUX_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=y +# 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 + +# +# I2C Hardware Bus support +# + +# +# I2C system bus drivers (mostly embedded / system-on-chip) +# +# CONFIG_I2C_CBUS_GPIO is not set +# 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_NOMADIK is not set +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_RK3X is not set +# CONFIG_I2C_SIMTEC is not set +CONFIG_I2C_TEGRA=y +# CONFIG_I2C_XILINX is not set + +# +# External I2C/SMBus adapter drivers +# +# CONFIG_I2C_DIOLAN_U2C is not set +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_ROBOTFUZZ_OSIF is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set + +# +# Other I2C/SMBus bus drivers +# +# CONFIG_I2C_STUB is not set +# CONFIG_I2C_SLAVE is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +CONFIG_SPI=y +CONFIG_SPI_MASTER=y +# CONFIG_SPI_MEM is not set + +# +# SPI Master Controller Drivers +# +# CONFIG_SPI_ALTERA is not set +# CONFIG_SPI_AXI_SPI_ENGINE is not set +# CONFIG_SPI_BITBANG is not set +# CONFIG_SPI_CADENCE is not set +# CONFIG_SPI_DESIGNWARE is not set +# CONFIG_SPI_GPIO is not set +# CONFIG_SPI_FSL_SPI is not set +# CONFIG_SPI_OC_TINY is not set +# CONFIG_SPI_PL022 is not set +# CONFIG_SPI_ROCKCHIP is not set +# CONFIG_SPI_SC18IS602 is not set +# CONFIG_SPI_TEGRA114 is not set +CONFIG_SPI_TEGRA20_SFLASH=y +CONFIG_SPI_TEGRA20_SLINK=y +# CONFIG_SPI_XCOMM is not set +# CONFIG_SPI_XILINX is not set +# CONFIG_SPI_ZYNQMP_GQSPI is not set + +# +# SPI Protocol Masters +# +# CONFIG_SPI_SPIDEV is not set +# 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 +# CONFIG_PPS is not set + +# +# PTP clock support +# +# CONFIG_PTP_1588_CLOCK is not set + +# +# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. +# +CONFIG_PINCTRL=y +CONFIG_PINMUX=y +CONFIG_PINCONF=y +CONFIG_GENERIC_PINCONF=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_PINCTRL_TEGRA=y +CONFIG_PINCTRL_TEGRA20=y +CONFIG_PINCTRL_TEGRA_XUSB=y +CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y +CONFIG_GPIOLIB=y +CONFIG_GPIOLIB_FASTPATH_LIMIT=512 +CONFIG_OF_GPIO=y +CONFIG_GPIOLIB_IRQCHIP=y +# CONFIG_GPIO_SYSFS is not set + +# +# Memory mapped GPIO drivers +# +# CONFIG_GPIO_74XX_MMIO is not set +# CONFIG_GPIO_ALTERA is not set +# CONFIG_GPIO_DWAPB 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_PL061 is not set +CONFIG_GPIO_TEGRA=y +# CONFIG_GPIO_XILINX is not set +# CONFIG_GPIO_ZEVIO is not set + +# +# I2C GPIO expanders +# +# CONFIG_GPIO_ADP5588 is not set +# CONFIG_GPIO_ADNP is not set +# CONFIG_GPIO_MAX7300 is not set +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCF857X is not set +# CONFIG_GPIO_TPIC2810 is not set + +# +# MFD GPIO expanders +# +# CONFIG_HTC_EGPIO is not set +CONFIG_GPIO_STMPE=y +# CONFIG_GPIO_WM8994 is not set + +# +# 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 +# CONFIG_GPIO_XRA1403 is not set + +# +# USB GPIO expanders +# +# CONFIG_W1 is not set +# CONFIG_POWER_AVS is not set +# CONFIG_POWER_RESET is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +# CONFIG_PDA_POWER is not set +# CONFIG_APM_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_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=y +# CONFIG_BATTERY_MAX17042 is not set +# CONFIG_CHARGER_ISP1704 is not set +# CONFIG_CHARGER_MAX8903 is not set +# CONFIG_CHARGER_LP8727 is not set +# CONFIG_CHARGER_GPIO is not set +# CONFIG_CHARGER_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_CHARGER_SMB347 is not set +# CONFIG_BATTERY_GAUGE_LTC2941 is not set +# CONFIG_CHARGER_RT9455 is not set +CONFIG_HWMON=y +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Native drivers +# +# CONFIG_SENSORS_AD7314 is not set +# CONFIG_SENSORS_AD7414 is not set +# CONFIG_SENSORS_AD7418 is not set +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ADT7310 is not set +# CONFIG_SENSORS_ADT7410 is not set +# CONFIG_SENSORS_ADT7411 is not set +# CONFIG_SENSORS_ADT7462 is not set +# CONFIG_SENSORS_ADT7470 is not set +# CONFIG_SENSORS_ADT7475 is not set +# CONFIG_SENSORS_ASC7621 is not set +# CONFIG_SENSORS_ASPEED is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_DS620 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_F71882FG is not set +# CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_FTSTEUTATES is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_G760A is not set +# CONFIG_SENSORS_G762 is not set +# CONFIG_SENSORS_GPIO_FAN is not set +# CONFIG_SENSORS_HIH6130 is not set +# CONFIG_SENSORS_IIO_HWMON is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_JC42 is not set +# CONFIG_SENSORS_POWR1220 is not set +# CONFIG_SENSORS_LINEAGE is not set +# CONFIG_SENSORS_LTC2945 is not set +# CONFIG_SENSORS_LTC2990 is not set +# CONFIG_SENSORS_LTC4151 is not set +# CONFIG_SENSORS_LTC4215 is not set +# CONFIG_SENSORS_LTC4222 is not set +# CONFIG_SENSORS_LTC4245 is not set +# CONFIG_SENSORS_LTC4260 is not set +# CONFIG_SENSORS_LTC4261 is not set +# CONFIG_SENSORS_MAX1111 is not set +# CONFIG_SENSORS_MAX16065 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_MAX1668 is not set +# CONFIG_SENSORS_MAX197 is not set +# CONFIG_SENSORS_MAX31722 is not set +# CONFIG_SENSORS_MAX6621 is not set +# CONFIG_SENSORS_MAX6639 is not set +# CONFIG_SENSORS_MAX6642 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_MAX6697 is not set +# CONFIG_SENSORS_MAX31790 is not set +# CONFIG_SENSORS_MCP3021 is not set +# CONFIG_SENSORS_TC654 is not set +# CONFIG_SENSORS_ADCXX is not set +# CONFIG_SENSORS_LM63 is not set +# CONFIG_SENSORS_LM70 is not set +# CONFIG_SENSORS_LM73 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +CONFIG_SENSORS_LM90=y +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_LM93 is not set +# CONFIG_SENSORS_LM95234 is not set +# CONFIG_SENSORS_LM95241 is not set +# CONFIG_SENSORS_LM95245 is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_NTC_THERMISTOR is not set +# CONFIG_SENSORS_NCT6683 is not set +# CONFIG_SENSORS_NCT6775 is not set +# CONFIG_SENSORS_NCT7802 is not set +# CONFIG_SENSORS_NCT7904 is not set +# CONFIG_SENSORS_NPCM7XX is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_PMBUS is not set +# CONFIG_SENSORS_SHT15 is not set +# CONFIG_SENSORS_SHT21 is not set +# CONFIG_SENSORS_SHT3x is not set +# CONFIG_SENSORS_SHTC1 is not set +# CONFIG_SENSORS_DME1737 is not set +# CONFIG_SENSORS_EMC1403 is not set +# CONFIG_SENSORS_EMC2103 is not set +# CONFIG_SENSORS_EMC6W201 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_SCH5627 is not set +# CONFIG_SENSORS_SCH5636 is not set +# CONFIG_SENSORS_STTS751 is not set +# CONFIG_SENSORS_SMM665 is not set +# CONFIG_SENSORS_ADC128D818 is not set +# CONFIG_SENSORS_ADS1015 is not set +# CONFIG_SENSORS_ADS7828 is not set +# CONFIG_SENSORS_ADS7871 is not set +# CONFIG_SENSORS_AMC6821 is not set +# CONFIG_SENSORS_INA209 is not set +# CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_INA3221 is not set +# CONFIG_SENSORS_TC74 is not set +# CONFIG_SENSORS_THMC50 is not set +# CONFIG_SENSORS_TMP102 is not set +# CONFIG_SENSORS_TMP103 is not set +# CONFIG_SENSORS_TMP108 is not set +# CONFIG_SENSORS_TMP401 is not set +# CONFIG_SENSORS_TMP421 is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_W83773G is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83793 is not set +# CONFIG_SENSORS_W83795 is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83L786NG is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83627EHF is not set +CONFIG_THERMAL=y +# CONFIG_THERMAL_STATISTICS is not set +CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=0 +CONFIG_THERMAL_HWMON=y +CONFIG_THERMAL_OF=y +# CONFIG_THERMAL_WRITABLE_TRIPS is not set +CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y +# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set +# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +# CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set +# CONFIG_THERMAL_GOV_FAIR_SHARE is not set +CONFIG_THERMAL_GOV_STEP_WISE=y +# CONFIG_THERMAL_GOV_BANG_BANG is not set +# CONFIG_THERMAL_GOV_USER_SPACE is not set +# CONFIG_THERMAL_GOV_POWER_ALLOCATOR is not set +# CONFIG_CPU_THERMAL is not set +# CONFIG_CLOCK_THERMAL is not set +# CONFIG_THERMAL_EMULATION is not set +# CONFIG_QORIQ_THERMAL is not set + +# +# ACPI INT340X thermal drivers +# + +# +# NVIDIA Tegra thermal drivers +# +CONFIG_TEGRA_SOCTHERM=y +# CONFIG_GENERIC_ADC_THERMAL 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 + +# +# Watchdog Device Drivers +# +# CONFIG_SOFT_WATCHDOG is not set +# CONFIG_GPIO_WATCHDOG is not set +# CONFIG_XILINX_WATCHDOG is not set +# CONFIG_ZIIRAVE_WATCHDOG is not set +# CONFIG_ARM_SP805_WATCHDOG is not set +# 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_TEGRA_WATCHDOG=y +# CONFIG_MEN_A21_WDT is not set + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set + +# +# Watchdog Pretimeout Governors +# +# CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set +CONFIG_SSB_POSSIBLE=y +# CONFIG_SSB is not set +CONFIG_BCMA_POSSIBLE=y +# CONFIG_BCMA is not set + +# +# Multifunction device drivers +# +CONFIG_MFD_CORE=y +# CONFIG_MFD_ACT8945A is not set +# CONFIG_MFD_AS3711 is not set +# CONFIG_MFD_AS3722 is not set +# CONFIG_PMIC_ADP5520 is not set +# CONFIG_MFD_AAT2870_CORE is not set +# CONFIG_MFD_AT91_USART is not set +# CONFIG_MFD_ATMEL_FLEXCOM is not set +# CONFIG_MFD_ATMEL_HLCDC is not set +# CONFIG_MFD_BCM590XX is not set +# CONFIG_MFD_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_DA9052_I2C is not set +# CONFIG_MFD_DA9055 is not set +# CONFIG_MFD_DA9062 is not set +# CONFIG_MFD_DA9063 is not set +# CONFIG_MFD_DA9150 is not set +# CONFIG_MFD_DLN2 is not set +# 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_MFD_KEMPLD is not set +# CONFIG_MFD_88PM800 is not set +# CONFIG_MFD_88PM805 is not set +# CONFIG_MFD_88PM860X is not set +# CONFIG_MFD_MAX14577 is not set +# CONFIG_MFD_MAX77620 is not set +# CONFIG_MFD_MAX77686 is not set +# CONFIG_MFD_MAX77693 is not set +# CONFIG_MFD_MAX77843 is not set +CONFIG_MFD_MAX8907=y +# CONFIG_MFD_MAX8925 is not set +# CONFIG_MFD_MAX8997 is not set +# CONFIG_MFD_MAX8998 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_PM8XXX is not set +# CONFIG_MFD_RT5033 is not set +# CONFIG_MFD_RC5T583 is not set +# CONFIG_MFD_RK808 is not set +# CONFIG_MFD_RN5T618 is not set +# CONFIG_MFD_SEC_CORE is not set +# CONFIG_MFD_SI476X_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_SKY81452 is not set +# CONFIG_MFD_SMSC is not set +# CONFIG_ABX500_CORE is not set +CONFIG_MFD_STMPE=y + +# +# STMicroelectronics STMPE Interface Drivers +# +CONFIG_STMPE_I2C=y +# CONFIG_STMPE_SPI is not set +# CONFIG_MFD_SYSCON is not set +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# CONFIG_MFD_LP3943 is not set +# CONFIG_MFD_LP8788 is not set +# CONFIG_MFD_TI_LMU is not set +# CONFIG_MFD_PALMAS is not set +# CONFIG_TPS6105X is not set +# CONFIG_TPS65010 is not set +# CONFIG_TPS6507X is not set +# CONFIG_MFD_TPS65086 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_TPS65912_I2C is not set +# CONFIG_MFD_TPS65912_SPI is not set +# CONFIG_MFD_TPS80031 is not set +# CONFIG_TWL4030_CORE is not set +# CONFIG_TWL6040_CORE is not set +# CONFIG_MFD_WL1273_CORE is not set +# CONFIG_MFD_LM3533 is not set +# CONFIG_MFD_TC3589X is not set +# CONFIG_MFD_T7L66XB is not set +# CONFIG_MFD_TC6387XB is not set +# CONFIG_MFD_TC6393XB is not set +# CONFIG_MFD_ARIZONA_I2C is not set +# CONFIG_MFD_ARIZONA_SPI is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM831X_I2C is not set +# CONFIG_MFD_WM831X_SPI is not set +# CONFIG_MFD_WM8350_I2C is not set +CONFIG_MFD_WM8994=y +# CONFIG_MFD_ROHM_BD718XX is not set +# CONFIG_RAVE_SP_CORE 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 is not set +# CONFIG_REGULATOR_AD5398 is not set +# CONFIG_REGULATOR_DA9210 is not set +# CONFIG_REGULATOR_DA9211 is not set +# CONFIG_REGULATOR_FAN53555 is not set +# CONFIG_REGULATOR_GPIO is not set +# CONFIG_REGULATOR_ISL9305 is not set +# CONFIG_REGULATOR_ISL6271A is not set +# CONFIG_REGULATOR_LP3971 is not set +# CONFIG_REGULATOR_LP3972 is not set +# CONFIG_REGULATOR_LP872X is not set +# CONFIG_REGULATOR_LP8755 is not set +# CONFIG_REGULATOR_LTC3589 is not set +# CONFIG_REGULATOR_LTC3676 is not set +# CONFIG_REGULATOR_MAX1586 is not set +# CONFIG_REGULATOR_MAX8649 is not set +# CONFIG_REGULATOR_MAX8660 is not set +CONFIG_REGULATOR_MAX8907=y +CONFIG_REGULATOR_MAX8952=y +# CONFIG_REGULATOR_MAX8973 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_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_REGULATOR_WM8994 is not set +CONFIG_CEC_CORE=y +CONFIG_CEC_NOTIFIER=y +# CONFIG_RC_CORE is not set +CONFIG_MEDIA_SUPPORT=y + +# +# Multimedia core support +# +CONFIG_MEDIA_CAMERA_SUPPORT=y +# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set +# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set +# CONFIG_MEDIA_RADIO_SUPPORT is not set +# CONFIG_MEDIA_SDR_SUPPORT is not set +CONFIG_MEDIA_CEC_SUPPORT=y +CONFIG_MEDIA_CONTROLLER=y +# CONFIG_MEDIA_CONTROLLER_REQUEST_API 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 + +# +# Media drivers +# +# CONFIG_MEDIA_USB_SUPPORT is not set +# CONFIG_V4L_PLATFORM_DRIVERS is not set +# CONFIG_V4L_MEM2MEM_DRIVERS is not set +# CONFIG_V4L_TEST_DRIVERS is not set +CONFIG_CEC_PLATFORM_DRIVERS=y +# CONFIG_CEC_GPIO is not set +CONFIG_VIDEO_TEGRA_HDMI_CEC=y + +# +# Supported MMC/SDIO adapters +# +# CONFIG_CYPRESS_FIRMWARE is not set + +# +# Media ancillary drivers (tuners, sensors, i2c, spi, frontends) +# +# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set + +# +# I2C Encoders, decoders, sensors and other helper chips +# + +# +# Audio decoders, processors and mixers +# +# CONFIG_VIDEO_TVAUDIO is not set +# CONFIG_VIDEO_TDA7432 is not set +# CONFIG_VIDEO_TDA9840 is not set +# CONFIG_VIDEO_TDA1997X is not set +# CONFIG_VIDEO_TEA6415C is not set +# CONFIG_VIDEO_TEA6420 is not set +# CONFIG_VIDEO_MSP3400 is not set +# CONFIG_VIDEO_CS3308 is not set +# CONFIG_VIDEO_CS5345 is not set +# CONFIG_VIDEO_CS53L32A is not set +# CONFIG_VIDEO_TLV320AIC23B is not set +# CONFIG_VIDEO_UDA1342 is not set +# CONFIG_VIDEO_WM8775 is not set +# CONFIG_VIDEO_WM8739 is not set +# CONFIG_VIDEO_VP27SMPX is not set +# CONFIG_VIDEO_SONY_BTF_MPX is not set + +# +# RDS decoders +# +# CONFIG_VIDEO_SAA6588 is not set + +# +# Video decoders +# +# CONFIG_VIDEO_ADV7180 is not set +# CONFIG_VIDEO_ADV7183 is not set +# CONFIG_VIDEO_ADV748X is not set +# CONFIG_VIDEO_ADV7604 is not set +# CONFIG_VIDEO_ADV7842 is not set +# CONFIG_VIDEO_BT819 is not set +# CONFIG_VIDEO_BT856 is not set +# CONFIG_VIDEO_BT866 is not set +# CONFIG_VIDEO_KS0127 is not set +# CONFIG_VIDEO_ML86V7667 is not set +# CONFIG_VIDEO_AD5820 is not set +# CONFIG_VIDEO_AK7375 is not set +# CONFIG_VIDEO_DW9714 is not set +# CONFIG_VIDEO_DW9807_VCM is not set +# CONFIG_VIDEO_SAA7110 is not set +# CONFIG_VIDEO_SAA711X is not set +# CONFIG_VIDEO_TC358743 is not set +# CONFIG_VIDEO_TVP514X is not set +# CONFIG_VIDEO_TVP5150 is not set +# CONFIG_VIDEO_TVP7002 is not set +# CONFIG_VIDEO_TW2804 is not set +# CONFIG_VIDEO_TW9903 is not set +# CONFIG_VIDEO_TW9906 is not set +# CONFIG_VIDEO_TW9910 is not set +# CONFIG_VIDEO_VPX3220 is not set + +# +# Video and audio decoders +# +# CONFIG_VIDEO_SAA717X is not set +# CONFIG_VIDEO_CX25840 is not set + +# +# Video encoders +# +# CONFIG_VIDEO_SAA7127 is not set +# CONFIG_VIDEO_SAA7185 is not set +# CONFIG_VIDEO_ADV7170 is not set +# CONFIG_VIDEO_ADV7175 is not set +# CONFIG_VIDEO_ADV7343 is not set +# CONFIG_VIDEO_ADV7393 is not set +# CONFIG_VIDEO_ADV7511 is not set +# CONFIG_VIDEO_AD9389B is not set +# CONFIG_VIDEO_AK881X is not set +# CONFIG_VIDEO_THS8200 is not set + +# +# Camera sensor devices +# +# CONFIG_VIDEO_IMX258 is not set +# CONFIG_VIDEO_IMX274 is not set +# CONFIG_VIDEO_IMX319 is not set +# CONFIG_VIDEO_IMX355 is not set +# CONFIG_VIDEO_OV2640 is not set +# CONFIG_VIDEO_OV2659 is not set +# CONFIG_VIDEO_OV2680 is not set +# CONFIG_VIDEO_OV2685 is not set +# CONFIG_VIDEO_OV5640 is not set +# CONFIG_VIDEO_OV5645 is not set +# CONFIG_VIDEO_OV5647 is not set +# CONFIG_VIDEO_OV6650 is not set +# CONFIG_VIDEO_OV5670 is not set +# CONFIG_VIDEO_OV5695 is not set +# CONFIG_VIDEO_OV7251 is not set +# CONFIG_VIDEO_OV772X is not set +# CONFIG_VIDEO_OV7640 is not set +# CONFIG_VIDEO_OV7670 is not set +# CONFIG_VIDEO_OV7740 is not set +# CONFIG_VIDEO_OV9650 is not set +# CONFIG_VIDEO_OV13858 is not set +# CONFIG_VIDEO_VS6624 is not set +# CONFIG_VIDEO_MT9M032 is not set +# CONFIG_VIDEO_MT9M111 is not set +# CONFIG_VIDEO_MT9P031 is not set +# CONFIG_VIDEO_MT9T001 is not set +# CONFIG_VIDEO_MT9T112 is not set +# CONFIG_VIDEO_MT9V011 is not set +# CONFIG_VIDEO_MT9V032 is not set +# CONFIG_VIDEO_MT9V111 is not set +# CONFIG_VIDEO_SR030PC30 is not set +# CONFIG_VIDEO_NOON010PC30 is not set +CONFIG_VIDEO_M5MOLS=y +# CONFIG_VIDEO_RJ54N1 is not set +CONFIG_VIDEO_S5K6AA=y +# CONFIG_VIDEO_S5K6A3 is not set +# CONFIG_VIDEO_S5K4ECGX is not set +# CONFIG_VIDEO_S5K5BAF is not set +# CONFIG_VIDEO_SMIAPP is not set +# CONFIG_VIDEO_ET8EK8 is not set +# CONFIG_VIDEO_S5C73M3 is not set + +# +# Flash devices +# +# CONFIG_VIDEO_ADP1653 is not set +# CONFIG_VIDEO_LM3560 is not set +# CONFIG_VIDEO_LM3646 is not set + +# +# Video improvement chips +# +# CONFIG_VIDEO_UPD64031A is not set +# CONFIG_VIDEO_UPD64083 is not set + +# +# Audio/Video compression chips +# +# CONFIG_VIDEO_SAA6752HS is not set + +# +# SDR tuner chips +# + +# +# Miscellaneous helper chips +# +# CONFIG_VIDEO_THS7303 is not set +# CONFIG_VIDEO_M52790 is not set +# CONFIG_VIDEO_I2C is not set + +# +# Sensors used on soc_camera driver +# + +# +# SPI helper chips +# +# CONFIG_VIDEO_GS1662 is not set + +# +# Media SPI Adapters +# + +# +# Customise DVB Frontends +# + +# +# Tools to develop new frontends +# + +# +# Graphics support +# +CONFIG_TEGRA_HOST1X=y +CONFIG_TEGRA_HOST1X_FIREWALL=y +# CONFIG_IMX_IPUV3_CORE is not set +CONFIG_DRM=y +CONFIG_DRM_MIPI_DSI=y +# CONFIG_DRM_DP_AUX_CHARDEV is not set +# CONFIG_DRM_DEBUG_MM 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_LOAD_EDID_FIRMWARE is not set +# CONFIG_DRM_DP_CEC is not set + +# +# I2C encoder or helper chips +# +# CONFIG_DRM_I2C_CH7006 is not set +# CONFIG_DRM_I2C_SIL164 is not set +# CONFIG_DRM_I2C_NXP_TDA998X 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_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_TEGRA=y +# CONFIG_DRM_TEGRA_DEBUG is not set +CONFIG_DRM_TEGRA_STAGING=y +# CONFIG_DRM_STM is not set +CONFIG_DRM_PANEL=y + +# +# Display Panels +# +# 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_RASPBERRYPI_TOUCHSCREEN is not set +# CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0 is not set +CONFIG_DRM_PANEL_SAMSUNG_S6E63M0=y +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=y +# CONFIG_DRM_THINE_THC63LVD1024 is not set +# CONFIG_DRM_TOSHIBA_TC358764 is not set +# CONFIG_DRM_TOSHIBA_TC358767 is not set +# CONFIG_DRM_TI_TFP410 is not set +# CONFIG_DRM_TI_SN65DSI86 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_LEGACY is not set +CONFIG_DRM_PANEL_ORIENTATION_QUIRKS=y + +# +# Frame buffer Devices +# +CONFIG_FB_CMDLINE=y +CONFIG_FB_NOTIFY=y +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +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_MODE_HELPERS is not set +CONFIG_FB_TILEBLITTING=y + +# +# Frame buffer hardware drivers +# +# CONFIG_FB_ARMCLCD is not set +# CONFIG_FB_OPENCORES is not set +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_SMSCUFX is not set +# CONFIG_FB_UDL is not set +# CONFIG_FB_IBM_GXT4500 is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_SIMPLE is not set +# CONFIG_FB_SSD1307 is not set +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set +CONFIG_VIDEOMODE_HELPERS=y +CONFIG_HDMI=y + +# +# Console display driver support +# +CONFIG_DUMMY_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE=y +CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y +CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y +# CONFIG_FRAMEBUFFER_CONSOLE_DEFERRED_TAKEOVER is not set +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +CONFIG_LOGO_LINUX_CLUT224=y +CONFIG_SOUND=y +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_OSSEMUL is not set +CONFIG_SND_PCM_TIMER=y +# CONFIG_SND_HRTIMER is not set +# CONFIG_SND_DYNAMIC_MINORS is not set +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_PROC_FS=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set +# CONFIG_SND_SEQUENCER is not set +# CONFIG_SND_DRIVERS is not set + +# +# HD-Audio +# +# CONFIG_SND_HDA_TEGRA is not set +CONFIG_SND_HDA_PREALLOC_SIZE=64 +# CONFIG_SND_ARM is not set +# CONFIG_SND_SPI is not set +# CONFIG_SND_USB is not set +CONFIG_SND_SOC=y +CONFIG_SND_SOC_GENERIC_DMAENGINE_PCM=y +# CONFIG_SND_SOC_AMD_ACP is not set +# CONFIG_SND_ATMEL_SOC is not set +# CONFIG_SND_DESIGNWARE_I2S is not set + +# +# SoC Audio for Freescale CPUs +# + +# +# Common SoC Audio options for Freescale CPUs: +# +# CONFIG_SND_SOC_FSL_ASRC is not set +# CONFIG_SND_SOC_FSL_SAI is not set +# CONFIG_SND_SOC_FSL_SSI 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_TEGRA=y +# CONFIG_SND_SOC_TEGRA20_AC97 is not set +CONFIG_SND_SOC_TEGRA20_DAS=y +CONFIG_SND_SOC_TEGRA20_I2S=y +# CONFIG_SND_SOC_TEGRA20_SPDIF is not set +# CONFIG_SND_SOC_TEGRA30_AHUB is not set +# CONFIG_SND_SOC_TEGRA30_I2S is not set +# CONFIG_SND_SOC_TEGRA_RT5640 is not set +# CONFIG_SND_SOC_TEGRA_WM8753 is not set +# CONFIG_SND_SOC_TEGRA_WM8903 is not set +CONFIG_SND_SOC_TEGRA_WM8994=y +# CONFIG_SND_SOC_TEGRA_WM9712 is not set +# CONFIG_SND_SOC_TEGRA_TRIMSLICE is not set +# CONFIG_SND_SOC_TEGRA_ALC5632 is not set +# CONFIG_SND_SOC_TEGRA_MAX98090 is not set +# CONFIG_SND_SOC_TEGRA_RT5677 is not set +# CONFIG_SND_SOC_TEGRA_SGTL5000 is not set +# CONFIG_SND_SOC_XTFPGA_I2S is not set +# CONFIG_ZX_TDM is not set +CONFIG_SND_SOC_I2C_AND_SPI=y + +# +# CODEC drivers +# +CONFIG_SND_SOC_WM_HUBS=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_CS42L73 is not set +# CONFIG_SND_SOC_CS4265 is not set +# CONFIG_SND_SOC_CS4270 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_DMIC 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_MAX98088 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_PCM3060_I2C is not set +# CONFIG_SND_SOC_PCM3060_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_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_STA32X is not set +# CONFIG_SND_SOC_STA350 is not set +# CONFIG_SND_SOC_STI_SAS is not set +# CONFIG_SND_SOC_TAS2552 is not set +# CONFIG_SND_SOC_TAS5086 is not set +# CONFIG_SND_SOC_TAS571X is not set +# CONFIG_SND_SOC_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_WM8731 is not set +# CONFIG_SND_SOC_WM8737 is not set +# CONFIG_SND_SOC_WM8741 is not set +# CONFIG_SND_SOC_WM8750 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_WM8960 is not set +# CONFIG_SND_SOC_WM8962 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_WM8994=y +# 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_NAU8822 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_SND_AUDIO_GRAPH_CARD is not set +# CONFIG_SND_AUDIO_GRAPH_SCU_CARD is not set + +# +# HID support +# +CONFIG_HID=y +# CONFIG_HID_BATTERY_STRENGTH is not set +# CONFIG_HIDRAW is not set +# CONFIG_UHID is not set +CONFIG_HID_GENERIC=y + +# +# 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_BIGBEN_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_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_GT683R is not set +# CONFIG_HID_KEYTOUCH is not set +# CONFIG_HID_KYE is not set +# CONFIG_HID_UCLOGIC 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_LED 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_PENMOUNT is not set +# CONFIG_HID_PETALYNX 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_GREENASIA is not set +# CONFIG_HID_SMARTJOYPLUS is not set +# CONFIG_HID_TIVO 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_HID_ZEROPLUS is not set +# CONFIG_HID_ZYDACRON is not set +# CONFIG_HID_SENSOR_HUB is not set +# CONFIG_HID_ALPS is not set + +# +# USB HID support +# +CONFIG_USB_HID=y +# CONFIG_HID_PID is not set +# CONFIG_USB_HIDDEV is not set + +# +# I2C HID support +# +# CONFIG_I2C_HID is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +CONFIG_USB_SUPPORT=y +CONFIG_USB_COMMON=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y + +# +# Miscellaneous USB options +# +# CONFIG_USB_DEFAULT_PERSIST is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +CONFIG_USB_OTG=y +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +CONFIG_USB_OTG_FSM=y +# CONFIG_USB_MON is not set +# CONFIG_USB_WUSB_CBAF is not set + +# +# USB Host Controller Drivers +# +# CONFIG_USB_C67X00_HCD is not set +# CONFIG_USB_XHCI_HCD is not set +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +CONFIG_USB_EHCI_TEGRA=y +# CONFIG_USB_EHCI_HCD_PLATFORM is not set +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_FOTG210_HCD is not set +# CONFIG_USB_MAX3421_HCD is not set +# CONFIG_USB_OHCI_HCD is not set +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_HCD_TEST_MODE is not set + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=y +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_WDM is not set +# CONFIG_USB_TMC is not set + +# +# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may +# + +# +# also be needed; see USB_STORAGE Help for more info +# + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USBIP_CORE is not set +# CONFIG_USB_MUSB_HDRC is not set +# CONFIG_USB_DWC3 is not set +# CONFIG_USB_DWC2 is not set +CONFIG_USB_CHIPIDEA=y +CONFIG_USB_CHIPIDEA_OF=y +CONFIG_USB_CHIPIDEA_UDC=y +CONFIG_USB_CHIPIDEA_HOST=y +# CONFIG_USB_ISP1760 is not set + +# +# USB port drivers +# +# CONFIG_USB_SERIAL is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_ADUTUX is not set +# CONFIG_USB_SEVSEG is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_EHSET_TEST_FIXTURE 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=y +# CONFIG_NOP_USB_XCEIV is not set +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_USB_ISP1301 is not set +CONFIG_USB_TEGRA_PHY=y +CONFIG_USB_ULPI=y +CONFIG_USB_ULPI_VIEWPORT=y +CONFIG_USB_GADGET=y +# CONFIG_USB_GADGET_DEBUG_FILES is not set +CONFIG_USB_GADGET_VBUS_DRAW=2 +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 + +# +# USB Peripheral Controller +# +# CONFIG_USB_FUSB300 is not set +# CONFIG_USB_FOTG210_UDC is not set +# CONFIG_USB_GR_UDC is not set +# CONFIG_USB_R8A66597 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_GADGET_XILINX is not set +# CONFIG_USB_DUMMY_HCD is not set +CONFIG_USB_LIBCOMPOSITE=y +CONFIG_USB_U_ETHER=y +CONFIG_USB_F_ECM=y +CONFIG_USB_F_EEM=y +CONFIG_USB_F_SUBSET=y +CONFIG_USB_F_RNDIS=y +# CONFIG_USB_CONFIGFS is not set +# CONFIG_USB_ZERO is not set +# CONFIG_USB_AUDIO is not set +CONFIG_USB_ETH=y +CONFIG_USB_ETH_RNDIS=y +CONFIG_USB_ETH_EEM=y +# CONFIG_USB_G_NCM is not set +# CONFIG_USB_GADGETFS is not set +# CONFIG_USB_FUNCTIONFS is not set +# CONFIG_USB_MASS_STORAGE is not set +# CONFIG_USB_G_SERIAL is not set +# CONFIG_USB_MIDI_GADGET is not set +# CONFIG_USB_G_PRINTER is not set +# CONFIG_USB_CDC_COMPOSITE is not set +# CONFIG_USB_G_ACM_MS is not set +# CONFIG_USB_G_MULTI is not set +# CONFIG_USB_G_HID is not set +# CONFIG_USB_G_DBGP is not set +# CONFIG_USB_G_WEBCAM is not set +# CONFIG_TYPEC is not set +CONFIG_USB_ROLE_SWITCH=y +CONFIG_USB_ULPI_BUS=y +# CONFIG_UWB is not set +CONFIG_MMC=y +CONFIG_PWRSEQ_EMMC=y +CONFIG_PWRSEQ_SIMPLE=y +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_MINORS=8 +# 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_ARMMMCI 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 is not set +# CONFIG_MMC_SDHCI_OF_DWCMSHC is not set +# CONFIG_MMC_SDHCI_CADENCE is not set +CONFIG_MMC_SDHCI_TEGRA=y +# CONFIG_MMC_SDHCI_F_SDH30 is not set +# CONFIG_MMC_SPI is not set +# CONFIG_MMC_DW is not set +# CONFIG_MMC_VUB300 is not set +# CONFIG_MMC_USHC is not set +# CONFIG_MMC_USDHI6ROL0 is not set +# CONFIG_MMC_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_AN30259A is not set +# 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 is not set +# 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_LP8501 is not set +# CONFIG_LEDS_LP8860 is not set +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_PCA963X is not set +# CONFIG_LEDS_DAC124S085 is not set +# CONFIG_LEDS_REGULATOR is not set +# CONFIG_LEDS_BD2802 is not set +# CONFIG_LEDS_LT3593 is not set +# CONFIG_LEDS_TCA6507 is not set +# CONFIG_LEDS_TLC591XX is not set +# CONFIG_LEDS_LM355x is not set +# CONFIG_LEDS_IS31FL319X is not set +# CONFIG_LEDS_IS31FL32XX is not set + +# +# LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM) +# +# CONFIG_LEDS_BLINKM is not set +# CONFIG_LEDS_MLXREG is not set +# CONFIG_LEDS_USER is not set +CONFIG_LEDS_ISA1200=y + +# +# LED Triggers +# +# CONFIG_LEDS_TRIGGERS is not set +# CONFIG_ACCESSIBILITY is not set +# CONFIG_INFINIBAND is not set +CONFIG_EDAC_ATOMIC_SCRUB=y +CONFIG_EDAC_SUPPORT=y +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +CONFIG_RTC_SYSTOHC=y +CONFIG_RTC_SYSTOHC_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set +CONFIG_RTC_NVMEM=y + +# +# RTC interfaces +# +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +# CONFIG_RTC_DRV_TEST is not set + +# +# I2C RTC drivers +# +# CONFIG_RTC_DRV_ABB5ZES3 is not set +# CONFIG_RTC_DRV_ABX80X is not set +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_HYM8563 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +CONFIG_RTC_DRV_MAX8907=y +# 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_BQ32K is not set +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_FM3130 is not set +# CONFIG_RTC_DRV_RX8010 is not set +# CONFIG_RTC_DRV_RX8581 is not set +# CONFIG_RTC_DRV_RX8025 is not set +# CONFIG_RTC_DRV_EM3027 is not set +# CONFIG_RTC_DRV_RV8803 is not set + +# +# SPI RTC drivers +# +# CONFIG_RTC_DRV_M41T93 is not set +# CONFIG_RTC_DRV_M41T94 is not set +# CONFIG_RTC_DRV_DS1302 is not set +# CONFIG_RTC_DRV_DS1305 is not set +# CONFIG_RTC_DRV_DS1343 is not set +# CONFIG_RTC_DRV_DS1347 is not set +# CONFIG_RTC_DRV_DS1390 is not set +# CONFIG_RTC_DRV_MAX6916 is not set +# CONFIG_RTC_DRV_R9701 is not set +# CONFIG_RTC_DRV_RX4581 is not set +# CONFIG_RTC_DRV_RX6110 is not set +# CONFIG_RTC_DRV_RS5C348 is not set +# CONFIG_RTC_DRV_MAX6902 is not set +# CONFIG_RTC_DRV_PCF2123 is not set +# CONFIG_RTC_DRV_MCP795 is not set +CONFIG_RTC_I2C_AND_SPI=y + +# +# SPI and I2C RTC drivers +# +# CONFIG_RTC_DRV_DS3232 is not set +# CONFIG_RTC_DRV_PCF2127 is not set +# CONFIG_RTC_DRV_RV3029C2 is not set + +# +# Platform RTC drivers +# +# CONFIG_RTC_DRV_CMOS is not set +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1685_FAMILY is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_DS2404 is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_M48T35 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_MSM6242 is not set +# CONFIG_RTC_DRV_BQ4802 is not set +# CONFIG_RTC_DRV_RP5C01 is not set +# CONFIG_RTC_DRV_V3020 is not set +# CONFIG_RTC_DRV_ZYNQMP is not set + +# +# on-CPU RTC drivers +# +# CONFIG_RTC_DRV_PL030 is not set +# CONFIG_RTC_DRV_PL031 is not set +# CONFIG_RTC_DRV_FTRTC010 is not set +CONFIG_RTC_DRV_TEGRA=y +# CONFIG_RTC_DRV_SNVS is not set +# CONFIG_RTC_DRV_R7301 is not set + +# +# HID Sensor RTC drivers +# +# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set +CONFIG_DMADEVICES=y +# CONFIG_DMADEVICES_DEBUG is not set + +# +# DMA Devices +# +CONFIG_DMA_ENGINE=y +CONFIG_DMA_OF=y +# CONFIG_ALTERA_MSGDMA is not set +# CONFIG_AMBA_PL08X is not set +# 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 +# CONFIG_PL330_DMA is not set +CONFIG_TEGRA20_APB_DMA=y +# CONFIG_QCOM_HIDMA_MGMT is not set +# CONFIG_QCOM_HIDMA is not set +# CONFIG_DW_DMAC is not set + +# +# DMA Clients +# +# CONFIG_ASYNC_TX_DMA is not set +# CONFIG_DMATEST is not set + +# +# DMABUF options +# +CONFIG_SYNC_FILE=y +# CONFIG_UDMABUF is not set +# CONFIG_AUXDISPLAY is not set +# CONFIG_UIO is not set +# CONFIG_VFIO is not set +# CONFIG_VIRT_DRIVERS is not set +# CONFIG_VIRTIO_MENU is not set + +# +# Microsoft Hyper-V guest support +# +CONFIG_STAGING=y +# 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 + +# +# IIO staging drivers +# + +# +# Accelerometers +# +# CONFIG_ADIS16203 is not set +# CONFIG_ADIS16240 is not set + +# +# Analog to digital converters +# +# CONFIG_AD7606 is not set +# CONFIG_AD7780 is not set +# CONFIG_AD7816 is not set +# CONFIG_AD7192 is not set +# CONFIG_AD7280 is not set + +# +# Analog digital bi-direction converters +# +# CONFIG_ADT7316 is not set + +# +# Capacitance to digital converters +# +# CONFIG_AD7150 is not set +# CONFIG_AD7152 is not set +# CONFIG_AD7746 is not set + +# +# Direct Digital Synthesis +# +# CONFIG_AD9832 is not set +# CONFIG_AD9834 is not set + +# +# Network Analyzer, Impedance Converters +# +# CONFIG_AD5933 is not set + +# +# Active energy metering IC +# +# CONFIG_ADE7854 is not set + +# +# Resolver to digital converters +# +# CONFIG_AD2S90 is not set +# CONFIG_AD2S1210 is not set + +# +# Speakup console speech +# +# CONFIG_SPEAKUP is not set +# CONFIG_MFD_NVEC is not set +CONFIG_STAGING_MEDIA=y +CONFIG_TEGRA_VDE=y + +# +# Android +# +CONFIG_ASHMEM=y +CONFIG_ION=y +CONFIG_ION_SYSTEM_HEAP=y +# CONFIG_ION_CARVEOUT_HEAP is not set +# CONFIG_ION_CHUNK_HEAP is not set +# CONFIG_STAGING_BOARD is not set +# CONFIG_LTE_GDM724X 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_WILC1000_SDIO is not set +# CONFIG_WILC1000_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_VC5 is not set +# CONFIG_HWSPINLOCK is not set + +# +# Clock Source drivers +# +CONFIG_TIMER_OF=y +CONFIG_TIMER_PROBE=y +CONFIG_CLKSRC_MMIO=y +CONFIG_TEGRA_TIMER=y +CONFIG_ARM_ARCH_TIMER=y +CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y +# CONFIG_ARM_TIMER_SP804 is not set +# CONFIG_MAILBOX is not set +CONFIG_IOMMU_API=y +CONFIG_IOMMU_SUPPORT=y + +# +# Generic IOMMU Pagetable Support +# +CONFIG_IOMMU_IO_PGTABLE=y +CONFIG_IOMMU_IO_PGTABLE_LPAE=y +# CONFIG_IOMMU_IO_PGTABLE_LPAE_SELFTEST is not set +CONFIG_IOMMU_IO_PGTABLE_ARMV7S=y +# CONFIG_IOMMU_IO_PGTABLE_ARMV7S_SELFTEST is not set +# CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set +CONFIG_IOMMU_IOVA=y +CONFIG_OF_IOMMU=y +CONFIG_TEGRA_IOMMU_GART=y +# CONFIG_TEGRA_IOMMU_SMMU is not set +# CONFIG_ARM_SMMU is not set + +# +# Remoteproc drivers +# +# 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 +# + +# +# Broadcom SoC drivers +# +# CONFIG_SOC_BRCMSTB is not set + +# +# NXP/Freescale QorIQ SoC drivers +# + +# +# i.MX SoC drivers +# + +# +# Qualcomm SoC drivers +# +CONFIG_ARCH_TEGRA_2x_SOC=y +# CONFIG_ARCH_TEGRA_3x_SOC is not set +# CONFIG_ARCH_TEGRA_114_SOC is not set +# CONFIG_ARCH_TEGRA_124_SOC is not set +CONFIG_SOC_TEGRA_FUSE=y +CONFIG_SOC_TEGRA_FLOWCTRL=y +CONFIG_SOC_TEGRA_PMC=y +# CONFIG_SOC_TI is not set + +# +# Xilinx SoC drivers +# +# CONFIG_XILINX_VCU is not set +# CONFIG_PM_DEVFREQ is not set +CONFIG_EXTCON=y + +# +# Extcon Device Drivers +# +# CONFIG_EXTCON_ADC_JACK is not set +# CONFIG_EXTCON_GPIO is not set +# CONFIG_EXTCON_MAX3355 is not set +# CONFIG_EXTCON_RT8973A is not set +# CONFIG_EXTCON_SM5502 is not set +CONFIG_EXTCON_USB_GPIO=y +CONFIG_MEMORY=y +# CONFIG_ARM_PL172_MPMC is not set +CONFIG_TEGRA_MC=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 +CONFIG_IIO_TRIGGER=y +CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 +# CONFIG_IIO_SW_DEVICE is not set +# CONFIG_IIO_SW_TRIGGER 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_ADXL372_SPI is not set +# CONFIG_ADXL372_I2C 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=y +# CONFIG_MC3230 is not set +# CONFIG_MMA7455_I2C is not set +# CONFIG_MMA7455_SPI is not set +# CONFIG_MMA7660 is not set +# CONFIG_MMA8452 is not set +# CONFIG_MMA9551 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 + +# +# Analog to digital converters +# +# CONFIG_AD7266 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_AD7923 is not set +# CONFIG_AD799X is not set +# 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_MCP3911 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 +# +# CONFIG_AD8366 is not set + +# +# 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 + +# +# Hid Sensor IIO Common +# + +# +# SSP Sensor Common +# +# CONFIG_IIO_SSP_SENSORHUB is not set + +# +# Counters +# + +# +# Digital to analog converters +# +# CONFIG_AD5064 is not set +# CONFIG_AD5360 is not set +# CONFIG_AD5380 is not set +# CONFIG_AD5421 is not set +# CONFIG_AD5446 is not set +# CONFIG_AD5449 is not set +# CONFIG_AD5592R is not set +# CONFIG_AD5593R is not set +# CONFIG_AD5504 is not set +# CONFIG_AD5624R_SPI is not set +# CONFIG_LTC1660 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 + +# +# IIO dummy driver +# + +# +# Frequency Synthesizers DDS/PLL +# + +# +# Clock Generator/Distribution +# +# CONFIG_AD9523 is not set + +# +# Phase-Locked Loop (PLL) frequency synthesizers +# +# CONFIG_ADF4350 is not set + +# +# Digital gyroscope sensors +# +# CONFIG_ADIS16080 is not set +# CONFIG_ADIS16130 is not set +# CONFIG_ADIS16136 is not set +# CONFIG_ADIS16260 is not set +# CONFIG_ADXRS450 is not set +# CONFIG_BMG160 is not set +CONFIG_MPU3050=y +CONFIG_MPU3050_I2C=y +# CONFIG_IIO_ST_GYRO_3AXIS is not set +# CONFIG_ITG3200 is not set + +# +# Health Sensors +# + +# +# Heart Rate Monitors +# +# 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 + +# +# Inertial measurement units +# +# CONFIG_ADIS16400 is not set +# CONFIG_ADIS16480 is not set +# CONFIG_BMI160_I2C is not set +# CONFIG_BMI160_SPI 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_ADJD_S311 is not set +# CONFIG_AL3320A is not set +# CONFIG_APDS9300 is not set +# CONFIG_APDS9960 is not set +# CONFIG_BH1750 is not set +# CONFIG_BH1780 is not set +# 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=y +# 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_AK8974 is not set +CONFIG_AK8975=y +# CONFIG_AK09911 is not set +# CONFIG_BMC150_MAGN_I2C is not set +# CONFIG_BMC150_MAGN_SPI is not set +# CONFIG_MAG3110 is not set +# CONFIG_MMC35240 is not set +# CONFIG_IIO_ST_MAGN_3AXIS is not set +# CONFIG_SENSORS_HMC5843_I2C is not set +# CONFIG_SENSORS_HMC5843_SPI is not set + +# +# Multiplexers +# +# CONFIG_IIO_MUX is not set + +# +# Inclinometer sensors +# + +# +# Triggers - standalone +# +# CONFIG_IIO_INTERRUPT_TRIGGER is not set +# CONFIG_IIO_SYSFS_TRIGGER is not set + +# +# 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_MPL115_SPI is not set +# CONFIG_MPL3115 is not set +# CONFIG_MS5611 is not set +# CONFIG_MS5637 is not set +# CONFIG_IIO_ST_PRESS is not set +# CONFIG_T5403 is not set +# CONFIG_HP206C is not set +# CONFIG_ZPA2326 is not set + +# +# Lightning sensors +# +# CONFIG_AS3935 is not set + +# +# 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 +# CONFIG_VL53L0X_I2C 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 is not set + +# +# IRQ chip support +# +CONFIG_IRQCHIP=y +CONFIG_ARM_GIC=y +CONFIG_ARM_GIC_MAX_NR=1 +# CONFIG_IPACK_BUS is not set +CONFIG_ARCH_HAS_RESET_CONTROLLER=y +CONFIG_RESET_CONTROLLER=y +# CONFIG_RESET_TI_SYSCON is not set +# CONFIG_FMC is not set + +# +# PHY Subsystem +# +CONFIG_GENERIC_PHY=y +# CONFIG_BCM_KONA_USB2_PHY is not set +# CONFIG_PHY_CADENCE_DP is not set +# CONFIG_PHY_PXA_28NM_HSIC is not set +# CONFIG_PHY_PXA_28NM_USB2 is not set +# CONFIG_PHY_CPCAP_USB is not set +# CONFIG_PHY_MAPPHONE_MDM6600 is not set +# CONFIG_PHY_QCOM_USB_HS is not set +# CONFIG_PHY_QCOM_USB_HSIC is not set +# CONFIG_PHY_TEGRA_XUSB is not set +# CONFIG_PHY_TUSB1210 is not set +# CONFIG_POWERCAP is not set +# CONFIG_MCB is not set + +# +# Performance monitor support +# +# CONFIG_ARM_CCI_PMU is not set +# CONFIG_ARM_CCN is not set +CONFIG_ARM_PMU=y +# CONFIG_RAS is not set + +# +# Android +# +CONFIG_ANDROID=y +CONFIG_ANDROID_BINDER_IPC=y +CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder" +# CONFIG_ANDROID_BINDER_IPC_SELFTEST 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 +# CONFIG_FPGA is not set +# CONFIG_FSI is not set +# CONFIG_TEE is not set +CONFIG_PM_OPP=y +# 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 is not set +CONFIG_EXT4_FS=y +CONFIG_EXT4_USE_FOR_EXT2=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_EXT4_ENCRYPTION=y +CONFIG_EXT4_FS_ENCRYPTION=y +# CONFIG_EXT4_DEBUG is not set +CONFIG_JBD2=y +# CONFIG_JBD2_DEBUG is not set +CONFIG_FS_MBCACHE=y +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS 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=y +CONFIG_EXPORTFS=y +# CONFIG_EXPORTFS_BLOCK_OPS is not set +CONFIG_FILE_LOCKING=y +CONFIG_MANDATORY_FILE_LOCKING=y +CONFIG_FS_ENCRYPTION=y +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_FANOTIFY is not set +# CONFIG_QUOTA is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_AUTOFS_FS is not set +CONFIG_FUSE_FS=y +CONFIG_CUSE=y +# CONFIG_OVERLAY_FS is not set + +# +# Caches +# +# CONFIG_FSCACHE is not set + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +# CONFIG_JOLIET is not set +# CONFIG_ZISOFS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +# CONFIG_MSDOS_FS is not set +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_FAT_DEFAULT_UTF8 is not set +CONFIG_NTFS_FS=y +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_RW is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +# CONFIG_PROC_CHILDREN is not set +CONFIG_KERNFS=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set +# CONFIG_TMPFS_XATTR is not set +CONFIG_MEMFD_CREATE=y +CONFIG_CONFIGFS_FS=y +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ORANGEFS_FS is not set +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_ECRYPT_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_SQUASHFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX6FS_FS is not set +# CONFIG_ROMFS_FS is not set +CONFIG_PSTORE=y +# CONFIG_PSTORE_DEFLATE_COMPRESS is not set +# CONFIG_PSTORE_LZO_COMPRESS is not set +# CONFIG_PSTORE_LZ4_COMPRESS is not set +# CONFIG_PSTORE_LZ4HC_COMPRESS is not set +# CONFIG_PSTORE_842_COMPRESS is not set +# CONFIG_PSTORE_ZSTD_COMPRESS is not set +CONFIG_PSTORE_CONSOLE=y +CONFIG_PSTORE_PMSG=y +CONFIG_PSTORE_RAM=y +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +# CONFIG_NETWORK_FILESYSTEMS is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_MAC_ROMAN is not set +# CONFIG_NLS_MAC_CELTIC is not set +# CONFIG_NLS_MAC_CENTEURO is not set +# CONFIG_NLS_MAC_CROATIAN is not set +# CONFIG_NLS_MAC_CYRILLIC is not set +# CONFIG_NLS_MAC_GAELIC is not set +# CONFIG_NLS_MAC_GREEK is not set +# CONFIG_NLS_MAC_ICELAND is not set +# CONFIG_NLS_MAC_INUIT is not set +# CONFIG_NLS_MAC_ROMANIAN is not set +# CONFIG_NLS_MAC_TURKISH is not set +# CONFIG_NLS_UTF8 is not set +# CONFIG_DLM is not set + +# +# Security options +# +CONFIG_KEYS=y +# CONFIG_PERSISTENT_KEYRINGS is not set +# CONFIG_BIG_KEYS is not set +# CONFIG_ENCRYPTED_KEYS is not set +# CONFIG_KEY_DH_OPERATIONS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set +CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=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 + +# +# Crypto core or helper +# +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_AEAD=y +CONFIG_CRYPTO_AEAD2=y +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_RNG_DEFAULT=y +CONFIG_CRYPTO_AKCIPHER2=y +CONFIG_CRYPTO_AKCIPHER=y +CONFIG_CRYPTO_KPP2=y +CONFIG_CRYPTO_KPP=y +CONFIG_CRYPTO_ACOMP2=y +CONFIG_CRYPTO_RSA=y +# CONFIG_CRYPTO_DH is not set +CONFIG_CRYPTO_ECDH=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +# CONFIG_CRYPTO_USER is not set +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +# CONFIG_CRYPTO_GF128MUL is not set +CONFIG_CRYPTO_NULL=y +CONFIG_CRYPTO_NULL2=y +# CONFIG_CRYPTO_PCRYPT is not set +CONFIG_CRYPTO_WORKQUEUE=y +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_AUTHENC is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +# 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 is not set + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +# CONFIG_CRYPTO_CFB is not set +CONFIG_CRYPTO_CTR=y +CONFIG_CRYPTO_CTS=y +CONFIG_CRYPTO_ECB=y +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_OFB is not set +# CONFIG_CRYPTO_PCBC is not set +CONFIG_CRYPTO_XTS=y +# CONFIG_CRYPTO_KEYWRAP is not set + +# +# Hash modes +# +CONFIG_CRYPTO_CMAC=y +CONFIG_CRYPTO_HMAC=y +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +# CONFIG_CRYPTO_CRC32 is not set +# CONFIG_CRYPTO_CRCT10DIF is not set +# CONFIG_CRYPTO_GHASH is not set +# CONFIG_CRYPTO_POLY1305 is not set +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_RMD128 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_RMD256 is not set +# CONFIG_CRYPTO_RMD320 is not set +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA256=y +# CONFIG_CRYPTO_SHA512 is not set +# 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_CAMELLIA is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_SALSA20 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 + +# +# Compression +# +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_LZO is not set +# CONFIG_CRYPTO_842 is not set +# CONFIG_CRYPTO_LZ4 is not set +# CONFIG_CRYPTO_LZ4HC is not set +# CONFIG_CRYPTO_ZSTD is not set + +# +# Random Number Generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set +CONFIG_CRYPTO_DRBG_MENU=y +CONFIG_CRYPTO_DRBG_HMAC=y +# CONFIG_CRYPTO_DRBG_HASH is not set +# CONFIG_CRYPTO_DRBG_CTR is not set +CONFIG_CRYPTO_DRBG=y +CONFIG_CRYPTO_JITTERENTROPY=y +# CONFIG_CRYPTO_USER_API_HASH is not set +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set +# CONFIG_CRYPTO_USER_API_RNG is not set +# CONFIG_CRYPTO_USER_API_AEAD is not set +CONFIG_CRYPTO_HASH_INFO=y +CONFIG_CRYPTO_HW=y +# CONFIG_CRYPTO_DEV_CCREE is not set +CONFIG_ASYMMETRIC_KEY_TYPE=y +CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE=y +CONFIG_X509_CERTIFICATE_PARSER=y +# CONFIG_PKCS8_PRIVATE_KEY_PARSER is not set +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_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_BITREVERSE=y +CONFIG_HAVE_ARCH_BITREVERSE=y +CONFIG_RATIONAL=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_NET_UTILS=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y +CONFIG_CRC_CCITT=y +CONFIG_CRC16=y +# CONFIG_CRC_T10DIF is not set +# CONFIG_CRC_ITU_T is not set +CONFIG_CRC32=y +# CONFIG_CRC32_SELFTEST is not set +CONFIG_CRC32_SLICEBY8=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 is not set +# CONFIG_CRC8 is not set +# CONFIG_RANDOM32_SELFTEST is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +# CONFIG_XZ_DEC is not set +CONFIG_DECOMPRESS_GZIP=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_REED_SOLOMON=y +CONFIG_REED_SOLOMON_ENC8=y +CONFIG_REED_SOLOMON_DEC8=y +CONFIG_ASSOCIATIVE_ARRAY=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_CPU_RMAP=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_FONT_SUPPORT=y +# CONFIG_FONTS is not set +CONFIG_FONT_8x8=y +CONFIG_FONT_8x16=y +CONFIG_ARCH_HAS_SG_CHAIN=y +CONFIG_SBITMAP=y +# CONFIG_STRING_SELFTEST is not set + +# +# Kernel hacking +# + +# +# printk and dmesg options +# +CONFIG_PRINTK_TIME=y +CONFIG_CONSOLE_LOGLEVEL_DEFAULT=7 +CONFIG_CONSOLE_LOGLEVEL_QUIET=4 +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 + +# +# Compile-time checks and compiler options +# +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=1024 +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_HEADERS_CHECK is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_SECTION_MISMATCH_WARN_ONLY=y +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_DEBUG_KERNEL is not set + +# +# Memory Debugging +# +# CONFIG_PAGE_EXTENSION is not set +# CONFIG_PAGE_POISONING is not set +# CONFIG_DEBUG_RODATA_TEST is not set +# CONFIG_SLUB_DEBUG_ON is not set +# CONFIG_SLUB_STATS is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y +CONFIG_DEBUG_MEMORY_INIT=y +CONFIG_ARCH_HAS_KCOV=y +CONFIG_CC_HAS_SANCOV_TRACE_PC=y +# CONFIG_KCOV is not set + +# +# Debug Lockups and Hangs +# +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANIC_TIMEOUT=0 +# CONFIG_DEBUG_TIMEKEEPING is not set + +# +# Lock Debugging (spinlocks, mutexes, etc...) +# +CONFIG_LOCK_DEBUGGING_SUPPORT=y +# CONFIG_WW_MUTEX_SELFTEST is not set +# CONFIG_STACKTRACE is not set +# CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set +CONFIG_DEBUG_BUGVERBOSE=y + +# +# RCU Debugging +# +CONFIG_RCU_CPU_STALL_TIMEOUT=21 +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_TEST_LIST_SORT is not set +# CONFIG_TEST_SORT 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_XARRAY 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_TEST_MEMCAT_P 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_UBSAN is not set +CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED=y +# CONFIG_STRICT_DEVMEM is not set +CONFIG_ARM_PTDUMP_CORE=y +CONFIG_DEBUG_WX=y +# CONFIG_UNWINDER_FRAME_POINTER is not set +CONFIG_UNWINDER_ARM=y +CONFIG_ARM_UNWIND=y +# CONFIG_DEBUG_USER 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 --git a/device/linux-samsung-i927/kernel.patch b/device/linux-samsung-i927/kernel.patch new file mode 100644 index 00000000000..5a3c5968ed5 --- /dev/null +++ b/device/linux-samsung-i927/kernel.patch @@ -0,0 +1,3087 @@ +diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile +index b0e966d625b9..0c4e7e5e27ba 100644 +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -1078,7 +1078,8 @@ dtb-$(CONFIG_ARCH_TEGRA_2x_SOC) += \ + tegra20-seaboard.dtb \ + tegra20-tec.dtb \ + tegra20-trimslice.dtb \ +- tegra20-ventana.dtb ++ tegra20-ventana.dtb \ ++ tegra20-glide.dtb + dtb-$(CONFIG_ARCH_TEGRA_3x_SOC) += \ + tegra30-apalis-eval.dtb \ + tegra30-apalis-v1.1-eval.dtb \ +diff --git a/arch/arm/boot/dts/tegra20-glide.dts b/arch/arm/boot/dts/tegra20-glide.dts +new file mode 100644 +index 000000000000..76493614f6df +--- /dev/null ++++ b/arch/arm/boot/dts/tegra20-glide.dts +@@ -0,0 +1,1305 @@ ++// SPDX-License-Identifier: GPL-2.0 ++/dts-v1/; ++ ++#include <dt-bindings/input/input.h> ++#include "tegra20.dtsi" ++ ++// GPS ++&uarta { ++ status = "okay"; ++ ++ gnss { ++ // Actual chip is unknown ++ // (I don't want to teardown this thing) ++ compatible = "wi2wi,w2sg0084i"; ++ ++ sirf,onoff-gpios = <&gpio TEGRA_GPIO(N, 6) GPIO_ACTIVE_HIGH>; ++ // reset GPIO: B2 ++ // Also depends on this, but no way to specify it ++ clocks = <&tegra_car TEGRA20_CLK_BLINK>; ++ }; ++ ++}; ++ ++// Debug console ++&uartb { ++ status = "okay"; ++}; ++ ++// Bluetooth ++&uartc { ++ status = "okay"; ++ ++ bluetooth { ++ // can be changed to 4330 in linux v5.0 ++ compatible = "brcm,bcm43438-bt"; ++ max-speed = <921600>; ++ shutdown-gpios = <&gpio TEGRA_GPIO(J, 5) GPIO_ACTIVE_HIGH>; ++ device-wakeup-gpios = <&gpio TEGRA_GPIO(S, 1) GPIO_ACTIVE_HIGH>; ++ host-wakeup-gpios = <&gpio TEGRA_GPIO(S, 2) GPIO_ACTIVE_HIGH>; ++ clock-names = "lpo"; ++ clocks = <&tegra_car TEGRA20_CLK_BLINK>; ++ }; ++}; ++ ++/ { ++ model = "Samsung SGH-I927 Captivate Glide"; ++ compatible = "samsung,i927", "nvidia,tegra20"; ++ ++ aliases { ++ rtc0 = "/i2c@7000d000/max8907@3c"; ++ rtc1 = "/rtc@7000e000"; ++ serial0 = &uartb; ++ }; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ }; ++ ++ memory@0 { ++ device_type = "memory"; ++ reg = <0x00000000 0x40000000>; ++ }; ++ ++ ++ reserved-memory { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ranges; ++ ++ /* bootloader reads/writes magic values in this region */ ++ bootloader_data: bootloader_data@1FF00000 { ++ reg = <0x1FF00000 0x00100000>; ++ no-map; ++ }; ++ }; ++ ++ host1x@50000000 { ++ dc@54200000 { ++ rgb { ++ status = "okay"; ++ nvidia,panel = <&panel>; ++ }; ++ }; ++#if 0 ++ hdmi@54280000 { ++ status = "okay"; ++ ++ vdd-supply = <&hdmi_vdd_reg>; ++ pll-supply = <&hdmi_pll_reg>; ++ hdmi-supply = <&vdd_5v0_hdmi>; ++ ++ nvidia,ddc-i2c-bus = <&hdmi_ddc>; ++ nvidia,hpd-gpio = <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; ++ ++ port { ++ hdmi_to_mhl: endpoint { ++ remote-endpoint = <&mhl_to_hdmi>; ++ }; ++ }; ++ }; ++#endif ++ }; ++ ++ pinmux@70000014 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&state_default>; ++ ++ state_default: pinmux { ++ ata { ++ nvidia,pins = "ata", "atc", "atd", "ate", ++ "gmb", "gmd", "irrx", "irtx", ++ "spid", "spie"; ++ nvidia,function = "gmi"; ++ }; ++ atb { ++ nvidia,pins = "atb", "gma", "gme"; ++ nvidia,function = "sdio4"; ++ }; ++ cdev1 { ++ nvidia,pins = "cdev1"; ++ nvidia,function = "plla_out"; ++ }; ++ cdev2 { ++ nvidia,pins = "cdev2"; ++ nvidia,function = "pllp_out4"; ++ }; ++ crtp { ++ nvidia,pins = "crtp"; ++ nvidia,function = "crt"; ++ }; ++ csus { ++ nvidia,pins = "csus"; ++ nvidia,function = "vi_sensor_clk"; ++ }; ++ dap1 { ++ nvidia,pins = "dap1"; ++ nvidia,function = "dap1"; ++ }; ++ dap2 { ++ nvidia,pins = "dap2"; ++ nvidia,function = "dap2"; ++ }; ++ dap3 { ++ nvidia,pins = "dap3"; ++ nvidia,function = "dap3"; ++ }; ++ dap4 { ++ nvidia,pins = "dap4"; ++ nvidia,function = "dap4"; ++ }; ++ spif { ++ nvidia,pins = "spif", "uac"; ++ nvidia,function = "rsvd4"; ++ }; ++ dta { ++ nvidia,pins = "dta", "dtb", "dtc", "dtd", "dte"; ++ nvidia,function = "vi"; ++ }; ++ dtf { ++ nvidia,pins = "dtf"; ++ nvidia,function = "i2c3"; ++ }; ++ gmc { ++ nvidia,pins = "gmc"; ++ nvidia,function = "uartd"; ++ }; ++ gpu { ++ nvidia,pins = "gpu", "uaa", "uab"; ++ nvidia,function = "uarta"; ++ }; ++ gpu7 { ++ nvidia,pins = "gpu7"; ++ nvidia,function = "rtck"; ++ }; ++ gpv { ++ nvidia,pins = "gpv", "slxa", "slxk"; ++ nvidia,function = "pcie"; ++ }; ++ hdint { ++ nvidia,pins = "hdint", "spdi", "spdo"; ++ nvidia,function = "rsvd2"; ++ }; ++ i2cp { ++ nvidia,pins = "i2cp"; ++ nvidia,function = "i2cp"; ++ }; ++ kbca { ++ nvidia,pins = "kbca", "kbcb", "kbcc", "kbcd", "kbce", "kbcf"; ++ nvidia,function = "kbc"; ++ }; ++ lcsn { ++ nvidia,pins = "lcsn", "lsck", "lsda", "lsdi"; ++ nvidia,function = "spi3"; ++ }; ++ ld0 { ++ nvidia,pins = "ld0", "ld1", "ld2", ++ "ld3", "ld4", "ld5", "ld6", "ld7", ++ "ld8", "ld9", "ld10", "ld11", "ld12", ++ "ld13", "ld14", "ld15", "ld16", "ld17", ++ "ldc", "ldi", "lhp0", "lhp1", "lhp2", ++ "lhs", "lm0", "lm1", "lpp", "lpw0", ++ "lpw1", "lpw2", "lsc0", "lsc1", "lspi", ++ "lvp0", "lvp1", "lvs"; ++ nvidia,function = "displaya"; ++ }; ++ owc { ++ nvidia,pins = "owc"; ++ nvidia,function = "owr"; ++ }; ++ pmc { ++ nvidia,pins = "pmc"; ++ nvidia,function = "pwr_on"; ++ }; ++ rm { ++ nvidia,pins = "rm"; ++ nvidia,function = "i2c1"; ++ }; ++ sdb { ++ nvidia,pins = "sdb", "sdc", "sdd"; ++ nvidia,function = "sdio3"; ++ }; ++ sdio1 { ++ nvidia,pins = "sdio1"; ++ nvidia,function = "sdio1"; ++ }; ++ slxc { ++ nvidia,pins = "slxc", "slxd"; ++ nvidia,function = "spi4"; ++ }; ++ spdi { ++ nvidia,pins = "spdi", "spdo"; ++ nvidia,function = "rsvd2"; ++ }; ++ spig { ++ nvidia,pins = "spig", "spih"; ++ nvidia,function = "spi2_alt"; ++ }; ++ uda { ++ nvidia,pins = "uda"; ++ nvidia,function = "spi1"; ++ }; ++ uad { ++ nvidia,pins = "uad"; ++ nvidia,function = "irda"; ++ }; ++ uca { ++ nvidia,pins = "uca", "ucb"; ++ nvidia,function = "uartc"; ++ }; ++ spia { ++ nvidia,pins = "spia", "spib", "spic"; ++ nvidia,function = "spi2"; ++ }; ++ conf_cdev1 { ++ nvidia,pins = "cdev1", "cdev2", "dap1", "dap2", ++ "dap3", "dap4", "ddc", "dte", "gma", ++ "gmc", "gmd", "gme", "gpu7", "gpv", ++ "i2cp", "pta", "rm", "sdio1", // "sdb", ++ "uac", "uda"; ++ nvidia,pull = <TEGRA_PIN_PULL_NONE>; ++ nvidia,tristate = <TEGRA_PIN_DISABLE>; ++ }; ++ conf_ck32 { ++ nvidia,pins = "ck32", "ddrc", "pmca", "pmcb", ++ "pmcc", "pmcd", "xm2c", "xm2d"; ++ nvidia,pull = <TEGRA_PIN_PULL_NONE>; ++ }; ++ conf_crtp { ++ nvidia,pins = "crtp"; ++ nvidia,pull = <TEGRA_PIN_PULL_NONE>; ++ nvidia,tristate = <TEGRA_PIN_ENABLE>; ++ }; ++ conf_csus { ++ nvidia,pins = "csus", "spid"; ++ nvidia,pull = <TEGRA_PIN_PULL_DOWN>; ++ nvidia,tristate = <TEGRA_PIN_ENABLE>; ++ }; ++ conf_ata { ++ nvidia,pins = "ata", "atb", "atc", "ate", ++ "dtf", "gmb", "gpu", "irrx", "irtx", ++ "kbca", "kbcc", "kbcd", "kbce", ++ "kbcf", "sdc", "sdd", "spdi", ++ "spib", "spig", "spih", "uaa", "uab", ++ "uad", "uca", "ucb"; ++ nvidia,pull = <TEGRA_PIN_PULL_UP>; ++ nvidia,tristate = <TEGRA_PIN_DISABLE>; ++ }; ++ conf_owc { ++ nvidia,pins = "owc"; ++ nvidia,pull = <TEGRA_PIN_PULL_UP>; ++ nvidia,tristate = <TEGRA_PIN_ENABLE>; ++ }; ++ conf_hdint { ++ nvidia,pins = "hdint", "lcsn", "lhs", "lm0", ++ "lm1", "lpw1", "lsc0", "lsck", "lsda", ++ "lsdi", "lspi", "lvs", "pmc", "sdb", ++ "ldc", "lpw0", "lpw2", "lsc1", "ld0", ++ "ld1", "ld10", "ld11", "ld12", "ld13", ++ "ld14", "ld15", "ld16", "ld17", "ld2", ++ "ld3", "ld4", "ld5", "ld6", "ld7", ++ "ld8", "ld9", "ldi", "lhp0", "lhp1", ++ "lhp2", "lpp", "lvp1"; ++ nvidia,tristate = <TEGRA_PIN_DISABLE>; ++ }; ++ conf_lvp0 { ++ nvidia,pins = "lvp0"; ++ nvidia,tristate = <TEGRA_PIN_ENABLE>; ++ }; ++ conf_atd { ++ nvidia,pins = "atd", "dta", "dtb", "dtc", ++ "kbcb", "slxa", "slxc", "slxd", "slxk", ++ "spdo", "spia", "spic", "spie", "spif"; ++ nvidia,pull = <TEGRA_PIN_PULL_DOWN>; ++ nvidia,tristate = <TEGRA_PIN_DISABLE>; ++ }; ++ conf_pmce { ++ nvidia,pins = "pmce"; ++ nvidia,pull = <TEGRA_PIN_PULL_DOWN>; ++ }; ++ ++ drive_ao1 { ++ nvidia,pins = "drive_ao1"; ++ nvidia,high-speed-mode = <TEGRA_PIN_DISABLE>; ++ nvidia,schmitt = <TEGRA_PIN_ENABLE>; ++ nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>; ++ nvidia,pull-down-strength = <31>; ++ nvidia,pull-up-strength = <31>; ++ nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOWEST>; ++ nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_SLOWEST>; ++ }; ++ ++ drive_at1 { ++ nvidia,pins = "drive_at1"; ++ nvidia,high-speed-mode = <TEGRA_PIN_DISABLE>; ++ nvidia,schmitt = <TEGRA_PIN_ENABLE>; ++ nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>; ++ nvidia,pull-down-strength = <31>; ++ nvidia,pull-up-strength = <31>; ++ nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOWEST>; ++ nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_SLOWEST>; ++ }; ++ ++ drive_dbg { ++ nvidia,pins = "drive_dbg"; ++ nvidia,high-speed-mode = <TEGRA_PIN_DISABLE>; ++ nvidia,schmitt = <TEGRA_PIN_ENABLE>; ++ nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>; ++ nvidia,pull-down-strength = <31>; ++ nvidia,pull-up-strength = <31>; ++ nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOWEST>; ++ nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_SLOWEST>; ++ }; ++ ++ drive_vi1 { ++ nvidia,pins = "drive_vi1"; ++ nvidia,high-speed-mode = <TEGRA_PIN_DISABLE>; ++ nvidia,schmitt = <TEGRA_PIN_ENABLE>; ++ nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>; ++ nvidia,pull-down-strength = <31>; ++ nvidia,pull-up-strength = <31>; ++ nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOWEST>; ++ nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_SLOWEST>; ++ }; ++ ++ drive_vi2 { ++ nvidia,pins = "drive_vi2"; ++ nvidia,high-speed-mode = <TEGRA_PIN_DISABLE>; ++ nvidia,schmitt = <TEGRA_PIN_ENABLE>; ++ nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>; ++ nvidia,pull-down-strength = <31>; ++ nvidia,pull-up-strength = <31>; ++ nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOWEST>; ++ nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_SLOWEST>; ++ }; ++ ++ drive_sdio1 { ++ nvidia,pins = "drive_sdio1"; ++ nvidia,high-speed-mode = <TEGRA_PIN_DISABLE>; ++ nvidia,schmitt = <TEGRA_PIN_ENABLE>; ++ nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>; ++ nvidia,pull-down-strength = <31>; ++ nvidia,pull-up-strength = <31>; ++ nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOWEST>; ++ nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_SLOWEST>; ++ }; ++ ++ drive_ddc { ++ nvidia,pins = "drive_ddc"; ++ nvidia,high-speed-mode = <TEGRA_PIN_DISABLE>; ++ nvidia,schmitt = <TEGRA_PIN_ENABLE>; ++ nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>; ++ nvidia,pull-down-strength = <31>; ++ nvidia,pull-up-strength = <31>; ++ nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_FASTEST>; ++ nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_FASTEST>; ++ }; ++ ++ /* ++ * DTF, I2CP and RM drive pingroups originaly specified, but they're ++ * nonexistent here... ++ */ ++ ++ drive_dap2 { ++ nvidia,pins = "drive_dap2"; ++ nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>; ++ nvidia,schmitt = <TEGRA_PIN_ENABLE>; ++ nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>; ++ nvidia,pull-down-strength = <31>; ++ nvidia,pull-up-strength = <31>; ++ nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOWEST>; ++ nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_SLOWEST>; ++ }; ++ ++ drive_dap3 { ++ nvidia,pins = "drive_dap3"; ++ nvidia,high-speed-mode = <TEGRA_PIN_ENABLE>; ++ nvidia,schmitt = <TEGRA_PIN_ENABLE>; ++ nvidia,low-power-mode = <TEGRA_PIN_LP_DRIVE_DIV_1>; ++ nvidia,pull-down-strength = <31>; ++ nvidia,pull-up-strength = <31>; ++ nvidia,slew-rate-rising = <TEGRA_PIN_SLEW_RATE_SLOWEST>; ++ nvidia,slew-rate-falling = <TEGRA_PIN_SLEW_RATE_SLOWEST>; ++ }; ++ }; ++ ++ state_i2cmux_ddc: pinmux_i2cmux_ddc { ++ ddc { ++ nvidia,pins = "ddc"; ++ nvidia,function = "i2c2"; ++ }; ++ pta { ++ nvidia,pins = "pta"; ++ nvidia,function = "rsvd4"; ++ }; ++ }; ++ ++ state_i2cmux_pta: pinmux_i2cmux_pta { ++ ddc { ++ nvidia,pins = "ddc"; ++ nvidia,function = "rsvd4"; ++ }; ++ pta { ++ nvidia,pins = "pta"; ++ nvidia,function = "i2c2"; ++ }; ++ }; ++ ++ state_i2cmux_idle: pinmux_i2cmux_idle { ++ ddc { ++ nvidia,pins = "ddc"; ++ nvidia,function = "rsvd4"; ++ }; ++ pta { ++ nvidia,pins = "pta"; ++ nvidia,function = "rsvd4"; ++ }; ++ }; ++ ++ state_isa1200_on: state_isa1200_on { ++ cdev2 { ++ nvidia,pins = "cdev2"; ++ nvidia,pull = <TEGRA_PIN_PULL_UP>; ++ nvidia,tristate = <TEGRA_PIN_DISABLE>; ++ }; ++ }; ++ ++ state_isa1200_off: state_isa1200_off { ++ cdev2 { ++ nvidia,pins = "cdev2"; ++ nvidia,pull = <TEGRA_PIN_PULL_NONE>; ++ nvidia,tristate = <TEGRA_PIN_ENABLE>; ++ }; ++ }; ++ ++ }; ++ ++ i2s@70002800 { ++ status = "okay"; ++ }; ++ ++ serial@70006040 { ++ status = "okay"; ++ }; ++ ++ i2c@7000c000 { ++ status = "okay"; ++ clock-frequency = <400000>; ++ ++ gyro@68 { ++ compatible = "invensense,mpu3050"; ++ reg = <0x68>; ++ interrupt-parent = <&gpio>; ++ interrupts = <TEGRA_GPIO(A, 0) IRQ_TYPE_EDGE_FALLING>; ++ mount-matrix = "0", "1", "0", ++ "-1", "0", "0", ++ "0", "0", "-1"; ++ ++ i2c-gate { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ accel@f { ++ compatible = "kionix,kxtf9"; ++ reg = <0xf>; ++ mount-matrix = "1", "0", "0", ++ "0", "1", "0", ++ "0", "0", "1"; ++ }; ++ }; ++ }; ++ }; ++ ++ i2c@7000c400 { ++ status = "okay"; ++ clock-frequency = <100000>; ++ }; ++ ++ i2cmux { ++ compatible = "i2c-mux-pinctrl"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ i2c-parent = <&{/i2c@7000c400}>; ++ ++ pinctrl-names = "ddc", "pta", "idle"; ++ pinctrl-0 = <&state_i2cmux_ddc>; ++ pinctrl-1 = <&state_i2cmux_pta>; ++ pinctrl-2 = <&state_i2cmux_idle>; ++ ++ i2c@0 { ++ reg = <0>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ mxt224e@4a { ++ compatible = "atmel,maxtouch"; ++ reg = <0x4a>; ++ interrupt-parent = <&gpio>; ++ interrupts = <TEGRA_GPIO(D, 7) IRQ_TYPE_LEVEL_LOW>; ++ ++ avdd-supply = <&tsp_avdd>; ++ lvsio-supply = <&tsp_lvsio>; ++ vdd-supply = <&tsp_vdd>; ++ }; ++ }; ++ ++ // Unused? ++ i2c@1 { ++ reg = <1>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ }; ++ }; ++ ++ i2c@7000c500 { ++ status = "okay"; ++ clock-frequency = <400000>; ++ ++ /* Not supported - no DT binding */ ++ /* m5mo@1f { ++ reg = <0x1f>; ++ }; */ ++ ++ /* Not supported - no DT binding */ ++ /* s5k6aafx@3c { ++ reg = <0x3c>; ++ }; */ ++ }; ++ ++ i2c@7000d000 { ++ status = "okay"; ++ clock-frequency = <400000>; ++ ++ pmic: max8907@3c { ++ compatible = "maxim,max8907"; ++ reg = <0x3c>; ++ interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>; ++ ++ maxim,system-power-controller; ++ ++ mbatt-supply = <&usb0_vbus_reg>; ++ in-v1-supply = <&mbatt_reg>; ++ in-v2-supply = <&mbatt_reg>; ++ in-v3-supply = <&mbatt_reg>; ++ in1-supply = <&mbatt_reg>; ++ in2-supply = <&mbatt_reg>; ++ in3-supply = <&mbatt_reg>; ++ in4-supply = <&mbatt_reg>; ++ in5-supply = <&mbatt_reg>; ++ in6-supply = <&mbatt_reg>; ++ in7-supply = <&mbatt_reg>; ++ in8-supply = <&mbatt_reg>; ++ in9-supply = <&mbatt_reg>; ++ in10-supply = <&mbatt_reg>; ++ in11-supply = <&mbatt_reg>; ++ in12-supply = <&mbatt_reg>; ++ in13-supply = <&mbatt_reg>; ++ in14-supply = <&mbatt_reg>; ++ in15-supply = <&mbatt_reg>; ++ in16-supply = <&mbatt_reg>; ++ in17-supply = <&mbatt_reg>; ++ in18-supply = <&mbatt_reg>; ++ in19-supply = <&mbatt_reg>; ++ in20-supply = <&mbatt_reg>; ++ ++ regulators { ++ mbatt_reg: mbatt { ++ regulator-name = "vbat_pmu"; ++ regulator-always-on; ++ }; ++ ++ sd1 { ++ regulator-name = "nvvdd_sv1"; ++ regulator-min-microvolt = <637500>; ++ regulator-max-microvolt = <1425000>; ++ regulator-always-on; ++ regulator-boot-on; ++ }; ++ ++ sd2 { ++ regulator-name = "nvvdd_sv2,vdd_core,vdd_aon"; ++ regulator-min-microvolt = <637500>; ++ regulator-max-microvolt = <1425000>; ++ regulator-always-on; ++ regulator-boot-on; ++ }; ++ ++ cpu_reg_supply: sd3 { ++ regulator-name = "nvvdd_sv3"; ++ regulator-min-microvolt = <750000>; ++ regulator-max-microvolt = <3900000>; ++ regulator-always-on; ++ regulator-boot-on; ++ }; ++ ++ reg_thrm: ldo1 { ++ regulator-name = "nvvdd_ldo1,vadc_3v3"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ regulator-boot-on; ++ }; ++ ++ ldo2 { ++ regulator-name = "nvvdd_ldo2,vap_pll_1v1"; ++ regulator-min-microvolt = <1100000>; ++ regulator-max-microvolt = <1100000>; ++ regulator-always-on; ++ regulator-boot-on; ++ }; ++ ++ vlcd_1v8: ldo3 { ++ regulator-name = "nvvdd_ldo3,vlcd_1v8"; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ }; ++ ++ vbus1_reg: ldo4 { ++ regulator-name = "nvvdd_ldo4,vap_usb_3v3"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ }; ++ ++ vcc_3v3_mhl: ldo5 { ++ regulator-name = "nvvdd_ldo5,vcc_3v3_mhl"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ }; ++ ++ hdmi_pll_reg: ldo6 { ++ regulator-name = "nvvdd_ldo6,avdd_hdmi_pll_1v8"; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ }; ++ ++ vcc_1v8_mhl: ldo7 { ++ regulator-name = "nvvdd_ldo7,vcc_1v8_mhl"; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ }; ++ ++ ldo8 { ++ regulator-name = "nvvdd_ldo8,led_a_2v8"; ++ regulator-min-microvolt = <2800000>; ++ regulator-max-microvolt = <2800000>; ++ }; ++ ++ ldo9 { ++ regulator-name = "nvvdd_ldo9"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ }; ++ ++ ldo10 { ++ regulator-name = "nvvdd_ldo10,vsensor_1v8"; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-always-on; ++ regulator-boot-on; ++ }; ++ ++ ldo11 { ++ regulator-name = "nvvdd_ldo11,vcc_2v8_pda"; ++ regulator-min-microvolt = <2800000>; ++ regulator-max-microvolt = <2800000>; ++ regulator-always-on; ++ regulator-boot-on; ++ }; ++ ++ vlcd_3v0: ldo12 { ++ regulator-name = "nvvdd_ldo12,vlcd_3v0"; ++ regulator-min-microvolt = <3000000>; ++ regulator-max-microvolt = <3000000>; ++ }; ++ ++ tsp_avdd: ldo13 { ++ regulator-name = "nvvdd_ldo13,tsp_avdd_3v3"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-always-on; ++ }; ++ ++ ldo14 { ++ regulator-name = "nvvdd_ldo14"; ++ regulator-min-microvolt = <2800000>; ++ regulator-max-microvolt = <2800000>; ++ }; ++ ++ tsp_lvsio: ldo15 { ++ regulator-name = "nvvdd_ldo15,tsp_vdd_lvsio"; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-always-on; ++ }; ++ ++ vmmc_reg: ldo16 { ++ regulator-name = "nvvdd_ldo16,vtf_3v3,vmmc"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ }; ++ ++ ldo17 { ++ regulator-name = "nvvdd_ldo17,vap_mipi_1v2"; ++ regulator-min-microvolt = <1200000>; ++ regulator-max-microvolt = <1200000>; ++ }; ++ ++ tsp_vdd: ldo18 { ++ regulator-name = "nvvdd_ldo18,tsp_vdd_1v8"; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-always-on; ++ }; ++ ++ hdmi_vdd_reg: ldo19 { ++ regulator-name = "nvvdd_ldo19,avdd_hdmi_3v3"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ }; ++ ++ ldo20 { ++ regulator-name = "nvvdd_ldo20,t_key_3v0"; ++ regulator-min-microvolt = <3000000>; ++ regulator-max-microvolt = <3000000>; ++ }; ++ ++ out5v { ++ regulator-name = "usb0_vbus_reg"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ regulator-boot-on; ++ }; ++ ++ out33v { ++ regulator-name = "out33v"; ++ }; ++ ++ bbat { ++ regulator-name = "bbat"; ++ regulator-always-on; ++ }; ++ ++ sdby { ++ regulator-name = "sdby"; ++ }; ++ ++ vrtc { ++ regulator-name = "vrtc"; ++ }; ++ }; ++ }; ++ ++ max8952@60 { ++ compatible = "maxim,max8952"; ++ reg = <0x60>; ++ max8952,dvs-mode-microvolt = <1100000>, <1100000>, <1100000>, <1100000>; ++ max8952,default-mode = <1>; ++ vin-supply = <&cpu_reg_supply>; ++ ++ regulator-name = "vdd_arm"; ++ regulator-min-microvolt = <770000>; ++ regulator-max-microvolt = <1100000>; ++ regulator-always-on; ++ }; ++ }; ++ ++ i2c@5 { ++ compatible = "i2c-gpio"; ++ sda-gpios = <&gpio TEGRA_GPIO(O, 0) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ scl-gpios = <&gpio TEGRA_GPIO(O, 7) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ i2c-gpio,delay-us = <1>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ //interrupt-parent = <&gpio>; ++ //interrupts = <TEGRA_GPIO(I, 5) IRQ_TYPE_LEVEL_HIGH>; ++ ++ // Use 17040 as 17043 is compatible - no ALRT feature ++ max17043@36 { ++ compatible = "maxim,max17040"; ++ reg = <0x36>; ++ }; ++ }; ++ ++ i2c@7 { ++ compatible = "i2c-gpio"; ++ sda-gpios = <&gpio TEGRA_GPIO(O, 4) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ scl-gpios = <&gpio TEGRA_GPIO(O, 2) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ i2c-gpio,delay-us = <2>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ ak8975@c { ++ compatible = "asahi-kasei,ak8975"; ++ reg = <0xc>; ++ interrupt-parent = <&gpio>; ++ interrupts = <TEGRA_GPIO(K, 4) IRQ_TYPE_LEVEL_HIGH>; ++ }; ++ }; ++ ++ i2c@8 { ++ compatible = "i2c-gpio"; ++ sda-gpios = <&gpio TEGRA_GPIO(G, 3) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ scl-gpios = <&gpio TEGRA_GPIO(I, 0) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ i2c-gpio,delay-us = <1>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ wm8994: wm8994@1a { ++ compatible = "wlf,wm8994"; ++ reg = <0x1a>; ++ ++ gpio-controller; ++ #gpio-cells = <2>; ++ ++ wlf,ldo1ena = <&gpio TEGRA_GPIO(X, 5) GPIO_ACTIVE_HIGH>; ++ ++ }; ++ }; ++ ++ i2c@9 { ++ compatible = "i2c-gpio"; ++ sda-gpios = <&gpio TEGRA_GPIO(Y, 2) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ scl-gpios = <&gpio TEGRA_GPIO(Y, 0) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ i2c-gpio,delay-us = <2>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ interrupt-parent = <&gpio>; ++ interrupts = <TEGRA_GPIO(O, 1) IRQ_TYPE_LEVEL_HIGH>; ++ ++ /* Not supported - no driver */ ++ /* cm3663@11 { ++ reg = <0x11>; ++ }; */ ++ }; ++ ++ i2c@11 { ++ compatible = "i2c-gpio"; ++ sda-gpios = <&gpio TEGRA_GPIO(BB, 4) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ scl-gpios = <&gpio TEGRA_GPIO(BB, 1) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ i2c-gpio,delay-us = <1>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ interrupt-parent = <&gpio>; ++ interrupts = <TEGRA_GPIO(L, 1) IRQ_TYPE_LEVEL_HIGH>; ++ ++ /* Not supported - no DT bindings */ ++ /* fsa9480@25 { ++ reg = <0x25>; ++ }; */ ++ }; ++ ++ hdmi_ddc: i2c@13 { ++ compatible = "i2c-gpio"; ++ sda-gpios = <&gpio TEGRA_GPIO(D, 4) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ scl-gpios = <&gpio TEGRA_GPIO(D, 3) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ i2c-gpio,delay-us = <5>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ }; ++ ++ i2c@14 { ++ compatible = "i2c-gpio"; ++ sda-gpios = <&gpio TEGRA_GPIO(K, 3) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ scl-gpios = <&gpio TEGRA_GPIO(J, 0) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ i2c-gpio,delay-us = <5>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++#if 0 ++ sii9234@39 { ++ compatible = "sil,sii9234"; ++ reg = <0x39>; ++ avcc33-supply = <&vcc_3v3_mhl>; ++ iovcc18-supply = <&vcc_1v8_mhl>; ++ avcc12-supply = <&vdd_hdmi_ldo>; ++ cvcc12-supply = <&vdd_hdmi_ldo>; ++ interrupt-parent = <&gpio>; ++ interrupts = <TEGRA_GPIO(H, 0) IRQ_TYPE_LEVEL_HIGH>; ++ reset-gpios = <&gpio TEGRA_GPIO(H, 1) GPIO_ACTIVE_LOW>; ++ ++ port { ++ mhl_to_hdmi: endpoint { ++ remote-endpoint = <&hdmi_to_mhl>; ++ }; ++ }; ++ }; ++#endif ++ }; ++ ++ i2c@15 { ++ compatible = "i2c-gpio"; ++ sda-gpios = <&gpio TEGRA_GPIO(Y, 3) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ scl-gpios = <&gpio TEGRA_GPIO(Y, 1) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ i2c-gpio,delay-us = <1>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ interrupt-parent = <&gpio>; ++ interrupts = <TEGRA_GPIO(U, 6) IRQ_TYPE_LEVEL_HIGH>; ++ ++ nct1008@4c { ++ compatible = "onnn,nct1008"; ++ reg = <0x4c>; ++ vcc-supply = <®_thrm>; ++ interrupt-parent = <&gpio>; ++ interrupts = <TEGRA_GPIO(U, 6) IRQ_TYPE_LEVEL_LOW>; ++ #thermal-sensor-cells = <1>; ++ }; ++ }; ++ ++ i2c@16 { ++ compatible = "i2c-gpio"; ++ sda-gpios = <&gpio TEGRA_GPIO(L, 7) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ scl-gpios = <&gpio TEGRA_GPIO(L, 6) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ i2c-gpio,delay-us = <1>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ /* Not supported - no driver?/no DT binding? */ ++ /* m5mo_pmic@3e { ++ reg = <0x3e>; ++ }; */ ++ }; ++ ++ i2c@17 { ++ compatible = "i2c-gpio"; ++ sda-gpios = <&gpio TEGRA_GPIO(Z, 3) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ scl-gpios = <&gpio TEGRA_GPIO(C, 6) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ i2c-gpio,delay-us = <1>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ isa1200@48 { ++ compatible = "samsung_p3,isa1200_vibrator"; ++ reg = <0x48>; ++ enable-gpio = <&gpio TEGRA_GPIO(R, 6) GPIO_ACTIVE_HIGH>; ++ ++ max-timeout = <10000>; ++ ctrl0 = <17>; ++ ctrl1 = <192>; ++ ctrl2 = <0>; ++ ctrl4 = <0>; ++ pll = <0x23>; ++ duty = <0x85>; ++ period = <0x86>; ++ ++ clocks = <&tegra_car TEGRA20_CLK_CDEV2>; ++ clock-names = "vibrator-clk"; ++ ++ pinctrl-names = "on", "off"; ++ pinctrl-0 = <&state_isa1200_on>; ++ pinctrl-1 = <&state_isa1200_off>; ++ }; ++ }; ++ ++ i2c@19 { ++ compatible = "i2c-gpio"; ++ sda-gpios = <&gpio TEGRA_GPIO(T, 6) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ scl-gpios = <&gpio TEGRA_GPIO(T, 5) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ i2c-gpio,delay-us = <1>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ /* Not supported - no driver */ ++ /* melfas-touchkey@20 { ++ reg = <0x20>; ++ }; */ ++ }; ++ ++ i2c@20 { ++ compatible = "i2c-gpio"; ++ sda-gpios = <&gpio TEGRA_GPIO(X, 2) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ scl-gpios = <&gpio TEGRA_GPIO(X, 0) (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>; ++ i2c-gpio,delay-us = <1>; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ stmpe1801@40 { ++ compatible = "st,stmpe1801"; ++ reg = <0x40>; ++ interrupt-parent = <&gpio>; ++ interrupts = <TEGRA_GPIO(C, 7) IRQ_TYPE_EDGE_FALLING>; ++ ++ stmpe_keypad { ++ compatible = "st,stmpe-keypad"; ++ debounce-interval = <10>; ++ st,scan-count = <5>; ++ st,no-autorepeat; ++ keypad,num-rows = <8>; ++ keypad,num-columns = <6>; ++ ++ linux,keymap = < ++ /* row, col, code */ ++ MATRIX_KEY(0, 0, KEY_R) ++ MATRIX_KEY(0, 1, KEY_G) ++ MATRIX_KEY(0, 2, KEY_V) ++ MATRIX_KEY(0, 3, KEY_LEFTCTRL /* KEY_LEFTMETA */) ++ MATRIX_KEY(0, 4, KEY_MENU) ++ MATRIX_KEY(0, 5, KEY_HOME) ++ ++ MATRIX_KEY(1, 0, KEY_T) ++ MATRIX_KEY(1, 1, KEY_H) ++ MATRIX_KEY(1, 2, KEY_B) ++ MATRIX_KEY(1, 3, KEY_TAB /* KEY_RIGHTMETA */) ++ MATRIX_KEY(1, 4, KEY_Q) ++ MATRIX_KEY(1, 5, KEY_FN) ++ ++ MATRIX_KEY(2, 0, KEY_Y) ++ MATRIX_KEY(2, 1, KEY_J) ++ MATRIX_KEY(2, 2, KEY_N) ++ MATRIX_KEY(2, 3, KEY_SPACE) ++ MATRIX_KEY(2, 4, KEY_A) ++ MATRIX_KEY(2, 5, KEY_LEFTSHIFT) ++ ++ MATRIX_KEY(3, 0, KEY_U) ++ MATRIX_KEY(3, 1, KEY_K) ++ MATRIX_KEY(3, 2, KEY_M) ++ MATRIX_KEY(3, 3, KEY_COMMA) ++ MATRIX_KEY(3, 4, KEY_S) ++ MATRIX_KEY(3, 5, KEY_Z) ++ ++ MATRIX_KEY(4, 0, KEY_I) ++ MATRIX_KEY(4, 1, KEY_L) ++ MATRIX_KEY(4, 2, KEY_LEFT) ++ MATRIX_KEY(4, 3, KEY_DOT) ++ MATRIX_KEY(4, 4, KEY_W) ++ MATRIX_KEY(4, 5, KEY_X) ++ ++ MATRIX_KEY(5, 0, KEY_O) ++ MATRIX_KEY(5, 1, KEY_UP) ++ MATRIX_KEY(5, 2, KEY_OK) ++ MATRIX_KEY(5, 3, KEY_QUESTION) ++ MATRIX_KEY(5, 4, KEY_E) ++ MATRIX_KEY(5, 5, KEY_C) ++ ++ MATRIX_KEY(6, 0, KEY_P) ++ MATRIX_KEY(6, 1, KEY_ENTER) ++ MATRIX_KEY(6, 2, KEY_RIGHT) ++ MATRIX_KEY(6, 3, KEY_DOWN) ++ MATRIX_KEY(6, 4, KEY_D) ++ ++ MATRIX_KEY(7, 0, KEY_BACKSPACE /* KEY_DELETE */) ++ MATRIX_KEY(7, 1, KEY_BACK) ++ MATRIX_KEY(7, 2, KEY_SEARCH) ++ MATRIX_KEY(7, 3, KEY_SLASH /* KEY_WWW */) ++ MATRIX_KEY(7, 4, KEY_F) ++ MATRIX_KEY(7, 5, KEY_FN) >; ++ }; ++ ++ stmpegpio: stmpe_gpio { ++ compatible = "st,stmpe-gpio"; ++ gpio-controller; ++ #gpio-cells = <2>; ++ }; ++ }; ++ }; ++ ++ pmc@7000e400 { ++ nvidia,invert-interrupt; ++ nvidia,suspend-mode = <0>; ++ nvidia,cpu-pwr-good-time = <2000>; ++ nvidia,cpu-pwr-off-time = <0>; ++ nvidia,core-pwr-good-time = <0x7e7e 0x7e7e>; ++ nvidia,core-pwr-off-time = <0>; ++ nvidia,core-power-req-active-high; ++ nvidia,sys-clock-req-active-high; ++ nvidia,combined-power-req; ++ nvidia,lp0-vec = <0x1819E000 8192>; ++ }; ++ ++ usb@c5000000 { ++ compatible = "nvidia,tegra20-udc"; ++ status = "okay"; ++ dr_mode = "peripheral"; // otg ++ }; ++ ++ usb-phy@c5000000 { ++ status = "okay"; ++ vbus-supply = <&vbus1_reg>; ++ }; ++ ++#if 0 ++ usb@c5004000 { ++ status = "okay"; ++ }; ++ ++ usb-phy@c5004000 { ++ status = "okay"; ++ }; ++#endif ++ ++ wifi_pwrseq: bcm4330_pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ clocks = <&tegra_car TEGRA20_CLK_BLINK>; ++ clock-names = "ext_clock"; ++ power-off-delay-us = <100000>; ++ post-power-on-delay-ms = <100>; ++ }; ++ ++ sdhci@c8000000 { ++ status = "okay"; ++ bus-width = <4>; ++ power-gpios = <&gpio TEGRA_GPIO(J, 2) GPIO_ACTIVE_HIGH>; ++ mmc-pwrseq = <&wifi_pwrseq>; ++ non-removable; ++ wakeup-source; ++ post-power-on-delay-ms = <100>; ++ ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ bcm4330@1 { ++ reg = <1>; ++ comaptible = "brcm,bcm4329-fmac"; ++ interrupt-parent = <&gpio>; ++ interrupts = <TEGRA_GPIO(S, 2) IRQ_TYPE_EDGE_BOTH>; ++ interrupt-names = "host-wake"; ++ }; ++ ++ }; ++ ++ // SD card ++ sdhci@c8000400 { ++ status = "okay"; ++ bus-width = <4>; ++ // cd-gpios = <&stmpegpio 16 GPIO_ACTIVE_HIGH>; ++ cd-gpios = <&gpio TEGRA_GPIO(V, 6) GPIO_ACTIVE_HIGH>; ++ vmmc-supply = <&vmmc_reg>; ++ broken-cd; ++ keep-power-in-suspend; ++ }; ++ ++ // internal memory ++ sdhci@c8000600 { ++ status = "okay"; ++ bus-width = <8>; ++ non-removable; ++ keep-power-in-suspend; ++ }; ++ ++ clocks { ++ compatible = "simple-bus"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ clk32k_in: clock@0 { ++ compatible = "fixed-clock"; ++ reg = <0>; ++ #clock-cells = <0>; ++ clock-frequency = <32768>; ++ }; ++ }; ++ ++ gpio-keys { ++ compatible = "gpio-keys"; ++ ++ power { ++ label = "Power"; ++ gpios = <&gpio TEGRA_GPIO(U, 5) GPIO_ACTIVE_HIGH>; ++ linux,code = <KEY_POWER>; ++ debounce-interval = <10>; ++ wakeup-source; ++ }; ++ ++ vol_up { ++ label = "Volume up"; ++ gpios = <&gpio TEGRA_GPIO(Q, 1) GPIO_ACTIVE_LOW>; ++ linux,code = <KEY_VOLUMEUP>; ++ debounce-interval = <10>; ++ }; ++ ++ vol_down { ++ label = "Volume down"; ++ gpios = <&gpio TEGRA_GPIO(Q, 2) GPIO_ACTIVE_LOW>; ++ linux,code = <KEY_VOLUMEDOWN>; ++ debounce-interval = <10>; ++ }; ++ }; ++ ++ spi@7000d800 { ++ status = "okay"; ++ spi-max-frequency = <1000000>; ++ ++ panel: panel@2 { ++ compatible = "samsung,s6e63m0"; ++ reg = <2>; ++ spi-max-frequency = <1000000>; ++ spi-cpol; ++ spi-cpha; ++ vdd3-supply = <&vlcd_1v8>; ++ vci-supply = <&vlcd_3v0>; ++ reset-gpios = <&gpio TEGRA_GPIO(C, 1) GPIO_ACTIVE_HIGH>; ++ panel-width-mm = <52>; ++ panel-height-mm = <87>; ++ /* 25 + 1 for regulator */ ++ power-on-delay = <26>; ++ reset-delay = <10>; ++ ++ display-timings { ++ timing { ++ clock-frequency = <25000000>; ++ hactive = <480>; ++ vactive = <800>; ++ hfront-porch = <16>; ++ vfront-porch = <27>; // 28 ++ hback-porch = <16>; ++ vback-porch = <2>; // 1 ++ hsync-len = <2>; ++ vsync-len = <2>; ++ hsync-active = <0>; ++ vsync-active = <0>; ++ nvidia,h-ref-to-sync = <1>; // 0 ++ nvidia,v-ref-to-sync = <1>; ++ }; ++ }; ++ }; ++ ++ }; ++ ++ regulators { ++ compatible = "simple-bus"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ usb0_vbus_reg: regulator@0 { ++ compatible = "regulator-fixed"; ++ reg = <0>; ++ regulator-name = "usb0_vbus"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ regulator-boot-on; ++ }; ++ ++ vdd_5v0_hdmi: regulator@4 { ++ compatible = "regulator-fixed"; ++ reg = <4>; ++ regulator-name = "+5V_HDMI_CON"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ }; ++ ++ vdd_hdmi_ldo: regulator@5 { ++ compatible = "regulator-fixed"; ++ reg = <5>; ++ regulator-name = "vdd-hdmi-ldo"; ++ regulator-min-microvolt = <1200000>; ++ regulator-max-microvolt = <1200000>; ++ gpio = <&gpio TEGRA_GPIO(H, 2) GPIO_ACTIVE_HIGH>; ++ enable-active-high; ++ }; ++ }; ++ ++ sound { ++ compatible = "nvidia,tegra-audio-wm8994"; ++ nvidia,model = "wm8994-aif1"; ++ ++ nvidia,i2s-controller = <&tegra_i2s1>; ++ nvidia,audio-codec = <&wm8994>; ++ ++ clocks = <&tegra_car TEGRA20_CLK_PLL_A>, ++ <&tegra_car TEGRA20_CLK_PLL_A_OUT0>, ++ <&tegra_car TEGRA20_CLK_CDEV1>; ++ clock-names = "pll_a", "pll_a_out0", "mclk"; ++ }; ++}; +diff --git a/drivers/gpu/drm/panel/Kconfig b/drivers/gpu/drm/panel/Kconfig +index 6020c30a33b3..d99e84c5613a 100644 +--- a/drivers/gpu/drm/panel/Kconfig ++++ b/drivers/gpu/drm/panel/Kconfig +@@ -186,4 +186,10 @@ config DRM_PANEL_SITRONIX_ST7789V + Say Y here if you want to enable support for the Sitronix + ST7789V controller for 240x320 LCD panels + ++config DRM_PANEL_SAMSUNG_S6E63M0 ++ tristate "Samsung S6E63M0 RGB/SPI panel" ++ depends on OF && SPI ++ select VIDEOMODE_HELPERS ++ ++ + endmenu +diff --git a/drivers/gpu/drm/panel/Makefile b/drivers/gpu/drm/panel/Makefile +index 5ccaaa9d13af..d2bc2bae2188 100644 +--- a/drivers/gpu/drm/panel/Makefile ++++ b/drivers/gpu/drm/panel/Makefile +@@ -19,3 +19,4 @@ obj-$(CONFIG_DRM_PANEL_SEIKO_43WVF1G) += panel-seiko-43wvf1g.o + obj-$(CONFIG_DRM_PANEL_SHARP_LQ101R1SX01) += panel-sharp-lq101r1sx01.o + obj-$(CONFIG_DRM_PANEL_SHARP_LS043T1LE01) += panel-sharp-ls043t1le01.o + obj-$(CONFIG_DRM_PANEL_SITRONIX_ST7789V) += panel-sitronix-st7789v.o ++obj-$(CONFIG_DRM_PANEL_SAMSUNG_S6E63M0) += panel-samsung-s6e63m0.o +diff --git a/drivers/gpu/drm/panel/panel-samsung-s6e63m0.c b/drivers/gpu/drm/panel/panel-samsung-s6e63m0.c +new file mode 100644 +index 000000000000..c66cc46e0f44 +--- /dev/null ++++ b/drivers/gpu/drm/panel/panel-samsung-s6e63m0.c +@@ -0,0 +1,376 @@ ++/* ++ * s6e63m0 AMOLED LCD drm_panel driver. ++ * ++ * Copyright (c) 2014 Samsung Electronics Co., Ltd ++ * Derived from drivers/gpu/drm/panel/panel-samsung-ld9040.c ++ * ++ * Andrzej Hajda <a.hajda@samsung.com> ++ * ++ * This program is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License version 2 as ++ * published by the Free Software Foundation. ++*/ ++ ++#include <drm/drmP.h> ++#include <drm/drm_panel.h> ++ ++#include <linux/gpio/consumer.h> ++#include <linux/regulator/consumer.h> ++#include <linux/spi/spi.h> ++ ++#include <video/mipi_display.h> ++#include <video/of_videomode.h> ++#include <video/videomode.h> ++ ++/* Manufacturer Command Set */ ++#define MCS_ELVSS_CON 0xb1 ++#define MCS_TEMP_SWIRE 0xb2 ++#define MCS_ETC_B3 0xb3 ++#define MCS_ETC_B5 0xb5 ++#define MCS_ETC_B6 0xb6 ++#define MCS_ETC_B7 0xb7 ++#define MCS_ETC_B8 0xb8 ++#define MCS_ETC_B9 0xb9 ++#define MCS_ETC_BA 0xba ++#define MCS_ACL_CON 0xc0 ++#define MCS_ACL_LUT 0xc1 ++#define MCS_USER_SETTING 0xf0 ++#define MCS_DISPCTL 0xf2 ++#define MCS_ETC_F6 0xf6 ++#define MCS_GTCON 0xf7 ++#define MCS_PANEL_CON 0xf8 ++#define MCS_GAMMA_CTL 0xfa ++ ++struct s6e63m0 { ++ struct device *dev; ++ struct drm_panel panel; ++ ++ struct regulator_bulk_data supplies[2]; ++ struct gpio_desc *reset_gpio; ++ u32 power_on_delay; ++ u32 reset_delay; ++ struct videomode vm; ++ u32 width_mm; ++ u32 height_mm; ++ ++ /* This field is tested by functions directly accessing bus before ++ * transfer, transfer is skipped if it is set. In case of transfer ++ * failure or unexpected response the field is set to error value. ++ * Such construct allows to eliminate many checks in higher level ++ * functions. ++ */ ++ int error; ++}; ++ ++static inline struct s6e63m0 *panel_to_s6e63m0(struct drm_panel *panel) ++{ ++ return container_of(panel, struct s6e63m0, panel); ++} ++ ++static int s6e63m0_clear_error(struct s6e63m0 *ctx) ++{ ++ int ret = ctx->error; ++ ++ ctx->error = 0; ++ return ret; ++} ++ ++static int s6e63m0_spi_write_word(struct s6e63m0 *ctx, u16 data) ++{ ++ struct spi_device *spi = to_spi_device(ctx->dev); ++ struct spi_transfer xfer = { ++ .len = 2, ++ .tx_buf = &data, ++ }; ++ struct spi_message msg; ++ ++ spi_message_init(&msg); ++ spi_message_add_tail(&xfer, &msg); ++ ++ return spi_sync(spi, &msg); ++} ++ ++static void s6e63m0_dcs_write(struct s6e63m0 *ctx, const u8 *data, size_t len) ++{ ++ int ret = 0; ++ ++ if (ctx->error < 0 || len == 0) ++ return; ++ ++ dev_dbg(ctx->dev, "writing dcs seq: %*ph\n", (int)len, data); ++ ret = s6e63m0_spi_write_word(ctx, *data); ++ ++ while (!ret && --len) { ++ ++data; ++ ret = s6e63m0_spi_write_word(ctx, *data | 0x100); ++ } ++ ++ if (ret) { ++ dev_err(ctx->dev, "error %d writing dcs seq: %*ph\n", ret, ++ (int)len, data); ++ ctx->error = ret; ++ } ++ ++ usleep_range(300, 310); ++} ++ ++#define s6e63m0_dcs_write_seq_static(ctx, seq...) \ ++({\ ++ static const u8 d[] = { seq };\ ++ s6e63m0_dcs_write(ctx, d, ARRAY_SIZE(d));\ ++}) ++ ++static void s6e63m0_init(struct s6e63m0 *ctx) ++{ ++ /* Panel condition */ ++ s6e63m0_dcs_write_seq_static(ctx, MCS_PANEL_CON, 0x01, ++ 0x27, 0x27, 0x07, 0x07, 0x54, 0x9f, 0x63, 0x86, ++ 0x1a, 0x33, 0x0d, 0x00, 0x00); ++ /* Display condition */ ++ s6e63m0_dcs_write_seq_static(ctx, MCS_DISPCTL, 0x02, 0x03, 0x1c, ++ 0x10, 0x10); ++ s6e63m0_dcs_write_seq_static(ctx, MCS_GTCON, 0x00, 0x00, 0x00); ++ /* Gamma setting */ ++ s6e63m0_dcs_write_seq_static(ctx, MCS_GAMMA_CTL, 0x02, 0x18, 0x08, ++ 0x24, 0x70, 0x6e, 0x4e, 0xbc, 0xc0, 0xaf, 0xb3, ++ 0xb8, 0xa5, 0xc5, 0xc7, 0xbb, 0x00, 0xb9, 0x00, ++ 0xb8, 0x00, 0xfc); ++ s6e63m0_dcs_write_seq_static(ctx, MCS_GAMMA_CTL, 0x03); ++ /* ETC condition */ ++ s6e63m0_dcs_write_seq_static(ctx, MCS_ETC_F6, 0x00, 0x8e, 0x07); ++ s6e63m0_dcs_write_seq_static(ctx, MCS_ETC_B3, 0x6c); ++ s6e63m0_dcs_write_seq_static(ctx, MCS_ETC_B5, 0x2c, 0x12, 0x0c, ++ 0x0a, 0x10, 0x0e, 0x17, 0x13, 0x1f, 0x1a, 0x2a, ++ 0x24, 0x1f, 0x1b, 0x1a, 0x17, 0x2b, 0x26, 0x22, ++ 0x20, 0x3a, 0x34, 0x30, 0x2c, 0x29, 0x26, 0x25, ++ 0x23, 0x21, 0x20, 0x1e, 0x1e); ++ s6e63m0_dcs_write_seq_static(ctx, MCS_ETC_B6, 0x00, 0x00, 0x11, ++ 0x22, 0x33, 0x44, 0x44, 0x44, 0x55, 0x55, 0x66, ++ 0x66, 0x66, 0x66, 0x66, 0x66); ++ s6e63m0_dcs_write_seq_static(ctx, MCS_ETC_B7, 0x2c, 0x12, 0x0c, ++ 0x0a, 0x10, 0x0e, 0x17, 0x13, 0x1f, 0x1a, 0x2a, ++ 0x24, 0x1f, 0x1b, 0x1a, 0x17, 0x2b, 0x26, 0x22, ++ 0x20, 0x3a, 0x34, 0x30, 0x2c, 0x29, 0x26, 0x25, ++ 0x23, 0x21, 0x20, 0x1e, 0x1e); ++ s6e63m0_dcs_write_seq_static(ctx, MCS_ETC_B8, 0x00, 0x00, 0x11, ++ 0x22, 0x33, 0x44, 0x44, 0x44, 0x55, 0x55, 0x66, ++ 0x66, 0x66, 0x66, 0x66, 0x66); ++ s6e63m0_dcs_write_seq_static(ctx, MCS_ETC_B9, 0x2c, 0x12, 0x0c, ++ 0x0a, 0x10, 0x0e, 0x17, 0x13, 0x1f, 0x1a, 0x2a, ++ 0x24, 0x1f, 0x1b, 0x1a, 0x17, 0x2b, 0x26, 0x22, ++ 0x20, 0x3a, 0x34, 0x30, 0x2c, 0x29, 0x26, 0x25, ++ 0x23, 0x21, 0x20, 0x1e, 0x1e); ++ s6e63m0_dcs_write_seq_static(ctx, MCS_ETC_BA, 0x00, 0x00, 0x11, ++ 0x22, 0x33, 0x44, 0x44, 0x44, 0x55, 0x55, 0x66, ++ 0x66, 0x66, 0x66, 0x66, 0x66); ++#if 1 ++ s6e63m0_dcs_write_seq_static(ctx, MCS_ACL_LUT, 0x4d, 0x96, 0x1d, ++ 0x00, 0x00, 0x01, 0xdf, 0x00, 0x00, 0x03, 0x1f, ++ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, ++ 0x03, 0x06, 0x09, 0x0d, 0x0f, 0x12, 0x15, 0x18); ++ s6e63m0_dcs_write_seq_static(ctx, MCS_TEMP_SWIRE, 0x10, 0x10, ++ 0x0b, 0x05); ++ /* ACL on */ ++ s6e63m0_dcs_write_seq_static(ctx, MCS_ACL_CON, 0x00); ++ /* ELVSS on */ ++ s6e63m0_dcs_write_seq_static(ctx, MCS_ELVSS_CON, 0x0b); ++#endif ++ s6e63m0_dcs_write_seq_static(ctx, 0x11); ++ msleep(120); ++ s6e63m0_dcs_write_seq_static(ctx, MIPI_DCS_SET_DISPLAY_ON); ++} ++ ++static int s6e63m0_power_on(struct s6e63m0 *ctx) ++{ ++ int ret; ++ ++ ret = regulator_bulk_enable(ARRAY_SIZE(ctx->supplies), ctx->supplies); ++ if (ret < 0) ++ return ret; ++ ++ msleep(ctx->power_on_delay); ++ gpiod_set_value(ctx->reset_gpio, 0); ++ msleep(ctx->reset_delay); ++ gpiod_set_value(ctx->reset_gpio, 1); ++ msleep(ctx->reset_delay); ++ ++ return 0; ++} ++ ++static int s6e63m0_power_off(struct s6e63m0 *ctx) ++{ ++ return regulator_bulk_disable(ARRAY_SIZE(ctx->supplies), ctx->supplies); ++} ++ ++static int s6e63m0_disable(struct drm_panel *panel) ++{ ++ return 0; ++} ++ ++static int s6e63m0_unprepare(struct drm_panel *panel) ++{ ++ struct s6e63m0 *ctx = panel_to_s6e63m0(panel); ++ ++ s6e63m0_dcs_write_seq_static(ctx, MIPI_DCS_SET_DISPLAY_OFF); ++ msleep(25); ++ s6e63m0_dcs_write_seq_static(ctx, MIPI_DCS_ENTER_SLEEP_MODE); ++ msleep(150); ++ ++ s6e63m0_clear_error(ctx); ++ ++ return s6e63m0_power_off(ctx); ++} ++ ++static int s6e63m0_prepare(struct drm_panel *panel) ++{ ++ struct s6e63m0 *ctx = panel_to_s6e63m0(panel); ++ int ret; ++ ++ ret = s6e63m0_power_on(ctx); ++ if (ret < 0) ++ return ret; ++ ++ s6e63m0_init(ctx); ++ ++ ret = s6e63m0_clear_error(ctx); ++ ++ if (ret < 0) ++ s6e63m0_unprepare(panel); ++ ++ return ret; ++} ++ ++static int s6e63m0_enable(struct drm_panel *panel) ++{ ++ struct s6e63m0 *ctx = panel_to_s6e63m0(panel); ++ ++ s6e63m0_dcs_write_seq_static(ctx, MIPI_DCS_EXIT_SLEEP_MODE); ++ s6e63m0_dcs_write_seq_static(ctx, MIPI_DCS_SET_DISPLAY_ON); ++ return 0; ++} ++ ++static int s6e63m0_get_modes(struct drm_panel *panel) ++{ ++ struct drm_connector *connector = panel->connector; ++ struct s6e63m0 *ctx = panel_to_s6e63m0(panel); ++ struct drm_display_mode *mode; ++ ++ mode = drm_mode_create(connector->dev); ++ if (!mode) { ++ DRM_ERROR("failed to create a new display mode\n"); ++ return 0; ++ } ++ ++ drm_display_mode_from_videomode(&ctx->vm, mode); ++ mode->width_mm = ctx->width_mm; ++ mode->height_mm = ctx->height_mm; ++ connector->display_info.width_mm = mode->width_mm; ++ connector->display_info.height_mm = mode->height_mm; ++ ++ mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; ++ drm_mode_probed_add(connector, mode); ++ ++ return 1; ++} ++ ++static const struct drm_panel_funcs s6e63m0_drm_funcs = { ++ .disable = s6e63m0_disable, ++ .unprepare = s6e63m0_unprepare, ++ .prepare = s6e63m0_prepare, ++ .enable = s6e63m0_enable, ++ .get_modes = s6e63m0_get_modes, ++}; ++ ++static int s6e63m0_parse_dt(struct s6e63m0 *ctx) ++{ ++ struct device *dev = ctx->dev; ++ struct device_node *np = dev->of_node; ++ int ret; ++ ++ ret = of_get_videomode(np, &ctx->vm, 0); ++ if (ret < 0) ++ return ret; ++ ++ of_property_read_u32(np, "power-on-delay", &ctx->power_on_delay); ++ of_property_read_u32(np, "reset-delay", &ctx->reset_delay); ++ of_property_read_u32(np, "panel-width-mm", &ctx->width_mm); ++ of_property_read_u32(np, "panel-height-mm", &ctx->height_mm); ++ ++ return 0; ++} ++ ++static int s6e63m0_probe(struct spi_device *spi) ++{ ++ struct device *dev = &spi->dev; ++ struct s6e63m0 *ctx; ++ int ret; ++ ++ ctx = devm_kzalloc(dev, sizeof(struct s6e63m0), GFP_KERNEL); ++ if (!ctx) ++ return -ENOMEM; ++ ++ spi_set_drvdata(spi, ctx); ++ ++ ctx->dev = dev; ++ ++ ret = s6e63m0_parse_dt(ctx); ++ if (ret < 0) ++ return ret; ++ ++ ctx->supplies[0].supply = "vdd3"; ++ ctx->supplies[1].supply = "vci"; ++ ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(ctx->supplies), ++ ctx->supplies); ++ if (ret < 0) ++ return ret; ++ ++ ctx->reset_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH); ++ if (IS_ERR(ctx->reset_gpio)) { ++ dev_err(dev, "cannot get reset-gpios %ld\n", ++ PTR_ERR(ctx->reset_gpio)); ++ return PTR_ERR(ctx->reset_gpio); ++ } ++ ++ spi->bits_per_word = 9; ++ ret = spi_setup(spi); ++ if (ret < 0) { ++ dev_err(dev, "spi setup failed.\n"); ++ return ret; ++ } ++ ++ drm_panel_init(&ctx->panel); ++ ctx->panel.dev = dev; ++ ctx->panel.funcs = &s6e63m0_drm_funcs; ++ ++ return drm_panel_add(&ctx->panel); ++} ++ ++static int s6e63m0_remove(struct spi_device *spi) ++{ ++ struct s6e63m0 *ctx = spi_get_drvdata(spi); ++ ++ s6e63m0_power_off(ctx); ++ drm_panel_remove(&ctx->panel); ++ ++ return 0; ++} ++ ++static const struct of_device_id s6e63m0_of_match[] = { ++ { .compatible = "samsung,s6e63m0" }, ++ { } ++}; ++MODULE_DEVICE_TABLE(of, s6e63m0_of_match); ++ ++static struct spi_driver s6e63m0_driver = { ++ .probe = s6e63m0_probe, ++ .remove = s6e63m0_remove, ++ .driver = { ++ .name = "panel-samsung-s6e63m0", ++ .of_match_table = s6e63m0_of_match, ++ }, ++}; ++module_spi_driver(s6e63m0_driver); ++ ++MODULE_AUTHOR("Andrzej Hajda <a.hajda@samsung.com>"); ++MODULE_DESCRIPTION("s6e63m0 LCD Driver"); ++MODULE_LICENSE("GPL v2"); +diff --git a/drivers/gpu/drm/tegra/rgb.c b/drivers/gpu/drm/tegra/rgb.c +index 28a78d3120bc..a61c01b1b6f5 100644 +--- a/drivers/gpu/drm/tegra/rgb.c ++++ b/drivers/gpu/drm/tegra/rgb.c +@@ -39,9 +39,17 @@ static const struct reg_entry rgb_enable[] = { + { DC_COM_PIN_OUTPUT_ENABLE(2), 0x00000000 }, + { DC_COM_PIN_OUTPUT_ENABLE(3), 0x00000000 }, + { DC_COM_PIN_OUTPUT_POLARITY(0), 0x00000000 }, ++#ifdef CONFIG_DRM_PANEL_SAMSUNG_S6E63M0 ++ { DC_COM_PIN_OUTPUT_POLARITY(1), 0x51000000 }, ++#else + { DC_COM_PIN_OUTPUT_POLARITY(1), 0x01000000 }, ++#endif + { DC_COM_PIN_OUTPUT_POLARITY(2), 0x00000000 }, ++#ifdef CONFIG_DRM_PANEL_SAMSUNG_S6E63M0 ++ { DC_COM_PIN_OUTPUT_POLARITY(3), 0x00000100 }, ++#else + { DC_COM_PIN_OUTPUT_POLARITY(3), 0x00000000 }, ++#endif + { DC_COM_PIN_OUTPUT_DATA(0), 0x00000000 }, + { DC_COM_PIN_OUTPUT_DATA(1), 0x00000000 }, + { DC_COM_PIN_OUTPUT_DATA(2), 0x00000000 }, +diff --git a/drivers/iio/accel/kxcjk-1013.c b/drivers/iio/accel/kxcjk-1013.c +index af53a1084ee5..3e13a837eb85 100644 +--- a/drivers/iio/accel/kxcjk-1013.c ++++ b/drivers/iio/accel/kxcjk-1013.c +@@ -1504,13 +1504,23 @@ static const struct i2c_device_id kxcjk1013_id[] = { + {"SMO8500", KXCJ91008}, + {} + }; +- + MODULE_DEVICE_TABLE(i2c, kxcjk1013_id); + ++static const struct of_device_id kxcjk1013_of_match[] = { ++ { .compatible = "kionix,kxcjk1013", }, ++ { .compatible = "kionix,kxcj91008", }, ++ { .compatible = "kionix,kxtj21009", }, ++ { .compatible = "kionix,kxtf9", }, ++ { .compatible = "kionix,SMO8500", }, ++ { } ++}; ++MODULE_DEVICE_TABLE(of, kxcjk1013_of_match); ++ + static struct i2c_driver kxcjk1013_driver = { + .driver = { + .name = KXCJK1013_DRV_NAME, + .acpi_match_table = ACPI_PTR(kx_acpi_match), ++ .of_match_table = of_match_ptr(kxcjk1013_of_match), + .pm = &kxcjk1013_pm_ops, + }, + .probe = kxcjk1013_probe, +diff --git a/drivers/iio/gyro/mpu3050-core.c b/drivers/iio/gyro/mpu3050-core.c +index 77fac81a3adc..0c541cbf13a4 100644 +--- a/drivers/iio/gyro/mpu3050-core.c ++++ b/drivers/iio/gyro/mpu3050-core.c +@@ -29,7 +29,7 @@ + + #include "mpu3050.h" + +-#define MPU3050_CHIP_ID 0x69 ++#define MPU3050_CHIP_ID 0x68 + + /* + * Register map: anything suffixed *_H is a big-endian high byte and always +@@ -1176,8 +1176,8 @@ int mpu3050_common_probe(struct device *dev, + goto err_power_down; + } + +- if (val != MPU3050_CHIP_ID) { +- dev_err(dev, "unsupported chip id %02x\n", (u8)val); ++ if ((val & 0x7E) != MPU3050_CHIP_ID) { ++ dev_err(dev, "unsupported chip id %02x\n", (u8)(val & 0x7E)); + ret = -ENODEV; + goto err_power_down; + } +diff --git a/drivers/input/keyboard/stmpe-keypad.c b/drivers/input/keyboard/stmpe-keypad.c +index d69e631cfa0a..1e2423a0a598 100644 +--- a/drivers/input/keyboard/stmpe-keypad.c ++++ b/drivers/input/keyboard/stmpe-keypad.c +@@ -13,7 +13,7 @@ + #include <linux/input/matrix_keypad.h> + #include <linux/mfd/stmpe.h> + +-/* These are at the same addresses in all STMPE variants */ ++/* These are at the same addresses in all STMPE variants, except 1801 */ + #define STMPE_KPC_COL 0x60 + #define STMPE_KPC_ROW_MSB 0x61 + #define STMPE_KPC_ROW_LSB 0x62 +@@ -42,14 +42,15 @@ + #define STMPE_KEYPAD_MAX_DEBOUNCE 127 + #define STMPE_KEYPAD_MAX_SCAN_COUNT 15 + +-#define STMPE_KEYPAD_MAX_ROWS 8 +-#define STMPE_KEYPAD_MAX_COLS 8 ++#define STMPE_KEYPAD_MAX_ROWS 10 ++#define STMPE_KEYPAD_MAX_COLS 12 + #define STMPE_KEYPAD_ROW_SHIFT 3 + #define STMPE_KEYPAD_KEYMAP_MAX_SIZE \ + (STMPE_KEYPAD_MAX_ROWS * STMPE_KEYPAD_MAX_COLS) + + + #define STMPE1601_NUM_DATA 5 ++#define STMPE1801_NUM_DATA 5 + #define STMPE2401_NUM_DATA 3 + #define STMPE2403_NUM_DATA 5 + +@@ -67,6 +68,12 @@ + * @max_rows: maximum number of rows supported + * @col_gpios: bitmask of gpios which can be used for columns + * @row_gpios: bitmask of gpios which can be used for rows ++ * @col_regs: registers for setting column pins ++ * @row_regs: registers for setting row pins ++ * @data_regs: registers for reading key data ++ * @ctrl_msb_reg: register for setting scan count ++ * @ctrl_lsb_reg: register for setting debounce time ++ * @cmd_reg: register for toggling scan mode + */ + struct stmpe_keypad_variant { + bool auto_increment; +@@ -77,6 +84,18 @@ struct stmpe_keypad_variant { + int max_rows; + unsigned int col_gpios; + unsigned int row_gpios; ++ ++#define MAX_COL_REGS 3 ++#define MAX_ROW_REGS 3 ++#define MAX_DATA_REGS 5 ++ ++ u8 col_regs[MAX_COL_REGS]; ++ u8 row_regs[MAX_ROW_REGS]; ++ u8 data_regs[MAX_DATA_REGS]; ++ u8 ctrl_msb_reg; ++ u8 ctrl_lsb_reg; ++ u8 cmd_reg; ++ bool read_inverted; + }; + + static const struct stmpe_keypad_variant stmpe_keypad_variants[] = { +@@ -88,6 +107,29 @@ static const struct stmpe_keypad_variant stmpe_keypad_variants[] = { + .max_rows = 8, + .col_gpios = 0x000ff, /* GPIO 0 - 7 */ + .row_gpios = 0x0ff00, /* GPIO 8 - 15 */ ++ .col_regs = { 0x60 }, ++ .row_regs = { 0x62, 0x61 }, ++ .data_regs = { 0x68, 0x69, 0x6a, 0x6b, 0x6c }, ++ .ctrl_msb_reg = 0x63, ++ .ctrl_lsb_reg = 0x64, ++ .cmd_reg = 0x64, ++ .read_inverted = 0, ++ }, ++ [STMPE1801] = { ++ .auto_increment = true, ++ .num_data = STMPE1801_NUM_DATA, ++ .num_normal_data = 3, ++ .max_cols = 10, ++ .max_rows = 8, ++ .col_gpios = 0x3ff00, /* GPIO 8 - 17 */ ++ .row_gpios = 0x000ff, /* GPIO 0 - 7 */ ++ .col_regs = { 0x31, 0x32 }, ++ .row_regs = { 0x30 }, ++ .data_regs = { 0x3a, 0x3b, 0x3c, 0x3d, 0x3e }, ++ .ctrl_msb_reg = 0x33, ++ .ctrl_lsb_reg = 0x34, ++ .cmd_reg = 0x36, ++ .read_inverted = 1, + }, + [STMPE2401] = { + .auto_increment = false, +@@ -98,6 +140,13 @@ static const struct stmpe_keypad_variant stmpe_keypad_variants[] = { + .max_rows = 12, + .col_gpios = 0x0000ff, /* GPIO 0 - 7*/ + .row_gpios = 0x1f7f00, /* GPIO 8-14, 16-20 */ ++ .col_regs = { 0x60 }, ++ .row_regs = { 0x62, 0x61 }, ++ .data_regs = { 0x68, 0x69, 0x6a, 0x6b, 0x6c }, ++ .ctrl_msb_reg = 0x63, ++ .ctrl_lsb_reg = 0x64, ++ .cmd_reg = 0x64, ++ .read_inverted = 0, + }, + [STMPE2403] = { + .auto_increment = true, +@@ -108,6 +157,13 @@ static const struct stmpe_keypad_variant stmpe_keypad_variants[] = { + .max_rows = 12, + .col_gpios = 0x0000ff, /* GPIO 0 - 7*/ + .row_gpios = 0x1fef00, /* GPIO 8-14, 16-20 */ ++ .col_regs = { 0x60 }, ++ .row_regs = { 0x62, 0x61 }, ++ .data_regs = { 0x68, 0x69, 0x6a, 0x6b, 0x6c }, ++ .ctrl_msb_reg = 0x63, ++ .ctrl_lsb_reg = 0x64, ++ .cmd_reg = 0x64, ++ .read_inverted = 0, + }, + }; + +@@ -145,11 +201,11 @@ static int stmpe_keypad_read_data(struct stmpe_keypad *keypad, u8 *data) + int i; + + if (variant->auto_increment) +- return stmpe_block_read(stmpe, STMPE_KPC_DATA_BYTE0, ++ return stmpe_block_read(stmpe, variant->data_regs[0], + variant->num_data, data); + + for (i = 0; i < variant->num_data; i++) { +- ret = stmpe_reg_read(stmpe, STMPE_KPC_DATA_BYTE0 + i); ++ ret = stmpe_reg_read(stmpe, variant->data_regs[i]); + if (ret < 0) + return ret; + +@@ -176,7 +232,9 @@ static irqreturn_t stmpe_keypad_irq(int irq, void *dev) + u8 data = fifo[i]; + int row = (data & STMPE_KPC_DATA_ROW) >> 3; + int col = data & STMPE_KPC_DATA_COL; +- int code = MATRIX_SCAN_CODE(row, col, STMPE_KEYPAD_ROW_SHIFT); ++ int code = variant->read_inverted ? ++ MATRIX_SCAN_CODE(col, row, STMPE_KEYPAD_ROW_SHIFT): ++ MATRIX_SCAN_CODE(row, col, STMPE_KEYPAD_ROW_SHIFT); + bool up = data & STMPE_KPC_DATA_UP; + + if ((data & STMPE_KPC_DATA_NOKEY_MASK) +@@ -265,7 +323,7 @@ static int stmpe_keypad_chip_init(struct stmpe_keypad *keypad) + { + const struct stmpe_keypad_variant *variant = keypad->variant; + struct stmpe *stmpe = keypad->stmpe; +- int ret; ++ int ret, val, i; + + if (keypad->debounce_ms > STMPE_KEYPAD_MAX_DEBOUNCE) + return -EINVAL; +@@ -281,33 +339,37 @@ static int stmpe_keypad_chip_init(struct stmpe_keypad *keypad) + if (ret < 0) + return ret; + +- ret = stmpe_reg_write(stmpe, STMPE_KPC_COL, keypad->cols); +- if (ret < 0) +- return ret; +- +- ret = stmpe_reg_write(stmpe, STMPE_KPC_ROW_LSB, keypad->rows); +- if (ret < 0) +- return ret; ++ val = keypad->cols; ++ i = 0; ++ do { ++ ret = stmpe_reg_write(stmpe, variant->col_regs[i++], val & 0xff); ++ if (ret < 0) ++ return ret; ++ } while ((val >>= 8) != 0); + +- if (variant->max_rows > 8) { +- ret = stmpe_set_bits(stmpe, STMPE_KPC_ROW_MSB, +- STMPE_KPC_ROW_MSB_ROWS, +- keypad->rows >> 8); ++ val = keypad->rows; ++ i = 0; ++ do { ++ ret = stmpe_reg_write(stmpe, variant->row_regs[i++], val & 0xff); + if (ret < 0) + return ret; +- } ++ } while ((val >>= 8) != 0); + +- ret = stmpe_set_bits(stmpe, STMPE_KPC_CTRL_MSB, ++ ret = stmpe_set_bits(stmpe, variant->ctrl_msb_reg, + STMPE_KPC_CTRL_MSB_SCAN_COUNT, + keypad->scan_count << 4); + if (ret < 0) + return ret; + +- return stmpe_set_bits(stmpe, STMPE_KPC_CTRL_LSB, +- STMPE_KPC_CTRL_LSB_SCAN | ++ ret = stmpe_set_bits(stmpe, variant->ctrl_lsb_reg, + STMPE_KPC_CTRL_LSB_DEBOUNCE, +- STMPE_KPC_CTRL_LSB_SCAN | + (keypad->debounce_ms << 1)); ++ if (ret < 0) ++ return ret; ++ ++ return stmpe_set_bits(stmpe, variant->cmd_reg, ++ STMPE_KPC_CTRL_LSB_SCAN, ++ STMPE_KPC_CTRL_LSB_SCAN); + } + + static void stmpe_keypad_fill_used_pins(struct stmpe_keypad *keypad, +diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig +index a72f97fca57b..d659f0174b92 100644 +--- a/drivers/leds/Kconfig ++++ b/drivers/leds/Kconfig +@@ -766,6 +766,14 @@ config LEDS_NIC78BX + To compile this driver as a module, choose M here: the module + will be called leds-nic78bx. + ++config LEDS_ISA1200 ++ tristate "LES support for the ISA1200 motor" ++ default n ++ depends on I2C ++ help ++ Say Y to enalbe the ISA1200 IC. ++ ++ + comment "LED Triggers" + source "drivers/leds/trigger/Kconfig" + +diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile +index 4c1b0054f379..0ec7806479e9 100644 +--- a/drivers/leds/Makefile ++++ b/drivers/leds/Makefile +@@ -79,6 +79,7 @@ obj-$(CONFIG_LEDS_MT6323) += leds-mt6323.o + obj-$(CONFIG_LEDS_LM3692X) += leds-lm3692x.o + obj-$(CONFIG_LEDS_SC27XX_BLTC) += leds-sc27xx-bltc.o + obj-$(CONFIG_LEDS_LM3601X) += leds-lm3601x.o ++obj-$(CONFIG_LEDS_ISA1200) += leds-isa1200.o + + # LED SPI Drivers + obj-$(CONFIG_LEDS_CR0014114) += leds-cr0014114.o +diff --git a/drivers/leds/leds-isa1200.c b/drivers/leds/leds-isa1200.c +new file mode 100644 +index 000000000000..3f14a38a4cbd +--- /dev/null ++++ b/drivers/leds/leds-isa1200.c +@@ -0,0 +1,565 @@ ++/* ++ * drivers/motor/isa1200_vibrator.c ++ * ++ * Copyright (C) 2011 Samsung Electronics Co. Ltd. All Rights Reserved. ++ * ++ * This software is licensed under the terms of the GNU General Public ++ * License version 2, as published by the Free Software Foundation, and ++ * may be copied, distributed, and modified under those terms. ++ * ++ * 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/kernel.h> ++#include <linux/platform_device.h> ++#include <linux/leds.h> ++#include <linux/slab.h> ++ ++#include <linux/mfd/core.h> ++#include <linux/module.h> ++ ++ ++#include <linux/hrtimer.h> ++#include <linux/err.h> ++#include <linux/gpio.h> ++#include <linux/pwm.h> ++#include <linux/mutex.h> ++#include <linux/clk.h> ++#include <linux/workqueue.h> ++ ++#include <linux/of_gpio.h> ++#include <linux/platform_device.h> ++#include <linux/module.h> ++#include <linux/device.h> ++#include <linux/vmalloc.h> ++#include <linux/fs.h> ++#include <linux/mm.h> ++#include <linux/slab.h> ++#include <linux/i2c.h> ++#include <linux/delay.h> ++#include <linux/pinctrl/consumer.h> ++ ++#include <asm/mach-types.h> ++#include "leds-isa1200.h" ++ ++#define AMPLITUDE_MIN 0 ++#define AMPLITUDE_MAX 254 ++ ++ ++struct isa1200_vibrator_drvdata { ++ struct i2c_client *client; ++ struct led_classdev cdev; ++ ++ struct clk *vib_clk; ++ struct gpio_desc *enable_gpio; ++ ++ struct pinctrl* pinctrl; ++ struct pinctrl_state *on_state; ++ struct pinctrl_state *off_state; ++ ++ struct workqueue_struct *wq; ++ struct delayed_work work; ++ ++ struct hrtimer timer; ++ spinlock_t lock; ++ int timeout; ++ int max_timeout; ++ ++ bool running; ++ ++ u8 amplitude; ++ ++ u8 ctrl0; ++ u8 ctrl1; ++ u8 ctrl2; ++ u8 ctrl4; ++ u8 pll; ++ u8 duty; ++ u8 period; ++}; ++ ++///////////////////////////////////////////////////////////////////////////////////// ++ ++static int amplitude_to_duty(int period, int amplitude) ++{ ++ int duty = (period * (amplitude + AMPLITUDE_MAX)) / ++ (2 *(AMPLITUDE_MAX - AMPLITUDE_MIN)); ++ return duty; ++} ++ ++static int isa1200_vibrator_i2c_write(struct i2c_client *client, ++ u8 addr, u8 val) ++{ ++ int error = 0; ++ error = i2c_smbus_write_byte_data(client, addr, val); ++ if (error) ++ printk(KERN_ERR "[VIB] Failed to write addr=[0x%x], val=[0x%x]\n", ++ addr, val); ++ ++ return error; ++} ++ ++static void isa1200_vibrator_hw_init(struct isa1200_vibrator_drvdata *vib) ++{ ++ msleep(20); ++ isa1200_vibrator_i2c_write(vib->client, ++ HAPTIC_CONTROL_REG0, vib->ctrl0); ++ isa1200_vibrator_i2c_write(vib->client, ++ HAPTIC_CONTROL_REG1, vib->ctrl1); ++ isa1200_vibrator_i2c_write(vib->client, ++ HAPTIC_CONTROL_REG2, vib->ctrl2); ++ isa1200_vibrator_i2c_write(vib->client, ++ HAPTIC_PLL_REG, vib->pll); ++ isa1200_vibrator_i2c_write(vib->client, ++ HAPTIC_CONTROL_REG4, vib->ctrl4); ++ isa1200_vibrator_i2c_write(vib->client, ++ HAPTIC_PWM_DUTY_REG, vib->period/2); ++ isa1200_vibrator_i2c_write(vib->client, ++ HAPTIC_PWM_PERIOD_REG, vib->period); ++ ++#ifdef MOTOR_DEBUG ++ printk(KERN_DEBUG "[VIB] ctrl0 = 0x%x\n", vib->ctrl0); ++ printk(KERN_DEBUG "[VIB] ctrl1 = 0x%x\n", vib->ctrl1); ++ printk(KERN_DEBUG "[VIB] ctrl2 = 0x%x\n", vib->ctrl2); ++ printk(KERN_DEBUG "[VIB] pll = 0x%x\n", vib->pll); ++ printk(KERN_DEBUG "[VIB] ctrl4 = 0x%x\n", vib->ctrl4); ++ printk(KERN_DEBUG "[VIB] duty = 0x%x\n", vib->period/2); ++ printk(KERN_DEBUG "[VIB] period = 0x%x\n", vib->period); ++#endif ++ ++} ++ ++static void isa1200_vibrator_on(struct isa1200_vibrator_drvdata *vib) ++{ ++ int duty = vib->duty; ++ ++ pr_debug("%s\n", __func__); ++ ++ if (vib->duty >= vib->period) { ++ duty -= 3; ++ } ++ ++ isa1200_vibrator_i2c_write(vib->client, ++ HAPTIC_CONTROL_REG0, vib->ctrl0 | CTL0_NORMAL_OP); ++ isa1200_vibrator_i2c_write(vib->client, ++ HAPTIC_PWM_DUTY_REG, vib->duty); ++#ifdef MOTOR_DEBUG ++ printk(KERN_DEBUG "[VIB] ctrl0 = 0x%x\n", vib->ctrl0 | CTL0_NORMAL_OP); ++ printk(KERN_DEBUG "[VIB] duty = 0x%x\n", duty); ++#endif ++} ++ ++static void isa1200_vibrator_off(struct isa1200_vibrator_drvdata *vib) ++{ ++ pr_debug("%s\n", __func__); ++ isa1200_vibrator_i2c_write(vib->client, ++ HAPTIC_PWM_DUTY_REG, vib->period/2); ++ isa1200_vibrator_i2c_write(vib->client, ++ HAPTIC_CONTROL_REG0, vib->ctrl0); ++} ++ ++static void isa1200_vibrator_work(struct work_struct *work) ++{ ++ struct isa1200_vibrator_drvdata *vib = ++ container_of(to_delayed_work(work), struct isa1200_vibrator_drvdata, work); ++ struct i2c_client* client = vib->client; ++ int err; ++ ++ pr_debug("%s\n", __func__); ++ ++ if (vib->timeout == 0) { ++ if (!vib->running) ++ return; ++ ++ vib->running = false; ++ isa1200_vibrator_off(vib); ++ clk_disable_unprepare(vib->vib_clk); ++ ++ if (vib->pinctrl && vib->off_state) { ++ err = pinctrl_select_state(vib->pinctrl, vib->off_state); ++ if (err != 0) ++ dev_err(&client->dev, ++ "%s: error setting pinctrl off state. err=%d\n", __func__, err); ++ } ++ ++ } else { ++ if (vib->running) ++ return; ++ ++ vib->running = true; ++ ++ if (vib->pinctrl && vib->on_state) { ++ err = pinctrl_select_state(vib->pinctrl, vib->on_state); ++ if (err != 0) { ++ dev_err(&client->dev, ++ "%s: error setting pinctrl on state. err=%d\n", __func__, err); ++ return; ++ } ++ } ++ ++ clk_prepare_enable(vib->vib_clk); ++ mdelay(1); ++ isa1200_vibrator_on(vib); ++ } ++} ++ ++static enum hrtimer_restart isa1200_vibrator_timer_func(struct hrtimer *_timer) ++{ ++ struct isa1200_vibrator_drvdata *vib = ++ container_of(_timer, struct isa1200_vibrator_drvdata, timer); ++ ++ vib->timeout = 0; ++ ++ queue_delayed_work(vib->wq, &vib->work, 0); ++ return HRTIMER_NORESTART; ++} ++ ++///////////////////////////////////////////////////////////////////////////////////// ++ ++static void isa1200_brightness_set(struct led_classdev *led_cdev, ++ enum led_brightness value) ++{ ++ pr_info("%s: value=%d\n", __func__, value); ++ ++ led_cdev->brightness = value; ++} ++ ++static int isa1200_blink_set(struct led_classdev *cdev, ++ unsigned long *delay_on, ++ unsigned long *delay_off) ++{ ++ pr_info("%s\n", __func__); ++ return 0; ++} ++ ++static ssize_t enable_store(struct device *dev, ++ struct device_attribute *attr, const char *buf, size_t size) ++{ ++ struct led_classdev *led_cdev = dev_get_drvdata(dev); ++ struct isa1200_vibrator_drvdata *vib = ++ container_of(led_cdev, struct isa1200_vibrator_drvdata, cdev); ++ unsigned long flags; ++ int value; ++ ++ sscanf(buf, "%d", &value); ++ pr_debug("%s timeout=%d\n", __func__, value); ++ ++#ifdef MOTOR_DEBUG ++ printk(KERN_DEBUG "[VIB] time = %dms\n", value); ++#endif ++ cancel_delayed_work(&vib->work); ++ hrtimer_cancel(&vib->timer); ++ vib->timeout = value; ++ queue_delayed_work(vib->wq, &vib->work, 0); ++ spin_lock_irqsave(&vib->lock, flags); ++ if (value > 0) { ++ if (value > vib->max_timeout) ++ value = vib->max_timeout; ++ ++ hrtimer_start(&vib->timer, ++ ns_to_ktime((u64)value * NSEC_PER_MSEC), ++ HRTIMER_MODE_REL); ++ } ++ spin_unlock_irqrestore(&vib->lock, flags); ++ ++ return size; ++} ++ ++static ssize_t amplitude_show(struct device *dev, ++ struct device_attribute *attr, char *buf) ++{ ++ struct led_classdev *led_cdev = dev_get_drvdata(dev); ++ struct isa1200_vibrator_drvdata *vib = ++ container_of(led_cdev, struct isa1200_vibrator_drvdata, cdev); ++ ++ return sprintf(buf, "%d\n", vib->amplitude); ++} ++ ++static ssize_t amplitude_store(struct device *dev, ++ struct device_attribute *attr, const char *buf, size_t size) ++{ ++ struct led_classdev *led_cdev = dev_get_drvdata(dev); ++ struct isa1200_vibrator_drvdata *vib = ++ container_of(led_cdev, struct isa1200_vibrator_drvdata, cdev); ++ int amplitude; ++ ++ sscanf(buf, "%d", &litude); ++ ++ if (amplitude > AMPLITUDE_MAX) ++ amplitude = AMPLITUDE_MAX; ++ else if (amplitude < AMPLITUDE_MIN) ++ amplitude = AMPLITUDE_MIN; ++ ++ vib->duty = amplitude_to_duty(vib->period, amplitude); ++ vib->amplitude = amplitude; ++ ++ pr_debug("%s: amplitude=%d duty_cycle=%d\n", __func__, amplitude, vib->duty); ++ ++ return size; ++} ++ ++ ++static struct device_attribute isa1200_device_attrs[] = { ++ __ATTR(enable, S_IWUSR, ++ NULL, ++ enable_store), ++ __ATTR(amplitude, S_IRUGO | S_IWUSR, ++ amplitude_show, ++ amplitude_store), ++}; ++ ++static int isa1200_init_pinctrl(struct isa1200_vibrator_drvdata *ddata) ++{ ++ struct i2c_client *client = ddata->client; ++ struct pinctrl *pinctrl; ++ struct pinctrl_state *on_state, *off_state; ++ int err = 0; ++ ++ pinctrl = devm_pinctrl_get(&client->dev); ++ if (IS_ERR(pinctrl)) { ++ dev_info(&client->dev, ++ "%s: not using pinctrl.\n", __func__); ++ return 0; ++ } ++ ++ off_state = pinctrl_lookup_state(pinctrl, "off"); ++ if (IS_ERR(off_state)) { ++ dev_err(&client->dev, ++ "%s: error getting pinctrl off state\n", __func__); ++ err = -ENODEV; ++ goto err; ++ } ++ ++ on_state = pinctrl_lookup_state(pinctrl, "on"); ++ if (IS_ERR(on_state)) { ++ dev_err(&client->dev, ++ "%s: error getting pinctrl on state\n", __func__); ++ err = -ENODEV; ++ goto err; ++ } ++ ++ err = pinctrl_select_state(pinctrl, off_state); ++ if (err) { ++ dev_err(&client->dev, ++ "%s: error setting pinctrl off state. err=%d\n", __func__, err); ++ err = -ENODEV; ++ goto err; ++ } ++ ++ ddata->pinctrl = pinctrl; ++ ddata->off_state = off_state; ++ ddata->on_state = on_state; ++ ++ return 0; ++ ++err: ++ devm_pinctrl_put(pinctrl); ++ return err; ++} ++ ++#ifdef CONFIG_OF ++static int isa1200_parse_dt(struct i2c_client *client, ++ struct isa1200_vibrator_drvdata *drvdata) ++{ ++ struct device_node *np = client->dev.of_node; ++ struct clk *vib_clk; ++ int val, error; ++ ++ drvdata->enable_gpio = devm_gpiod_get_optional(&client->dev, ++ "enable", GPIOD_OUT_HIGH); ++ if (IS_ERR(drvdata->enable_gpio)) { ++ error = PTR_ERR(drvdata->enable_gpio); ++ dev_err(&client->dev, "Failed to get enable gpio: %d\n", error); ++ return error; ++ } ++ ++ if (!of_property_read_u32(np, "max-timeout", &val)) ++ drvdata->max_timeout = val; ++ if (!of_property_read_u32(np, "ctrl0", &val)) ++ drvdata->ctrl0 = val; ++ if (!of_property_read_u32(np, "ctrl1", &val)) ++ drvdata->ctrl1 = val; ++ if (!of_property_read_u32(np, "ctrl2", &val)) ++ drvdata->ctrl2 = val; ++ if (!of_property_read_u32(np, "ctrl4", &val)) ++ drvdata->ctrl4 = val; ++ if (!of_property_read_u32(np, "pll", &val)) ++ drvdata->pll = val; ++ if (!of_property_read_u32(np, "duty", &val)) ++ drvdata->duty = val; ++ if (!of_property_read_u32(np, "period", &val)) ++ drvdata->period = val; ++ ++ vib_clk = of_clk_get_by_name(np, "vibrator-clk"); ++ if (vib_clk == NULL) { ++ pr_err("%s: error getting clk.\n", __func__); ++ return -ENODEV; ++ } ++ drvdata->vib_clk = vib_clk; ++ ++ return 0; ++} ++#else ++static int isa1200_parse_dt(struct i2c_client *client, ++ struct isa1200_vibrator_drvdata *drvdata) ++{ ++ return -EINVAL; ++} ++#endif ++ ++static int isa1200_vibrator_i2c_probe(struct i2c_client *client, ++ const struct i2c_device_id *id) ++{ ++ struct isa1200_vibrator_platform_data *pdata = NULL; ++ struct isa1200_vibrator_drvdata *ddata; ++ int i, ret = 0; ++ ++ printk(KERN_DEBUG "[VIB] %s\n", __func__); ++ ++ ddata = kzalloc(sizeof(struct isa1200_vibrator_drvdata), GFP_KERNEL); ++ if (NULL == ddata) { ++ printk(KERN_ERR "[VIB] Failed to alloc memory\n"); ++ ret = -ENOMEM; ++ goto err_free_mem; ++ } ++ ++ if (client->dev.platform_data) { ++ pdata = client->dev.platform_data; ++ ++ ddata->enable_gpio = pdata->enable_gpio; ++ ddata->vib_clk = pdata->get_clk(); ++ ddata->ctrl0 = pdata->ctrl0; ++ ddata->ctrl1 = pdata->ctrl1; ++ ddata->ctrl2 = pdata->ctrl2; ++ ddata->ctrl4 = pdata->ctrl4; ++ ddata->pll = pdata->pll; ++ ddata->duty = pdata->duty; ++ ddata->period = pdata->period; ++ } else if (client->dev.of_node) { ++ ret = isa1200_parse_dt(client, ddata); ++ if (ret) { ++ pr_err("%s: error parsing device tree\n", __func__); ++ goto err_free_mem; ++ } ++ } ++ ++ ddata->client = client; ++ ++ ddata->cdev.name = "isa1200"; ++ ddata->cdev.flags = LED_CORE_SUSPENDRESUME; ++ ddata->cdev.brightness_set = isa1200_brightness_set; ++ ddata->cdev.blink_set = isa1200_blink_set; ++ ddata->cdev.default_trigger = "none"; ++ i2c_set_clientdata(client, ddata); ++ ++ ret = isa1200_init_pinctrl(ddata); ++ if (ret) ++ goto err_free_mem; ++ ++ isa1200_vibrator_hw_init(ddata); ++ ++ ++ hrtimer_init(&ddata->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); ++ ddata->timer.function = isa1200_vibrator_timer_func; ++ ++ ddata->wq = create_singlethread_workqueue("isa1200"); ++ INIT_DELAYED_WORK(&ddata->work, isa1200_vibrator_work); ++ ++ ret = led_classdev_register(&client->dev, &ddata->cdev); ++ if (ret < 0) ++ goto err_free_mem; ++ ++ for (i = 0; i < ARRAY_SIZE(isa1200_device_attrs); i++) { ++ ret = device_create_file(ddata->cdev.dev, &isa1200_device_attrs[i]); ++ if (ret < 0) { ++ dev_err(&client->dev, ++ "%s: failed to create sysfs attributes\n", __func__); ++ goto err_free_mem; ++ } ++ } ++ ++ return 0; ++ ++err_free_mem: ++ kfree(ddata); ++ return ret; ++ ++} ++ ++static int isa1200_vibrator_i2c_remove(struct i2c_client *client) ++{ ++ struct isa1200_vibrator_drvdata *ddata = i2c_get_clientdata(client); ++ struct led_classdev *led_cdev = &ddata->cdev; ++ int i; ++ ++ for (i = 0; i < ARRAY_SIZE(isa1200_device_attrs); i++) { ++ device_remove_file(led_cdev->dev, &isa1200_device_attrs[i]); ++ } ++ ++ led_classdev_unregister(led_cdev); ++ ++ flush_workqueue(ddata->wq); ++ destroy_workqueue(ddata->wq); ++ ddata->wq = NULL; ++ ++ kfree(ddata); ++ ++ return 0; ++} ++ ++#if 0 ++static int isa1200_vibrator_suspend(struct device *dev) ++{ ++ struct i2c_client *client = to_i2c_client(dev); ++ struct isa1200_vibrator_drvdata *vib = i2c_get_clientdata(client); ++ gpio_direction_output(vib->gpio_en, 0); ++ return 0; ++} ++ ++static int isa1200_vibrator_resume(struct device *dev) ++{ ++ struct i2c_client *client = to_i2c_client(dev); ++ struct isa1200_vibrator_drvdata *vib = i2c_get_clientdata(client); ++ // isa1200_vibrator_hw_init(ddata); ++ gpio_direction_output(vib->gpio_en, 1); ++ return 0; ++} ++ ++static SIMPLE_DEV_PM_OPS(isa1200_pm, ++ isa1200_vibrator_suspend, isa1200_vibrator_resume); ++#define ISA1200_PM &isa1200_pm ++#else ++#define ISA1200_PM NULL ++#endif ++ ++static const struct i2c_device_id isa1200_vibrator_device_id[] = { ++ {"isa1200_vibrator", 0}, ++ {} ++}; ++MODULE_DEVICE_TABLE(i2c, isa1200_vibrator_device_id); ++ ++#ifdef CONFIG_OF ++static const struct of_device_id isa1200_dt_match[] = { ++ { .compatible = "samsung_p3,isa1200_vibrator" }, ++ { }, ++}; ++MODULE_DEVICE_TABLE(of, isa1200_dt_match); ++#endif ++ ++static struct i2c_driver isa1200_vibrator_i2c_driver = { ++ .driver = { ++ .name = "isa1200_vibrator", ++ .pm = ISA1200_PM, ++ .of_match_table = of_match_ptr(isa1200_dt_match), ++ .owner = THIS_MODULE, ++ }, ++ .probe = isa1200_vibrator_i2c_probe, ++ .remove = isa1200_vibrator_i2c_remove, ++ .id_table = isa1200_vibrator_device_id, ++}; ++ ++module_i2c_driver(isa1200_vibrator_i2c_driver); +diff --git a/drivers/leds/leds-isa1200.h b/drivers/leds/leds-isa1200.h +new file mode 100755 +index 000000000000..50713449003c +--- /dev/null ++++ b/drivers/leds/leds-isa1200.h +@@ -0,0 +1,71 @@ ++/* arch/arm/mach-tegra/sec_vibrator.c ++ * ++ * Copyright (C) 2011 Samsung Electronics Co. Ltd. All Rights Reserved. ++ * ++ * This software is licensed under the terms of the GNU General Public ++ * License version 2, as published by the Free Software Foundation, and ++ * may be copied, distributed, and modified under those terms. ++ * ++ * 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. ++ * ++ */ ++ ++#ifndef _LINUX_SEC_VIBRATOR_H ++#define _LINUX_SEC_VIBRATOR_H ++ ++#define HAPTIC_CONTROL_REG0 0x30 ++#define HAPTIC_CONTROL_REG1 0x31 ++#define HAPTIC_CONTROL_REG2 0x32 ++#define HAPTIC_PLL_REG 0x33 ++#define HAPTIC_CONTROL_REG4 0x34 ++#define HAPTIC_PWM_DUTY_REG 0x35 ++#define HAPTIC_PWM_PERIOD_REG 0x36 ++#define HAPTIC_AMPLITUDE_REG 0x37 ++ ++/* HAPTIC_CONTROL_REG0 */ ++#define CTL0_DIVIDER128 0 ++#define CTL0_DIVIDER256 1 ++#define CTL0_DIVIDER512 2 ++#define CTL0_DIVIDER1024 3 ++#define CTL0_13MHZ 1 << 2 ++#define CTL0_PWM_INPUT 1 << 3 ++#define CTL0_PWM_GEN 2 << 3 ++#define CTL0_WAVE_GEN 3 << 3 ++#define CTL0_HIGH_DRIVE 1 << 5 ++#define CTL0_OVER_DR_EN 1 << 6 ++#define CTL0_NORMAL_OP 1 << 7 ++ ++/* HAPTIC_CONTROL_REG1 */ ++#define CTL1_HAPTICOFF_16U 0 ++#define CTL1_HAPTICOFF_32U 1 ++#define CTL1_HAPTICOFF_64U 2 ++#define CTL1_HAPTICOFF_100U 3 ++#define CTL1_HAPTICON_1U 1 << 2 ++#define CTL1_SMART_EN 1 << 3 ++#define CTL1_PLL_EN 1 << 4 ++#define CTL1_ERM_TYPE 1 << 5 ++#define CTL1_DEFAULT 1 << 6 ++#define CTL1_EXT_CLOCK 1 << 7 ++ ++/* HAPTIC_CONTROL_REG2 */ ++#define CTL2_EFFECT_EN 1 ++#define CTL2_START_EFF_EN 1 << 2 ++#define CTL2_SOFT_RESET_EN 1 << 7 ++ ++struct isa1200_vibrator_platform_data { ++ struct gpio_desc *enable_gpio; ++ int max_timeout; ++ u8 ctrl0; ++ u8 ctrl1; ++ u8 ctrl2; ++ u8 ctrl4; ++ u8 pll; ++ u8 duty; ++ u8 period; ++ struct clk *(*get_clk) (void); ++}; ++ ++#endif +diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c +index 55997cf84b39..643fbe58eb0f 100644 +--- a/drivers/mmc/core/mmc.c ++++ b/drivers/mmc/core/mmc.c +@@ -408,8 +408,17 @@ static int mmc_decode_ext_csd(struct mmc_card *card, u8 *ext_csd) + ext_csd[EXT_CSD_SEC_CNT + 3] << 24; + + /* Cards with density > 2GiB are sector addressed */ +- if (card->ext_csd.sectors > (2u * 1024 * 1024 * 1024) / 512) ++ if (card->ext_csd.sectors > (2u * 1024 * 1024 * 1024) / 512) { ++ if (card->host->caps & MMC_CAP_NONREMOVABLE) { ++ /* ++ * Size is in 256K chunks, i.e. 512 sectors each. ++ * This algorithm is defined and used by NVIDIA, ++ * according to eMMC 4.41, size is in 128K chunks. ++ */ ++ card->ext_csd.sectors -= ext_csd[EXT_CSD_BOOT_MULT] * 512; ++ } + mmc_card_set_blockaddr(card); ++ } + } + + card->ext_csd.strobe_support = ext_csd[EXT_CSD_STROBE_SUPPORT]; +diff --git a/drivers/soc/tegra/Kconfig b/drivers/soc/tegra/Kconfig +index fe4481676da6..ad5ede8f84ce 100644 +--- a/drivers/soc/tegra/Kconfig ++++ b/drivers/soc/tegra/Kconfig +@@ -126,6 +126,7 @@ config SOC_TEGRA_FLOWCTRL + bool + + config SOC_TEGRA_PMC ++ select GENERIC_PINCONF + bool + + config SOC_TEGRA_POWERGATE_BPMP +diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig +index 9cc4f1848c9b..7bc76e5ebb82 100644 +--- a/sound/soc/codecs/Kconfig ++++ b/sound/soc/codecs/Kconfig +@@ -1255,7 +1255,7 @@ config SND_SOC_WM8993 + tristate + + config SND_SOC_WM8994 +- tristate ++ tristate "Wolfson Microelectronics WM8994 codec driver" + + config SND_SOC_WM8995 + tristate +diff --git a/sound/soc/tegra/Kconfig b/sound/soc/tegra/Kconfig +index 6875fc39a575..99be3ef82d85 100644 +--- a/sound/soc/tegra/Kconfig ++++ b/sound/soc/tegra/Kconfig +@@ -86,6 +86,17 @@ config SND_SOC_TEGRA_WM8903 + boards using the WM8093 codec. Currently, the supported boards are + Harmony, Ventana, Seaboard, Kaen, and Aebl. + ++config SND_SOC_TEGRA_WM8994 ++ tristate "SoC Audio support for Tegra boards using a WM8994 codec" ++ depends on SND_SOC_TEGRA && I2C ++ select SND_SOC_TEGRA20_I2S if ARCH_TEGRA_2x_SOC ++ select SND_SOC_TEGRA30_I2S if ARCH_TEGRA_3x_SOC ++ select SND_SOC_TEGRA30_DAM if ARCH_TEGRA_3x_SOC ++ help ++ Say Y or M here if you want to add support for SoC audio on Tegra ++ boards using the WM8994 codec. Currently, the supported boards are ++ Samsung P3. ++ + config SND_SOC_TEGRA_WM9712 + tristate "SoC Audio support for Tegra boards using a WM9712 codec" + depends on SND_SOC_TEGRA && GPIOLIB +diff --git a/sound/soc/tegra/Makefile b/sound/soc/tegra/Makefile +index 2329b72c93e3..09d0b47db5af 100644 +--- a/sound/soc/tegra/Makefile ++++ b/sound/soc/tegra/Makefile +@@ -23,6 +23,7 @@ snd-soc-tegra-rt5640-objs := tegra_rt5640.o + snd-soc-tegra-rt5677-objs := tegra_rt5677.o + snd-soc-tegra-wm8753-objs := tegra_wm8753.o + snd-soc-tegra-wm8903-objs := tegra_wm8903.o ++snd-soc-tegra-wm8994-objs := tegra_wm8994.o + snd-soc-tegra-wm9712-objs := tegra_wm9712.o + snd-soc-tegra-trimslice-objs := trimslice.o + snd-soc-tegra-alc5632-objs := tegra_alc5632.o +@@ -33,6 +34,7 @@ obj-$(CONFIG_SND_SOC_TEGRA_RT5640) += snd-soc-tegra-rt5640.o + obj-$(CONFIG_SND_SOC_TEGRA_RT5677) += snd-soc-tegra-rt5677.o + obj-$(CONFIG_SND_SOC_TEGRA_WM8753) += snd-soc-tegra-wm8753.o + obj-$(CONFIG_SND_SOC_TEGRA_WM8903) += snd-soc-tegra-wm8903.o ++obj-$(CONFIG_SND_SOC_TEGRA_WM8994) += snd-soc-tegra-wm8994.o + obj-$(CONFIG_SND_SOC_TEGRA_WM9712) += snd-soc-tegra-wm9712.o + obj-$(CONFIG_SND_SOC_TEGRA_TRIMSLICE) += snd-soc-tegra-trimslice.o + obj-$(CONFIG_SND_SOC_TEGRA_ALC5632) += snd-soc-tegra-alc5632.o +diff --git a/sound/soc/tegra/tegra_wm8994.c b/sound/soc/tegra/tegra_wm8994.c +new file mode 100755 +index 000000000000..87cb36df3bcf +--- /dev/null ++++ b/sound/soc/tegra/tegra_wm8994.c +@@ -0,0 +1,297 @@ ++/* ++ * tegra_wm8994.c - Tegra machine ASoC driver for boards using WM8994 codec. ++ * ++ * Author: Stephen Warren <swarren@nvidia.com> ++ * Copyright (C) 2010-2011 - NVIDIA, Inc. ++ * ++ * Based on code copyright/by: ++ * ++ * (c) 2009, 2010 Nvidia Graphics Pvt. Ltd. ++ * ++ * Copyright 2007 Wolfson Microelectronics PLC. ++ * Author: Graeme Gregory ++ * graeme.gregory@wolfsonmicro.com or linux@wolfsonmicro.com ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License ++ * version 2 as published by the Free Software Foundation. ++ * ++ * This program is distributed in the hope that it will be useful, but ++ * WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ * General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA ++ * 02110-1301 USA ++ * ++ */ ++ ++#include <asm/mach-types.h> ++ ++#include <linux/module.h> ++#include <linux/platform_device.h> ++#include <linux/slab.h> ++#include <linux/gpio.h> ++#include <linux/of.h> ++ ++#include <sound/core.h> ++#include <sound/pcm.h> ++#include <sound/pcm_params.h> ++#include <sound/soc.h> ++ ++#include "tegra_pcm.h" ++#include "tegra_asoc_utils.h" ++ ++#ifdef CONFIG_ARCH_TEGRA_2x_SOC ++#include "tegra20_das.h" ++#endif ++ ++#define DRV_NAME "tegra-snd-wm8994" ++ ++struct tegra_wm8994 { ++ struct tegra_asoc_utils_data util_data; ++}; ++ ++static int tegra_wm8994_hw_params(struct snd_pcm_substream *substream, ++ struct snd_pcm_hw_params *params) ++{ ++ struct snd_soc_pcm_runtime *rtd = substream->private_data; ++ struct snd_soc_dai *codec_dai = rtd->codec_dai; ++ struct snd_soc_dai *cpu_dai = rtd->cpu_dai; ++ struct snd_soc_card *card = rtd->card; ++ struct tegra_wm8994 *machine = snd_soc_card_get_drvdata(card); ++ int srate, mclk, i2s_daifmt; ++ int err; ++ ++ srate = params_rate(params); ++ switch (srate) { ++ case 64000: ++ case 88200: ++ case 96000: ++ mclk = 128 * srate; ++ break; ++ default: ++ mclk = 256 * srate; ++ break; ++ } ++ /* FIXME: Codec only requires >= 3MHz if OSR==0 */ ++ while (mclk < 6000000) ++ mclk *= 2; ++ ++ err = tegra_asoc_utils_set_rate(&machine->util_data, srate, mclk); ++ if (err < 0) { ++ if (!(machine->util_data.set_mclk % mclk)) ++ mclk = machine->util_data.set_mclk; ++ else { ++ dev_err(card->dev, "Can't configure clocks\n"); ++ return err; ++ } ++ } ++ ++ i2s_daifmt = SND_SOC_DAIFMT_NB_NF | ++ SND_SOC_DAIFMT_CBS_CFS; ++ ++ /* Use DSP mode for mono on Tegra20 */ ++ // if ((params_channels(params) != 2) && ++ // (machine_is_ventana() || machine_is_harmony() || ++ // machine_is_kaen() || machine_is_aebl())) ++ // i2s_daifmt |= SND_SOC_DAIFMT_DSP_A; ++ // else ++ i2s_daifmt |= SND_SOC_DAIFMT_I2S; ++ ++ err = snd_soc_dai_set_fmt(codec_dai, i2s_daifmt); ++ if (err < 0) { ++ dev_err(card->dev, "codec_dai fmt not set\n"); ++ return err; ++ } ++ ++ err = snd_soc_dai_set_fmt(cpu_dai, i2s_daifmt); ++ if (err < 0) { ++ dev_err(card->dev, "cpu_dai fmt not set\n"); ++ return err; ++ } ++ /* Need to check clk id */ ++ err = snd_soc_dai_set_sysclk(codec_dai, 1, mclk, ++ SND_SOC_CLOCK_IN); ++ if (err < 0) { ++ dev_err(card->dev, "codec_dai clock not set\n"); ++ return err; ++ } ++ ++#ifdef CONFIG_ARCH_TEGRA_2x_SOC ++ err = tegra20_das_connect_dac_to_dap(TEGRA20_DAS_DAP_SEL_DAC1, ++ TEGRA20_DAS_DAP_ID_1); ++ if (err < 0) { ++ dev_err(card->dev, "failed to set dap-dac path\n"); ++ return err; ++ } ++ ++ err = tegra20_das_connect_dap_to_dac(TEGRA20_DAS_DAP_ID_1, ++ TEGRA20_DAS_DAP_SEL_DAC1); ++ if (err < 0) { ++ dev_err(card->dev, "failed to set dac-dap path\n"); ++ return err; ++ } ++#endif ++ return 0; ++} ++ ++static int tegra_hw_free(struct snd_pcm_substream *substream) ++{ ++ return 0; ++} ++ ++static struct snd_soc_ops tegra_wm8994_ops = { ++ .hw_params = tegra_wm8994_hw_params, ++ .hw_free = tegra_hw_free, ++}; ++ ++static int tegra_wm8994_init(struct snd_soc_pcm_runtime *rtd) ++{ ++ pr_info("%s\n", __func__); ++ return 0; ++} ++ ++static int tegra_wm8994_remove(struct snd_soc_card *card) ++{ ++ pr_info("%s\n", __func__); ++ return 0; ++} ++ ++static struct snd_soc_dai_link tegra_wm8994_dai[] = { ++ { ++ .name = "WM8994", ++ .stream_name = "WM8994 PCM", ++ .codec_dai_name = "wm8994-aif1", ++ .init = tegra_wm8994_init, ++ ++ // .codec_name = "WM8994 I2C Codec.8-001b", ++ // .platform_name = "tegra-pcm-audio", ++ // .cpu_dai_name = "tegra20-i2s.0", ++ // .codec_dai_name = "WM8994 PAIFRX", ++ .ops = &tegra_wm8994_ops, ++ }, ++}; ++ ++static struct snd_soc_card snd_soc_tegra_wm8994 = { ++ .name = "tegra-wm8994", ++ .dai_link = tegra_wm8994_dai, ++ .num_links = ARRAY_SIZE(tegra_wm8994_dai), ++ .remove = tegra_wm8994_remove, ++}; ++ ++static int tegra_wm8994_driver_probe(struct platform_device *pdev) ++{ ++ struct device_node *np = pdev->dev.of_node; ++ struct snd_soc_card *card = &snd_soc_tegra_wm8994; ++ struct tegra_wm8994 *machine; ++ int ret; ++ ++ pr_info("%s\n", __func__); ++ ++ if (!pdev->dev.platform_data && !pdev->dev.of_node) { ++ dev_err(&pdev->dev, "No platform data supplied\n"); ++ return -EINVAL; ++ } ++ ++ machine = devm_kzalloc(&pdev->dev, sizeof(struct tegra_wm8994), ++ GFP_KERNEL); ++ if (!machine) { ++ dev_err(&pdev->dev, "Can't allocate tegra_wm8994 struct\n"); ++ ret = -ENOMEM; ++ goto err; ++ } ++ ++ card->dev = &pdev->dev; ++ platform_set_drvdata(pdev, card); ++ snd_soc_card_set_drvdata(card, machine); ++ ++ // Parse device tree nodes ++ ++ // ... ++ ++ ret = snd_soc_of_parse_card_name(card, "nvidia,model"); ++ if (ret) ++ goto err; ++ ++ ++ tegra_wm8994_dai[0].codec_of_node = of_parse_phandle(np, ++ "nvidia,audio-codec", 0); ++ if (!tegra_wm8994_dai[0].codec_of_node) { ++ dev_err(&pdev->dev, ++ "Property 'nvidia,audio-codec' missing or invalid\n"); ++ ret = -EINVAL; ++ goto err; ++ } ++ ++ tegra_wm8994_dai[0].cpu_of_node = of_parse_phandle(np, ++ "nvidia,i2s-controller", 0); ++ if (!tegra_wm8994_dai[0].cpu_of_node) { ++ dev_err(&pdev->dev, ++ "Property 'nvidia,i2s-controller' missing or invalid\n"); ++ ret = -EINVAL; ++ goto err; ++ } ++ ++ tegra_wm8994_dai[0].platform_of_node = tegra_wm8994_dai[0].cpu_of_node; ++ ret = tegra_asoc_utils_init(&machine->util_data, &pdev->dev); ++ if (ret) { ++ dev_err(&pdev->dev, "tegra_asoc_utils_init failed (%d)\n", ++ ret); ++ goto err; ++ } ++ ++ ret = snd_soc_register_card(card); ++ if (ret) { ++ dev_err(&pdev->dev, "snd_soc_register_card failed (%d)\n", ++ ret); ++ goto err_fini_utils; ++ } ++ ++ pr_info("%s: probed\n", __func__); ++ ++ ++ return 0; ++ ++err_fini_utils: ++ tegra_asoc_utils_fini(&machine->util_data); ++err: ++ return ret; ++} ++ ++static int tegra_wm8994_driver_remove(struct platform_device *pdev) ++{ ++ struct snd_soc_card *card = platform_get_drvdata(pdev); ++ struct tegra_wm8994 *machine = snd_soc_card_get_drvdata(card); ++ snd_soc_unregister_card(card); ++ ++ tegra_asoc_utils_fini(&machine->util_data); ++ ++ return 0; ++} ++ ++static const struct of_device_id tegra_wm8994_of_match[] = { ++ { .compatible = "nvidia,tegra-audio-wm8994", }, ++ {}, ++}; ++ ++static struct platform_driver tegra_wm8994_driver = { ++ .driver = { ++ .name = DRV_NAME, ++ .owner = THIS_MODULE, ++ .pm = &snd_soc_pm_ops, ++ .of_match_table = tegra_wm8994_of_match, ++ }, ++ .probe = tegra_wm8994_driver_probe, ++ .remove = tegra_wm8994_driver_remove, ++}; ++ ++module_platform_driver(tegra_wm8994_driver); ++ ++MODULE_AUTHOR("Stephen Warren <swarren@nvidia.com>"); ++MODULE_DESCRIPTION("Tegra+WM8994 machine ASoC driver"); ++MODULE_LICENSE("GPL"); ++MODULE_ALIAS("platform:" DRV_NAME); ++MODULE_DEVICE_TABLE(of, tegra_wm8994_of_match); diff --git a/firmware/firmware-samsung-i927/APKBUILD b/firmware/firmware-samsung-i927/APKBUILD new file mode 100644 index 00000000000..30193c74e49 --- /dev/null +++ b/firmware/firmware-samsung-i927/APKBUILD @@ -0,0 +1,28 @@ +pkgname=firmware-samsung-i927 +pkgver=1 +pkgrel=1 +pkgdesc="Samsung SGH-i927 Firmware" +url="https://github.com/The-Covenant" +arch="armhf" +license="proprietary" +options="!check" + +# Source +_fw_file="bcm4330_sta.bin" +_nvram_file="nvram_net.txt" +_commit="73d33be8ff2323eb51aa7f8c4916e946850e8bfe" +_url_fw="https://github.com/The-Covenant/proprietary_vendor_samsung/raw/$_commit/i927/proprietary/$_fw_file" +_url_nvram="https://github.com/The-Covenant/proprietary_vendor_samsung/raw/$_commit/i927/proprietary/$_nvram_file" + +source="" +source="$source $pkgname-$_commit-$_fw_file::$_url_fw"; +source="$source $pkgname-$_commit-$_nvram_file::$_url_nvram"; + +package() { + install -Dm644 "$srcdir/$pkgname-$_commit-$_fw_file" \ + "$pkgdir/lib/firmware/postmarketos/brcm/brcmfmac4330-sdio.bin" + install -Dm644 "$srcdir/$pkgname-$_commit-$_nvram_file" \ + "$pkgdir/lib/firmware/postmarketos/brcm/brcmfmac4330-sdio.txt" +} +sha512sums="3ae32e0c27a9143fa07e823c414639387aced9bdc149762806059b9dd3ebd3358675657a3cae25572db4e40e4f682d446aadd87c7d459269fc7d2ccf99a2c449 firmware-samsung-i927-73d33be8ff2323eb51aa7f8c4916e946850e8bfe-bcm4330_sta.bin +1fac44f6c1d312cefc5c5bc2b66be41c877a0be6448359b95e7a966553acbf249b193a531a1d4dbdb1d8ec58dd43215d9f3d6c869374612593eb88a70d1a6d93 firmware-samsung-i927-73d33be8ff2323eb51aa7f8c4916e946850e8bfe-nvram_net.txt" -- GitLab