From 33ab18c54b5aa57e7eacdcc77c7ea353da3a93f1 Mon Sep 17 00:00:00 2001 From: Dahrkael Date: Wed, 22 Jul 2020 21:53:29 +0200 Subject: [PATCH] vernee-k506: new device (MR 1439) --- device/testing/device-vernee-k506/APKBUILD | 23 + device/testing/device-vernee-k506/deviceinfo | 33 + .../testing/device-vernee-k506/initfs-hook.sh | 7 + device/testing/linux-vernee-k506/APKBUILD | 52 + .../config-vernee-k506.aarch64 | 3580 +++++++++++++ .../linux-vernee-k506/python3dct.patch | 4750 +++++++++++++++++ 6 files changed, 8445 insertions(+) create mode 100644 device/testing/device-vernee-k506/APKBUILD create mode 100644 device/testing/device-vernee-k506/deviceinfo create mode 100644 device/testing/device-vernee-k506/initfs-hook.sh create mode 100644 device/testing/linux-vernee-k506/APKBUILD create mode 100644 device/testing/linux-vernee-k506/config-vernee-k506.aarch64 create mode 100644 device/testing/linux-vernee-k506/python3dct.patch diff --git a/device/testing/device-vernee-k506/APKBUILD b/device/testing/device-vernee-k506/APKBUILD new file mode 100644 index 000000000..f140b1c8e --- /dev/null +++ b/device/testing/device-vernee-k506/APKBUILD @@ -0,0 +1,23 @@ +# Reference: +pkgname=device-vernee-k506 +pkgdesc="Vernee Thor" +pkgver=0.1 +pkgrel=0 +url="https://postmarketos.org" +license="MIT" +arch="aarch64" +options="!check !archcheck" +depends="postmarketos-base linux-vernee-k506 mkbootimg mesa-dri-gallium" +makedepends="devicepkg-dev" +source="deviceinfo initfs-hook.sh" + +build() { + devicepkg_build $startdir $pkgname +} + +package() { + devicepkg_package $startdir $pkgname +} + +sha512sums="d690398cea697cf28d7974c9d5f9a20f2851375c0c2f6ea8a27c66c3f593b46e58463dd4f9ff79f97eca7edbd0913ade1ff53bb15b28ad51af030e613749eb58 deviceinfo +50d6784e6af1dce2e6ba18993f5c50ba88fc8a6521bfe15667dd5beddb4c948f59bb800e18b977fb86c93c37105010ce6c20f88405e73a03449ee3226aa14466 initfs-hook.sh" diff --git a/device/testing/device-vernee-k506/deviceinfo b/device/testing/device-vernee-k506/deviceinfo new file mode 100644 index 000000000..e3af44dd8 --- /dev/null +++ b/device/testing/device-vernee-k506/deviceinfo @@ -0,0 +1,33 @@ +# Reference: +# Please use double quotes only. You can source this file in shell scripts. + +deviceinfo_format_version="0" +deviceinfo_name="Vernee Thor" +deviceinfo_manufacturer="Vernee" +deviceinfo_codename="vernee-k506" +deviceinfo_year="2016" +deviceinfo_dtb="" +deviceinfo_modules_initfs="" +deviceinfo_arch="aarch64" + +# Device related +deviceinfo_chassis="handset" +deviceinfo_keyboard="false" +deviceinfo_external_storage="true" +deviceinfo_screen_width="720" +deviceinfo_screen_height="1280" + +# Bootloader relate +deviceinfo_flash_method="fastboot" +deviceinfo_kernel_cmdline="bootopt=64S3,32N2,64N2" +deviceinfo_generate_bootimg="true" +deviceinfo_bootimg_qcdt="false" +deviceinfo_bootimg_dtb_second="false" +deviceinfo_flash_offset_base="0x40078000" +deviceinfo_flash_offset_kernel="0x00008000" +deviceinfo_flash_offset_ramdisk="0x03f88000" +deviceinfo_flash_offset_second="0x00f00000" +deviceinfo_flash_offset_tags="0x0df88000" +deviceinfo_flash_pagesize="2048" + + diff --git a/device/testing/device-vernee-k506/initfs-hook.sh b/device/testing/device-vernee-k506/initfs-hook.sh new file mode 100644 index 000000000..c4d693a15 --- /dev/null +++ b/device/testing/device-vernee-k506/initfs-hook.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +# set framebuffer virtual size and panning +echo 736,2560 > /sys/class/graphics/fb0/virtual_size +echo 0,1280 > /sys/class/graphics/fb0/pan +echo 162 > /sys/class/leds/lcd-backlight/brightness + diff --git a/device/testing/linux-vernee-k506/APKBUILD b/device/testing/linux-vernee-k506/APKBUILD new file mode 100644 index 000000000..92c867b52 --- /dev/null +++ b/device/testing/linux-vernee-k506/APKBUILD @@ -0,0 +1,52 @@ +# Reference: +# Kernel config based on: arch/arm64/configs/k06td_a_defconfig + +pkgname=linux-vernee-k506 +pkgver=3.18.99 +pkgrel=0 +pkgdesc="Vernee Thor kernel fork" +arch="aarch64" +_carch="arm64" +_flavor="vernee-k506" +url="https://kernel.org" +license="GPL-2.0-only" +options="!strip !check !tracedeps pmb:cross-native" +makedepends="bash bc bison devicepkg-dev flex openssl-dev perl python3 gcc6" + +# Compiler: GCC 6 (doesn't boot when compiled with newer versions) +if [ "${CC:0:5}" != "gcc6-" ]; then + CC="gcc6-$CC" + HOSTCC="gcc6-gcc" + CROSS_COMPILE="gcc6-$CROSS_COMPILE" +fi + +# Source +_repository="android_kernel_vernee_thor_k506" +_commit="6162531eeb91a5291c00eceff7cb707561143471" +_config="config-$_flavor.$arch" +source=" + $pkgname-$_commit.tar.gz::https://github.com/MediatekAndroidDevelopers/$_repository/archive/$_commit.tar.gz + $_config + python3dct.patch +" +builddir="$srcdir/$_repository-$_commit" +_outdir="out" + +prepare() { + default_prepare + . downstreamkernel_prepare +} + +build() { + unset LDFLAGS + make O="$_outdir" ARCH="$_carch" CC="${CC:-gcc}" \ + KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-postmarketOS" +} + +package() { + downstreamkernel_package "$builddir" "$pkgdir" "$_carch" "$_flavor" "$_outdir" +} + +sha512sums="5d51b5ceb3968c37e0653f40dcbc334388f401a086d6232600a05c47ec40deb712fc23cbfca6a59e2e3e5a108c46429e4fe1550608f1fbd687f14c8d17376b6d linux-vernee-k506-6162531eeb91a5291c00eceff7cb707561143471.tar.gz +38df769d1752cd137bf2a5a41f627d52d5017e915edef5e0ba35b7f2b67b44310ca125ac104958fe9f2572d16de37d12aa5bc78beebc25cb7680f2a9c15a8dd5 config-vernee-k506.aarch64 +a2990a27436d3ffe40f1fd1e388486727042cc5fa5be23b19dad623a18731c94c07ac4a89be1e59e6214593d2b03d38702b60a7475807e8cda0811c4e5d50a9b python3dct.patch" diff --git a/device/testing/linux-vernee-k506/config-vernee-k506.aarch64 b/device/testing/linux-vernee-k506/config-vernee-k506.aarch64 new file mode 100644 index 000000000..2984673ea --- /dev/null +++ b/device/testing/linux-vernee-k506/config-vernee-k506.aarch64 @@ -0,0 +1,3580 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/arm64 3.18.99 Kernel Configuration +# +CONFIG_ARM64=y +CONFIG_64BIT=y +CONFIG_ARCH_PHYS_ADDR_T_64BIT=y +CONFIG_MMU=y +CONFIG_ARCH_MMAP_RND_BITS_MIN=18 +CONFIG_ARCH_MMAP_RND_BITS_MAX=24 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 +CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=16 +CONFIG_NO_IOPORT_MAP=y +CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000 +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CSUM=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_ZONE_DMA=y +CONFIG_HAVE_GENERIC_RCU_GUP=y +CONFIG_ARCH_DMA_ADDR_T_64BIT=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_SG_DMA_LENGTH=y +CONFIG_SWIOTLB=y +CONFIG_IOMMU_HELPER=y +CONFIG_KERNEL_MODE_NEON=y +CONFIG_FIX_EARLYCON_MEM=y +CONFIG_ARM64_ERRATUM_836870=y +CONFIG_ARM64_ERRATUM_845719=y +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_EXTABLE_SORT=y + +# +# General setup +# +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_CROSS_COMPILE="aarch64-linux-android-" +# CONFIG_COMPILE_TEST is not set +CONFIG_LOCALVERSION="-Team_M.A.D." +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_DEFAULT_HOSTNAME="(none)" +# CONFIG_SWAP is not set +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +# CONFIG_POSIX_MQUEUE is not set +CONFIG_CROSS_MEMORY_ATTACH=y +# CONFIG_FHANDLE is not set +# CONFIG_USELIB is not set +CONFIG_AUDIT=y +CONFIG_HAVE_ARCH_AUDITSYSCALL=y +CONFIG_AUDITSYSCALL=y +CONFIG_AUDIT_WATCH=y +CONFIG_AUDIT_TREE=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_HARDIRQS_SW_RESEND=y +CONFIG_IRQ_DOMAIN=y +CONFIG_IRQ_DOMAIN_HIERARCHY=y +CONFIG_HANDLE_DOMAIN_IRQ=y +# CONFIG_IRQ_DOMAIN_DEBUG is not set +CONFIG_SPARSE_IRQ=y +CONFIG_GENERIC_TIME_VSYSCALL=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=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=y +CONFIG_HIGH_RES_TIMERS=y + +# +# CPU/Task time and stats accounting +# +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y + +# +# RCU Subsystem +# +CONFIG_TREE_PREEMPT_RCU=y +CONFIG_PREEMPT_RCU=y +# CONFIG_TASKS_RCU is not set +CONFIG_RCU_STALL_COMMON=y +# CONFIG_RCU_USER_QS is not set +CONFIG_RCU_FANOUT=32 +CONFIG_RCU_FANOUT_LEAF=16 +# CONFIG_RCU_FANOUT_EXACT is not set +# CONFIG_RCU_FAST_NO_HZ is not set +# CONFIG_TREE_RCU_TRACE is not set +# CONFIG_RCU_BOOST is not set +# CONFIG_RCU_NOCB_CPU is not set +CONFIG_BUILD_BIN2C=y +CONFIG_IKCONFIG=y +# CONFIG_IKCONFIG_PROC is not set +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +CONFIG_GENERIC_SCHED_CLOCK=y +CONFIG_CGROUPS=y +# CONFIG_CGROUP_DEBUG is not set +# CONFIG_CGROUP_FREEZER is not set +# CONFIG_CGROUP_DEVICE is not set +# CONFIG_CPUSETS is not set +CONFIG_CGROUP_CPUACCT=y +CONFIG_RESOURCE_COUNTERS=y +# CONFIG_MEMCG is not set +# CONFIG_CGROUP_PERF is not set +CONFIG_CGROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +# CONFIG_CFS_BANDWIDTH is not set +CONFIG_RT_GROUP_SCHED=y +# CONFIG_BLK_CGROUP is not set +# CONFIG_CHECKPOINT_RESTORE is not set +# CONFIG_NAMESPACES 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=y +# CONFIG_RD_XZ is not set +# CONFIG_RD_LZO is not set +# CONFIG_RD_LZ4 is not set +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_SYSCTL=y +CONFIG_ANON_INODES=y +CONFIG_HAVE_UID16=y +CONFIG_SYSCTL_EXCEPTION_TRACE=y +CONFIG_BPF=y +CONFIG_EXPERT=y +CONFIG_UID16=y +# CONFIG_SGETMASK_SYSCALL is not set +# CONFIG_SYSFS_SYSCALL is not set +# CONFIG_SYSCTL_SYSCALL is not set +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +# CONFIG_BPF_SYSCALL is not set +CONFIG_SHMEM=y +# CONFIG_AIO is not set +CONFIG_ADVISE_SYSCALLS=y +CONFIG_EMBEDDED=y +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_PERF_USE_VMALLOC=y + +# +# Kernel Performance Events And Counters +# +CONFIG_PERF_EVENTS=y +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +CONFIG_VM_EVENT_COUNTERS=y +# CONFIG_SLUB_DEBUG is not set +# CONFIG_COMPAT_BRK is not set +# CONFIG_SLAB is not set +CONFIG_SLUB=y +# CONFIG_SLOB is not set +CONFIG_SLUB_CPU_PARTIAL=y +# CONFIG_SYSTEM_TRUSTED_KEYRING is not set +CONFIG_PROFILING=y +# CONFIG_JUMP_LABEL is not set +# CONFIG_UPROBES is not set +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +CONFIG_HAVE_DMA_ATTRS=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_ARCH_HAS_FORTIFY_SOURCE=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_HAVE_RCU_TABLE_FREE=y +CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_SECCOMP_FILTER=y +CONFIG_HAVE_CC_STACKPROTECTOR=y +CONFIG_CC_STACKPROTECTOR=y +# CONFIG_CC_STACKPROTECTOR_NONE is not set +# CONFIG_CC_STACKPROTECTOR_REGULAR is not set +CONFIG_CC_STACKPROTECTOR_STRONG=y +CONFIG_HAVE_CONTEXT_TRACKING=y +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y +CONFIG_MODULES_USE_ELF_RELA=y +CONFIG_HAVE_ARCH_MMAP_RND_BITS=y +CONFIG_ARCH_MMAP_RND_BITS=24 +CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=16 +CONFIG_CLONE_BACKWARDS=y +CONFIG_OLD_SIGSUSPEND3=y +CONFIG_COMPAT_OLD_SIGACTION=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +# CONFIG_MODULES is not set +CONFIG_STOP_MACHINE=y +CONFIG_BLOCK=y +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_BLK_DEV_BSGLIB is not set +# CONFIG_BLK_DEV_INTEGRITY is not set +# CONFIG_BLK_CMDLINE_PARSER is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_EFI_PARTITION=y +CONFIG_BLOCK_COMPAT=y + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_ROW=y +CONFIG_IOSCHED_CFQ=y +CONFIG_IOSCHED_BFQ=y +CONFIG_CGROUP_BFQIO=y +# CONFIG_DEFAULT_DEADLINE is not set +# CONFIG_DEFAULT_ROW is not set +# CONFIG_DEFAULT_CFQ is not set +CONFIG_DEFAULT_BFQ=y +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="bfq" +CONFIG_UNINLINE_SPIN_UNLOCK=y +CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y +CONFIG_MUTEX_SPIN_ON_OWNER=y +CONFIG_RWSEM_SPIN_ON_OWNER=y +CONFIG_FREEZER=y + +# +# Platform selection +# +# CONFIG_ARCH_THUNDER is not set +# CONFIG_ARCH_VEXPRESS is not set +# CONFIG_ARCH_MT6735 is not set +CONFIG_ARCH_MT6753=y +# CONFIG_ARCH_MT6755 is not set +# CONFIG_ARCH_MT6797 is not set +# CONFIG_ARCH_MT8163 is not set +# CONFIG_ARCH_MT8173 is not set +# CONFIG_ARCH_MT6735M is not set +# CONFIG_ARCH_XGENE is not set + +# +# MTK Board Support Package +# +CONFIG_MTK_EVB_BOARD=y +# CONFIG_MTK_FPGA is not set +CONFIG_MTK_PSCI=y + +# +# Bus support +# +CONFIG_ARM_AMBA=y +# CONFIG_PCI is not set +# CONFIG_PCI_DOMAINS is not set +# CONFIG_PCI_DOMAINS_GENERIC is not set +# CONFIG_PCI_SYSCALL is not set + +# +# Kernel Features +# + +# +# ARM errata workarounds via the alternatives framework +# +CONFIG_ARM64_ERRATUM_826319=y +CONFIG_ARM64_ERRATUM_827319=y +CONFIG_ARM64_ERRATUM_824069=y +CONFIG_ARM64_ERRATUM_819472=y +CONFIG_ARM64_ERRATUM_832075=y +CONFIG_ARM64_4K_PAGES=y +# CONFIG_ARM64_64K_PAGES is not set +CONFIG_ARM64_VA_BITS_39=y +# CONFIG_ARM64_VA_BITS_48 is not set +CONFIG_ARM64_VA_BITS=39 +CONFIG_ARM64_PGTABLE_LEVELS=3 +# CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_SMP=y +CONFIG_SCHED_MC=y +# CONFIG_SCHED_SMT is not set +CONFIG_NR_CPUS=8 +CONFIG_HOTPLUG_CPU=y +# CONFIG_PREEMPT_NONE is not set +# CONFIG_PREEMPT_VOLUNTARY is not set +CONFIG_PREEMPT=y +CONFIG_PREEMPT_COUNT=y +# CONFIG_HZ_100 is not set +# CONFIG_HZ_250 is not set +CONFIG_HZ_300=y +# CONFIG_HZ_1000 is not set +CONFIG_HZ=300 +CONFIG_SCHED_HRTICK=y +CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_DEFAULT=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_HAVE_ARCH_PFN_VALID=y +CONFIG_HW_PERF_EVENTS=y +CONFIG_SYS_SUPPORTS_HUGETLBFS=y +CONFIG_ARCH_WANT_GENERAL_HUGETLB=y +CONFIG_ARCH_WANT_HUGE_PMD_SHARE=y +CONFIG_ARCH_HAS_CACHE_LINE_SIZE=y +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_SPARSEMEM_MANUAL=y +CONFIG_SPARSEMEM=y +CONFIG_HAVE_MEMORY_PRESENT=y +CONFIG_SPARSEMEM_EXTREME=y +CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y +CONFIG_SPARSEMEM_VMEMMAP=y +CONFIG_HAVE_MEMBLOCK=y +CONFIG_NO_BOOTMEM=y +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_COMPACTION=y +CONFIG_MIGRATION=y +CONFIG_PHYS_ADDR_T_64BIT=y +CONFIG_ZONE_DMA_FLAG=1 +CONFIG_BOUNCE=y +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=32768 +# CONFIG_TRANSPARENT_HUGEPAGE is not set +# CONFIG_CLEANCACHE is not set +# CONFIG_CMA is not set +# CONFIG_ZPOOL is not set +# CONFIG_ZBUD is not set +CONFIG_ZSMALLOC=y +# CONFIG_PGTABLE_MAPPING is not set +# CONFIG_ZSMALLOC_STAT is not set +CONFIG_GENERIC_EARLY_IOREMAP=y +CONFIG_SECCOMP=y +# CONFIG_XEN is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_ARMV8_DEPRECATED=y +CONFIG_SWP_EMULATION=y +CONFIG_CP15_BARRIER_EMULATION=y +CONFIG_SETEND_EMULATION=y + +# +# Boot options +# +CONFIG_CMDLINE="console=tty0 console=ttyMT3,921600n1 root=/dev/ram vmalloc=496M slub_max_order=0 slub_debug=O " +CONFIG_CMDLINE_FROM_BOOTLOADER=y +# CONFIG_CMDLINE_EXTEND is not set +# CONFIG_CMDLINE_FORCE is not set +# CONFIG_EFI is not set +CONFIG_BUILD_ARM64_APPENDED_DTB_IMAGE=y +CONFIG_BUILD_ARM64_APPENDED_DTB_IMAGE_NAMES="k06td_a" + +# +# Userspace binary formats +# +CONFIG_BINFMT_ELF=y +CONFIG_COMPAT_BINFMT_ELF=y +CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_BINFMT_SCRIPT=y +# CONFIG_HAVE_AOUT is not set +# CONFIG_BINFMT_MISC is not set +CONFIG_COREDUMP=y +CONFIG_COMPAT=y +CONFIG_SYSVIPC_COMPAT=y + +# +# Power management options +# +CONFIG_SUSPEND=y +CONFIG_SUSPEND_FREEZER=y +CONFIG_WAKELOCK=y +CONFIG_PM_SLEEP=y +CONFIG_PM_SLEEP_SMP=y +CONFIG_PM_AUTOSLEEP=y +CONFIG_PM_WAKELOCKS=y +CONFIG_PM_WAKELOCKS_LIMIT=100 +CONFIG_PM_WAKELOCKS_GC=y +# CONFIG_PM_RUNTIME is not set +CONFIG_PM=y +# CONFIG_PM_DEBUG is not set +CONFIG_PM_CLK=y +# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set +CONFIG_CPU_PM=y +# CONFIG_SUSPEND_TIME is not set +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARM64_CPU_SUSPEND=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y + +# +# CPU Power Management +# + +# +# CPU Idle +# +CONFIG_CPU_IDLE=y +CONFIG_CPU_IDLE_GOV_LADDER=y +CONFIG_CPU_IDLE_GOV_MENU=y +CONFIG_CPU_IDLE_GOV_MTK=y +CONFIG_DT_IDLE_STATES=y + +# +# ARM64 CPU Idle Drivers +# +# CONFIG_ARM64_CPUIDLE is not set +# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set + +# +# CPU Frequency scaling +# +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_GOV_COMMON=y +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_STAT_DETAILS=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_INTERACTIVE=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_INTERACTIVE=y +# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set +# CONFIG_CPUFREQ_DT is not set + +# +# ARM CPU frequency scaling drivers +# +# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set +CONFIG_NET=y +CONFIG_COMPAT_NETLINK_MESSAGES=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_DIAG is not set +CONFIG_UNIX=y +# CONFIG_UNIX_DIAG is not set +CONFIG_XFRM=y +CONFIG_XFRM_ALGO=y +CONFIG_XFRM_USER=y +CONFIG_XFRM_SUB_POLICY=y +CONFIG_XFRM_MIGRATE=y +# CONFIG_XFRM_STATISTICS is not set +CONFIG_XFRM_IPCOMP=y +CONFIG_NET_KEY=y +# CONFIG_NET_KEY_MIGRATE is not set +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +# CONFIG_IP_FIB_TRIE_STATS is not set +CONFIG_IP_MULTIPLE_TABLES=y +# CONFIG_IP_ROUTE_MULTIPATH is not set +# CONFIG_IP_ROUTE_VERBOSE is not set +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +# CONFIG_IP_PNP_RARP is not set +CONFIG_NET_IPIP=y +# CONFIG_NET_IPGRE_DEMUX is not set +CONFIG_NET_IP_TUNNEL=y +CONFIG_IP_MROUTE=y +CONFIG_IP_MROUTE_MULTIPLE_TABLES=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_SYN_COOKIES=y +# CONFIG_NET_IPVTI is not set +CONFIG_NET_UDP_TUNNEL=y +# CONFIG_NET_FOU is not set +# CONFIG_GENEVE is not set +CONFIG_INET_AH=y +CONFIG_INET_ESP=y +CONFIG_INET_IPCOMP=y +CONFIG_INET_XFRM_TUNNEL=y +CONFIG_INET_TUNNEL=y +CONFIG_INET_XFRM_MODE_TRANSPORT=y +CONFIG_INET_XFRM_MODE_TUNNEL=y +CONFIG_INET_XFRM_MODE_BEET=y +# CONFIG_INET_LRO is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_INET_UDP_DIAG is not set +CONFIG_INET_DIAG_DESTROY=y +# 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=y +CONFIG_IPV6_ROUTE_INFO=y +CONFIG_IPV6_OPTIMISTIC_DAD=y +CONFIG_INET6_AH=y +CONFIG_INET6_ESP=y +CONFIG_INET6_IPCOMP=y +CONFIG_IPV6_MIP6=y +CONFIG_INET6_XFRM_TUNNEL=y +CONFIG_INET6_TUNNEL=y +CONFIG_INET6_XFRM_MODE_TRANSPORT=y +CONFIG_INET6_XFRM_MODE_TUNNEL=y +CONFIG_INET6_XFRM_MODE_BEET=y +CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=y +# CONFIG_IPV6_VTI is not set +CONFIG_IPV6_SIT=y +CONFIG_IPV6_SIT_6RD=y +CONFIG_IPV6_NDISC_NODETYPE=y +CONFIG_IPV6_TUNNEL=y +# CONFIG_IPV6_GRE is not set +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_SUBTREES=y +CONFIG_IPV6_MROUTE=y +# CONFIG_IPV6_MROUTE_MULTIPLE_TABLES is not set +CONFIG_IPV6_PIMSM_V2=y +# CONFIG_NETLABEL is not set +# CONFIG_ANDROID_PARANOID_NETWORK is not set +CONFIG_NET_ACTIVITY_STATS=y +CONFIG_NETWORK_SECMARK=y +# CONFIG_NET_PTP_CLASSIFY is not set +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_NETFILTER_ADVANCED=y +CONFIG_BRIDGE_NETFILTER=y + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_NETLINK=y +# CONFIG_NETFILTER_NETLINK_ACCT is not set +CONFIG_NETFILTER_NETLINK_QUEUE=y +CONFIG_NETFILTER_NETLINK_LOG=y +CONFIG_NF_CONNTRACK=y +CONFIG_NF_CONNTRACK_MARK=y +CONFIG_NF_CONNTRACK_SECMARK=y +# CONFIG_NF_CONNTRACK_ZONES is not set +CONFIG_NF_CONNTRACK_PROCFS=y +CONFIG_NF_CONNTRACK_EVENTS=y +# CONFIG_NF_CONNTRACK_TIMEOUT is not set +# CONFIG_NF_CONNTRACK_TIMESTAMP is not set +CONFIG_NF_CT_PROTO_DCCP=y +CONFIG_NF_CT_PROTO_GRE=y +CONFIG_NF_CT_PROTO_SCTP=y +CONFIG_NF_CT_PROTO_UDPLITE=y +CONFIG_NF_CONNTRACK_AMANDA=y +CONFIG_NF_CONNTRACK_FTP=y +CONFIG_NF_CONNTRACK_H323=y +CONFIG_NF_CONNTRACK_IRC=y +CONFIG_NF_CONNTRACK_BROADCAST=y +CONFIG_NF_CONNTRACK_NETBIOS_NS=y +# CONFIG_NF_CONNTRACK_SNMP is not set +CONFIG_NF_CONNTRACK_PPTP=y +CONFIG_NF_CONNTRACK_SANE=y +# CONFIG_NF_CONNTRACK_SIP is not set +CONFIG_NF_CONNTRACK_TFTP=y +CONFIG_NF_CT_NETLINK=y +# CONFIG_NF_CT_NETLINK_TIMEOUT is not set +# CONFIG_NETFILTER_NETLINK_QUEUE_CT is not set +CONFIG_NF_NAT=y +CONFIG_NF_NAT_NEEDED=y +CONFIG_NF_NAT_PROTO_DCCP=y +CONFIG_NF_NAT_PROTO_UDPLITE=y +CONFIG_NF_NAT_PROTO_SCTP=y +CONFIG_NF_NAT_AMANDA=y +CONFIG_NF_NAT_FTP=y +CONFIG_NF_NAT_IRC=y +# CONFIG_NF_NAT_SIP is not set +CONFIG_NF_NAT_TFTP=y +# CONFIG_NF_TABLES is not set +CONFIG_NETFILTER_XTABLES=y + +# +# Xtables combined modules +# +CONFIG_NETFILTER_XT_MARK=y +CONFIG_NETFILTER_XT_CONNMARK=y + +# +# Xtables targets +# +# CONFIG_NETFILTER_XT_TARGET_AUDIT is not set +# CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=y +CONFIG_NETFILTER_XT_TARGET_CONNMARK=y +CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=y +CONFIG_NETFILTER_XT_TARGET_CT=y +# 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=y +# CONFIG_NETFILTER_XT_TARGET_LED is not set +# CONFIG_NETFILTER_XT_TARGET_LOG is not set +CONFIG_NETFILTER_XT_TARGET_MARK=y +CONFIG_NETFILTER_XT_NAT=y +CONFIG_NETFILTER_XT_TARGET_NETMAP=y +CONFIG_NETFILTER_XT_TARGET_NFLOG=y +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=y +CONFIG_NETFILTER_XT_TARGET_NOTRACK=y +# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set +CONFIG_NETFILTER_XT_TARGET_REDIRECT=y +CONFIG_NETFILTER_XT_TARGET_TEE=y +CONFIG_NETFILTER_XT_TARGET_TPROXY=y +CONFIG_NETFILTER_XT_TARGET_TRACE=y +CONFIG_NETFILTER_XT_TARGET_SECMARK=y +CONFIG_NETFILTER_XT_TARGET_TCPMSS=y +# 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_CLUSTER is not set +CONFIG_NETFILTER_XT_MATCH_COMMENT=y +# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set +# CONFIG_NETFILTER_XT_MATCH_CONNLABEL is not set +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=y +CONFIG_NETFILTER_XT_MATCH_CONNMARK=y +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y +# 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=y +CONFIG_NETFILTER_XT_MATCH_ECN=y +CONFIG_NETFILTER_XT_MATCH_ESP=y +CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=y +CONFIG_NETFILTER_XT_MATCH_HELPER=y +CONFIG_NETFILTER_XT_MATCH_HL=y +# CONFIG_NETFILTER_XT_MATCH_IPCOMP is not set +CONFIG_NETFILTER_XT_MATCH_IPRANGE=y +# CONFIG_NETFILTER_XT_MATCH_L2TP is not set +CONFIG_NETFILTER_XT_MATCH_LENGTH=y +CONFIG_NETFILTER_XT_MATCH_LIMIT=y +CONFIG_NETFILTER_XT_MATCH_MAC=y +CONFIG_NETFILTER_XT_MATCH_MARK=y +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=y +# 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=y +# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=y +CONFIG_NETFILTER_XT_MATCH_QTAGUID=y +CONFIG_NETFILTER_XT_MATCH_QUOTA=y +CONFIG_NETFILTER_XT_MATCH_QUOTA2=y +CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG=y +# 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=y +CONFIG_NETFILTER_XT_MATCH_STATE=y +CONFIG_NETFILTER_XT_MATCH_STATISTIC=y +CONFIG_NETFILTER_XT_MATCH_STRING=y +# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set +CONFIG_NETFILTER_XT_MATCH_TIME=y +CONFIG_NETFILTER_XT_MATCH_U32=y +# CONFIG_IP_SET is not set +# CONFIG_IP_VS is not set + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=y +CONFIG_NF_CONNTRACK_IPV4=y +CONFIG_NF_CONNTRACK_PROC_COMPAT=y +# CONFIG_NF_LOG_ARP is not set +# CONFIG_NF_LOG_IPV4 is not set +CONFIG_NF_REJECT_IPV4=y +CONFIG_NF_NAT_IPV4=y +CONFIG_NF_NAT_MASQUERADE_IPV4=y +CONFIG_NF_NAT_PROTO_GRE=y +CONFIG_NF_NAT_PPTP=y +CONFIG_NF_NAT_H323=y +CONFIG_IP_NF_IPTABLES=y +CONFIG_IP_NF_MATCH_AH=y +CONFIG_IP_NF_MATCH_ECN=y +CONFIG_IP_NF_MATCH_RPFILTER=y +CONFIG_IP_NF_MATCH_TTL=y +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_TARGET_REJECT=y +# CONFIG_IP_NF_TARGET_SYNPROXY is not set +CONFIG_IP_NF_NAT=y +CONFIG_IP_NF_TARGET_MASQUERADE=y +CONFIG_IP_NF_TARGET_NETMAP=y +CONFIG_IP_NF_TARGET_REDIRECT=y +CONFIG_IP_NF_MANGLE=y +# CONFIG_IP_NF_TARGET_CLUSTERIP is not set +# CONFIG_IP_NF_TARGET_ECN is not set +# CONFIG_IP_NF_TARGET_TTL is not set +CONFIG_IP_NF_RAW=y +CONFIG_IP_NF_SECURITY=y +CONFIG_IP_NF_ARPTABLES=y +CONFIG_IP_NF_ARPFILTER=y +CONFIG_IP_NF_ARP_MANGLE=y + +# +# IPv6: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV6=y +CONFIG_NF_CONNTRACK_IPV6=y +CONFIG_NF_REJECT_IPV6=y +# CONFIG_NF_LOG_IPV6 is not set +# CONFIG_NF_NAT_IPV6 is not set +CONFIG_IP6_NF_IPTABLES=y +# CONFIG_IP6_NF_MATCH_AH is not set +# CONFIG_IP6_NF_MATCH_EUI64 is not set +# CONFIG_IP6_NF_MATCH_FRAG is not set +# CONFIG_IP6_NF_MATCH_OPTS is not set +# CONFIG_IP6_NF_MATCH_HL is not set +# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set +# CONFIG_IP6_NF_MATCH_MH is not set +CONFIG_IP6_NF_MATCH_RPFILTER=y +# CONFIG_IP6_NF_MATCH_RT is not set +# CONFIG_IP6_NF_TARGET_HL is not set +CONFIG_IP6_NF_FILTER=y +CONFIG_IP6_NF_TARGET_REJECT=y +# CONFIG_IP6_NF_TARGET_SYNPROXY is not set +CONFIG_IP6_NF_MANGLE=y +CONFIG_IP6_NF_RAW=y +# CONFIG_IP6_NF_SECURITY is not set +# CONFIG_IP6_NF_NAT is not set +CONFIG_BRIDGE_NF_EBTABLES=y +CONFIG_BRIDGE_EBT_BROUTE=y +# CONFIG_BRIDGE_EBT_T_FILTER is not set +# CONFIG_BRIDGE_EBT_T_NAT is not set +# CONFIG_BRIDGE_EBT_802_3 is not set +# CONFIG_BRIDGE_EBT_AMONG is not set +# CONFIG_BRIDGE_EBT_ARP is not set +# CONFIG_BRIDGE_EBT_IP is not set +# CONFIG_BRIDGE_EBT_IP6 is not set +# CONFIG_BRIDGE_EBT_LIMIT is not set +# CONFIG_BRIDGE_EBT_MARK is not set +# CONFIG_BRIDGE_EBT_PKTTYPE is not set +# CONFIG_BRIDGE_EBT_STP is not set +# CONFIG_BRIDGE_EBT_VLAN is not set +# CONFIG_BRIDGE_EBT_ARPREPLY is not set +# CONFIG_BRIDGE_EBT_DNAT is not set +# CONFIG_BRIDGE_EBT_MARK_T is not set +# CONFIG_BRIDGE_EBT_REDIRECT is not set +# CONFIG_BRIDGE_EBT_SNAT is not set +# CONFIG_BRIDGE_EBT_LOG is not set +# CONFIG_BRIDGE_EBT_NFLOG is not set +# 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=y +CONFIG_L2TP_DEBUGFS=y +CONFIG_L2TP_V3=y +CONFIG_L2TP_IP=y +CONFIG_L2TP_ETH=y +CONFIG_STP=y +CONFIG_BRIDGE=y +CONFIG_BRIDGE_IGMP_SNOOPING=y +# CONFIG_BRIDGE_VLAN_FILTERING is not set +CONFIG_HAVE_NET_DSA=y +CONFIG_VLAN_8021Q=y +# CONFIG_VLAN_8021Q_GVRP is not set +# CONFIG_VLAN_8021Q_MVRP is not set +# CONFIG_DECNET is not set +CONFIG_LLC=y +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_PHONET is not set +# CONFIG_6LOWPAN is not set +# CONFIG_IEEE802154 is not set +CONFIG_NET_SCHED=y + +# +# Queueing/Scheduling +# +# CONFIG_NET_SCH_CBQ is not set +CONFIG_NET_SCH_HTB=y +# CONFIG_NET_SCH_HFSC is not set +CONFIG_NET_SCH_PRIO=y +CONFIG_NET_SCH_MULTIQ=y +# CONFIG_NET_SCH_RED is not set +# CONFIG_NET_SCH_SFB is not set +# CONFIG_NET_SCH_SFQ is not set +# CONFIG_NET_SCH_TEQL is not set +# CONFIG_NET_SCH_TBF is not set +# CONFIG_NET_SCH_GRED is not set +# CONFIG_NET_SCH_DSMARK is not set +# CONFIG_NET_SCH_NETEM is not set +# CONFIG_NET_SCH_DRR is not set +# CONFIG_NET_SCH_MQPRIO is not set +# CONFIG_NET_SCH_CHOKE is not set +# CONFIG_NET_SCH_QFQ is not set +# CONFIG_NET_SCH_CODEL is not set +# CONFIG_NET_SCH_FQ_CODEL is not set +# CONFIG_NET_SCH_FQ is not set +# CONFIG_NET_SCH_HHF is not set +# CONFIG_NET_SCH_PIE is not set +CONFIG_NET_SCH_INGRESS=y +# CONFIG_NET_SCH_PLUG is not set + +# +# Classification +# +CONFIG_NET_CLS=y +# CONFIG_NET_CLS_BASIC is not set +# CONFIG_NET_CLS_TCINDEX is not set +# CONFIG_NET_CLS_ROUTE4 is not set +CONFIG_NET_CLS_FW=y +CONFIG_NET_CLS_U32=y +# CONFIG_CLS_U32_PERF is not set +CONFIG_CLS_U32_MARK=y +# CONFIG_NET_CLS_RSVP is not set +# CONFIG_NET_CLS_RSVP6 is not set +CONFIG_NET_CLS_FLOW=y +# CONFIG_NET_CLS_CGROUP is not set +# CONFIG_NET_CLS_BPF is not set +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_CMP=y +CONFIG_NET_EMATCH_NBYTE=y +CONFIG_NET_EMATCH_U32=y +CONFIG_NET_EMATCH_META=y +CONFIG_NET_EMATCH_TEXT=y +CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=y +# CONFIG_NET_ACT_GACT is not set +CONFIG_NET_ACT_MIRRED=y +CONFIG_NET_ACT_IPT=y +# CONFIG_NET_ACT_NAT is not set +# CONFIG_NET_ACT_PEDIT is not set +# CONFIG_NET_ACT_SIMP is not set +# CONFIG_NET_ACT_SKBEDIT is not set +# CONFIG_NET_ACT_CSUM is not set +CONFIG_NET_CLS_IND=y +CONFIG_NET_SCH_FIFO=y +# CONFIG_DCB is not set +# CONFIG_DNS_RESOLVER is not set +# CONFIG_BATMAN_ADV is not set +# CONFIG_OPENVSWITCH is not set +# CONFIG_VSOCKETS is not set +# CONFIG_NETLINK_DIAG is not set +# CONFIG_NET_MPLS_GSO is not set +# CONFIG_HSR 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_NET_FLOW_LIMIT=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_CAN is not set +# CONFIG_IRDA is not set +# CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set +CONFIG_FIB_RULES=y +CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PROC=y +CONFIG_WEXT_PRIV=y +CONFIG_CFG80211=y +CONFIG_NL80211_TESTMODE=y +CONFIG_CFG80211_DEVELOPER_WARNINGS=y +# CONFIG_CFG80211_REG_DEBUG is not set +# CONFIG_CFG80211_CERTIFICATION_ONUS is not set +# CONFIG_CFG80211_DEFAULT_PS is not set +# CONFIG_CFG80211_DEBUGFS is not set +CONFIG_CFG80211_INTERNAL_REGDB=y +# CONFIG_CFG80211_WEXT is not set +# CONFIG_LIB80211 is not set +# CONFIG_MAC80211 is not set +# CONFIG_WIMAX is not set +# CONFIG_RFKILL is not set +# CONFIG_RFKILL_REGULATOR 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_HAVE_BPF_JIT=y + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER=y +CONFIG_UEVENT_HELPER_PATH="" +CONFIG_DEVTMPFS=y +# CONFIG_DEVTMPFS_MOUNT is not set +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +# CONFIG_FW_CACHE is not set +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_EXTRA_FIRMWARE="" +CONFIG_FW_LOADER_USER_HELPER=y +CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y +CONFIG_ALLOW_DEV_COREDUMP=y +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_SYS_HYPERVISOR is not set +# CONFIG_GENERIC_CPU_DEVICES is not set +CONFIG_GENERIC_CPU_AUTOPROBE=y +CONFIG_REGMAP=y +CONFIG_REGMAP_I2C=y +CONFIG_REGMAP_SPI=y +CONFIG_REGMAP_MMIO=y +CONFIG_DMA_SHARED_BUFFER=y +# CONFIG_FENCE_TRACE is not set + +# +# Bus devices +# +# CONFIG_ARM_CCN is not set +# CONFIG_VEXPRESS_CONFIG is not set +# CONFIG_CONNECTOR is not set +CONFIG_MTD=y +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_CMDLINE_PARTS is not set +CONFIG_MTD_OF_PARTS=y +# CONFIG_MTD_AR7_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_SM_FTL is not set +# CONFIG_MTD_OOPS is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_SST25L is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOCG3 is not set +CONFIG_MTD_NAND_IDS=y +# CONFIG_MTD_NAND is not set +# CONFIG_MTD_ONENAND is not set + +# +# LPDDR & LPDDR2 PCM memory drivers +# +# CONFIG_MTD_LPDDR is not set +# CONFIG_MTD_SPI_NOR is not set +# CONFIG_MTD_UBI is not set +CONFIG_DTC=y +CONFIG_OF=y + +# +# Device Tree and Open Firmware support +# +# CONFIG_OF_SELFTEST is not set +CONFIG_OF_FLATTREE=y +CONFIG_OF_EARLY_FLATTREE=y +CONFIG_OF_ADDRESS=y +CONFIG_OF_IRQ=y +CONFIG_OF_NET=y +CONFIG_OF_MTD=y +CONFIG_OF_RESERVED_MEM=y +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_NULL_BLK is not set +# CONFIG_ZRAM is not set +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +# CONFIG_BLK_DEV_CRYPTOLOOP 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 + +# +# Misc devices +# +# CONFIG_SENSORS_LIS3LV02D is not set +# CONFIG_AD525X_DPOT is not set +# CONFIG_DUMMY_IRQ is not set +# CONFIG_ICS932S401 is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_APDS9802ALS is not set +# CONFIG_ISL29003 is not set +# CONFIG_ISL29020 is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_SENSORS_BH1780 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_TI_DAC7512 is not set +CONFIG_UID_STAT=y +# CONFIG_BMP085_I2C is not set +# CONFIG_BMP085_SPI is not set +# CONFIG_USB_SWITCH_FSA9480 is not set +# CONFIG_LATTICE_ECP3_CONFIG is not set +# CONFIG_SRAM is not set +CONFIG_UID_SYS_STATS=y +CONFIG_POCKETMOD=y +# CONFIG_UID_SYS_STATS_DEBUG is not set +CONFIG_MEMORY_STATE_TIME=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 + +# +# 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 + +# +# Altera FPGA firmware download module +# +# CONFIG_ALTERA_STAPL is not set + +# +# Intel MIC Bus Driver +# + +# +# Intel MIC Host Driver +# + +# +# Intel MIC Card Driver +# +# CONFIG_ECHO is not set +# CONFIG_CXL_BASE is not set +CONFIG_MEDIATEK_SOLUTION=y +CONFIG_MTK_PLATFORM="mt6735" +CONFIG_ARCH_MTK_PROJECT="k06td_a" +# CONFIG_MTK_LEGACY is not set +# CONFIG_MTK_INTERNAL is not set +# CONFIG_FPGA_EARLY_PORTING is not set +# CONFIG_MTK_LM_MODE is not set +CONFIG_MTK_MEM=y +# CONFIG_MTK_MEMCFG is not set +# CONFIG_MTK_MEMORY_LOWPOWER is not set +CONFIG_MTK_BASE_POWER=y +CONFIG_MTK_POWER_GS=y +CONFIG_MTK_SHARED_SDCARD=y +CONFIG_MTK_GPT_SCHEME_SUPPORT=y +CONFIG_MTK_SENSOR_SUPPORT=y +CONFIG_CUSTOM_KERNEL_IMGSENSOR="s5k5e2ya_mipi_raw_k506 ar1335_mipi_raw_k506 gc2355_mipi_raw_k506" +# CONFIG_MT_ENG_BUILD is not set +# CONFIG_MTK_LDVT is not set +# CONFIG_MTK_LCM_PHYSICAL_ROTATION_HW is not set +# CONFIG_TABLET_PROJECT is not set +# CONFIG_MTK_GPT_COMMON is not set +CONFIG_MTK_SERIAL=y +CONFIG_MTK_SERIAL_CONSOLE=y +# CONFIG_MTK_SERIAL_MODEM_TEST is not set +# CONFIG_MTK_IRTX_SUPPORT is not set +# CONFIG_MTK_IRTX_PWM_SUPPORT is not set +# CONFIG_MTK_IR_LEARNING_SUPPORT is not set +# CONFIG_MTK_IRQ is not set +CONFIG_MTK_AUXADC=y +CONFIG_MTK_VIDEOCODEC_DRIVER=y +CONFIG_MTK_M4U=y +CONFIG_MTK_I2C=y +CONFIG_MTK_I2C_EXTENSION=y +CONFIG_MTK_LEDS=y +CONFIG_LIGHTNESS_MAPPING_VALUE=255 +# CONFIG_TB8173_EVB is not set +CONFIG_MTK_VIBRATOR=y +CONFIG_MTK_JPEG=y +CONFIG_MTK_PMIC=y +# CONFIG_MTK_BQ25896_SUPPORT is not set +# CONFIG_MTK_SWITCH_INPUT_OUTPUT_CURRENT_SUPPORT is not set +# CONFIG_MTK_BIF_SUPPORT is not set +# CONFIG_MTK_DYNAMIC_BAT_CV_SUPPORT is not set +# CONFIG_PWR_LOSS_MTK_TEST is not set +CONFIG_MTK_PMIC_WRAP=y +CONFIG_MTK_SYSENV=y +CONFIG_MTPROF=y +CONFIG_MTK_LOCK_DEBUG=y +# CONFIG_MTPROF_CPUTIME is not set +# CONFIG_MTK_WQ_DEBUG is not set +# CONFIG_MT_SCHED_MONITOR is not set +# CONFIG_MT_RT_THROTTLE_MON is not set +# CONFIG_PREEMPT_MONITOR is not set +CONFIG_PRINTK_PROCESS_INFO=y +# CONFIG_MT_PRINTK_UART_CONSOLE is not set +CONFIG_LOG_TOO_MUCH_WARNING=y +CONFIG_LOG_TOO_MUCH_DETECT_COUNT=0xC8 +CONFIG_LOG_TOO_MUCH_DETECT_GAP=10 +CONFIG_MT_BOOT_TIME_CPU_BOOST=y +CONFIG_USB_MTK_HDRC=y +CONFIG_MTK_MUSB_QMU_SUPPORT=y +CONFIG_USB_MTK_OTG=y +# CONFIG_MTK_UART_USB_SWITCH is not set +# CONFIG_MTK_MUSB_CARPLAY_SUPPORT is not set +# CONFIG_MTK_MUSB_SW_WITCH_MODE is not set +# CONFIG_USB_MTK_OTG_SWITCH is not set +# CONFIG_MTK_USBFSH is not set +# CONFIG_MTK_ICUSB_SUPPORT is not set +# CONFIG_MTK_DT_USB_SUPPORT is not set +# CONFIG_USBIF_COMPLIANCE is not set +# CONFIG_USB_MU3D_PIO_ONLY is not set +# CONFIG_USB_MU3D_DRV is not set +# CONFIG_USB_MU3D_DVT is not set +# CONFIG_MU3_PHY is not set +CONFIG_MTK_GPIO=y +# CONFIG_MTK_MT6306_SUPPORT is not set +CONFIG_MTK_CMDQ=y +# CONFIG_MTK_CMDQ_TAB is not set +# CONFIG_MTK_CMDQ_MT2701 is not set +CONFIG_MTK_SMI_EXT=y +# CONFIG_MTK_SMI_VARIANT is not set +CONFIG_MTK_CLKMGR=y +# CONFIG_MTK_DISABLE_SODI is not set +CONFIG_MTK_BOOT=y +CONFIG_MTK_BOOT_REASON=y +CONFIG_MTK_CHIP=y +CONFIG_MTK_CCCI_DEVICES=y +CONFIG_MTK_ENABLE_MD1=y +CONFIG_MTK_MD1_SUPPORT=5 +CONFIG_MD1_SIZE=0x5000000 +CONFIG_MD1_SMEM_SIZE=0x200000 +# CONFIG_MTK_ENABLE_MD2 is not set +CONFIG_MTK_MD_SBP_CUSTOM_VALUE="" +CONFIG_MTK_MD2_SBP_CUSTOM_VALUE="" +CONFIG_MTK_NET_CCMNI=y +# CONFIG_MTK_IRAT_SUPPORT is not set +# CONFIG_MTK_CCCI_EXT is not set +# CONFIG_MTK_CCCI_DRIVER is not set +CONFIG_MTK_ECCCI_DRIVER=y +CONFIG_MTK_ECCCI_CLDMA=y +# CONFIG_MTK_ECCCI_CCIF is not set +# CONFIG_MTK_ECCCI_C2K is not set +# CONFIG_MTK_ECCCI_UT is not set +# CONFIG_MTK_C2K_SUPPORT is not set +# CONFIG_MTK_C2K_OM_SOLUTION1 is not set +# CONFIG_MTK_SIM_LOCK_POWER_ON_WRITE_PROTECT is not set +CONFIG_CUSTOM_KERNEL_SSW="ssw_single_v2" +CONFIG_MTK_DEVAPC_DRIVER=y +CONFIG_MTK_DEVINFO_DRIVER=y +CONFIG_MTK_GPU_SUPPORT=y +CONFIG_MTK_GPU_VERSION="mali midgard r18p0" +CONFIG_MTK_GPU_COMMON_DVFS_SUPPORT=y +# CONFIG_MTK_GPU_R5P0 is not set +# CONFIG_MTK_GPU_SAPPHIRE_LITE is not set +# CONFIG_SW_SYNC64 is not set +# CONFIG_MTK_GPU_SPM_DVFS_SUPPORT is not set +CONFIG_MTK_MMPROFILE_SUPPORT=y +CONFIG_MMPROFILE=y +CONFIG_MTK_LCM=y +CONFIG_CUSTOM_KERNEL_LCM="boyi_otm1287_hd720_dsi_vdo lide_rm68200_hd720_dsi_vdo" +# CONFIG_MTK_LCM_DEVICE_TREE_SUPPORT is not set +CONFIG_MTK_FB=y +CONFIG_MTK_VIDEOX=y +CONFIG_MTK_VIDEOX_CYNGN_LIVEDISPLAY=y +CONFIG_MTK_LCM_PHYSICAL_ROTATION="0" +CONFIG_LCM_HEIGHT="1280" +CONFIG_LCM_WIDTH="720" +CONFIG_CUSTOM_LCM_X="0" +CONFIG_CUSTOM_LCM_Y="0" +CONFIG_MTK_FB_SUPPORT_ASSERTION_LAYER=y +CONFIG_MTK_AAL_SUPPORT=y +# CONFIG_MTK_OD_SUPPORT is not set +# CONFIG_SINGLE_PANEL_OUTPUT is not set +# CONFIG_MTK_OVERLAY_ENGINE_SUPPORT is not set +# CONFIG_MTK_CONSUMER_PARTIAL_UPDATE_SUPPORT is not set +CONFIG_MTK_PQ_COLOR_MODE="DISP" +# CONFIG_MTK_CQDMA is not set +CONFIG_MTK_DRAMC=y +CONFIG_MTK_SYNC=y +CONFIG_MTK_PWM=y +# CONFIG_MTK_AUTO_DETECT_ACCELEROMETER is not set +CONFIG_CUSTOM_KERNEL_ACCELEROMETER=y +CONFIG_MTK_BMA222E_NEW=y +# CONFIG_BMA222_LOWPASS is not set +# CONFIG_CUSTOM_KERNEL_SENSORHUB is not set +CONFIG_CUSTOM_KERNEL_ALSPS=y +# CONFIG_MTK_AUTO_DETECT_ALSPS is not set +CONFIG_MTK_AP3XX6=y +# CONFIG_CUSTOM_KERNEL_GYROSCOPE is not set +# CONFIG_MTK_ITG1010_NEW is not set +# CONFIG_MTK_MPU6050GY_NEW is not set +# CONFIG_MTK_MPU6515G is not set +# CONFIG_MTK_ICM20645GY is not set +# CONFIG_MTK_AUTO_DETECT_MAGNETOMETER is not set +# CONFIG_CUSTOM_KERNEL_MAGNETOMETER is not set +# CONFIG_MTK_AKM09911_NEW is not set +# CONFIG_MTK_AKM09912 is not set +# CONFIG_MTK_S62X is not set +# CONFIG_MTK_YAS532_NEW is not set +CONFIG_MTK_HWMON=y +# CONFIG_CUSTOM_KERNEL_BAROMETER is not set +# CONFIG_MTK_BMP180 is not set +# CONFIG_MTK_BMP180_NEW is not set +# CONFIG_MTK_BMP280 is not set +# CONFIG_MTK_BMP280_NEW is not set +# CONFIG_CUSTOM_KERNEL_HUMIDITY is not set +# CONFIG_MTK_HTS221 is not set +# CONFIG_CUSTOM_KERNEL_ACTIVITY_SENSOR is not set +# CONFIG_CUSTOM_KERNEL_FACE_DOWN_SENSOR is not set +# CONFIG_CUSTOM_KERNEL_GRV_SENSOR is not set +# CONFIG_CUSTOM_KERNEL_GMRV_SENSOR is not set +# CONFIG_CUSTOM_KERNEL_GLANCE_GESTURE_SENSOR is not set +# CONFIG_CUSTOM_KERNEL_GRAVITY_SENSOR is not set +# CONFIG_CUSTOM_KERNEL_HEART_RATE_SENSOR is not set +# CONFIG_CUSTOM_KERNEL_HEART is not set +# CONFIG_CUSTOM_KERNEL_IN_POCKET_SENSOR is not set +# CONFIG_CUSTOM_KERNEL_LINEARACCEL_SENSOR is not set +# CONFIG_CUSTOM_KERNEL_PEDOMETER is not set +# CONFIG_CUSTOM_KERNEL_PICK_UP_SENSOR is not set +# CONFIG_CUSTOM_KERNEL_RV_SENSOR is not set +# CONFIG_CUSTOM_KERNEL_SHAKE_SENSOR is not set +# CONFIG_CUSTOM_KERNEL_STEP_COUNTER is not set +# CONFIG_CUSTOM_KERNEL_SIGNIFICANT_MOTION_SENSOR is not set +# CONFIG_CUSTOM_KERNEL_TILT_DETECTOR_SENSOR is not set +# CONFIG_CUSTOM_KERNEL_WAKE_GESTURE_SENSOR is not set +# CONFIG_CUSTOM_KERNEL_PDR_SENSOR is not set +# CONFIG_CUSTOM_KERNEL_FREEFALL_SENSOR is not set +# CONFIG_MTK_SCP_SENSORHUB is not set +# CONFIG_TRUSTONIC_TEE_SUPPORT is not set +# CONFIG_MT_TRUSTONIC_TEE_DEBUGFS is not set +# CONFIG_MICROTRUST_TEE_SUPPORT is not set +CONFIG_MTK_FREQ_HOPPING=y +CONFIG_MTK_SYS_CIRQ=y +CONFIG_MTK_ACCDET=y +CONFIG_ACCDET_EINT=y +# CONFIG_ACCDET_EINT_IRQ is not set +# CONFIG_ACCDET_PIN_SWAP is not set +# CONFIG_ACCDET_PIN_RECOGNIZATION is not set +# CONFIG_FOUR_KEY_HEADSET is not set +# CONFIG_HEADSET_SUPPORT_FIVE_POLE is not set +# CONFIG_TS3A225E_ACCDET is not set +CONFIG_MTK_SECURITY_SW_SUPPORT=y +CONFIG_MTK_SEC_MODEM_NVRAM_ANTI_CLONE=y +CONFIG_MTK_DEBUG_LATCH=y +CONFIG_MTK_LASTPC=y +# CONFIG_MTK_LASTBUS is not set +CONFIG_MTK_WATCHPOINT=y +CONFIG_MTK_SYSTRACKER=y +# CONFIG_MTK_SYSTRACKER_V2 is not set +CONFIG_MTK_RAM_CONSOLE=y +# CONFIG_MTK_RAM_CONSOLE_USING_SRAM is not set +CONFIG_MTK_RAM_CONSOLE_USING_DRAM=y +CONFIG_MTK_RAM_CONSOLE_SIZE=0x3000 +CONFIG_MTK_RAM_CONSOLE_ADDR=0xF912D000 +CONFIG_MTK_RAM_CONSOLE_DRAM_SIZE=0x10000 +CONFIG_MTK_RAM_CONSOLE_DRAM_ADDR=0x43F00000 +# CONFIG_HAVE_XLOG_SUPPORT is not set + +# +# MTK runqueue statistic calculation and CPU affinity +# +CONFIG_MTK_SCHED_RQAVG_KS=y +CONFIG_MTK_SCHED_RQAVG_US=y +CONFIG_MT_CPU_AFFINITY=y + +# +# MT load balance and schedule enhancement +# +CONFIG_MT_LOAD_BALANCE_ENHANCEMENT=y +CONFIG_MTK_COMPAT=y +CONFIG_MT_SCHED_INTEROP=y +# CONFIG_MT_SCHED_TRACE is not set +# CONFIG_MT_DEBUG_PREEMPT is not set + +# +# MTK Cluster MultiProcessor Scheduler +# +CONFIG_MTK_CPU_TOPOLOGY=y +CONFIG_MTK_SCHED_CMP=y +CONFIG_MTK_SCHED_CMP_TGS=y +CONFIG_MTK_SCHED_CMP_TGS_WAKEUP=y + +# +# MTK Heterogenous MultiProcessor Scheduler +# +# CONFIG_DISABLE_CPU_SCHED_DOMAIN_BALANCE is not set +# CONFIG_SCHED_HMP is not set +# CONFIG_SCHED_HMP_PRIO_FILTER is not set +# CONFIG_HMP_FREQUENCY_INVARIANT_SCALE is not set +# CONFIG_HMP_TRACER is not set + +# +# MTK CPU boost mechanism +# +# CONFIG_MTK_DYNAMIC_BOOST is not set +# CONFIG_HAVE_MTK_IN_HOUSE_TEE_SUPPORT is not set +CONFIG_MTK_IMGSENSOR=y +# CONFIG_MTK_EFUSE_DOWNGRADE is not set +# CONFIG_MTK_MULTIBRIDGE_SUPPORT is not set +CONFIG_MTK_BTIF=y +CONFIG_MTK_COMBO=y +# CONFIG_MTK_COMBO_CHIP_MT6620 is not set +# CONFIG_MTK_COMBO_CHIP_MT6628 is not set +# CONFIG_MTK_COMBO_CHIP_MT6630 is not set +# CONFIG_MTK_COMBO_CHIP_MT6632 is not set +# CONFIG_MTK_COMBO_CHIP_CONSYS_6572 is not set +# CONFIG_MTK_COMBO_CHIP_CONSYS_6582 is not set +# CONFIG_MTK_COMBO_CHIP_CONSYS_8127 is not set +# CONFIG_MTK_COMBO_CHIP_CONSYS_7623 is not set +# CONFIG_MTK_COMBO_CHIP_CONSYS_6752 is not set +# CONFIG_MTK_COMBO_CHIP_CONSYS_6592 is not set +# CONFIG_MTK_COMBO_CHIP_CONSYS_8163 is not set +CONFIG_MTK_COMBO_CHIP_CONSYS_6735=y +# CONFIG_MTK_COMBO_CHIP_CONSYS_6755 is not set +# CONFIG_MTK_COMBO_CHIP_CONSYS_6757 is not set +# CONFIG_MTK_COMBO_CHIP_CONSYS_6580 is not set +# CONFIG_MTK_COMBO_CHIP_CONSYS_6570 is not set +# CONFIG_MTK_COMBO_CHIP_CONSYS_6797 is not set +CONFIG_MTK_COMBO_CHIP="CONSYS_6735" +CONFIG_MTK_COMBO_PLAT_PATH="" +# CONFIG_MTK_COMBO_COMM is not set +CONFIG_MTK_COMBO_BT=y +# CONFIG_MTK_COMBO_ANT is not set +CONFIG_MTK_COMBO_GPS=y +CONFIG_MTK_COMBO_WIFI=y +CONFIG_MTK_WAPI_SUPPORT=y +CONFIG_MTK_PASSPOINT_R1_SUPPORT=y +# CONFIG_MTK_PASSPOINT_R2_SUPPORT is not set +CONFIG_MTK_WIFI_MCC_SUPPORT=y +CONFIG_MTK_CONN_LTE_IDC_SUPPORT=y +CONFIG_GPS=y +CONFIG_MTK_GPS=y +CONFIG_MTK_GPS_SUPPORT=y +# CONFIG_MTK_GPS_REGISTER_SETTING is not set +# CONFIG_MTK_GPS_EMI is not set +CONFIG_MTK_FMRADIO=y +CONFIG_MTK_FM_CHIP="MT6625_FM" +# CONFIG_MTK_FM_50KHZ_SUPPORT is not set +# CONFIG_MTK_MERGE_INTERFACE_SUPPORT is not set +CONFIG_MTK_AOSP_TETHERING=y +CONFIG_MTK_CONN_MD=y +# CONFIG_MTK_NFC is not set +CONFIG_MTK_LENS=y +CONFIG_MTK_LENS_DUMMYLENS_SUPPORT=y +# CONFIG_MTK_LENS_BU63165AF_SUPPORT is not set +# CONFIG_MTK_LENS_AD5820AF_SUPPORT is not set +# CONFIG_MTK_LENS_AD5823_SUPPORT is not set +# CONFIG_MTK_LENS_AD5823AF_SUPPORT is not set +# CONFIG_MTK_LENS_AK7345AF_SUPPORT is not set +# CONFIG_MTK_LENS_BU6424AF_SUPPORT is not set +# CONFIG_MTK_LENS_BU6429AF_SUPPORT is not set +# CONFIG_MTK_LENS_BU64745GWZAF_SUPPORT is not set +CONFIG_MTK_LENS_DW9718AF_SUPPORT=y +CONFIG_MTK_LENS_DW9714AF_SUPPORT=y +# CONFIG_MTK_LENS_DW9761AF_SUPPORT is not set +# CONFIG_MTK_LENS_DW9714A_SUPPORT is not set +# CONFIG_MTK_LENS_DW9814AF_SUPPORT is not set +# CONFIG_MTK_LENS_LC898122AF_SUPPORT is not set +# CONFIG_MTK_LENS_LC898212AF_SUPPORT is not set +# CONFIG_MTK_LENS_LC898212XDAF_SUPPORT is not set +# CONFIG_MTK_LENS_FM50AF_SUPPORT is not set +# CONFIG_MTK_LENS_MT9P017AF_SUPPORT is not set +# CONFIG_MTK_LENS_OV8825AF_SUPPORT is not set +# CONFIG_MTK_LENS_SENSORDRIVE_SUPPORT is not set +# CONFIG_MTK_LENS_GAF001AF_SUPPORT is not set +# CONFIG_MTK_LENS_GAF002AF_SUPPORT is not set +# CONFIG_MTK_LENS_GAF008AF_SUPPORT is not set +# CONFIG_MTK_LENS_WV511AAF_SUPPORT is not set +# CONFIG_MTK_LASER is not set +# CONFIG_MTK_LASER_STMVL6180_SUPPORT is not set +# CONFIG_MTK_LASER_STMVL53L0_SUPPORT is not set +CONFIG_MTK_FLASHLIGHT=y +CONFIG_CUSTOM_KERNEL_FLASHLIGHT="constant_flashlight" +# CONFIG_MTK_AEE_FEATURE is not set +# CONFIG_MTK_AEE_AED is not set +# CONFIG_MTK_AEE_IPANIC is not set +# CONFIG_MTK_AEE_POWERKEY_HANG_DETECT is not set +# CONFIG_MTK_AEE_MRDUMP is not set +CONFIG_MTK_THERMAL_PA_VIA_ATCMD=y +CONFIG_MTK_RTC=y +# CONFIG_MTK_ATF_LOGGER is not set +# CONFIG_SSUSB_DRV is not set +# CONFIG_SSUSB_MU3_PHY is not set +# CONFIG_SSUSB_MTK_XHCI is not set +# CONFIG_SSUSB_MTK_TEST_XHCI is not set +# CONFIG_MTK_MLOG is not set +CONFIG_MTK_EMI_BWL=y +# CONFIG_MTK_EMI_D1P is not set +# CONFIG_MTK_EMI_D2P is not set +CONFIG_MTK_EMI_MPU=y +# CONFIG_MTK_MJC_DRIVER is not set +CONFIG_MTK_EMI_MBW=y +CONFIG_MTK_BTCVSD=y +# CONFIG_MTK_DUM_CHAR is not set +# CONFIG_DUM_CHAR_V2 is not set +CONFIG_CUSTOM_KERNEL_HDMI="" +# CONFIG_MTK_HDMI_SUPPORT is not set +# CONFIG_USB_XHCI_MTK is not set +# CONFIG_USB_MTK_DUALMODE is not set +# CONFIG_MTK_OTG_PMIC_BOOST_5V is not set +# CONFIG_MTK_OTG_OC_DETECTOR is not set +# CONFIG_MTK_ICE_DEUBG is not set +# CONFIG_MTK_PERFMGR_TOUCH_BOOST is not set +# CONFIG_MTK_GIC_V3_EXT is not set +# CONFIG_MTK_TINYSYS_SCP_SUPPORT is not set +# CONFIG_MTK_RRC is not set +# CONFIG_MTK_SELINUX_AEE_WARNING is not set +# CONFIG_USB_C_SWITCH is not set +# CONFIG_USB_C_SWITCH_FUSB302 is not set +# CONFIG_USB_C_SWITCH_SII70XX is not set +# CONFIG_USB_C_SWITCH_ANX7418 is not set + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_NETLINK is not set +# CONFIG_SCSI_MQ_DEFAULT is not set +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_CHR_DEV_SG is not set +# CONFIG_CHR_DEV_SCH is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +CONFIG_SCSI_SCAN_ASYNC=y + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# CONFIG_SCSI_SRP_ATTRS is not set +# CONFIG_SCSI_LOWLEVEL is not set +# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set +# CONFIG_SCSI_DH is not set +# CONFIG_SCSI_OSD_INITIATOR is not set +CONFIG_HAVE_PATA_PLATFORM=y +# 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_BUFIO=y +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_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=y +# CONFIG_DM_FLAKEY is not set +CONFIG_DM_VERITY=y +# CONFIG_DM_VERITY_HASH_PREFETCH_MIN_SIZE_128 is not set +CONFIG_DM_VERITY_HASH_PREFETCH_MIN_SIZE=1 +CONFIG_DM_VERITY_FEC=y +# CONFIG_DM_SWITCH is not set +# CONFIG_DM_LOG_WRITES 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_IFB=y +# CONFIG_NET_TEAM is not set +# CONFIG_MACVLAN is not set +# CONFIG_VXLAN is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set +CONFIG_TUN=y +# CONFIG_VETH is not set +# CONFIG_NLMON is not set + +# +# CAIF transport drivers +# + +# +# Distributed Switch Architecture drivers +# +# CONFIG_NET_DSA_MV88E6XXX is not set +# CONFIG_NET_DSA_MV88E6060 is not set +# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set +# CONFIG_NET_DSA_MV88E6131 is not set +# CONFIG_NET_DSA_MV88E6123_61_65 is not set +# CONFIG_NET_DSA_MV88E6171 is not set +# CONFIG_NET_DSA_BCM_SF2 is not set +# CONFIG_ETHERNET 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_PPPOL2TP=y +CONFIG_PPPOLAC=y +CONFIG_PPPOPNS=y +CONFIG_PPP_ASYNC=y +CONFIG_PPP_SYNC_TTY=y +# CONFIG_SLIP is not set +CONFIG_SLHC=y +CONFIG_USB_NET_DRIVERS=y +# CONFIG_USB_CATC is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_RTL8152 is not set +# CONFIG_USB_USBNET is not set +# CONFIG_USB_IPHETH is not set +CONFIG_WLAN=y +# CONFIG_USB_ZD1201 is not set +# CONFIG_USB_NET_RNDIS_WLAN is not set +# CONFIG_ATH_CARDS is not set +# CONFIG_BRCMFMAC is not set +# CONFIG_HOSTAP is not set +# CONFIG_LIBERTAS is not set +# CONFIG_WL_TI is not set +# CONFIG_MWIFIEX is not set + +# +# Enable WiMAX (Networking options) to see the WiMAX drivers +# +# CONFIG_WAN is not set +# CONFIG_ISDN is not set + +# +# Input device support +# +CONFIG_INPUT=y +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_POLLDEV is not set +# CONFIG_INPUT_SPARSEKMAP is not set +# CONFIG_INPUT_MATRIXKMAP is not set + +# +# Userland interfaces +# +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_JOYDEV is not set +CONFIG_INPUT_EVDEV=y +# CONFIG_INPUT_EVBUG is not set +# CONFIG_INPUT_KEYRESET is not set +# CONFIG_INPUT_KEYCOMBO is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +# 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_LKKBD is not set +# CONFIG_KEYBOARD_GPIO is not set +# 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_OPENCORES is not set +# CONFIG_KEYBOARD_SAMSUNG is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_OMAP4 is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_CAP1106 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_OF_TOUCHSCREEN=y +# CONFIG_TOUCHSCREEN_ADS7846 is not set +# CONFIG_TOUCHSCREEN_AD7877 is not set +# CONFIG_TOUCHSCREEN_AD7879 is not set +# CONFIG_TOUCHSCREEN_AR1021_I2C is not set +# CONFIG_TOUCHSCREEN_ATMEL_MXT is not set +# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set +# CONFIG_TOUCHSCREEN_BU21013 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_FUJITSU is not set +# CONFIG_TOUCHSCREEN_ILI210X is not set +# CONFIG_TOUCHSCREEN_GUNZE 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_MTOUCH 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_USB_COMPOSITE is not set +# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set +# CONFIG_TOUCHSCREEN_TSC_SERIO is not set +# CONFIG_TOUCHSCREEN_TSC2005 is not set +# CONFIG_TOUCHSCREEN_TSC2007 is not set +# CONFIG_TOUCHSCREEN_ST1232 is not set +# CONFIG_TOUCHSCREEN_SUR40 is not set +# CONFIG_TOUCHSCREEN_TPS6507X is not set +# CONFIG_TOUCHSCREEN_ZFORCE is not set +CONFIG_TOUCHSCREEN_SMARTWAKE=y +CONFIG_TOUCHSCREEN_DOUBLETAP2WAKE=y +CONFIG_TOUCHSCREEN_PREVENT_SLEEP=y +CONFIG_TOUCHSCREEN_MTK=y +# CONFIG_TOUCHSCREEN_MTK_GT1151 is not set +# CONFIG_TOUCHSCREEN_MTK_GT928 is not set +# CONFIG_TOUCHSCREEN_MTK_GT9XXTB_HOTKNOT is not set +# CONFIG_TOUCHSCREEN_MTK_SYNAPTICS_I2C_RMI4 is not set +# CONFIG_TOUCHSCREEN_MTK_GT910 is not set +# CONFIG_TOUCHSCREEN_MTK_GT9XX_HOTKNOT_SCP is not set +# CONFIG_TOUCHSCREEN_MTK_GT911 is not set +# CONFIG_TOUCHSCREEN_MTK_FT5X0X is not set +CONFIG_TOUCHSCREEN_MTK_FT3327=y +CONFIG_TOUCHSCREEN_HIMAX_852XES=y +CONFIG_KEYBOARD_MTK=y +# CONFIG_KEYBOARD_HID is not set +# CONFIG_ONEKEY_REBOOT_NORMAL_MODE is not set +CONFIG_TWOKEY_REBOOT_NORMAL_MODE=y +# CONFIG_ONEKEY_REBOOT_OTHER_MODE is not set +CONFIG_TWOKEY_REBOOT_OTHER_MODE=y +CONFIG_KPD_PMIC_LPRST_TD=1 +# CONFIG_KPD_PWRKEY_USE_EINT is not set +CONFIG_KPD_PWRKEY_USE_PMIC=y +# CONFIG_MTK_MRDUMP_KEY is not set +CONFIG_INPUT_MISC=y +# CONFIG_INPUT_HALL_COVER is not set +# CONFIG_INPUT_AD714X is not set +# CONFIG_INPUT_BMA150 is not set +# CONFIG_INPUT_MMA8450 is not set +# CONFIG_INPUT_MPU3050 is not set +# CONFIG_INPUT_GP2A is not set +# CONFIG_INPUT_GPIO_BEEPER is not set +# CONFIG_INPUT_GPIO_TILT_POLLED is not set +# CONFIG_INPUT_ATI_REMOTE2 is not set +# CONFIG_INPUT_KEYCHORD 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_UINPUT=y +# CONFIG_INPUT_GPIO is not set +# 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_DRV260X_HAPTICS is not set +# CONFIG_INPUT_DRV2667_HAPTICS is not set +CONFIG_MTK_FINGERPRINT=y +CONFIG_MTK_ET310=y +# CONFIG_FINGERPRINT_BL229X is not set + +# +# Hardware I/O ports +# +# CONFIG_SERIO 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 is not set +CONFIG_UNIX98_PTYS=y +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set +# 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 is not set +# CONFIG_DEVKMEM is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_8250 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_MAX3100 is not set +# CONFIG_SERIAL_MAX310X 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_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_TTY_PRINTK is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_R3964 is not set + +# +# PCMCIA character devices +# +# 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 is not set +CONFIG_I2C_MUX=y + +# +# Multiplexer I2C Chip support +# +# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set +# CONFIG_I2C_MUX_GPIO is not set +# CONFIG_I2C_MUX_PCA9541 is not set +# CONFIG_I2C_MUX_PCA954x is not set +# CONFIG_I2C_MUX_PINCTRL is not set +CONFIG_I2C_HELPER_AUTO=y + +# +# 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_GPIO is not set +# CONFIG_I2C_NOMADIK is not set +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_PXA_PCI is not set +# CONFIG_I2C_RK3X is not set +# CONFIG_I2C_SIMTEC is not set +# 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_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y + +# +# SPI Master Controller Drivers +# +# CONFIG_SPI_ALTERA is not set +# CONFIG_SPI_BITBANG 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_PXA2XX_PCI is not set +# CONFIG_SPI_ROCKCHIP is not set +# CONFIG_SPI_SC18IS602 is not set +# CONFIG_SPI_XCOMM is not set +# CONFIG_SPI_XILINX is not set +# CONFIG_SPI_DESIGNWARE is not set + +# +# SPI Protocol Masters +# +# CONFIG_SPI_SPIDEV is not set +# CONFIG_SPI_TLE62X0 is not set +CONFIG_MTK_SPI=y +# CONFIG_SPMI is not set +# CONFIG_HSI is not set + +# +# PPS support +# +# CONFIG_PPS is not set + +# +# PPS generators support +# + +# +# PTP clock support +# +# CONFIG_PTP_1588_CLOCK is not set + +# +# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. +# +CONFIG_PINCTRL=y + +# +# Pin controllers +# +CONFIG_PINMUX=y +CONFIG_PINCONF=y +CONFIG_GENERIC_PINCONF=y +# CONFIG_DEBUG_PINCTRL is not set +# CONFIG_PINCTRL_SINGLE is not set +CONFIG_PINCTRL_MTK_COMMON=y +CONFIG_PINCTRL_MT6735=y +# CONFIG_PINCTRL_MT6580 is not set +# CONFIG_PINCTRL_MT6755 is not set +# CONFIG_PINCTRL_MT2701 is not set +# CONFIG_PINCTRL_MT8127 is not set +# CONFIG_PINCTRL_MT8163 is not set +# CONFIG_PINCTRL_MT8173 is not set +# CONFIG_PINCTRL_MT6397 is not set +# CONFIG_PINCTRL_MT6797 is not set +CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_DEVRES=y +CONFIG_OF_GPIO=y +# CONFIG_DEBUG_GPIO is not set +# CONFIG_GPIO_SYSFS is not set + +# +# Memory mapped GPIO drivers: +# +# CONFIG_GPIO_GENERIC_PLATFORM is not set +# CONFIG_GPIO_DWAPB is not set +# CONFIG_GPIO_PL061 is not set +# CONFIG_GPIO_SCH311X is not set +# CONFIG_GPIO_SYSCON is not set +# CONFIG_GPIO_XGENE is not set +# CONFIG_GPIO_GRGPIO is not set + +# +# I2C GPIO expanders: +# +# 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_SX150X is not set +# CONFIG_GPIO_ADP5588 is not set +# CONFIG_GPIO_ADNP is not set + +# +# PCI GPIO expanders: +# + +# +# SPI GPIO expanders: +# +# CONFIG_GPIO_MAX7301 is not set +# CONFIG_GPIO_MCP23S08 is not set +# CONFIG_GPIO_MC33880 is not set +# CONFIG_GPIO_74X164 is not set + +# +# AC97 GPIO expanders: +# + +# +# LPC GPIO expanders: +# + +# +# MODULbus GPIO expanders: +# + +# +# USB GPIO expanders: +# +# CONFIG_W1 is not set +CONFIG_POWER_SUPPLY=y +# CONFIG_POWER_SUPPLY_DEBUG is not set +# CONFIG_PDA_POWER is not set +# CONFIG_TEST_POWER is not set +# CONFIG_BATTERY_DS2780 is not set +# CONFIG_BATTERY_DS2781 is not set +# CONFIG_BATTERY_DS2782 is not set +# CONFIG_BATTERY_SBS is not set +# CONFIG_BATTERY_BQ27x00 is not set +# CONFIG_BATTERY_MAX17040 is not set +# CONFIG_BATTERY_MAX17042 is not set +# CONFIG_CHARGER_ISP1704 is not set +# CONFIG_CHARGER_MAX8903 is not set +# CONFIG_CHARGER_LP8727 is not set +# CONFIG_CHARGER_GPIO is not set +# CONFIG_CHARGER_MANAGER is not set +# CONFIG_CHARGER_BQ2415X is not set +# CONFIG_CHARGER_BQ24190 is not set +# CONFIG_CHARGER_BQ24735 is not set +# CONFIG_CHARGER_SMB347 is not set +CONFIG_POWER_RESET=y +# CONFIG_POWER_RESET_GPIO is not set +# CONFIG_POWER_RESET_GPIO_RESTART is not set +# CONFIG_POWER_RESET_LTC2952 is not set +# CONFIG_POWER_RESET_XGENE is not set +# CONFIG_POWER_RESET_SYSCON is not set +# CONFIG_POWER_AVS is not set +# CONFIG_MEDIATEK_CHARGING_SOLUTION is not set +CONFIG_MTK_SMART_BATTERY=y +# CONFIG_POWER_EXT is not set +# CONFIG_MTK_AUTO_POWER_ON_WITH_CHARGER is not set +# CONFIG_MTK_SWCHR_SUPPORT is not set +# CONFIG_MTK_BQ24160_SUPPORT is not set +# CONFIG_MTK_BQ24196_SUPPORT is not set +# CONFIG_MTK_BQ24296_SUPPORT is not set +# CONFIG_MTK_NCP1854_SUPPORT is not set +# CONFIG_MTK_BQ24297_SUPPORT is not set +# CONFIG_MTK_BQ25890_SUPPORT is not set +CONFIG_MTK_FAN5405_SUPPORT=y +# CONFIG_MTK_DUAL_INPUT_CHARGER_SUPPORT is not set +# CONFIG_MTK_DISABLE_POWER_ON_OFF_VOLTAGE_LIMITATION is not set +CONFIG_MTK_KERNEL_POWER_OFF_CHARGING=y +# CONFIG_MTK_BATTERY_PROTECT is not set +# CONFIG_MTK_BATTERY_THROTTLING is not set +# CONFIG_MTK_ENABLE_AGING_ALGORITHM is not set +# CONFIG_MTK_BATTERY_LIFETIME_DATA_SUPPORT is not set +# CONFIG_SOC_BY_HW_FG is not set +# CONFIG_SOC_BY_AUXADC is not set +# CONFIG_SOC_BY_SW_FG is not set +# CONFIG_SWCHR_POWER_PATH is not set +# CONFIG_CUSTOM_BATTERY_CYCLE_AGING_DATA is not set +# CONFIG_MTK_JEITA_STANDARD_SUPPORT is not set +# CONFIG_BAT_LOW_TEMP_PROTECT_ENABLE is not set +# CONFIG_STOP_CHARGING_IN_TAKLING is not set +# CONFIG_CONFIG_DIS_CHECK_BATTERY is not set +# CONFIG_CONFIG_USB_IF is not set +# CONFIG_HIGH_BATTERY_VOLTAGE_SUPPORT is not set +# CONFIG_MTK_HAFG_20 is not set +# CONFIG_MTK_PUMP_EXPRESS_SUPPORT is not set +# CONFIG_MTK_PUMP_EXPRESS_PLUS_SUPPORT is not set +# CONFIG_HWMON is not set +CONFIG_THERMAL=y +CONFIG_THERMAL_OF=y +CONFIG_THERMAL_DEFAULT_GOV_BACKWARD_COMPATIBLE=y +# CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE is not set +# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set +# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set +CONFIG_THERMAL_BACKWARD_COMPATIBLE=y +# CONFIG_THERMAL_GOV_FAIR_SHARE is not set +# CONFIG_THERMAL_GOV_STEP_WISE is not set +# CONFIG_THERMAL_GOV_BANG_BANG is not set +# CONFIG_THERMAL_GOV_USER_SPACE is not set +# CONFIG_CPU_THERMAL is not set +# CONFIG_THERMAL_EMULATION is not set + +# +# Texas Instruments thermal drivers +# + +# +# Trusty +# +# CONFIG_TRUSTY is not set +# CONFIG_MT_TRUSTY_DEBUGFS is not set +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_CORE is not set +# CONFIG_WATCHDOG_NOWAYOUT 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_ARM_SP805_WATCHDOG is not set +# CONFIG_DW_WATCHDOG is not set +# CONFIG_MEN_A21_WDT is not set + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set +CONFIG_MTK_WATCHDOG=y +# CONFIG_MTK_WATCHDOG_COMMON is not set +CONFIG_MTK_WD_KICKER=y +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +# CONFIG_SSB is not set +CONFIG_BCMA_POSSIBLE=y + +# +# Broadcom specific AMBA +# +# CONFIG_BCMA is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_CORE 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_BCM590XX is not set +# CONFIG_MFD_AXP20X is not set +# CONFIG_MFD_CROS_EC 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_DA9063 is not set +# CONFIG_MFD_MC13XXX_SPI is not set +# CONFIG_MFD_MC13XXX_I2C is not set +# CONFIG_MFD_HI6421_PMIC is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_HTC_I2CPLD is not set +# CONFIG_INTEL_SOC_PMIC is not set +# CONFIG_MFD_KEMPLD is not set +# CONFIG_MFD_88PM800 is not set +# CONFIG_MFD_88PM805 is not set +# CONFIG_MFD_88PM860X is not set +# CONFIG_MFD_MAX14577 is not set +# CONFIG_MFD_MAX77686 is not set +# CONFIG_MFD_MAX77693 is not set +# CONFIG_MFD_MAX8907 is not set +# CONFIG_MFD_MAX8925 is not set +# CONFIG_MFD_MAX8997 is not set +# CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_MT6323 is not set +# CONFIG_MFD_MT6397 is not set +# CONFIG_MFD_MENF21BMC is not set +# CONFIG_EZX_PCAP is not set +# CONFIG_MFD_VIPERBOARD is not set +# CONFIG_MFD_RETU is not set +# CONFIG_MFD_PCF50633 is not set +# CONFIG_MFD_RTSX_USB is not set +# CONFIG_MFD_RC5T583 is not set +# CONFIG_MFD_RK808 is not set +# CONFIG_MFD_RN5T618 is not set +# CONFIG_MFD_SEC_CORE is not set +# CONFIG_MFD_SI476X_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_SMSC is not set +# CONFIG_ABX500_CORE is not set +# CONFIG_MFD_STMPE is not set +CONFIG_MFD_SYSCON=y +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# CONFIG_MFD_LP3943 is not set +# CONFIG_MFD_LP8788 is not set +# CONFIG_MFD_PALMAS is not set +# CONFIG_TPS6105X is not set +# CONFIG_TPS65010 is not set +# CONFIG_TPS6507X is not set +# CONFIG_MFD_TPS65090 is not set +# CONFIG_MFD_TPS65217 is not set +# CONFIG_MFD_TPS65218 is not set +# CONFIG_MFD_TPS6586X is not set +# CONFIG_MFD_TPS65910 is not set +# CONFIG_MFD_TPS65912 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_TMIO 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 is not set +CONFIG_REGULATOR=y +# CONFIG_REGULATOR_DEBUG is not set +# CONFIG_REGULATOR_FIXED_VOLTAGE is not set +# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set +# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set +# CONFIG_REGULATOR_ACT8865 is not set +# CONFIG_REGULATOR_AD5398 is not set +# CONFIG_REGULATOR_ANATOP is not set +# CONFIG_REGULATOR_DA9210 is not set +# CONFIG_REGULATOR_DA9211 is not set +# CONFIG_REGULATOR_DA9212 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_MAX1586 is not set +# CONFIG_REGULATOR_MAX8649 is not set +# CONFIG_REGULATOR_MAX8660 is not set +# CONFIG_REGULATOR_MAX8952 is not set +# CONFIG_REGULATOR_MAX8973 is not set +# CONFIG_REGULATOR_PFUZE100 is not set +# CONFIG_REGULATOR_SYM827 is not set +# CONFIG_REGULATOR_TPS51632 is not set +# CONFIG_REGULATOR_TPS62360 is not set +# CONFIG_REGULATOR_TPS65023 is not set +# CONFIG_REGULATOR_TPS6507X is not set +# CONFIG_REGULATOR_TPS6524X is not set +# CONFIG_MEDIA_SUPPORT is not set + +# +# Graphics support +# + +# +# Direct Rendering Manager +# +# CONFIG_DRM is not set + +# +# Frame buffer Devices +# +CONFIG_FB=y +# CONFIG_FIRMWARE_EDID is not set +CONFIG_FB_CMDLINE=y +# CONFIG_FB_DDC is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +CONFIG_FB_CFB_FILLRECT=y +CONFIG_FB_CFB_COPYAREA=y +CONFIG_FB_CFB_IMAGEBLIT=y +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_BACKLIGHT is not set +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_TILEBLITTING=y + +# +# 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_VIRTUAL is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_BROADSHEET is not set +# CONFIG_FB_AUO_K190X is not set +# CONFIG_FB_SIMPLE is not set +# CONFIG_FB_SSD1307 is not set +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set +# CONFIG_ADF is not set +# CONFIG_VGASTATE is not set + +# +# Console display driver support +# +CONFIG_DUMMY_CONSOLE=y +# CONFIG_FRAMEBUFFER_CONSOLE is not set +CONFIG_LOGO=y +CONFIG_LOGO_LINUX_MONO=y +CONFIG_LOGO_LINUX_VGA16=y +CONFIG_LOGO_LINUX_CLUT224=y +CONFIG_SOUND=y +# CONFIG_SOUND_OSS_CORE is not set +CONFIG_SND=y +CONFIG_SND_TIMER=y +CONFIG_SND_PCM=y +CONFIG_SND_HWDEP=y +CONFIG_SND_RAWMIDI=y +CONFIG_SND_COMPRESS_OFFLOAD=y +CONFIG_SND_JACK=y +CONFIG_SND_SEQUENCER=y +CONFIG_SND_SEQ_DUMMY=y +# CONFIG_SND_MIXER_OSS is not set +# CONFIG_SND_PCM_OSS is not set +# CONFIG_SND_SEQUENCER_OSS is not set +CONFIG_SND_HRTIMER=y +CONFIG_SND_SEQ_HRTIMER_DEFAULT=y +CONFIG_SND_DYNAMIC_MINORS=y +CONFIG_SND_MAX_CARDS=32 +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_VERBOSE_PROCFS=y +CONFIG_SND_VERBOSE_PRINTK=y +CONFIG_SND_DEBUG=y +CONFIG_SND_DEBUG_VERBOSE=y +CONFIG_SND_PCM_XRUN_DEBUG=y +CONFIG_SND_RAWMIDI_SEQ=y +# CONFIG_SND_OPL3_LIB_SEQ is not set +# CONFIG_SND_OPL4_LIB_SEQ is not set +# CONFIG_SND_SBAWE_SEQ is not set +# CONFIG_SND_EMU10K1_SEQ is not set +CONFIG_SND_DRIVERS=y +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_ALOOP is not set +# CONFIG_SND_VIRMIDI is not set +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_MPU401 is not set + +# +# HD-Audio +# +# CONFIG_SND_SPI is not set +CONFIG_SND_USB=y +CONFIG_SND_USB_AUDIO=y +# CONFIG_SND_USB_UA101 is not set +# CONFIG_SND_USB_CAIAQ is not set +# CONFIG_SND_USB_6FIRE is not set +# CONFIG_SND_USB_HIFACE is not set +# CONFIG_SND_BCD2000 is not set +CONFIG_SND_SOC=y +# 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_MT_SND_SOC_V1 is not set +# CONFIG_MT_SND_SOC_V2 is not set +CONFIG_MT_SND_SOC_V3=y +# CONFIG_MT_SND_SOC_6580 is not set +# CONFIG_MT_SND_SOC_6755 is not set +# CONFIG_MT_SND_SOC_6797 is not set +# CONFIG_MT_SND_SOC_8163 is not set +# CONFIG_MTK_SPEAKER is not set +# CONFIG_MTK_NXP_TFA9890 is not set +# CONFIG_SND_SOC_MT2701_EVB is not set +# CONFIG_SND_SOC_MT2701_RT5640 is not set +# CONFIG_MTK_BTCVSD_ALSA is not set +CONFIG_AW8736_MODE_CTRL=y +CONFIG_SND_SOC_I2C_AND_SPI=y + +# +# CODEC drivers +# +# CONFIG_SND_SOC_ADAU1701 is not set +# CONFIG_SND_SOC_AK4104 is not set +# CONFIG_SND_SOC_AK4554 is not set +# CONFIG_SND_SOC_AK4642 is not set +# CONFIG_SND_SOC_AK5386 is not set +# CONFIG_SND_SOC_ALC5623 is not set +# CONFIG_SND_SOC_CS35L32 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 is not set +# CONFIG_SND_SOC_CS42XX8_I2C is not set +# CONFIG_SND_SOC_HDMI_CODEC is not set +# CONFIG_SND_SOC_ES8328 is not set +# CONFIG_SND_SOC_PCM1681 is not set +# CONFIG_SND_SOC_PCM1792A is not set +# CONFIG_SND_SOC_PCM512x_I2C is not set +# CONFIG_SND_SOC_PCM512x_SPI is not set +# CONFIG_SND_SOC_SGTL5000 is not set +# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set +# CONFIG_SND_SOC_SPDIF 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_STA350 is not set +# CONFIG_SND_SOC_TAS2552 is not set +# CONFIG_SND_SOC_TAS5086 is not set +# CONFIG_SND_SOC_TLV320AIC31XX is not set +# CONFIG_SND_SOC_TLV320AIC3X is not set +# CONFIG_SND_SOC_WM8510 is not set +# CONFIG_SND_SOC_WM8523 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_WM8804 is not set +# CONFIG_SND_SOC_WM8903 is not set +# CONFIG_SND_SOC_WM8962 is not set +# CONFIG_SND_SOC_WM8978 is not set +# CONFIG_SND_SOC_TPA6130A2 is not set +# CONFIG_SND_SOC_MAX98926 is not set +CONFIG_SND_SIMPLE_CARD=y +# CONFIG_SOUND_PRIME is not set + +# +# HID support +# +CONFIG_HID=y +# CONFIG_HID_BATTERY_STRENGTH is not set +CONFIG_HIDRAW=y +CONFIG_UHID=y +CONFIG_HID_GENERIC=y + +# +# Special HID drivers +# +CONFIG_HID_A4TECH=y +# CONFIG_HID_ACRUX is not set +CONFIG_HID_APPLE=y +# CONFIG_HID_APPLEIR is not set +# CONFIG_HID_AUREAL is not set +CONFIG_HID_BELKIN=y +CONFIG_HID_CHERRY=y +CONFIG_HID_CHICONY=y +# CONFIG_HID_PRODIKEYS is not set +# CONFIG_HID_CP2112 is not set +CONFIG_HID_CYPRESS=y +CONFIG_HID_DRAGONRISE=y +# CONFIG_DRAGONRISE_FF is not set +# CONFIG_HID_EMS_FF is not set +# CONFIG_HID_ELECOM is not set +# CONFIG_HID_ELO is not set +CONFIG_HID_EZKEY=y +# CONFIG_HID_HOLTEK is not set +# CONFIG_HID_GT683R is not set +# CONFIG_HID_HUION is not set +# CONFIG_HID_KEYTOUCH is not set +CONFIG_HID_KYE=y +# CONFIG_HID_UCLOGIC is not set +# CONFIG_HID_WALTOP is not set +CONFIG_HID_GYRATION=y +# CONFIG_HID_ICADE is not set +CONFIG_HID_TWINHAN=y +CONFIG_HID_KENSINGTON=y +# CONFIG_HID_LCPOWER is not set +# CONFIG_HID_LENOVO is not set +CONFIG_HID_LOGITECH=y +# CONFIG_HID_LOGITECH_DJ is not set +# CONFIG_HID_LOGITECH_HIDPP is not set +# CONFIG_LOGITECH_FF is not set +# CONFIG_LOGIRUMBLEPAD2_FF is not set +# CONFIG_LOGIG940_FF is not set +# CONFIG_LOGIWHEELS_FF is not set +CONFIG_HID_MAGICMOUSE=y +CONFIG_HID_MICROSOFT=y +CONFIG_HID_MONTEREY=y +# CONFIG_HID_MULTITOUCH is not set +# CONFIG_HID_NTRIG is not set +# CONFIG_HID_ORTEK is not set +CONFIG_HID_PANTHERLORD=y +# CONFIG_PANTHERLORD_FF is not set +# CONFIG_HID_PENMOUNT is not set +CONFIG_HID_PETALYNX=y +# CONFIG_HID_PICOLCD is not set +# CONFIG_HID_PRIMAX is not set +# CONFIG_HID_ROCCAT is not set +# CONFIG_HID_SAITEK is not set +CONFIG_HID_SAMSUNG=y +# CONFIG_HID_SONY is not set +# CONFIG_HID_SPEEDLINK is not set +# CONFIG_HID_STEELSERIES is not set +CONFIG_HID_SUNPLUS=y +# CONFIG_HID_RMI is not set +CONFIG_HID_GREENASIA=y +# CONFIG_GREENASIA_FF is not set +CONFIG_HID_SMARTJOYPLUS=y +# CONFIG_SMARTJOYPLUS_FF is not set +# CONFIG_HID_TIVO is not set +CONFIG_HID_TOPSEED=y +# CONFIG_HID_THINGM is not set +CONFIG_HID_THRUSTMASTER=y +# CONFIG_THRUSTMASTER_FF is not set +# CONFIG_HID_WACOM is not set +# CONFIG_HID_WIIMOTE is not set +# CONFIG_HID_XINMO is not set +CONFIG_HID_ZEROPLUS=y +# CONFIG_ZEROPLUS_FF is not set +# CONFIG_HID_ZYDACRON is not set +# CONFIG_HID_SENSOR_HUB 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 is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEFAULT_PERSIST=y +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +# CONFIG_USB_OTG_FSM is not set +# CONFIG_USB_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 is not set +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_ISP1760_HCD is not set +# CONFIG_USB_ISP1362_HCD is not set +# CONFIG_USB_FUSBH200_HCD is not set +# CONFIG_USB_FOTG210_HCD is not set +# CONFIG_USB_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 is not set +# 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 +# +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_REALTEK is not set +CONFIG_USB_STORAGE_DATAFAB=y +CONFIG_USB_STORAGE_FREECOM=y +CONFIG_USB_STORAGE_ISD200=y +CONFIG_USB_STORAGE_USBAT=y +CONFIG_USB_STORAGE_SDDR09=y +CONFIG_USB_STORAGE_SDDR55=y +CONFIG_USB_STORAGE_JUMPSHOT=y +CONFIG_USB_STORAGE_ALAUDA=y +CONFIG_USB_STORAGE_ONETOUCH=y +CONFIG_USB_STORAGE_KARMA=y +CONFIG_USB_STORAGE_CYPRESS_ATACB=y +# CONFIG_USB_STORAGE_ENE_UB6250 is not set +# CONFIG_USB_UAS is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK 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 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_LED 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_LD is not set +CONFIG_USB_TRANCEVIBRATOR=y +# 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_HSIC_USB3503 is not set +# CONFIG_USB_LINK_LAYER_TEST is not set + +# +# USB Physical Layer drivers +# +CONFIG_USB_PHY=y +# CONFIG_USB_OTG_WAKELOCK is not set +CONFIG_NOP_USB_XCEIV=y +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_USB_ISP1301 is not set +# CONFIG_USB_ULPI is not set +# CONFIG_DUAL_ROLE_USB_INTF is not set +CONFIG_USB_GADGET=y +# CONFIG_USB_GADGET_DEBUG is not set +# CONFIG_USB_GADGET_DEBUG_FILES is not set +# CONFIG_USB_GADGET_DEBUG_FS is not set +CONFIG_USB_GADGET_VBUS_DRAW=500 +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 + +# +# USB Peripheral Controller +# +# 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_M66592 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_F_ACM=y +CONFIG_USB_U_SERIAL=y +CONFIG_USB_F_MASS_STORAGE=y +# CONFIG_USB_CONFIGFS is not set +CONFIG_USB_G_ANDROID=y +# CONFIG_USB_ANDROID_RNDIS_DWORD_ALIGNED is not set +# CONFIG_USB_ZERO is not set +# CONFIG_USB_AUDIO is not set +# CONFIG_USB_ETH is not set +# 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_LED_TRIG is not set +# CONFIG_UWB is not set +CONFIG_MMC=y +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_CLKGATE is not set +# CONFIG_MMC_EMBEDDED_SDIO is not set +# CONFIG_MMC_PARANOID_SD_INIT is not set + +# +# MMC/SD/SDIO Card Drivers +# +CONFIG_MMC_BLOCK=y +CONFIG_MMC_BLOCK_MINORS=32 +CONFIG_MMC_BLOCK_BOUNCE=y +# CONFIG_SDIO_UART is not set +# CONFIG_MMC_TEST is not set +# CONFIG_MMC_FFU is not set +# CONFIG_MMC_SIMULATE_MAX_SPEED is not set + +# +# MMC/SD/SDIO Host Controller Drivers +# +CONFIG_MMC_MTK=y +CONFIG_MTK_EMMC_SUPPORT=y +CONFIG_MTK_EMMC_CACHE=y +# CONFIG_MTK_EMMC_SUPPORT_OTP is not set +# CONFIG_SDIOAUTOK_SUPPORT is not set +# CONFIG_MMC_MT81XX is not set +# CONFIG_MMC_ARMMMCI is not set +# CONFIG_MMC_SDHCI is not set +# CONFIG_MMC_SPI is not set +# CONFIG_MMC_VUB300 is not set +# CONFIG_MMC_USHC is not set +# CONFIG_MMC_USDHI6ROL0 is not set +# CONFIG_MEMSTICK is not set +CONFIG_NEW_LEDS=y +CONFIG_LEDS_CLASS=y + +# +# LED drivers +# +# CONFIG_LEDS_LM3530 is not set +# CONFIG_LEDS_LM3642 is not set +# CONFIG_LEDS_PCA9532 is not set +# CONFIG_LEDS_GPIO is not set +# CONFIG_LEDS_LP3944 is not set +# CONFIG_LEDS_LP5521 is not set +# CONFIG_LEDS_LP5523 is not set +# CONFIG_LEDS_LP5562 is not set +# CONFIG_LEDS_LP8501 is not set +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_PCA963X is not set +# CONFIG_LEDS_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_LM355x 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_SYSCON is not set + +# +# LED Triggers +# +CONFIG_LEDS_TRIGGERS=y +CONFIG_LEDS_TRIGGER_TIMER=y +# CONFIG_LEDS_TRIGGER_ONESHOT is not set +# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set +# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set +# CONFIG_LEDS_TRIGGER_CPU is not set +# CONFIG_LEDS_TRIGGER_GPIO is not set +# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set + +# +# iptables trigger is under Netfilter config (LED target) +# +# CONFIG_LEDS_TRIGGER_TRANSIENT is not set +# CONFIG_LEDS_TRIGGER_CAMERA is not set +CONFIG_SWITCH=y +# CONFIG_SWITCH_GPIO is not set +# CONFIG_ACCESSIBILITY is not set +CONFIG_RTC_LIB=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_HCTOSYS=y +# CONFIG_RTC_SYSTOHC is not set +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +# CONFIG_RTC_DEBUG is not set + +# +# 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_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_DS3232 is not set +# CONFIG_RTC_DRV_HYM8563 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_ISL12022 is not set +# CONFIG_RTC_DRV_ISL12057 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_PCF2127 is not set +# CONFIG_RTC_DRV_PCF8523 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF85063 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_RX8581 is not set +# CONFIG_RTC_DRV_RX8025 is not set +# CONFIG_RTC_DRV_EM3027 is not set +# CONFIG_RTC_DRV_RV3029C2 is not set + +# +# SPI RTC drivers +# +# CONFIG_RTC_DRV_M41T93 is not set +# CONFIG_RTC_DRV_M41T94 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_MAX6902 is not set +# CONFIG_RTC_DRV_R9701 is not set +# CONFIG_RTC_DRV_RS5C348 is not set +# CONFIG_RTC_DRV_DS3234 is not set +# CONFIG_RTC_DRV_PCF2123 is not set +# CONFIG_RTC_DRV_RX4581 is not set +# CONFIG_RTC_DRV_MCP795 is not set + +# +# Platform RTC drivers +# +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_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 + +# +# on-CPU RTC drivers +# +# CONFIG_RTC_DRV_PL030 is not set +# CONFIG_RTC_DRV_PL031 is not set +# CONFIG_RTC_DRV_SNVS is not set +# CONFIG_RTC_DRV_XGENE is not set + +# +# HID Sensor RTC drivers +# +# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set +# CONFIG_DMADEVICES is not set +# CONFIG_AUXDISPLAY is not set +# CONFIG_UIO is not set +# CONFIG_VIRT_DRIVERS is not set + +# +# Virtio drivers +# +# CONFIG_VIRTIO_MMIO is not set + +# +# Microsoft Hyper-V guest support +# +CONFIG_STAGING=y +# CONFIG_PRISM2_USB is not set +# CONFIG_R8712U is not set +# CONFIG_R8188EU is not set +# CONFIG_LINE6_USB is not set +# CONFIG_FT1000 is not set + +# +# Speakup console speech +# +# CONFIG_SPEAKUP is not set +# CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set +# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set +# CONFIG_STAGING_MEDIA 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_ASHMEM=y +CONFIG_ANDROID_TIMED_OUTPUT=y +# CONFIG_ANDROID_TIMED_GPIO is not set +CONFIG_ANDROID_LOW_MEMORY_KILLER=y +CONFIG_ANDROID_LOW_MEMORY_KILLER_AUTODETECT_OOM_ADJ_VALUES=y +CONFIG_ANDROID_INTF_ALARM_DEV=y +CONFIG_SYNC=y +CONFIG_SW_SYNC=y +CONFIG_SW_SYNC_USER=y +# CONFIG_MTK_GMO_RAM_OPTIMIZE is not set +CONFIG_ION=y +# CONFIG_ION_TEST is not set +# CONFIG_ION_DUMMY is not set +CONFIG_MTK_ION=y +# CONFIG_FIQ_DEBUGGER is not set +# CONFIG_FIQ_WATCHDOG is not set +# CONFIG_USB_WPAN_HCD is not set +# CONFIG_WIMAX_GDM72XX is not set +# CONFIG_DGAP is not set +# CONFIG_GS_FPGABOOT is not set +# CONFIG_GOLDFISH is not set + +# +# SOC (System On Chip) specific Drivers +# +# CONFIG_SOC_TI is not set +CONFIG_CLKDEV_LOOKUP=y +CONFIG_HAVE_CLK_PREPARE=y +CONFIG_COMMON_CLK=y + +# +# Common Clock Framework +# +# CONFIG_COMMON_CLK_VERSATILE is not set +# CONFIG_COMMON_CLK_SI5351 is not set +# CONFIG_COMMON_CLK_SI570 is not set +CONFIG_COMMON_CLK_XGENE=y +# CONFIG_COMMON_CLK_PXA is not set +# CONFIG_COMMON_CLK_FREQ_STATS_ACCOUNTING is not set +# CONFIG_COMMON_CLK_QCOM is not set +# CONFIG_COMMON_CLK_MT6735 is not set +# CONFIG_COMMON_CLK_MT6755 is not set +# CONFIG_COMMON_CLK_MT6797 is not set +# CONFIG_COMMON_CLK_MT8135 is not set +# CONFIG_COMMON_CLK_MT8127 is not set +# CONFIG_COMMON_CLK_MT8163 is not set +# CONFIG_COMMON_CLK_MT8173 is not set +# CONFIG_COMMON_CLK_MT2701 is not set + +# +# Hardware Spinlock drivers +# + +# +# Clock Source drivers +# +CONFIG_CLKSRC_OF=y +CONFIG_ARM_ARCH_TIMER=y +CONFIG_ARM_ARCH_TIMER_EVTSTREAM=y +# CONFIG_ARM_ARCH_TIMER_VCT_ACCESS is not set +# CONFIG_ATMEL_PIT is not set +# CONFIG_SH_TIMER_CMT is not set +# CONFIG_SH_TIMER_MTU2 is not set +# CONFIG_SH_TIMER_TMU is not set +# CONFIG_EM_TIMER_STI is not set +# CONFIG_CLKSRC_VERSATILE is not set +# CONFIG_MAILBOX is not set +CONFIG_IOMMU_SUPPORT=y +CONFIG_OF_IOMMU=y +# CONFIG_MTK_IOMMU is not set +# CONFIG_ARM_SMMU is not set + +# +# Remoteproc drivers +# +# CONFIG_STE_MODEM_RPROC is not set + +# +# Rpmsg drivers +# + +# +# SOC (System On Chip) specific Drivers +# +# CONFIG_PM_DEVFREQ is not set +# CONFIG_EXTCON is not set +# CONFIG_MEMORY is not set +# CONFIG_IIO is not set +# CONFIG_PWM is not set +CONFIG_IRQCHIP=y +CONFIG_ARM_GIC=y +CONFIG_ARM_GIC_V3=y +CONFIG_MTK_GIC=y +CONFIG_MTK_EIC=y +CONFIG_MTK_IRQ_NEW_DESIGN=y +CONFIG_MTK_IRQ_NEW_DESIGN_DEBUG=y +# CONFIG_IPACK_BUS is not set +# CONFIG_RESET_CONTROLLER is not set +# CONFIG_FMC is not set + +# +# PHY Subsystem +# +# CONFIG_GENERIC_PHY is not set +# CONFIG_BCM_KONA_USB2_PHY is not set +# CONFIG_PHY_XGENE is not set +# CONFIG_POWERCAP is not set +# CONFIG_MCB is not set + +# +# Firmware Drivers +# +# CONFIG_FIRMWARE_MEMMAP is not set + +# +# File systems +# +CONFIG_DCACHE_WORD_ACCESS=y +# CONFIG_EXT2_FS is not set +# CONFIG_EXT3_FS is not set +CONFIG_EXT4_FS=y +CONFIG_EXT4_USE_FOR_EXT23=y +# CONFIG_EXT4_FS_POSIX_ACL is not set +CONFIG_EXT4_FS_SECURITY=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_FS_POSIX_ACL=y +CONFIG_FILE_LOCKING=y +CONFIG_FS_ENCRYPTION=y +CONFIG_FSNOTIFY=y +CONFIG_DNOTIFY=y +CONFIG_INOTIFY_USER=y +# CONFIG_FANOTIFY is not set +CONFIG_QUOTA=y +CONFIG_QUOTA_NETLINK_INTERFACE=y +CONFIG_PRINT_QUOTA_WARNING=y +# CONFIG_QUOTA_DEBUG is not set +CONFIG_QUOTA_TREE=y +# CONFIG_QFMT_V1 is not set +CONFIG_QFMT_V2=y +CONFIG_QUOTACTL=y +# CONFIG_AUTOFS4_FS is not set +CONFIG_FUSE_FS=y +# CONFIG_CUSE is not set +# CONFIG_OVERLAY_FS is not set + +# +# Caches +# +# CONFIG_FSCACHE is not set + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_EXFAT_FS=y +CONFIG_EXFAT_DISCARD=y +# CONFIG_EXFAT_DELAYED_SYNC is not set +# CONFIG_EXFAT_KERNEL_DEBUG is not set +# CONFIG_EXFAT_DEBUG_MSG is not set +CONFIG_EXFAT_DEFAULT_CODEPAGE=437 +CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +# CONFIG_PROC_KCORE is not set +CONFIG_PROC_SYSCTL=y +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_KERNFS=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set +# CONFIG_TMPFS_XATTR is not set +# CONFIG_HUGETLBFS is not set +# CONFIG_HUGETLB_PAGE is not set +CONFIG_CONFIGFS_FS=y +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_ECRYPT_FS is not set +CONFIG_SDCARD_FS=y +# 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_JFFS2_FS is not set +# CONFIG_LOGFS 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_CONSOLE=y +CONFIG_PSTORE_PMSG=y +CONFIG_PSTORE_RAM=y +CONFIG_PSTORE_CONSOLE_SIZE=0x10000 +CONFIG_PSTORE_PMSG_SIZE=0x10000 +CONFIG_PSTORE_MEM_ADDR=0x43F10000 +CONFIG_PSTORE_MEM_SIZE=0xe0000 +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +CONFIG_F2FS_FS=y +CONFIG_F2FS_STAT_FS=y +CONFIG_F2FS_FS_XATTR=y +CONFIG_F2FS_FS_POSIX_ACL=y +CONFIG_F2FS_FS_SECURITY=y +# CONFIG_F2FS_CHECK_FS is not set +CONFIG_F2FS_FS_ENCRYPTION=y +# CONFIG_F2FS_FAULT_INJECTION is not set +# CONFIG_NETWORK_FILESYSTEMS is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# 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=y +# 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=y +CONFIG_NLS_ISO8859_1=y +# 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=y +# CONFIG_DLM is not set +# CONFIG_RAWFS_FS is not set +# CONFIG_YAFFS_FS is not set +CONFIG_DYNAMIC_FSYNC=y +# CONFIG_VIRTUALIZATION is not set + +# +# Kernel hacking +# + +# +# printk and dmesg options +# +CONFIG_PRINTK_TIME=y +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +# CONFIG_BOOT_PRINTK_DELAY is not set +CONFIG_DYNAMIC_DEBUG=y + +# +# Compile-time checks and compiler options +# +CONFIG_DEBUG_INFO=y +# CONFIG_DEBUG_INFO_REDUCED is not set +# CONFIG_DEBUG_INFO_SPLIT is not set +# CONFIG_DEBUG_INFO_DWARF4 is not set +CONFIG_ENABLE_WARN_DEPRECATED=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=1400 +# CONFIG_STRIP_ASM_SYMS is not set +# CONFIG_READABLE_ASM is not set +# CONFIG_UNUSED_SYMBOLS is not set +CONFIG_DEBUG_FS=y +# CONFIG_HEADERS_CHECK is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_ARCH_WANT_FRAME_POINTERS=y +CONFIG_FRAME_POINTER=y +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +CONFIG_MAGIC_SYSRQ=y +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x0 +CONFIG_DEBUG_KERNEL=y + +# +# Memory Debugging +# +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SLUB_STATS is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_DEBUG_SHIRQ is not set + +# +# Debug Lockups and Hangs +# +# CONFIG_LOCKUP_DETECTOR is not set +# CONFIG_DETECT_HUNG_TASK is not set +CONFIG_PANIC_ON_OOPS=y +CONFIG_PANIC_ON_OOPS_VALUE=1 +CONFIG_PANIC_TIMEOUT=1 +CONFIG_SCHED_DEBUG=y +CONFIG_SCHEDSTATS=y +CONFIG_SCHED_STACK_END_CHECK=y +# CONFIG_DEBUG_PREEMPT is not set + +# +# Lock Debugging (spinlocks, mutexes, etc...) +# +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_LOCK_TORTURE_TEST is not set +CONFIG_STACKTRACE=y +# CONFIG_DEBUG_KOBJECT is not set +CONFIG_HAVE_DEBUG_BUGVERBOSE=y +# CONFIG_DEBUG_BUGVERBOSE is not set +CONFIG_DEBUG_LIST=y +# CONFIG_DEBUG_PI_LIST is not set +CONFIG_DEBUG_SG=y +CONFIG_DEBUG_NOTIFIERS=y +CONFIG_DEBUG_CREDENTIALS=y + +# +# RCU Debugging +# +# CONFIG_SPARSE_RCU_POINTER is not set +# CONFIG_TORTURE_TEST is not set +# CONFIG_RCU_TORTURE_TEST is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_RCU_CPU_STALL_VERBOSE=y +# CONFIG_RCU_CPU_STALL_INFO is not set +# CONFIG_RCU_TRACE is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_NOTIFIER_ERROR_INJECTION is not set +CONFIG_FAULT_INJECTION=y +# CONFIG_FAILSLAB is not set +# CONFIG_FAIL_PAGE_ALLOC is not set +# CONFIG_FAIL_MAKE_REQUEST is not set +# CONFIG_FAIL_IO_TIMEOUT is not set +# CONFIG_FAIL_MMC_REQUEST is not set +# CONFIG_FAULT_INJECTION_DEBUG_FS is not set +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_TRACING_SUPPORT=y +# CONFIG_FTRACE is not set + +# +# Runtime Testing +# +# CONFIG_LKDTM is not set +# CONFIG_TEST_LIST_SORT is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_RBTREE_TEST is not set +# CONFIG_ATOMIC64_SELFTEST is not set +# CONFIG_TEST_STRING_HELPERS is not set +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_TEST_RHASHTABLE is not set +# CONFIG_TEST_FIRMWARE is not set +# CONFIG_TEST_UDELAY is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +# CONFIG_ARM64_PTDUMP is not set +# CONFIG_STRICT_DEVMEM is not set +# CONFIG_PID_IN_CONTEXTIDR is not set +# CONFIG_ARM64_RANDOMIZE_TEXT_OFFSET is not set +CONFIG_DEBUG_RODATA=y +# CONFIG_DEBUG_ALIGN_RODATA is not set + +# +# Security options +# +CONFIG_KEYS=y +CONFIG_KEYS_COMPAT=y +# CONFIG_PERSISTENT_KEYRINGS is not set +# CONFIG_BIG_KEYS is not set +CONFIG_ENCRYPTED_KEYS=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y +CONFIG_SECURITY=y +CONFIG_SECURITYFS=y +CONFIG_SECURITY_NETWORK=y +# CONFIG_SECURITY_NETWORK_XFRM is not set +CONFIG_SECURITY_PATH=y +CONFIG_LSM_MMAP_MIN_ADDR=32768 +CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR=y +CONFIG_HAVE_ARCH_HARDENED_USERCOPY=y +CONFIG_HARDENED_USERCOPY=y +# CONFIG_HARDENED_USERCOPY_PAGESPAN is not set +# CONFIG_FORTIFY_SOURCE is not set +CONFIG_SECURITY_SELINUX=y +# CONFIG_SECURITY_SELINUX_BOOTPARAM is not set +# CONFIG_SECURITY_SELINUX_DISABLE is not set +# CONFIG_SECURITY_SELINUX_DEVELOP is not set +CONFIG_SECURITY_SELINUX_AVC_STATS=y +CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE=1 +# CONFIG_SECURITY_SELINUX_POLICYDB_VERSION_MAX is not set +# CONFIG_SECURITY_SMACK is not set +# CONFIG_SECURITY_TOMOYO is not set +# CONFIG_SECURITY_APPARMOR is not set +CONFIG_SECURITY_YAMA=y +CONFIG_SECURITY_YAMA_STACKED=y +CONFIG_INTEGRITY=y +# CONFIG_INTEGRITY_SIGNATURE is not set +CONFIG_INTEGRITY_AUDIT=y +# CONFIG_IMA is not set +# CONFIG_EVM is not set +CONFIG_DEFAULT_SECURITY_SELINUX=y +# CONFIG_DEFAULT_SECURITY_YAMA is not set +# CONFIG_DEFAULT_SECURITY_DAC is not set +CONFIG_DEFAULT_SECURITY="selinux" +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_PCOMP2=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +# CONFIG_CRYPTO_USER is not set +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +CONFIG_CRYPTO_GF128MUL=y +CONFIG_CRYPTO_NULL=y +# CONFIG_CRYPTO_PCRYPT is not set +CONFIG_CRYPTO_WORKQUEUE=y +CONFIG_CRYPTO_CRYPTD=y +# CONFIG_CRYPTO_MCRYPTD is not set +CONFIG_CRYPTO_AUTHENC=y +CONFIG_CRYPTO_ABLK_HELPER=y + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +CONFIG_CRYPTO_SEQIV=y + +# +# Block modes +# +CONFIG_CRYPTO_CBC=y +CONFIG_CRYPTO_CTR=y +CONFIG_CRYPTO_CTS=y +CONFIG_CRYPTO_ECB=y +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_PCBC is not set +CONFIG_CRYPTO_XTS=y + +# +# Hash modes +# +# CONFIG_CRYPTO_CMAC is not set +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_XCBC=y +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_CRC32=y +# CONFIG_CRYPTO_CRCT10DIF is not set +# CONFIG_CRYPTO_GHASH is not set +# CONFIG_CRYPTO_MD4 is not set +CONFIG_CRYPTO_MD5=y +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_RMD128 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_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_TGR192 is not set +# CONFIG_CRYPTO_WP512 is not set + +# +# Ciphers +# +CONFIG_CRYPTO_AES=y +# 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=y +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_SALSA20 is not set +CONFIG_CRYPTO_CHACHA20=y +CONFIG_CRYPTO_CHACHA20_NEON=y +# CONFIG_CRYPTO_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_SPECK is not set +# CONFIG_CRYPTO_TEA is not set +CONFIG_CRYPTO_TWOFISH=y +CONFIG_CRYPTO_TWOFISH_COMMON=y + +# +# Compression +# +CONFIG_CRYPTO_DEFLATE=y +# CONFIG_CRYPTO_ZLIB is not set +CONFIG_CRYPTO_LZO=y +# CONFIG_CRYPTO_LZ4K is not set +# CONFIG_CRYPTO_LZ4 is not set +# CONFIG_CRYPTO_LZ4HC is not set + +# +# Random Number Generation +# +# CONFIG_CRYPTO_ANSI_CPRNG is not set +# CONFIG_CRYPTO_DRBG_MENU is not set +# CONFIG_CRYPTO_USER_API_HASH is not set +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set +# CONFIG_CRYPTO_HW is not set +# CONFIG_ASYMMETRIC_KEY_TYPE is not set +CONFIG_ARM64_CRYPTO=y +CONFIG_CRYPTO_SHA256_ARM64=y +CONFIG_CRYPTO_SHA512_ARM64=y +CONFIG_CRYPTO_SHA1_ARM64_CE=y +CONFIG_CRYPTO_SHA2_ARM64_CE=y +CONFIG_CRYPTO_GHASH_ARM64_CE=y +CONFIG_CRYPTO_AES_ARM64_CE=y +CONFIG_CRYPTO_AES_ARM64_CE_CCM=y +CONFIG_CRYPTO_AES_ARM64_CE_BLK=y +CONFIG_CRYPTO_AES_ARM64_NEON_BLK=y +CONFIG_CRYPTO_CRC32_ARM64=y +# CONFIG_BINARY_PRINTF is not set + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_GENERIC_STRNCPY_FROM_USER=y +CONFIG_GENERIC_STRNLEN_USER=y +CONFIG_GENERIC_NET_UTILS=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_IOMAP=y +CONFIG_GENERIC_IO=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_CRC7 is not set +CONFIG_LIBCRC32C=y +# CONFIG_CRC8 is not set +CONFIG_AUDIT_GENERIC=y +CONFIG_AUDIT_ARCH_COMPAT_GENERIC=y +CONFIG_AUDIT_COMPAT_GENERIC=y +# CONFIG_RANDOM32_SELFTEST is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_LZO_COMPRESS=y +CONFIG_LZO_DECOMPRESS=y +# CONFIG_LZ4K is not set +# CONFIG_XZ_DEC is not set +# CONFIG_XZ_DEC_BCJ is not set +CONFIG_DECOMPRESS_GZIP=y +CONFIG_DECOMPRESS_LZMA=y +CONFIG_GENERIC_ALLOCATOR=y +CONFIG_REED_SOLOMON=y +CONFIG_REED_SOLOMON_ENC8=y +CONFIG_REED_SOLOMON_DEC8=y +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_KMP=y +CONFIG_TEXTSEARCH_BM=y +CONFIG_TEXTSEARCH_FSM=y +CONFIG_ASSOCIATIVE_ARRAY=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_DMA=y +CONFIG_CPU_RMAP=y +CONFIG_DQL=y +CONFIG_NLATTR=y +CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y +# CONFIG_AVERAGE is not set +# CONFIG_CORDIC is not set +# CONFIG_DDR is not set +CONFIG_LIBFDT=y +CONFIG_FONT_SUPPORT=y +CONFIG_FONT_8x16=y +CONFIG_FONT_AUTOSELECT=y +CONFIG_ARCH_HAS_SG_CHAIN=y diff --git a/device/testing/linux-vernee-k506/python3dct.patch b/device/testing/linux-vernee-k506/python3dct.patch new file mode 100644 index 000000000..33653cfb0 --- /dev/null +++ b/device/testing/linux-vernee-k506/python3dct.patch @@ -0,0 +1,4750 @@ +replace binary DrvGen with python 3 version. +scripts have been upgraded from python 2 to 3 using futurize. + +diff --git a/scripts/drvgen/drvgen.mk b/scripts/drvgen/drvgen.mk +index cdc47873434..261174fa51e 100644 +--- a/scripts/drvgen/drvgen.mk ++++ b/scripts/drvgen/drvgen.mk +@@ -20,7 +20,7 @@ DRVGEN_FILE_LIST := $(addprefix $(DRVGEN_OUT)/,$(ALL_DRVGEN_FILE)) + else + DRVGEN_FILE_LIST := + endif +-DRVGEN_TOOL := $(srctree)/tools/dct/DrvGen ++DRVGEN_TOOL := $(srctree)/tools/dct/DrvGen.py + DRVGEN_PREBUILT_PATH := $(srctree)/$(DRVGEN_PATH) + DRVGEN_PREBUILT_CHECK := $(filter-out $(wildcard $(addprefix $(DRVGEN_PREBUILT_PATH)/,$(ALL_DRVGEN_FILE))),$(addprefix $(DRVGEN_PREBUILT_PATH)/,$(ALL_DRVGEN_FILE))) + +@@ -29,7 +29,7 @@ drvgen: $(DRVGEN_FILE_LIST) + ifneq ($(DRVGEN_PREBUILT_CHECK),) + $(DRVGEN_OUT)/cust.dtsi: $(DRVGEN_TOOL) $(DWS_FILE) + @mkdir -p $(dir $@) +- $(DRVGEN_TOOL) $(DWS_FILE) $(dir $@) $(dir $@) cust_dtsi ++ $(python) $(DRVGEN_TOOL) $(DWS_FILE) $(dir $@) $(dir $@) cust_dtsi + + else + $(DRVGEN_FILE_LIST): $(DRVGEN_OUT)/% : $(DRVGEN_PREBUILT_PATH)/% +diff --git a/tools/dct/DrvGen.py b/tools/dct/DrvGen.py +new file mode 100755 +index 00000000000..500ea40172c +--- /dev/null ++++ b/tools/dct/DrvGen.py +@@ -0,0 +1,147 @@ ++#! /usr/bin/python3 ++ ++from __future__ import print_function ++import os, sys ++import getopt ++import traceback ++import subprocess ++import xml.dom.minidom ++ ++sys.path.append('.') ++sys.path.append('..') ++ ++from obj.ChipObj import ChipObj ++from obj.ChipObj import Everest ++from obj.ChipObj import Olympus ++from obj.ChipObj import KiboPlus ++from obj.ChipObj import Rushmore ++ ++from utility.util import LogLevel ++from utility.util import log ++ ++def usage(): ++ print(''' ++usage: DrvGen [dws_path] [file_path] [log_path] [paras]... ++ ++options and arguments: ++ ++dws_path : dws file path ++file_path : where you want to put generated files ++log_path : where to store the log files ++paras : parameter for generate wanted file ++''') ++ ++def is_oldDws(path, gen_spec): ++ if not os.path.exists(path): ++ log(LogLevel.error, 'Can not find %s' %(path)) ++ sys.exit(-1) ++ ++ try: ++ root = xml.dom.minidom.parse(dws_path) ++ except Exception as e: ++ log(LogLevel.warn, '%s is not xml format, try to use old DCT!' %(dws_path)) ++ if len(gen_spec) == 0: ++ log(LogLevel.warn, 'Please use old DCT UI to gen all files!') ++ return True ++ old_dct = os.path.join(sys.path[0], 'old_dct', 'DrvGen') ++ cmd = old_dct + ' ' + dws_path + ' ' + gen_path + ' ' + log_path + ' ' + gen_spec[0] ++ if 0 == subprocess.call(cmd, shell=True): ++ return True ++ else: ++ log(LogLevel.error, '%s format error!' %(dws_path)) ++ sys.exit(-1) ++ ++ return False ++ ++if __name__ == '__main__': ++ opts, args = getopt.getopt(sys.argv[1:], '') ++ ++ if len(args) == 0: ++ msg = 'Too less arguments!' ++ usage() ++ log(LogLevel.error, msg) ++ sys.exit(-1) ++ ++ dws_path = '' ++ gen_path = '' ++ log_path = '' ++ gen_spec = [] ++ ++ # get DWS file path from parameters ++ dws_path = os.path.abspath(args[0]) ++ ++ # get parameters from input ++ if len(args) == 1: ++ gen_path = os.path.dirname(dws_path) ++ log_path = os.path.dirname(dws_path) ++ ++ elif len(args) == 2: ++ gen_path = os.path.abspath(args[1]) ++ log_path = os.path.dirname(dws_path) ++ ++ elif len(args) == 3: ++ gen_path = os.path.abspath(args[1]) ++ log_path = os.path.abspath(args[2]) ++ ++ elif len(args) >= 4: ++ gen_path = os.path.abspath(args[1]) ++ log_path = os.path.abspath(args[2]) ++ for i in range(3,len(args)): ++ gen_spec.append(args[i]) ++ ++ log(LogLevel.info, 'DWS file path is %s' %(dws_path)) ++ log(LogLevel.info, 'Gen files path is %s' %(gen_path)) ++ log(LogLevel.info, 'Log files path is %s' %(log_path)) ++ ++ for item in gen_spec: ++ log(LogLevel.info, 'Parameter is %s' %(item)) ++ ++ ++ ++ # check DWS file path ++ if not os.path.exists(dws_path): ++ log(LogLevel.error, 'Can not find "%s", file not exist!' %(dws_path)) ++ sys.exit(-1) ++ ++ if not os.path.exists(gen_path): ++ log(LogLevel.error, 'Can not find "%s", gen path not exist!' %(gen_path)) ++ sys.exit(-1) ++ ++ if not os.path.exists(log_path): ++ log(LogLevel.error, 'Can not find "%s", log path not exist!' %(log_path)) ++ sys.exit(-1) ++ ++ if is_oldDws(dws_path, gen_spec): ++ sys.exit(0) ++ ++ chipId = ChipObj.get_chipId(dws_path) ++ chipObj = None ++ if cmp(chipId, 'MT6797') == 0: ++ chipObj = Everest(dws_path, gen_path) ++ elif cmp(chipId, 'MT6757') == 0: ++ chipObj = Olympus(dws_path, gen_path) ++ elif cmp(chipId, 'KIBOPLUS') == 0: ++ chipObj = KiboPlus(dws_path, gen_path) ++ elif cmp(chipId, 'MT6570') == 0: ++ chipObj = Rushmore(dws_path, gen_path) ++ else: ++ chipObj = ChipObj(dws_path, gen_path) ++ ++ if not chipObj.parse(): ++ log(LogLevel.error, 'Parse %s fail!' %(dws_path)) ++ sys.exit(-1) ++ ++ if not chipObj.generate(gen_spec): ++ log(LogLevel.error, 'Generate files fail!') ++ sys.exit(-1) ++ ++ sys.exit(0) ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/tools/dct/config/PMIC_MT6335PMUMP.cmp b/tools/dct/config/PMIC_MT6335PMUMP.cmp +new file mode 100644 +index 00000000000..1acb3a47ee1 +--- /dev/null ++++ b/tools/dct/config/PMIC_MT6335PMUMP.cmp +@@ -0,0 +1,50 @@ ++[PMIC_TABLE] ++CHIP = MT6335 ++NUM_LDO = 11 ++FUNCTION = pmic_set_register_value ++LDO_APPNAME_DEFAULT = MT65XX_POWER_NONE ++INCLUDE_HEADER = linux/types.h:mach/mt_typedefs.h:mach/upmu_common.h:mach/upmu_hw.h:mach/mt_pm_ldo.h ++ ++[LDO_NAME1] ++LDO_NAME = VCAMA1 ++PARAMETER_NAME = MT6335_PMIC_RG_VCAMA1_SW_EN ++ ++[LDO_NAME2] ++LDO_NAME = VCAMA2 ++PARAMETER_NAME = MT6335_PMIC_RG_VCAMA2_SW_EN ++ ++[LDO_NAME3] ++LDO_NAME = VSIM1 ++PARAMETER_NAME = MT6335_PMIC_RG_VSIM1_SW_EN ++ ++[LDO_NAME4] ++LDO_NAME = VSIM2 ++PARAMETER_NAME = MT6335_PMIC_RG_VSIM2_SW_EN ++ ++[LDO_NAME5] ++LDO_NAME = VCAMAF ++PARAMETER_NAME = MT6335_PMIC_RG_VCAMAF_SW_EN ++ ++[LDO_NAME6] ++LDO_NAME = VTOUCH ++PARAMETER_NAME = MT6335_PMIC_RG_VTOUCH_SW_EN ++ ++[LDO_NAME7] ++LDO_NAME = VGP3 ++PARAMETER_NAME = MT6335_PMIC_RG_VGP3_SW_EN ++ ++[LDO_NAME8] ++LDO_NAME = VIBR ++PARAMETER_NAME = MT6335_PMIC_RG_VIBR_SW_EN ++ ++[LDO_NAME9] ++LDO_NAME = VCAMD1 ++PARAMETER_NAME = MT6335_PMIC_RG_VCAMD1_SW_EN ++ ++[LDO_NAME10] ++LDO_NAME = VCAMD2 ++PARAMETER_NAME = MT6335_PMIC_RG_VCAMD2_SW_EN ++ ++[LDO_NAME11] ++LDO_NAME = VCAMIO ++PARAMETER_NAME = MT6335_PMIC_RG_VCAMIO_SW_EN +diff --git a/tools/dct/config/PMIC_MT6350PMUMP.cmp b/tools/dct/config/PMIC_MT6350PMUMP.cmp +new file mode 100644 +index 00000000000..00692159051 +--- /dev/null ++++ b/tools/dct/config/PMIC_MT6350PMUMP.cmp +@@ -0,0 +1,79 @@ ++[PMIC_TABLE] ++CHIP = MT6350 ++NUM_LDO = 18 ++FUNCTION = pmic_set_register_value ++LDO_APPNAME_DEFAULT = MT65XX_POWER_NONE ++INCLUDE_HEADER = linux/types.h:mach/mt_typedefs.h:mach/upmu_common.h:mach/upmu_hw.h:mach/mt_pm_ldo.h ++ ++ ++[LDO_NAME1] ++LDO_NAME=VMC ++PARAMETER_NAME = PMIC_RG_VMC_EN ++ ++[LDO_NAME2] ++LDO_NAME=VMCH ++PARAMETER_NAME = PMIC_RG_VMCH_EN ++ ++[LDO_NAME3] ++LDO_NAME=VEMC_3V3 ++PARAMETER_NAME = PMIC_RG_VEMC_3V3_EN ++ ++[LDO_NAME4] ++LDO_NAME=VGP1 ++PARAMETER_NAME = PMIC_RG_VGP1_EN ++ ++[LDO_NAME5] ++LDO_NAME=VGP2 ++PARAMETER_NAME = PMIC_RG_VGP2_EN ++ ++[LDO_NAME6] ++LDO_NAME=VGP3 ++PARAMETER_NAME = PMIC_RG_VGP3_EN ++ ++[LDO_NAME7] ++LDO_NAME=VCN_1V8 ++PARAMETER_NAME = PMIC_RG_VCN_1V8_EN ++ ++[LDO_NAME8] ++LDO_NAME=VSIM1 ++PARAMETER_NAME = PMIC_RG_VSIM1_EN ++ ++[LDO_NAME9] ++LDO_NAME=VSIM2 ++PARAMETER_NAME = PMIC_RG_VSIM2_EN ++ ++[LDO_NAME10] ++LDO_NAME=VCAMAF ++PARAMETER_NAME = PMIC_RG_VCAM_AF_EN ++ ++[LDO_NAME11] ++LDO_NAME=VIBR ++PARAMETER_NAME = PMIC_RG_VIBR_EN ++ ++[LDO_NAME12] ++LDO_NAME=VM ++PARAMETER_NAME = PMIC_RG_VM_EN ++ ++[LDO_NAME13] ++LDO_NAME=VRF18 ++PARAMETER_NAME = PMIC_RG_VRF18_EN ++ ++[LDO_NAME14] ++LDO_NAME=VCAMD ++PARAMETER_NAME = PMIC_RG_VCAMD_EN ++ ++[LDO_NAME15] ++LDO_NAME=VCAMIO ++PARAMETER_NAME = PMIC_RG_VCAM_IO_EN ++ ++[LDO_NAME16] ++LDO_NAME=VCAMA ++PARAMETER_NAME = PMIC_RG_VCAMA_EN ++ ++[LDO_NAME17] ++LDO_NAME=VCN33_WIFI ++PARAMETER_NAME = PMIC_RG_VCN33_EN_WIFI ++ ++[LDO_NAME18] ++LDO_NAME=VCN28 ++PARAMETER_NAME = PMIC_RG_VCN28_EN +diff --git a/tools/dct/config/PMIC_MT6351PMUMP.cmp b/tools/dct/config/PMIC_MT6351PMUMP.cmp +new file mode 100644 +index 00000000000..5177a0be983 +--- /dev/null ++++ b/tools/dct/config/PMIC_MT6351PMUMP.cmp +@@ -0,0 +1,38 @@ ++[PMIC_TABLE] ++CHIP = MT6351 ++NUM_LDO = 8 ++FUNCTION = pmic_set_register_value ++LDO_APPNAME_DEFAULT = MT65XX_POWER_NONE ++INCLUDE_HEADER = linux/types.h:mach/mt_typedefs.h:mach/upmu_common.h:mach/upmu_hw.h:mach/mt_pm_ldo.h ++ ++[LDO_NAME1] ++LDO_NAME = VCAMA ++PARAMETER_NAME = MT6351_PMIC_RG_VCAMA_EN ++ ++[LDO_NAME2] ++LDO_NAME = VSIM1 ++PARAMETER_NAME = MT6351_PMIC_RG_VSIM1_EN ++ ++[LDO_NAME3] ++LDO_NAME = VSIM2 ++PARAMETER_NAME = MT6351_PMIC_RG_VSIM2_EN ++ ++[LDO_NAME4] ++LDO_NAME = VLDO28 ++PARAMETER_NAME = MT6351_PMIC_RG_VLDO28_EN_0 ++ ++[LDO_NAME5] ++LDO_NAME = VGP3 ++PARAMETER_NAME = MT6351_PMIC_RG_VGP3_EN ++ ++[LDO_NAME6] ++LDO_NAME = VIBR ++PARAMETER_NAME = MT6351_PMIC_RG_VIBR_EN ++ ++[LDO_NAME7] ++LDO_NAME = VCAMD ++PARAMETER_NAME = MT6351_PMIC_RG_VCAMD_EN ++ ++[LDO_NAME8] ++LDO_NAME = VCAMIO ++PARAMETER_NAME = MT6351_PMIC_RG_VCAMIO_EN +diff --git a/tools/dct/config/PMIC_NCPMUMP.cmp b/tools/dct/config/PMIC_NCPMUMP.cmp +new file mode 100644 +index 00000000000..4e48b25cfab +--- /dev/null ++++ b/tools/dct/config/PMIC_NCPMUMP.cmp +@@ -0,0 +1,10 @@ ++[PMIC_TABLE] ++CHIP = ++NUM_LDO = ++FUNCTION = pmic_set_register_value ++LDO_APPNAME_DEFAULT = MT65XX_POWER_NONE ++INCLUDE_HEADER = linux/types.h:mach/mt_typedefs.h:mach/upmu_common.h:mach/upmu_hw.h:mach/mt_pm_ldo.h ++ ++[LDO_NAME1] ++LDO_NAME = ++PARAMETER_NAME = +diff --git a/tools/dct/config/YuSu.cmp b/tools/dct/config/YuSu.cmp +new file mode 100644 +index 00000000000..35fd5227b0a +--- /dev/null ++++ b/tools/dct/config/YuSu.cmp +@@ -0,0 +1,989 @@ ++[ADC_variables] ++TEMPERATURE ++TEMPERATURE1 ++REF_CURRENT ++BATTERY_VOLTAGE ++CHARGER_VOLTAGE ++LCM_VOLTAGE ++HF_MIC ++UTMS ++BOARD_ID ++BOARD_ID_2 ++BOARD_ID_3 ++ADC_FDD_RF_PARAMS_DYNAMIC_CUSTOM_CH ++ ++[EINT_variables] ++MT7118_WIMAX ++MT5921_WIFI ++BT ++KPD_PWRKEY ++KPD_SLIDE ++TOUCH ++TOUCH_PANEL ++MT6326_PMIC ++HEADSET ++MHALL ++HALL_1 ++HALL_2 ++HALL_3 ++FM_RDS ++HALL_4 ++ALS ++OFN ++WIFI ++COMBO_BGF ++COMBO_ALL ++GSE_1 ++GSE_2 ++MSE ++MHL ++GYRO ++ACCDET ++SWTP ++OTG_IDDIG ++CMMB ++NFC ++IRQ_NFC ++HEADSET_HOOK ++MT6329_PMIC ++EINT_HDMI_HPD ++DT_EXT_MD_EXP ++DT_EXT_MD_WDT ++DT_EXT_MD_WK_UP ++DT_EXT_MD_WK_UP_USB ++DT_EXT_MD_EXP ++EVDO_DT_EXT_MDM_RDY ++EVDO_DT_EXT_MDM_WAKE_AP ++EVDO_DT_EXT_MDM_RST_IND ++EVDO_DT_EXT_MDM_PWR_ON ++EVDO_DT_EXT_UART_MDM_WAKE_AP ++EVDO_DT_EXT_MDM_ACK ++EVDO_DT_EXT_MDM_FLOW_CTRL ++MT6280_USB_WAKEUP ++MT6280_WD ++SIM1_HOT_PLUG ++SIM2_HOT_PLUG ++SIM3_HOT_PLUG ++MSDC1_INS ++MSDC2_INS ++MT6322_PMIC ++MT6323_PMIC ++MT6333_PMIC ++MT6397_PMIC ++CHR_STAT ++LTE_SDIO ++LTE_WDT ++EXT_BUCK_OC ++EDP_INTN ++DSI_TE ++DSI_TE_1 ++VBUS_DETECT_PIN_EINT ++FPC1145 ++GOODIX_FP ++SENSORHUB ++MRDUMP_EXT_RST ++EXT_DBG_KEY ++EINT_SIL7033_INT ++EINT_FUSB300_DET_IN ++SMART_PA ++RT9465_SLAVE_CHR ++MT6336_CHR ++MT6311_PMIC ++MT6313_PMIC ++MT6351_PMIC ++MT6353_PMIC ++MT6335_PMIC ++MT6337_PMIC ++MT6350_PMIC ++RT1711H_PD ++ ++[GPIO_variables] ++GPIO_AST_RST_PIN ++GPIO_AST_CS_PIN ++GPIO_AST_CLK32K_PIN ++GPIO_AST_WAKEUP_PIN ++GPIO_AST_INTR_PIN ++GPIO_AST_WAKEUP_INTR_PIN ++GPIO_AST_AFC_SWITCH_PIN ++GPIO_HEADSET_INSERT_PIN ++GPIO_HEADSET_REMOTE_BUTTON_PIN ++GPIO_EXTERNAL_AMPLIFIER_PIN ++GPIO_BT_POWREN_PIN ++GPIO_BT_RESET_PIN ++GPIO_BT_EINT_PIN ++GPIO_BT_CLK_PIN ++GPIO_BYPASS_BOOST_PIN ++GPIO_CMMB_EINT_PIN ++GPIO_CMMB_LDO_EN_PIN ++GPIO_CMMB_RST_PIN ++GPIO_I2C_APPM_SCA_PIN ++GPIO_I2C_APPM_SDA_PIN ++GPIO_I2C0_SCA_PIN ++GPIO_I2C0_SDA_PIN ++GPIO_I2C1_SCA_PIN ++GPIO_I2C1_SDA_PIN ++GPIO_I2C2_SCA_PIN ++GPIO_I2C2_SDA_PIN ++GPIO_I2C3_SCA_PIN ++GPIO_I2C3_SDA_PIN ++GPIO_I2C4_SCA_PIN ++GPIO_I2C4_SDA_PIN ++GPIO_I2C5_SDA_PIN ++GPIO_I2C5_SCA_PIN ++GPIO_I2C6_SDA_PIN ++GPIO_I2C6_SCA_PIN ++GPIO_I2C7_SDA_PIN ++GPIO_I2C7_SCA_PIN ++GPIO_NFC_FIRM_PIN ++GPIO_NFC_EINT_PIN ++GPIO_NFC_VENB_PIN ++GPIO_NFC_OSC_EN_PIN ++GPIO_IRQ_NFC_PIN ++GPIO_NFC_RST_PIN ++GPIO_SPI_CS_PIN ++GPIO_SPI_SCK_PIN ++GPIO_SPI_MISO_PIN ++GPIO_SPI_MOSI_PIN ++GPIO_SPI2_CS_PIN ++GPIO_SPI2_SCK_PIN ++GPIO_SPI2_MISO_PIN ++GPIO_SPI2_MOSI_PIN ++GPIO_PWM_1_PIN ++GPIO_PWM_2_PIN ++GPIO_PWM_3_PIN ++GPIO_PWM_4_PIN ++GPIO_PWM_5_PIN ++GPIO_PWM_6_PIN ++GPIO_PWM_7_PIN ++GPIO_PWR_AVAIL_WLC ++GPIO_PWR_BUTTON_PIN ++GPIO_PMIC_EINT_PIN ++GPIO_RFIC0_BSI_CK ++GPIO_RFIC0_BSI_CS ++GPIO_RFIC0_BSI_D0 ++GPIO_RFIC0_BSI_D1 ++GPIO_RFIC0_BSI_D2 ++GPIO_SDHC_EINT_PIN ++GPIO_SDHC_MC2CM_PIN ++GPIO_SDHC_MC2DA2_PIN ++GPIO_SDHC_MC2DA3_PIN ++GPIO_SDHC_MC2WP_PIN ++GPIO_SDHC_MC2PWRON_PIN ++GPIO_SDHC_MC2INS_PIN ++GPIO_TDM_REQ ++GPIO_DISP_LSCK_PIN ++GPIO_DISP_LSA0_PIN ++GPIO_DISP_LSDA_PIN ++GPIO_DISP_LSCE_PIN ++GPIO_DISP_ID0_PIN ++GPIO_DISP_ID1_PIN ++GPIO_GPS_PWREN_PIN ++GPIO_GPS_SYNC_PIN ++GPIO_GPS_EINT_PIN ++GPIO_GPS_CLK_PIN ++GPIO_GPS_RST_PIN ++GPIO_GPS_LNA_PIN ++GPIO_UART_URXD0_PIN ++GPIO_UART_UTXD0_PIN ++GPIO_UART_UCTS0_PIN ++GPIO_UART_URTS0_PIN ++GPIO_UART_URXD1_PIN ++GPIO_UART_UTXD1_PIN ++GPIO_UART_UCTS1_PIN ++GPIO_UART_URTS1_PIN ++GPIO_UART_URXD2_PIN ++GPIO_UART_UTXD2_PIN ++GPIO_UART_UCTS2_PIN ++GPIO_UART_URTS2_PIN ++GPIO_UART_URXD3_PIN ++GPIO_UART_UTXD3_PIN ++GPIO_UART_UCTS3_PIN ++GPIO_UART_URTS3_PIN ++GPIO_UART_URXD4_PIN ++GPIO_UART_UTXD4_PIN ++GPIO_UART_UCTS4_PIN ++GPIO_UART_URTS4_PIN ++GPIO_KPD_KCOL0_PIN ++GPIO_KPD_KCOL1_PIN ++GPIO_KPD_KCOL2_PIN ++GPIO_KPD_KCOL3_PIN ++GPIO_KPD_KCOL4_PIN ++GPIO_KPD_KCOL5_PIN ++GPIO_KPD_KCOL6_PIN ++GPIO_KPD_KCOL7_PIN ++GPIO_KPD_KROW0_PIN ++GPIO_KPD_KROW1_PIN ++GPIO_KPD_KROW2_PIN ++GPIO_KPD_KROW3_PIN ++GPIO_KPD_KROW4_PIN ++GPIO_KPD_KROW5_PIN ++GPIO_KPD_KROW6_PIN ++GPIO_KPD_KROW7_PIN ++GPIO_CTP_EINT_PIN ++GPIO_CTP_EN_PIN ++GPIO_CTP_RST_PIN ++GPIO_WIFI_RST_PIN ++GPIO_WIFI_CLK_PIN ++GPIO_WIFI_EINT_PIN ++GPIO_WIFI_PMU_EN_PIN ++GPIO_WIFI_LDO_EN_PIN ++GPIO_BQ_INT_PIN ++GPIO_WIMAX_INT_PIN ++GPIO_WIMAX_RST_PIN ++GPIO_CAMERA_CMRST_PIN ++GPIO_CAMERA_CMPDN_PIN ++GPIO_CAMERA_CMRST1_PIN ++GPIO_CAMERA_CMPDN1_PIN ++GPIO_CAMERA_FLASH_EN_PIN ++GPIO_CAMERA_FLASH_MODE_PIN ++GPIO_CAMERA_LDO_EN_PIN ++GPIO_CAMERA_AF_EN_PIN ++GPIO_CAMERA_RCN_PIN ++GPIO_CAMERA_RCP_PIN ++GPIO_CAMERA_RDN0_PIN ++GPIO_CAMERA_RDP0_PIN ++GPIO_CAMERA_RDN1_PIN ++GPIO_CAMERA_RDP1_PIN ++GPIO_CAMERA_RDN2_PIN ++GPIO_CAMERA_RDP2_PIN ++GPIO_CAMERA_RDN3_PIN ++GPIO_CAMERA_RDP3_PIN ++GPIO_CAMERA_RCN_A_PIN ++GPIO_CAMERA_RCP_A_PIN ++GPIO_CAMERA_RDN0_A_PIN ++GPIO_CAMERA_RDP0_A_PIN ++GPIO_CAMERA_RDN1_A_PIN ++GPIO_CAMERA_RDP1_A_PIN ++GPIO_CAMERA_RDN2_A_PIN ++GPIO_CAMERA_RDP2_A_PIN ++GPIO_CAMERA_RDN3_A_PIN ++GPIO_CAMERA_RDP3_A_PIN ++GPIO_CAMERA_RCN_B_PIN ++GPIO_CAMERA_RCP_B_PIN ++GPIO_CAMERA_RDN0_B_PIN ++GPIO_CAMERA_RDP0_B_PIN ++GPIO_CAMERA_RDN1_B_PIN ++GPIO_CAMERA_RDP1_B_PIN ++GPIO_PMIC_EINT_PIN ++GPIO_PCM_DAICLK_PIN ++GPIO_PCM_DAIPCMOUT_PIN ++GPIO_PCM_DAIPCMIN_PIN ++GPIO_PCM_DAISYNC_PIN ++GPIO_JBD_INPUT_UP_PIN ++GPIO_JBD_INPUT_LEFT_PIN ++GPIO_JBD_INPUT_RIGHT_PIN ++GPIO_JBD_INPUT_DOWN_PIN ++GPIO_JTAG_TMS_PIN ++GPIO_JTAG_TCK_PIN ++GPIO_JTAG_TDI_PIN ++GPIO_JTAG_TDO_PIN ++GPIO_JTAG_TRSTN_PIN ++GPIO_QWERTYSLIDE_EINT_PIN ++GPIO_CAPTOUCH_EINT_PIN ++GPIO_HALL_1_PIN ++GPIO_HALL_2_PIN ++GPIO_HALL_3_PIN ++GPIO_HALL_4_PIN ++GPIO_OFN_EINT_PIN ++GPIO_OFN_DWN_PIN ++GPIO_OFN_RST_PIN ++GPIO_MHALL_EINT_PIN ++GPIO_FM_RDS_PIN ++GPIO_FM_CLK_PIN ++GPIO_ALS_EINT_PIN ++GPIO_MATV_PWR_ENABLE ++GPIO_MATV_N_RST ++GPIO_I2S_DATA ++GPIO_SPEAKER_EN_PIN ++GPIO_RECEIVER_EN_PIN ++GPIO_SPEAKER_EARPIECE_SWITCH_PIN ++GPIO_SWCHARGER_EN_PIN ++GPIO_COMBO_PMU_EN_PIN ++GPIO_COMBO_PMUV28_EN_PIN ++GPIO_COMBO_RST_PIN ++GPIO_COMBO_RTCCLK_PIN ++GPIO_COMBO_BGF_EINT_PIN ++GPIO_COMBO_ALL_EINT_PIN ++GPIO_COMBO_6620_LDO_EN_PIN ++GPIO_COMBO_I2S_CK_PIN ++GPIO_COMBO_I2S_DAT_PIN ++GPIO_COMBO_I2S_WS_PIN ++GPIO_COMBO_UTXD_PIN ++GPIO_COMBO_URXD_PIN ++GPIO_I2S0_CK_PIN ++GPIO_I2S0_DAT_PIN ++GPIO_I2S0_MCLK_PIN ++GPIO_I2S0_WS_PIN ++GPIO_I2S1_CK_PIN ++GPIO_I2S1_DAT_PIN ++GPIO_I2S1_MCLK_PIN ++GPIO_I2S1_WS_PIN ++GPIO_GSE_1_EINT_PIN ++GPIO_GSE_2_EINT_PIN ++GPIO_MSE_EINT_PIN ++GPIO_GYRO_EINT_PIN ++GPIO_ACCDET_EINT_PIN ++GPIO_OTG_IDDIG_EINT_PIN ++GPIO_OTG_DRVVBUS_PIN ++GPIO_VBUS_DETECT_PIN ++GPIO_USB_DEFAULT_DEVICE_MODE ++GPIO_HEADSET_SW_EN_PIN ++GPIO_HEADSET_JPOLE_PIN ++GPIO_HEADSET_REMOTE_BUTTON_PIN ++GPIO_DISP_LRSTB_PIN ++GPIO_HDMI_I2S_OUT_CK_PIN ++GPIO_HDMI_I2S_OUT_WS_PIN ++GPIO_HDMI_I2S_OUT_DAT_PIN ++GPIO_HDMI_I2C_SCL ++GPIO_HDMI_I2C_SDA ++GPIO_HDMI_POWER_CONTROL ++GPIO_HDMI_9024_RESET ++GPIO_HDMI_EINT_PIN ++GPIO_HDMI_LCD_SW_EN ++GPIO_HDMI_PWR_1_2V_EN ++GPIO_HIFI_VCCA_EN_PIN ++GPIO_HIFI_AVCC_EN_PIN ++GPIO_HIFI_DVCC_EN_PIN ++GPIO_HW_VER_CHECK_PIN ++GPIO_MATV_I2S_CK_PIN ++GPIO_MATV_I2S_WS_PIN ++GPIO_MATV_I2S_DAT_PIN ++GPIO_2G_TX_FILTER_MODE_PIN ++GPIO_2G_RX_ACTIVE_PIN ++GPIO_4G_RX_ACTIVE_PIN ++GPIO_4G_TX_FILTER_MODE_PIN ++GPIO_52_RST ++GPIO_52_TO_2G ++GPIO_52_3G_USB_RESUME ++GPIO_52_KCOL0 ++GPIO_52_REC_SW ++GPIO_52_WD ++GPIO_52_USB_SW2 ++GPIO_52_TO_3G ++GPIO_52_PWR_KEY ++GPIO_52_USB_SW1 ++GPIO_EXT_BUCK_EN_A_PIN ++GPIO_EXT_BUCK_EN_B_PIN ++GPIO_EXT_BUCK_IC_EN_PIN ++GPIO_EXT_BUCK_OC_EINT_PIN ++GPIO_EXT_MD_RST ++GPIO_EXT_MD_PWR_KEY ++GPIO_EXT_MD_DL_KEY ++GPIO_EXT_MD_WD ++GPIO_EXT_MD_EXP ++GPIO_EXT_MD_WK_AP ++GPIO_EXT_MD_META ++GPIO_EXT_AP_WK_MD ++GPIO_EXT_USB_SW1 ++GPIO_EXT_USB_SW2 ++GPIO_EXT_USB_RESUME ++GPIO_EXT_SSW_S1 ++GPIO_EXT_SSW_S2 ++GPIO_EXT_SSW_EN ++GPIO_EXT_MD_DUMP ++GPIO_EXT_SPKAMP_EN_PIN ++GPIO_6280_USB_SW1 ++GPIO_6280_USB_SW2 ++GPIO_6280_KCOL0 ++GPIO_6280_USB_WAKEUP_EINT ++GPIO_6280_WD ++GPIO_6280_RST ++GPIO_VIA_MDM_RST ++GPIO_VIA_MDM_RST_IND ++GPIO_VIA_MDM_PWR_EN ++GPIO_VIA_MDM_PWR_ON ++GPIO_VIA_CP_BOOT_SEL ++GPIO_VIA_AP_WAKE_MDM ++GPIO_VIA_MDM_RDY ++GPIO_VIA_MDM_WAKE_AP ++GPIO_VIA_AP_RDY ++GPIO_VIA_SDIO_ACK ++GPIO_VIA_FLOW_CTRL ++GPIO_VIA_ETS_SEL ++GPIO_MSDC0_DAT0 ++GPIO_MSDC0_DAT1 ++GPIO_MSDC0_DAT2 ++GPIO_MSDC0_DAT3 ++GPIO_MSDC0_DAT4 ++GPIO_MSDC0_DAT5 ++GPIO_MSDC0_DAT6 ++GPIO_MSDC0_DAT7 ++GPIO_MSDC0_CMD ++GPIO_MSDC0_CLK ++GPIO_MSDC0_RSTB ++GPIO_MSDC0_DSL ++GPIO_MSDC1_DAT0 ++GPIO_MSDC1_DAT1 ++GPIO_MSDC1_DAT2 ++GPIO_MSDC1_DAT3 ++GPIO_MSDC1_CMD ++GPIO_MSDC1_CLK ++GPIO_MSDC1_INSI ++GPIO_MSDC1_SDWPI ++GPIO_MSDC2_DAT0 ++GPIO_MSDC2_DAT1 ++GPIO_MSDC2_DAT2 ++GPIO_MSDC2_DAT3 ++GPIO_MSDC2_CMD ++GPIO_MSDC2_CLK ++GPIO_MSDC2_INSI ++GPIO_MSDC2_SDWPI ++GPIO_MSDC3_DAT0 ++GPIO_MSDC3_DAT1 ++GPIO_MSDC3_DAT2 ++GPIO_MSDC3_DAT3 ++GPIO_MSDC3_CMD ++GPIO_MSDC3_CLK ++GPIO_MSDC4_DAT0 ++GPIO_MSDC4_DAT1 ++GPIO_MSDC4_DAT2 ++GPIO_MSDC4_DAT3 ++GPIO_MSDC4_DAT4 ++GPIO_MSDC4_DAT5 ++GPIO_MSDC4_DAT6 ++GPIO_MSDC4_DAT7 ++GPIO_MSDC4_CMD ++GPIO_MSDC4_CLK ++GPIO_MSDC4_RSTB ++GPIO_SIM1_HOT_PLUG ++GPIO_SIM2_HOT_PLUG ++GPIO_FSA8049_PIN ++GPIO_ANT_SW_PIN ++GPIO_EINT_CHG_STAT_PIN ++GPIO_MHL_EINT_PIN ++GPIO_MHL_I2S_OUT_CK_PIN ++GPIO_MHL_I2S_OUT_WS_PIN ++GPIO_MHL_I2S_OUT_DAT_PIN ++GPIO_MHL_I2C_SCL ++GPIO_MHL_I2C_SDA ++GPIO_MHL_RST_B_PIN ++GPIO_MHL_POWER_CTRL_PIN ++GPIO_EXT_DISP_DPI0_PIN ++GPIO_TD_HIF_DCX_PIN ++GPIO_TD_HIF_WR_PIN ++GPIO_TD_HIF_RD_PIN ++GPIO_CAMERA_2_CMPDN_PIN ++GPIO_CAMERA_2_CMRST_PIN ++GPIO_CAMERA_2_CMMCLK_PIN ++GPIO_CAMERA_2_CMRST_PIN ++GPIO_CAMERA_2_CMPDN_PIN ++GPIO_CHR_PSEL_PIN ++GPIO_CHR_CE_PIN ++GPIO_CHR_SPM_PIN ++GPIO_CAMERA_FLASH_EXT1_PIN ++GPIO_CAMERA_FLASH_EXT2_PIN ++GPIO_GPS_EN_MT3332 ++GPIO_GPS_FRAM_SYNC_MT3332 ++GPIO_GPS_TXIND_MT3332 ++GPIO_GPS_LNA_MT3332 ++GPIO_EXTMD_PCM_CLK_PIN ++GPIO_EXTMD_PCM_PCMOUT_PIN ++GPIO_EXTMD_PCM_PCMIN_PIN ++GPIO_EXTMD_PCM_SYNC_PIN ++GPIO_MRG_I2S_PCM_CLK_PIN ++GPIO_MRG_I2S_PCM_SYNC_PIN ++GPIO_MRG_I2S_PCM_RX_PIN ++GPIO_MRG_I2S_PCM_TX_PIN ++GPIO_DAIBT_PCM_CLK_PIN ++GPIO_DAIBT_PCM_WS_PIN ++GPIO_DAIBT_PCM_DI_PIN ++GPIO_DAIBT_PCM_DO_PIN ++GPIO_DAC_I2S_CLK_PIN ++GPIO_DAC_I2S_WS_PIN ++GPIO_DAC_I2S_DAT_OUT_PIN ++GPIO_DAC_I2S_MCLK_PIN ++GPIO_ADC_I2S_CLK_PIN ++GPIO_ADC_I2S_WS_PIN ++GPIO_ADC_I2S_DAT_IN_PIN ++GPIO_ADC_I2S_MCLK_PIN ++GPIO_I2S_CLK_PIN ++GPIO_I2S_WS_PIN ++GPIO_I2S_DAT_OUT_PIN ++GPIO_I2S_DAT_IN_PIN ++GPIO_AUD_CLK_MOSI_PIN ++GPIO_AUD_DAT_MOSI_PIN ++GPIO_AUD_DAT_MISO_PIN ++GPIO_AUD_EXTHP_EN_PIN ++GPIO_AUD_EXTHP_GAIN_PIN ++GPIO_AUD_EXTDAC_PWREN_PIN ++GPIO_AUD_EXTDAC_RST_PIN ++GPIO_AUD_EXTPLL_S0_PIN ++GPIO_AUD_EXTPLL_S1_PIN ++GPIO_AUD_EXTHPBUF_SDB_PIN ++GPIO_AUD_EXTHPBUF_HI_Z_PIN ++GPIO_AUD_EXTHPBUF_GAIN_PIN ++GPIO_SIM_SWITCH_CLK_PIN ++GPIO_SIM_SWITCH_DAT_PIN ++GPIO_FDD_BAND_SUPPORT_DETECT_1ST_PIN ++GPIO_FDD_BAND_SUPPORT_DETECT_2ND_PIN ++GPIO_FDD_BAND_SUPPORT_DETECT_3RD_PIN ++GPIO_FDD_BAND_SUPPORT_DETECT_4TH_PIN ++GPIO_FDD_BAND_SUPPORT_DETECT_5TH_PIN ++GPIO_FDD_BAND_SUPPORT_DETECT_6TH_PIN ++GPIO_FDD_BAND_SUPPORT_DETECT_7TH_PIN ++GPIO_FDD_BAND_SUPPORT_DETECT_8TH_PIN ++GPIO_FDD_BAND_SUPPORT_DETECT_9TH_PIN ++GPIO_FDD_BAND_SUPPORT_DETECT_ATH_PIN ++GPIO_SIM1_SCLK ++GPIO_SIM1_SRST ++GPIO_SIM1_SIO ++GPIO_SIM2_SCLK ++GPIO_SIM2_SRST ++GPIO_SIM2_SIO ++GPIO_SWITCH1_1V8_PIN ++GPIO_USB_MHL_SW_SEL1 ++GPIO_USB_MHL_SW_SEL2 ++GPIO_LCM_LED_EN ++GPIO_LCM_MIPI2LVDS_EN ++GPIO_LCM_MIPI2LVDS_PWR_EN ++GPIO_LCM_LVDS_PWR_EN ++GPIO_LCM_LVDS_EN ++GPIO_LCM_PWR ++GPIO_LCM_PWR_EN ++GPIO_LCM_PWR2_EN ++GPIO_LCM_RST ++GPIO_LCM_STB ++GPIO_LCM_BL_EN ++GPIO_LCM_LVL_SHIFT_EN ++GPIO_LCM_BRIDGE_EN ++GPIO_SSW_EN_PIN ++GPIO_SSW_CH_SWAP_PIN ++GPIO_LCD_BIAS_ENP_PIN ++GPIO_LCD_BIAS_ENN_PIN ++GPIO_LCD_DRV_EN_PIN ++GPIO_LCDBL_EN_PIN ++GPIO_LCD_ENN ++GPIO_LCD_ENP ++GPIO_CMCSK ++GPIO_CMDAT0 ++GPIO_CMDAT1 ++GPIO_CMDAT2 ++GPIO_CMDAT3 ++GPIO_CMDAT4 ++GPIO_CMDAT5 ++GPIO_CMDAT6 ++GPIO_CMDAT7 ++GPIO_CMDAT8 ++GPIO_CMDAT9 ++GPIO_CMHSYNC ++GPIO_CMMCLK ++GPIO_CMPCLK ++GPIO_CMVSYNC ++GPIO_COMPASS_RST_PIN ++GPIO_EXT_BUCK_EN_PIN ++GPIO_EXT_BUCK_VSEL_PIN ++GPIO_LTE_SDIO_EINT_PIN ++GPIO_LTE_WDT_EINT_PIN ++GPIO_LTE_POWER_PIN ++GPIO_LTE_RESET_PIN ++GPIO_LTE_WK_MD_PIN ++GPIO_SWITCH1_1V8_PIN ++GPIO_CAMERA_MAIN_DVDD_ENADBLE_PIN ++GPIO_HIFI_LDO1V8_EN_PIN ++GPIO_SMARTPA_RST_PIN ++GPIO_EARPHONE_DETECT_PIN ++GPIO_LCD_ENP_PIN ++GPIO_HIFI_LDO3V3_EN_PIN ++GPIO_CAMERA_MCLK_EN_PIN ++GPIO_LCD_ENN_PIN ++GPIO_NXPSPA_I2S_DATAOUT_PIN ++GPIO_NXPSPA_I2S_DATAIN_PIN ++GPIO_NXPSPA_I2S_LRCK_PIN ++GPIO_NXPSPA_I2S_BCK_PIN ++GPIO_STROBE_LED_TPS61311_STRB0 ++GPIO_STROBE_LED_TPS61311_STRB1 ++GPIO_STROBE_LED_TPS61311_TXMASK ++GPIO_STROBE_LED_TPS61311_NRESET ++GPIO_EDP_EINT_PIN ++GPIO_EDP_ENPSR_PIN ++GPIO_EDP_SYSRSTN_PIN ++GPIO_EDP_STANDBY_PIN ++GPIO_EXT_BUCK_OC_EINT_PIN ++GPIO_VOW_CLK_MISO_PIN ++GPIO_G2_TXEN_PIN ++GPIO_G2_TXD3_PIN ++GPIO_G2_TXD2_PIN ++GPIO_G2_TXD1_PIN ++GPIO_G2_TXD0_PIN ++GPIO_G2_TXC_PIN ++GPIO_G2_RXC_PIN ++GPIO_G2_RXD0_PIN ++GPIO_G2_RXD1_PIN ++GPIO_G2_RXD2_PIN ++GPIO_G2_RXD3_PIN ++GPIO_ESW_INT_PIN ++GPIO_G2_RXDV_PIN ++GPIO_MDC_PIN ++GPIO_MDIO_PIN ++GPIO_ESW_RST_PIN ++GPIO_IRRX_PIN ++GPIO_HDMI_RX_SDA_PIN ++GPIO_HDMI_RX_SCL_PIN ++GPIO_MAIN_CAM_ID_PIN ++GPIO_SUB_CAM_ID_PIN ++GPIO_LCD_MAKER_ID ++GPIO_AUDIO_SEL ++GPIO_DSV_EN ++GPIO_TOUCH_MAKER_ID ++GPIO_BAT_ID ++GPIO_BATT_ID_PULLUP ++GPIO_SENSOR0_I2C_SDA ++GPIO_SENSOR0_I2C_SCL ++GPIO_COMMON_I2C_SCL ++GPIO_COMMON_I2C_SDA ++GPIO_LCD_BL_EN ++GPIO_DSV_AVEE_EN ++GPIO_DSV_AVDD_EN ++GPIO_NFC_MODE ++GPIO_HP_AMP_EN ++GPIO_SPK_AMP_EN ++GPIO_SMARTPA_I2S_WS_PIN ++GPIO_SMARTPA_I2S_DOUT_PIN ++GPIO_SMARTPA_I2S_DIN_PIN ++GPIO_SMARTPA_I2S_BCK_PIN ++GPIO_SMARTPA_RST_PIN ++GPIO_SMARTPA_EINT_PIN ++GPIO_SMARTPA_LDO_EN_PIN ++GPIO_EXT_SPKAMP2_EN_PIN ++GPIO_RCV_SPK_SWITCH_PIN ++GPIO_FLASH_LED_EN ++GPIO_TORCH_EN ++GPIO_LTE_VSRAM_EXT_POWER_EN_PIN ++GPIO_CAMERA_KEY1_PIN ++GPIO_CAMERA_KEY2_PIN ++GPIO_CODEC_SPI_CLK_PIN ++GPIO_CODEC_SPI_MISO_PIN ++GPIO_CODEC_SPI_MOSI_PIN ++GPIO_CODEC_SPI_CS_PIN ++GPIO_DTV_SPI_SCK_PIN ++GPIO_DTV_SPI_MISO_PIN ++GPIO_DTV_SPI_MOSI_PIN ++GPIO_DTV_SPI_CS_PIN ++GPIO_LCM_RST2_PIN ++GPIO_IRTX_OUT_PIN ++GPIO_PWRAP_SPI0_MI_PIN ++GPIO_PWRAP_SPI0_MO_PIN ++GPIO_PWRAP_SPI0_CK_PIN ++GPIO_PWRAP_SPI0_CSN_PIN ++GPIO_CMCSD0_PIN ++GPIO_CMCSD1_PIN ++GPIO_CMCSD2_PIN ++GPIO_CMCSD3_PIN ++GPIO_SENSORHUB_HOST_RESET ++GPIO_SENSORHUB_HOST_BOOT_ROM ++GPIO_SENSORHUB_WAKE_UP ++GPIO_SENSORHUB_EINT_PIN ++GPIO_HAPTIC_DRV_EN_PIN ++GPIO_HAPTIC_PWM_EN_PIN ++GPIO_LCD_IO_0_PIN ++GPIO_LCD_IO_1_PIN ++GPIO_LCD_IO_2_PIN ++GPIO_LCD_IO_3_PIN ++GPIO_LCD_IO_4_PIN ++GPIO_LCD_IO_5_PIN ++GPIO_LCD_IO_6_PIN ++GPIO_LCD_IO_7_PIN ++GPIO_LCD_IO_8_PIN ++GPIO_LCD_IO_9_PIN ++GPIO_LCD_IO_10_PIN ++GPIO_LCD_IO_11_PIN ++GPIO_LCD_IO_12_PIN ++GPIO_LCD_IO_13_PIN ++GPIO_LCD_IO_14_PIN ++GPIO_LCD_IO_15_PIN ++GPIO_LCD_IO_16_PIN ++GPIO_LCD_IO_17_PIN ++GPIO_LCD_IO_18_PIN ++GPIO_LCD_IO_19_PIN ++GPIO_LCD_IO_20_PIN ++GPIO_LCD_IO_21_PIN ++GPIO_LCD_IO_22_PIN ++GPIO_LCD_IO_23_PIN ++GPIO_PWM_BL_PIN ++GPIO_LCD_TE_PIN ++GPIO_LCD_PA_PIN ++GPIO_LCD_WRB_PIN ++GPIO_LCD_RDB_PIN ++GPIO_LCD_CEB_PIN ++GPIO_DPI_CK_PIN ++GPIO_DPI_DE_PIN ++GPIO_DPI_VSYNC_PIN ++GPIO_DPI_HSYNC_PIN ++GPIO_DSI_TE_PIN ++GPIO_DSI_CKP_PIN ++GPIO_DSI_CKN_PIN ++GPIO_DSI_D0P_PIN ++GPIO_DSI_D0N_PIN ++GPIO_DSI_D1P_PIN ++GPIO_DSI_D1N_PIN ++GPIO_DSI_D2P_PIN ++GPIO_DSI_D2N_PIN ++GPIO_DISP_LSDI_PIN ++GPIO_HEART_RATE_RESET_PIN ++GPIO_MT8193_BUS_SWITCH_PIN ++GPIO_HDMI_IN_SWITCH_PORT_PIN ++GPIO_CAMERA_VCAMA_ENABLE_PIN ++GPIO_USB_REDRI_SW_C1_PIN ++GPIO_USB_REDRI_SW_C2_PIN ++GPIO_USB_TYPEC_EINT_PIN ++GPIO_USB_TYPEC_SW_EN_PIN ++GPIO_USB_TYPEC_SW_SEL_PIN ++GPIO_CAMERA_MIPI_SWITCH_EN_PIN ++GPIO_CAMERA_MIPI_SWITCH_SEL_PIN ++GPIO_U3_REDRIVER_C2_PIN ++GPIO_U3_REDRIVER_C1_PIN ++GPIO_FUSB340_USBTYPEC_SEL_PIN ++GPIO_FUSB340_USBTYPEC_NOE_PIN ++GPIO_SIL7033_RST_PIN ++GPIO_HP_DEPOP_SWITCH_PIN ++GPIO_CMMCLK1_PIN ++GPIO_EINT_CHG_STAT_PIN ++GPIO_FINGERPRINT_RST_PIN ++GPIO_ANT_SEL0_PIN ++GPIO_ANT_SEL1_PIN ++GPIO_ANT_SEL2_PIN ++GPIO_ANT_SEL3_PIN ++GPIO_ANT_SEL4_PIN ++GPIO_ANT_SEL5_PIN ++GPIO_ANT_SEL6_PIN ++GPIO_ANT_SEL7_PIN ++GPIO_FP_EINT_PIN ++GPIO_SRCLKENA_PIN ++GPIO_FUSB300_EINT_DET_IN_PIN ++GPIO_SIL7033_EINT_INT_PIN ++GPIO_VIB_EN_PIN ++GPIO_VIB_PWM_PIN ++GPIO_VMBUCK_I2C_SDA ++GPIO_VMBUCK_I2C_SCL ++GPIO_Smart_PA_EINT_PIN ++GPIO_Smart_PA_RESET_N_PIN ++GPIO_SMARTPA_LRCK_PIN ++GPIO_EINT_SMARTPA_PIN ++GPIO_VCAM_EN_PIN ++GPIO_CAMERA_VCAMD_EN_PIN ++GPIO_EINT_WPC_PIN ++GPIO_BPI_ANT3_PIN ++GPIO_BPI_ANT2_PIN ++GPIO_BPI_ANT1_PIN ++GPIO_BPI_ANT0_PIN ++GPIO_MT6306_I2C_SCL_PIN ++GPIO_MT6306_I2C_SDA_PIN ++GPIO_NFC_SRCLKENAI_PIN ++GPIO_IR_LDO_EN_PIN ++GPIO_RFIC0_BSI_EN_PIN ++GPIO_CAMERA_CMMCLK0_PIN ++GPIO_DEPOP_SWITCH_PIN ++GPIO_FLASH_STROBE_PIN ++GPIO_SIM_SD_INT ++GPIO_U3_PD_PWR_EN_PIN ++GPIO_RT9465_PWR_EN_PIN ++GPIO_RT9465_EINT_PIN ++GPIO_MT6336_EINT_PIN ++GPIO_EINT_RAMDUMP_PIN ++GPIO_SIM3_HOT_PLUG ++ ++[GPIO_MODE_EINT_WHITE_LIST] ++DSI_TE ++ ++[GPIO_MODE] ++GPIO = _M_GPIO ++CLK = _M_CLK ++EINT = _M_EINT ++MD_EINT = _M_MDEINT ++IRQ = _M_IRQ ++KROW = _M_KROW ++KCOL = _M_KCOL ++PWM = _M_PWM ++ ++[GPIO_FREQ] ++GPIO_BT_CLK_PIN = CLK_SRC_F32K ++GPIO_GPS_CLK_PIN = CLK_SRC_F32K ++GPIO_WIFI_CLK_PIN = CLK_SRC_F32K ++GPIO_FM_CLK_PIN = CLK_SRC_F32K ++GPIO_COMBO_RTCCLK_PIN = CLK_SRC_F32K ++ ++[GPIO_VARIABLES_MAPPING] ++GPIO_FDD_BAND_SUPPORT_DETECT_1ST_PIN ++GPIO_FDD_BAND_SUPPORT_DETECT_2ND_PIN ++GPIO_FDD_BAND_SUPPORT_DETECT_3RD_PIN ++GPIO_FDD_BAND_SUPPORT_DETECT_4TH_PIN ++GPIO_FDD_BAND_SUPPORT_DETECT_5TH_PIN ++GPIO_FDD_BAND_SUPPORT_DETECT_6TH_PIN ++GPIO_FDD_BAND_SUPPORT_DETECT_7TH_PIN ++GPIO_FDD_BAND_SUPPORT_DETECT_8TH_PIN ++GPIO_FDD_BAND_SUPPORT_DETECT_9TH_PIN ++GPIO_FDD_BAND_SUPPORT_DETECT_ATH_PIN ++GPIO_SIM_SWITCH_DAT_PIN ++GPIO_SIM_SWITCH_CLK_PIN ++GPIO_SIM1_HOT_PLUG ++GPIO_SIM2_HOT_PLUG ++GPIO_CMDAT1 ++GPIO_SIM1_SCLK ++GPIO_SIM1_SRST ++GPIO_SIM1_SIO ++GPIO_SIM2_SCLK ++GPIO_SIM2_SRST ++GPIO_SIM2_SIO ++GPIO_AST_CS_PIN ++GPIO_AST_CS_PIN_NCE ++GPIO_AST_RST_PIN ++GPIO_AST_CLK32K_PIN ++GPIO_AST_CLK32K_PIN_CLK ++GPIO_AST_WAKEUP_PIN ++GPIO_AST_WAKEUP_INTR_PIN ++GPIO_AST_INTR_PIN ++GPIO_AST_AFC_SWITCH_PIN ++GPIO_RF_CONTROL1 ++GPIO_SIM3_HOT_PLUG ++ ++[SLAVE_DEVICE] ++CAMERA_MAIN ++CAMERA_MAIN_AF ++CAMERA_MAIN_TWO ++CAMERA_MAIN_HW ++CAMERA_SUB ++CAMERA_SUB_AF ++CAMERA_MAIN_TWO_AF ++VPROC_BUCK ++VGPU_BUCK ++EXT_BOOST ++EXT_BUCK ++EXT_BUCK2 ++EXT_BUCK3 ++EXT_BUCK_LP4 ++EXT_BUCK_LP4X ++EXT_BUCK_SRAM ++EXT_VBAT_BOOST ++CHARGEPUMP ++SW_CHARGER ++SLAVE_CHARGER ++SWITHING_CHARGER ++SWITCHING_CHARGER_TI ++SWITCHING_CHARGER_RT ++CAP_TOUCH ++MSENSOR ++MHL ++GSENSOR ++PRESSURE ++ALSPS ++GYRO ++TEMPER ++STROBE_MAIN ++STROBE_MAIN_2 ++STROBE_SUB ++STROBE_SUB_2 ++NFC ++EXT_SPEAKER_AMP ++EXT_DISP ++I2C_LCD_BIAS ++BUCK_BOOST ++SPEAKER_AMP ++USB_TYPE_C ++BAROMETER ++HUMIDITY ++ ++[Key_definition] ++HOME = 102 ++BACK = 158 ++CALL = 231 ++ENDCALL = 107 ++VOLUMEDOWN = 114 ++VOLUMEUP = 115 ++MUTE = 113 ++MENU = 139 ++UP = 103 ++DOWN = 108 ++LEFT = 105 ++RIGHT = 106 ++OK = 352 ++FOCUS = 211 ++CAMERA = 212 ++POWER = 116 ++AT = 228 ++POUND = 523 ++STAR = 227 ++DEL = 111 ++TAB = 15 ++ENTER = 28 ++LEFTSHIFT = 42 ++COMMA = 51 ++DOT = 52 ++SLASH = 53 ++LEFTALT = 56 ++RIGHTALT = 100 ++SPACE = 57 ++SEARCH = 217 ++SYM = 127 ++0 = 11 ++1 = 2 ++2 = 3 ++3 = 4 ++4 = 5 ++5 = 6 ++6 = 7 ++7 = 8 ++8 = 9 ++9 = 10 ++A = 30 ++B = 48 ++C = 46 ++D = 32 ++E = 18 ++F = 33 ++G = 34 ++H = 35 ++I = 23 ++J = 36 ++K = 37 ++L = 38 ++M = 50 ++N = 49 ++O = 24 ++P = 25 ++Q = 16 ++R = 19 ++S = 31 ++T = 20 ++U = 22 ++V = 47 ++W = 17 ++X = 45 ++Y = 21 ++Z = 44 ++ ++[Power_Key_definition] ++POWER ++ENDCALL ++ ++[APPLICATION] ++CAP_TOUCH_VDD ++CAP_TOUCH_VIO ++MAIN_CAMERA_POWER_A ++MAIN_CAMERA_POWER_D ++MAIN_CAMERA_POWER_IO ++MAIN_CAMERA_POWER_AF ++MAIN_CAMERA_2_POWER_A ++MAIN_CAMERA_2_POWER_AF ++MAIN_CAMERA_2_POWER_D ++MAIN_CAMERA_2_POWER_IO ++MHL_POWER_LDO1 ++MHL_POWER_LDO2 ++SUB_CAMERA_POWER_A ++SUB_CAMERA_POWER_IO ++SUB_CAMERA_POWER_D ++SUB_CAMERA_POWER_AF ++ACCELEROMETER_SENSOR_VDD ++ACCELEROMETER_SENSOR_VIO ++AMBIENT_LIGHT_SENSOR_VDD ++AMBIENT_LIGHT_SENSOR_VIO ++PROXIMITY_SENSOR_VDD ++PROXIMITY_SENSOR_VIO ++MAGNETOMETER_SENSOR_VDD ++MAGNETOMETER_SENSOR_VIO ++GYROSCOPE_VDD ++GYROSCOPE_VIO ++BAROMETER_VDD ++BAROMETER_VIO ++MEMORY_CARD_VDD ++ ++ +diff --git a/tools/dct/data/ClkData.py b/tools/dct/data/ClkData.py +new file mode 100755 +index 00000000000..e33ede82200 +--- /dev/null ++++ b/tools/dct/data/ClkData.py +@@ -0,0 +1,35 @@ ++#! /usr/bin/python3 ++# -*- coding: utf-8 -*- ++ ++class ClkData: ++ _varList = ['DISABLE', 'SW_CONTROL', 'HW_CONTROL'] ++ _count = 0 ++ ++ def __init__(self): ++ self.__varName = '' ++ self.__current = '' ++ self.__curList = [] ++ ++ def set_defVarName(self, idx): ++ self.__varName = self._varList[idx] ++ ++ def set_varName(self, name): ++ self.__varName = name ++ ++ def set_defCurrent(self, idx): ++ self.__current = self.__curList[idx] ++ ++ def set_current(self, current): ++ self.__current = current ++ ++ def get_varName(self): ++ return self.__varName ++ ++ def get_current(self): ++ return self.__current ++ ++ def set_curList(self, cur_list): ++ self.__curList = cur_list ++ ++ def get_curList(self): ++ return self.__curList +diff --git a/tools/dct/data/EintData.py b/tools/dct/data/EintData.py +new file mode 100755 +index 00000000000..8459876e16b +--- /dev/null ++++ b/tools/dct/data/EintData.py +@@ -0,0 +1,91 @@ ++#! /usr/bin/python3 ++# -*- coding: utf-8 -*- ++ ++ ++class EintData: ++ _count = 0 ++ _debounce_enable_list = ['CUST_EINT_DEBOUNCE_DISABLE', 'CUST_EINT_DEBOUNCE_ENABLE'] ++ _map_table = {} ++ _mode_map = {} ++ _int_eint = {} ++ _builtin_map = {} ++ _builtin_eint_count = 0 ++ def __init__(self): ++ self.__varName = '' ++ self.__debounce_time = '' ++ self.__polarity = '' ++ self.__sensitive_level = '' ++ self.__debounce_enable = '' ++ ++ def set_varName(self, varName): ++ self.__varName = varName ++ ++ def get_varName(self): ++ return self.__varName ++ ++ def set_debounceTime(self, time): ++ self.__debounce_time = time ++ ++ def get_debounceTime(self): ++ return self.__debounce_time ++ ++ def set_polarity(self, polarity): ++ self.__polarity = polarity ++ ++ def get_polarity(self): ++ return self.__polarity ++ ++ def set_sensitiveLevel(self, level): ++ self.__sensitive_level = level ++ ++ def get_sensitiveLevel(self): ++ return self.__sensitive_level ++ ++ def set_debounceEnable(self, enable): ++ self.__debounce_enable = enable ++ ++ def get_debounceEnable(self): ++ return self.__debounce_enable ++ ++ @staticmethod ++ def set_mapTable(map): ++ EintData._map_table = map ++ ++ @staticmethod ++ def get_mapTable(): ++ return EintData._map_table ++ ++ @staticmethod ++ def get_modeName(gpio_num, mode_idx): ++ key = 'gpio%s' %(gpio_num) ++ ++ if key in EintData._mode_map.keys(): ++ list = EintData._mode_map[key] ++ if mode_idx < len(list) and mode_idx >= 0: ++ return list[mode_idx] ++ ++ return None ++ ++ @staticmethod ++ def set_modeMap(map): ++ for (key, value) in map.items(): ++ list = [] ++ for item in value: ++ list.append(item[6:len(item)-1]) ++ map[key] = list ++ ++ EintData._mode_map = map ++ ++ @staticmethod ++ def get_modeMap(): ++ return EintData._mode_map ++ ++ @staticmethod ++ def get_gpioNum(num): ++ if len(EintData._map_table): ++ for (key,value) in EintData._map_table.items(): ++ if num == value: ++ return key ++ ++ return -1 ++ +diff --git a/tools/dct/data/GpioData.py b/tools/dct/data/GpioData.py +new file mode 100755 +index 00000000000..94ac4e6f182 +--- /dev/null ++++ b/tools/dct/data/GpioData.py +@@ -0,0 +1,119 @@ ++#! /usr/bin/python3 ++# -*- coding: utf-8 -*- ++ ++class GpioData: ++ _count = 0 ++ _modNum = 8 ++ _specMap = {} ++ _freqMap = {} ++ _mapList = [] ++ _modeMap = {} ++ _smtMap = {} ++ ++ def __init__(self): ++ self.__defMode = 0 ++ self.__eintMode = False ++ self.__modeVec = ['0', '0', '0', '0', '0', '0', '0', '0'] ++ self.__inPullEn = True ++ self.__inPullSelHigh = False ++ self.__defDirInt = 0 ++ self.__defDir = 'IN' ++ self.__inEn = True ++ self.__outEn = False ++ self.__outHigh = False ++ self.__varNames = [] ++ self.__smtNum = -1 ++ self.__smtEn = False ++ self.__iesEn = True ++ ++ ++ def get_defMode(self): ++ return self.__defMode ++ ++ def set_defMode(self, mode): ++ self.__defMode = mode ++ ++ def get_eintMode(self): ++ return self.__eintMode ++ ++ def set_eintMode(self, flag): ++ self.__eintMode = flag ++ ++ def get_modeVec(self): ++ return self.__modeVec ++ ++ def set_modeVec(self, vec): ++ self.__modeVec = vec ++ ++ def get_inPullEn(self): ++ return self.__inPullEn ++ ++ def set_inpullEn(self, flag): ++ self.__inPullEn = flag ++ ++ def get_inPullSelHigh(self): ++ return self.__inPullSelHigh ++ ++ def set_inpullSelHigh(self, flag): ++ self.__inPullSelHigh = flag ++ ++ def get_defDir(self): ++ return self.__defDir ++ ++ def set_defDir(self, dir): ++ self.__defDir = dir ++ ++ def get_inEn(self): ++ return self.__inEn ++ ++ def set_inEn(self, flag): ++ self.__inEn = flag ++ ++ def get_outEn(self): ++ return self.__outEn ++ ++ def set_outEn(self, flag): ++ self.__outEn = flag ++ ++ def get_outHigh(self): ++ return self.__outHigh ++ ++ def set_outHigh(self, outHigh): ++ self.__outHigh = outHigh ++ ++ def get_varNames(self): ++ return self.__varNames ++ ++ def set_varNames(self, names): ++ self.__varNames = names ++ ++ def set_smtEn(self, flag): ++ self.__smtEn = flag ++ ++ def get_smtEn(self): ++ return self.__smtEn ++ ++ def get_iesEn(self): ++ return self.__iesEn ++ ++ def set_iesEn(self, flag): ++ self.__iesEn = flag ++ ++ def set_smtNum(self, num): ++ self.__smtNum = num ++ ++ def get_smtNum(self): ++ return self.__smtNum ++ ++ def ge_defDirInt(self): ++ if self.__defDir == 'IN': ++ return 0 ++ else: ++ return 1 ++ ++ @staticmethod ++ def get_modeName(key, idx): ++ if key in GpioData._modeMap.keys(): ++ value = GpioData._modeMap[key] ++ return value[idx] ++ +diff --git a/tools/dct/data/I2cData.py b/tools/dct/data/I2cData.py +new file mode 100755 +index 00000000000..322eea63a32 +--- /dev/null ++++ b/tools/dct/data/I2cData.py +@@ -0,0 +1,51 @@ ++#! /usr/bin/python3 ++# -*- coding: utf-8 -*- ++ ++class BusData: ++ def __init__(self): ++ self.__speed = '' ++ self.__enable = False ++ ++ def set_speed(self, speed): ++ self.__speed = speed ++ ++ def set_enable(self, flag): ++ self.__enable = flag ++ ++ def get_speed(self): ++ return self.__speed ++ ++ def get_enable(self): ++ return self.__enable ++ ++class I2cData: ++ _i2c_count = 0 ++ _channel_count = 0 ++ _busData = {} ++ ++ def __init__(self): ++ self.__varname = '' ++ self.__channel = '' ++ self.__address = '' ++ ++ def set_varName(self, name): ++ self.__varname = name ++ ++ def set_channel(self, channel): ++ self.__channel = channel ++ ++ def set_address(self, addr): ++ self.__address = addr ++ ++ def get_varName(self): ++ return self.__varname ++ ++ def get_channel(self): ++ return self.__channel ++ ++ def get_address(self): ++ return self.__address ++ ++ ++ ++ +diff --git a/tools/dct/data/KpdData.py b/tools/dct/data/KpdData.py +new file mode 100755 +index 00000000000..4d18f7dee1f +--- /dev/null ++++ b/tools/dct/data/KpdData.py +@@ -0,0 +1,148 @@ ++#! /usr/bin/python3 ++# -*- coding: utf-8 -*- ++ ++class KpdData: ++ _row = -1 ++ _col = -1 ++ _row_ext = -1 ++ _col_ext = -1 ++ _gpioNum = -1 ++ _util = '' ++ _homeKey = '' ++ _keyType = '' ++ _pressTime = -1 ++ _dinHigh = False ++ _matrix = [] ++ _matrix_ext = [] ++ _useEint = False ++ _downloadKeys = [] ++ _keyValueMap = {} ++ _usedKeys = [] ++ _modeKeys = {'META':None, 'RECOVERY':None, 'FACTORY':None} ++ ++ def __init__(self): ++ self.__varNames = [] ++ ++ @staticmethod ++ def set_row(row): ++ KpdData._row = row ++ ++ @staticmethod ++ def get_row(): ++ return KpdData._row ++ ++ @staticmethod ++ def set_col(col): ++ KpdData._col = col ++ ++ @staticmethod ++ def get_col(): ++ return KpdData._col ++ ++ @staticmethod ++ def set_row_ext(row): ++ KpdData._row_ext = row ++ ++ @staticmethod ++ def get_row_ext(): ++ return KpdData._row_ext ++ ++ @staticmethod ++ def set_col_ext(col): ++ KpdData._col_ext = col ++ ++ @staticmethod ++ def get_col_ext(): ++ return KpdData._col_ext ++ ++ @staticmethod ++ def set_matrix(matrix): ++ KpdData._matrix = matrix ++ ++ @staticmethod ++ def set_matrix_ext(matrix): ++ KpdData._matrix_ext = matrix ++ ++ @staticmethod ++ def get_matrix_ext(): ++ return KpdData._matrix_ext ++ ++ @staticmethod ++ def get_matrix(): ++ return KpdData._matrix ++ ++ @staticmethod ++ def set_downloadKeys(keys): ++ KpdData._downloadKeys = keys ++ ++ @staticmethod ++ def get_downloadKeys(): ++ return KpdData._downloadKeys ++ ++ @staticmethod ++ def get_modeKeys(): ++ return KpdData._modeKeys ++ ++ @staticmethod ++ def set_gpioNum(num): ++ KpdData._gpioNum = num ++ ++ @staticmethod ++ def get_gpioNum(): ++ return KpdData._gpioNum ++ ++ @staticmethod ++ def set_utility(util): ++ KpdData._util = util ++ ++ @staticmethod ++ def get_utility(): ++ return KpdData._util ++ ++ @staticmethod ++ def set_homeKey(home): ++ KpdData._homeKey = home ++ ++ @staticmethod ++ def get_homeKey(): ++ return KpdData._homeKey ++ ++ @staticmethod ++ def set_useEint(flag): ++ KpdData._useEint = flag ++ ++ @staticmethod ++ def getUseEint(): ++ return KpdData._useEint ++ ++ @staticmethod ++ def set_gpioDinHigh(flag): ++ KpdData._dinHigh = flag ++ ++ @staticmethod ++ def get_gpioDinHigh(): ++ return KpdData._dinHigh ++ ++ @staticmethod ++ def set_pressTime(time): ++ KpdData._pressTime = time ++ ++ @staticmethod ++ def get_pressTime(): ++ return KpdData._pressTime ++ ++ @staticmethod ++ def set_keyType(keyType): ++ KpdData._keyType = keyType ++ ++ @staticmethod ++ def get_keyType(): ++ return KpdData._keyType ++ ++ @staticmethod ++ def get_keyVal(key): ++ if key in KpdData._keyValueMap.keys(): ++ return KpdData._keyValueMap[key] ++ ++ return 0 ++ +diff --git a/tools/dct/data/Md1EintData.py b/tools/dct/data/Md1EintData.py +new file mode 100755 +index 00000000000..654009bae33 +--- /dev/null ++++ b/tools/dct/data/Md1EintData.py +@@ -0,0 +1,50 @@ ++#! /usr/bin/python3 ++# -*- coding: utf-8 -*- ++ ++from data.EintData import EintData ++ ++class Md1EintData(EintData): ++ def __init__(self): ++ EintData.__init__(self) ++ self.__dedicatedEn = False ++ self.__srcPin = '' ++ self.__socetType = '' ++ ++ def set_dedicatedEn(self, value): ++ if value == 'Disable': ++ self.__dedicatedEn = False ++ else: ++ self.__dedicatedEn = True ++ ++ def get_dedicatedEn(self): ++ return self.__dedicatedEn ++ ++ def set_srcPin(self, pin): ++ self.__srcPin = pin ++ ++ def get_srcPin(self): ++ return self.__srcPin ++ ++ def set_socketType(self, type): ++ self.__socetType = type ++ ++ def get_socketType(self): ++ return self.__socetType ++ ++ def set_sensitiveLevel(self, level): ++ EintData.set_sensitiveLevel(self, level) ++ ++ def get_sensitiveLevel(self): ++ return EintData.get_sensitiveLevel(self) ++ ++ def set_debounceEnable(self, enable): ++ EintData.set_debounceEnable(self, enable) ++ ++ def get_debounceEnable(self): ++ return EintData.get_debounceEnable(self) ++ ++ def set_polarity(self, polarity): ++ EintData.set_polarity(self, polarity) ++ ++ def get_polarity(self): ++ return EintData.get_polarity(self) +\ No newline at end of file +diff --git a/tools/dct/data/PmicData.py b/tools/dct/data/PmicData.py +new file mode 100755 +index 00000000000..c1978aa3801 +--- /dev/null ++++ b/tools/dct/data/PmicData.py +@@ -0,0 +1,27 @@ ++#! /usr/bin/python3 ++# -*- coding: utf-8 -*- ++ ++class PmicData: ++ _var_list = [] ++ def __init__(self): ++ self.__ldoName = '' ++ self.__defEn = -1 ++ self.__nameList = [] ++ ++ def set_ldoName(self, name): ++ self.__ldoName = name ++ ++ def get_ldoName(self): ++ return self.__ldoName ++ ++ def set_defEnable(self, number): ++ self.__defEn = number ++ ++ def get_defEnable(self): ++ return self.__defEn ++ ++ def set_nameList(self, name_list): ++ self.__nameList = name_list ++ ++ def get_nameList(self): ++ return self.__nameList +\ No newline at end of file +diff --git a/tools/dct/data/PowerData.py b/tools/dct/data/PowerData.py +new file mode 100755 +index 00000000000..5c64b49e3ae +--- /dev/null ++++ b/tools/dct/data/PowerData.py +@@ -0,0 +1,16 @@ ++#! /usr/bin/python3 ++# -*- coding: utf-8 -*- ++ ++class PowerData: ++ def __init__(self): ++ self.__varName = '' ++ ++ def set_varName(self, name): ++ self.__varName = name ++ ++ def get_varName(self): ++ return self.__varName ++ ++ ++ ++ +diff --git a/tools/dct/data/__init__.py b/tools/dct/data/__init__.py +new file mode 100755 +index 00000000000..e69de29bb2d +diff --git a/tools/dct/obj/AdcObj.py b/tools/dct/obj/AdcObj.py +new file mode 100755 +index 00000000000..c94592c01fc +--- /dev/null ++++ b/tools/dct/obj/AdcObj.py +@@ -0,0 +1,84 @@ ++#! /usr/bin/python3 ++# -*- coding: utf-8 -*- ++ ++import os ++import re ++import string ++import xml.dom.minidom ++ ++from obj.ModuleObj import ModuleObj ++from utility.util import log ++from utility.util import LogLevel ++from utility.util import sorted_key ++ ++ ++class AdcObj(ModuleObj): ++ def __init__(self): ++ ModuleObj.__init__(self, 'cust_adc.h', 'cust_adc.dtsi') ++ ++ def get_cfgInfo(self): ++ pass ++ ++ def parse(self, node): ++ self.get_cfgInfo() ++ self.read(node) ++ ++ def read(self, node): ++ nodes = node.childNodes ++ try: ++ for node in nodes: ++ if node.nodeType == xml.dom.Node.ELEMENT_NODE: ++ if node.nodeName == 'count': ++ count = node.childNodes[0].nodeValue ++ continue ++ subNode = node.getElementsByTagName('varName') ++ if len(subNode): ++ ModuleObj.set_data(self, node.nodeName, subNode[0].childNodes[0].nodeValue) ++ except: ++ msg = 'read adc content fail!' ++ log(LogLevel.error, msg) ++ return False ++ ++ return True ++ ++ def gen_files(self): ++ ModuleObj.gen_files(self) ++ ++ def fill_hFile(self): ++ gen_str = '' ++ sorted_list = sorted(ModuleObj.get_data(self).keys()) ++ ++ for key in sorted_list: ++ value = ModuleObj.get_data(self)[key] ++ gen_str += '''#define AUXADC_%s_CHANNEL\t\t\t%s\n''' %(value.upper(), key[len(key) - 1]) ++ ++ return gen_str ++ ++ def fill_dtsiFile(self): ++ gen_str = '''&auxadc {\n''' ++ gen_str += '''\tadc_channel@ {\n''' ++ gen_str += '''\t\tcompatible = "mediatek,adc_channel";\n''' ++ ++ # sort by the key, or the sequence is dissorted ++ #sorted_list = sorted(ModuleObj.get_data(self).keys()) ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ value = ModuleObj.get_data(self)[key] ++ ++ if value == "TEMPERATURE": ++ gen_str += '''\t\tmediatek,%s0 = <%d>;\n''' %(value.lower(), string.atoi(key[len(key) -1])) ++ else: ++ gen_str += '''\t\tmediatek,%s = <%d>;\n''' %(value.lower(), string.atoi(key[len(key) -1])) ++ ++ gen_str += '''\t\tstatus = \"okay\";\n''' ++ gen_str += '''\t};\n''' ++ gen_str += '''};\n''' ++ ++ return gen_str ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/tools/dct/obj/ChipObj.py b/tools/dct/obj/ChipObj.py +new file mode 100755 +index 00000000000..37e7db31757 +--- /dev/null ++++ b/tools/dct/obj/ChipObj.py +@@ -0,0 +1,249 @@ ++#! /usr/bin/python3 ++# -*- coding: utf-8 -*- ++ ++from __future__ import absolute_import ++import os, sys ++import xml.dom.minidom ++ ++from .GpioObj import GpioObj ++from .EintObj import EintObj ++from .AdcObj import AdcObj ++from .ClkObj import ClkObj ++from .ClkObj import ClkObj_Everest ++from .ClkObj import ClkObj_Olympus ++from .ClkObj import ClkObj_Rushmore ++from .I2cObj import I2cObj ++from .PmicObj import PmicObj ++from .Md1EintObj import Md1EintObj ++from .PowerObj import PowerObj ++from .KpdObj import KpdObj ++from .ModuleObj import ModuleObj ++ ++from utility.util import log ++from utility.util import LogLevel ++ ++para_map = {'adc':['adc_h', 'adc_dtsi'],\ ++ 'clk':['clk_buf_h', 'clk_buf_dtsi'],\ ++ 'eint':['eint_h', 'eint_dtsi'],\ ++ 'gpio':['gpio_usage_h', 'gpio_boot_h', 'gpio_dtsi', 'scp_gpio_usage_h', 'pinfunc_h', \ ++ 'pinctrl_h', 'gpio_usage_mapping_dtsi', 'gpio_usage_mapping_dtsi'],\ ++ 'i2c':['i2c_h', 'i2c_dtsi'],\ ++ 'md1_eint':['md1_eint_h', 'md1_eint_dtsi'],\ ++ 'kpd':['kpd_h', 'kpd_dtsi'],\ ++ 'pmic':['pmic_drv_h', 'pmic_drv_c', 'pmic_dtsi'],\ ++ 'power':['power_h']} ++ ++class ChipObj: ++ def __init__(self, path, dest): ++ self.__path = path ++ ModuleObj.set_genPath(dest) ++ self.__objs = {} ++ ++ self.init_objs() ++ ++ def init_objs(self): ++ self.__objs['adc'] = AdcObj() ++ self.__objs['clk'] = ClkObj() ++ self.__objs["gpio"] = GpioObj() ++ # eint obj need gpio data ++ self.__objs["eint"] = EintObj(self.__objs['gpio']) ++ self.__objs["i2c"] = I2cObj() ++ self.__objs["md1_eint"] = Md1EintObj() ++ ++ self.__objs["pmic"] = PmicObj() ++ self.__objs["power"] = PowerObj() ++ self.__objs["kpd"] = KpdObj() ++ ++ def replace_obj(self, tag, obj): ++ if not tag in self.__objs.keys(): ++ return False ++ ++ self.__objs[tag] = obj ++ ++ def append_obj(self, tag, obj): ++ if tag in self.__objs.keys(): ++ return False ++ ++ self.__objs[tag] = obj ++ ++ @staticmethod ++ def get_chipId(path): ++ if not os.path.exists(path): ++ msg = '%s is not a available path!' %(path) ++ log(LogLevel.error, msg) ++ return False ++ data = xml.dom.minidom.parse(path) ++ root = data.documentElement ++ # get 'general' node ++ node = root.getElementsByTagName('general') ++ return node[0].getAttribute('chip') ++ ++ def parse(self): ++ if not os.path.exists(self.__path): ++ msg = '%s is not a available path!' %(self.__path) ++ log(LogLevel.error, msg) ++ return False ++ ++ data = xml.dom.minidom.parse(self.__path) ++ ++ root = data.documentElement ++ # get 'general' node ++ node = root.getElementsByTagName('general') ++ # get chip name and project name ++ ModuleObj.set_chipId(node[0].getAttribute('chip')) ++ ++ msg = 'Chip ID : %s' %(node[0].getAttribute('chip')) ++ log(LogLevel.info, msg) ++ msg = 'Project Info: %s' %(node[0].getElementsByTagName('proj')[0].childNodes[0].nodeValue) ++ log(LogLevel.info, msg) ++ ++ # initialize the objects mapping table ++ self.init_objs() ++ # get module nodes from DWS file ++ nodes = node[0].getElementsByTagName('module') ++ ++ for node in nodes: ++ tag = node.getAttribute('name') ++ obj = self.create_obj(tag) ++ if obj == None: ++ msg = 'can not find %s node in DWS!' %(tag) ++ log(LogLevel.error, msg) ++ return False ++ obj.parse(node) ++ ++ return True ++ ++ def generate(self, paras): ++ if len(paras) == 0: ++ for obj in self.__objs.values(): ++ obj.gen_files() ++ ++ self.gen_custDtsi() ++ else: ++ self.gen_spec(paras) ++ ++ return True ++ ++ def create_obj(self, tag): ++ obj = None ++ if tag in self.__objs.keys(): ++ obj = self.__objs[tag] ++ ++ return obj ++ ++ ++ def gen_spec(self, paras): ++ if cmp(paras[0], 'cust_dtsi') == 0: ++ self.gen_custDtsi() ++ return True ++ ++ for para in paras: ++ idx = 0 ++ name = '' ++ if para.strip() != '': ++ for value in para_map.values(): ++ if para in value: ++ name = para_map.keys()[idx] ++ break ++ idx += 1 ++ ++ if name != '': ++ log(LogLevel.info, 'Start to generate %s file...' %(para)) ++ obj = self.__objs[name] ++ obj.gen_spec(para) ++ log(LogLevel.info, 'Generate %s file successfully!' %(para)) ++ else: ++ log(LogLevel.error, '%s can not be recognized!' %(para)) ++ sys.exit(-1) ++ ++ return True ++ ++ def gen_custDtsi(self): ++ log(LogLevel.info, 'Start to generate cust_dtsi file...') ++ fp = open(os.path.join(ModuleObj.get_genPath(), 'cust.dtsi'), 'w') ++ gen_str = ModuleObj.writeComment() ++ ++ sorted_list = sorted(self.__objs.keys()) ++ for tag in sorted_list: ++ if cmp(tag, 'gpio') == 0: ++ gpioObj = self.create_obj(tag) ++ gen_str += ModuleObj.writeHeader(gpioObj.get_dtsiFileName()) ++ gen_str += gpioObj.fill_mapping_dtsiFile() ++ else: ++ obj = self.create_obj(tag) ++ gen_str += ModuleObj.writeHeader(obj.get_dtsiFileName()) ++ gen_str += obj.fill_dtsiFile() ++ ++ gen_str += '''\n\n''' ++ ++ fp.write(gen_str) ++ fp.close() ++ log(LogLevel.info, 'Generate cust_dtsi file successfully!') ++ ++ ++class Everest(ChipObj): ++ def __init__(self, dws_path, gen_path): ++ ChipObj.__init__(self, dws_path, gen_path) ++ self.init_objs() ++ ++ def init_objs(self): ++ ChipObj.init_objs(self) ++ ChipObj.replace_obj(self, 'clk', ClkObj_Everest()) ++ ++ def parse(self): ++ return ChipObj.parse(self) ++ ++ def generate(self, paras): ++ return ChipObj.generate(self, paras) ++ ++ ++class Olympus(ChipObj): ++ def __init__(self, dws_path, gen_path): ++ ChipObj.__init__(self, dws_path, gen_path) ++ ++ def init_objs(self): ++ ChipObj.init_objs(self) ++ ChipObj.replace_obj(self, 'clk', ClkObj_Olympus()) ++ ++ def parse(self): ++ return ChipObj.parse(self) ++ ++ ++ def generate(self, paras): ++ return ChipObj.generate(self, paras) ++ ++ ++class KiboPlus(ChipObj): ++ def __init__(self, dws_path, gen_path): ++ ChipObj.__init__(self, dws_path, gen_path) ++ ++ def init_objs(self): ++ ChipObj.init_objs(self) ++ ChipObj.replace_obj(self, 'clk', ClkObj_Olympus()) ++ ++ def parse(self): ++ return ChipObj.parse(self) ++ ++ ++ def generate(self, paras): ++ return ChipObj.generate(self, paras) ++ ++ ++class Rushmore(ChipObj): ++ def __init__(self, dws_path, gen_path): ++ ChipObj.__init__(self, dws_path, gen_path) ++ ++ def init_objs(self): ++ ChipObj.init_objs(self) ++ ChipObj.replace_obj(self, 'clk', ClkObj_Rushmore()) ++ ++ def parse(self): ++ return ChipObj.parse(self) ++ ++ ++ def generate(self, paras): ++ return ChipObj.generate(self, paras) ++ ++ ++ ++ +diff --git a/tools/dct/obj/ClkObj.py b/tools/dct/obj/ClkObj.py +new file mode 100755 +index 00000000000..1192c6210bb +--- /dev/null ++++ b/tools/dct/obj/ClkObj.py +@@ -0,0 +1,437 @@ ++#! /usr/bin/python3 ++# -*- coding: utf-8 -*- ++ ++from __future__ import absolute_import ++import os ++import re ++import string ++import configparser ++ ++import xml.dom.minidom ++ ++from .ModuleObj import ModuleObj ++from data.ClkData import ClkData ++from utility.util import log ++from utility.util import LogLevel ++from utility.util import sorted_key ++ ++DEFAULT_AUTOK = 'AutoK' ++class ClkObj(ModuleObj): ++ def __init__(self): ++ ModuleObj.__init__(self, 'cust_clk_buf.h', 'cust_clk_buf.dtsi') ++ #self.__prefix_cfg = 'driving_current_pmic_clk_buf' ++ self.__suffix = '_BUF' ++ self.__count = -1 ++ ++ def read(self, node): ++ nodes = node.childNodes ++ for node in nodes: ++ if node.nodeType == xml.dom.Node.ELEMENT_NODE: ++ if node.nodeName == 'count': ++ continue ++ ++ varNode = node.getElementsByTagName('varName') ++ curNode = node.getElementsByTagName('current') ++ ++ key = re.findall(r'\D+', node.nodeName)[0].upper() + self.__suffix + '%s' %(re.findall(r'\d+', node.nodeName)[0]) ++ ++ data = ModuleObj.get_data(self)[key] ++ ++ if len(varNode): ++ data.set_varName(varNode[0].childNodes[0].nodeValue) ++ ++ if len(curNode): ++ data.set_current(curNode[0].childNodes[0].nodeValue) ++ ++ ModuleObj.set_data(self, key, data) ++ ++ return True ++ ++ def get_cfgInfo(self): ++ cp = configparser.ConfigParser(allow_no_value=True) ++ cp.read(ModuleObj.get_figPath()) ++ ++ count = string.atoi(cp.get('CLK_BUF', 'CLK_BUF_COUNT')) ++ self.__count = count ++ ++ ops = cp.options('CLK_BUF') ++ for op in ops: ++ if op == 'clk_buf_count': ++ self.__count = string.atoi(cp.get('CLK_BUF', op)) ++ ClkData._count = string.atoi(cp.get('CLK_BUF', op)) ++ continue ++ ++ value = cp.get('CLK_BUF', op) ++ var_list = value.split(':') ++ ++ data = ClkData() ++ data.set_curList(var_list[2:]) ++ data.set_defVarName(string.atoi(var_list[0])) ++ data.set_defCurrent(string.atoi(var_list[1])) ++ ++ key = op[16:].upper() ++ ModuleObj.set_data(self, key, data) ++ ++ def parse(self, node): ++ self.get_cfgInfo() ++ self.read(node) ++ ++ def gen_files(self): ++ ModuleObj.gen_files(self) ++ ++ def fill_hFile(self): ++ gen_str = '''typedef enum {\n''' ++ gen_str += '''\tCLOCK_BUFFER_DISABLE,\n''' ++ gen_str += '''\tCLOCK_BUFFER_SW_CONTROL,\n''' ++ gen_str += '''\tCLOCK_BUFFER_HW_CONTROL\n''' ++ gen_str += '''} MTK_CLK_BUF_STATUS;\n''' ++ gen_str += '''\n''' ++ ++ gen_str += '''typedef enum {\n''' ++ gen_str += '''\tCLK_BUF_DRIVING_CURR_AUTO_K = -1,\n''' ++ gen_str += '''\tCLK_BUF_DRIVING_CURR_0,\n''' ++ gen_str += '''\tCLK_BUF_DRIVING_CURR_1,\n''' ++ gen_str += '''\tCLK_BUF_DRIVING_CURR_2,\n''' ++ gen_str += '''\tCLK_BUF_DRIVING_CURR_3\n''' ++ gen_str += '''} MTK_CLK_BUF_DRIVING_CURR;\n''' ++ gen_str += '''\n''' ++ ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ value = ModuleObj.get_data(self)[key] ++ gen_str += '''#define %s_STATUS_PMIC\t\tCLOCK_BUFFER_%s\n''' %(key[5:], value.get_varName().upper()) ++ ++ gen_str += '''\n''' ++ ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ value = ModuleObj.get_data(self)[key] ++ idx = value.get_curList().index(value.get_current()) ++ if cmp(value.get_curList()[0], DEFAULT_AUTOK) == 0: ++ idx -= 1 ++ ++ if idx >= 0: ++ gen_str += '''#define %s_DRIVING_CURR\t\tCLK_BUF_DRIVING_CURR_%d\n''' %(key, idx) ++ else: ++ gen_str += '''#define %s_DRIVING_CURR\t\tCLK_BUF_DRIVING_CURR_AUTO_K\n''' %(key) ++ ++ gen_str += '''\n''' ++ ++ return gen_str ++ ++ def fill_dtsiFile(self): ++ gen_str = '''&pmic_clock_buffer_ctrl {\n''' ++ gen_str += '''\tmediatek,clkbuf-quantity = <%d>;\n''' %(self.__count) ++ gen_str += '''\tmediatek,clkbuf-config = <''' ++ ++ #sorted_list = sorted(ModuleObj.get_data(self).keys()) ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ if key.find('PMIC') == -1: ++ continue ++ value = ModuleObj.get_data(self)[key] ++ gen_str += '''%d ''' %(ClkData._varList.index(value.get_varName())) ++ ++ gen_str = gen_str.rstrip() ++ gen_str += '''>;\n''' ++ ++ gen_str += '''\tmediatek,clkbuf-driving-current = <''' ++ ++ #sorted_list = sorted(ModuleObj.get_data(self).keys()) ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ if key.find('PMIC') == -1: ++ continue ++ value = ModuleObj.get_data(self)[key] ++ idx = value.get_curList().index(value.get_current()) ++ if cmp(value.get_curList()[0], DEFAULT_AUTOK) == 0: ++ idx -= 1 ++ if idx < 0: ++ gen_str += '''(%d) ''' %(-1) ++ else: ++ gen_str += '''%d ''' %(idx) ++ ++ gen_str = gen_str.rstrip() ++ gen_str += '''>;\n''' ++ ++ gen_str += '''\tstatus = \"okay\";\n''' ++ gen_str += '''};\n''' ++ ++ return gen_str ++ ++ ++class ClkObj_Everest(ClkObj): ++ def __init__(self): ++ ClkObj.__init__(self) ++ self.__rf = 'RF' ++ self.__pmic = 'PMIC' ++ ++ def parse(self, node): ++ ClkObj.parse(self, node) ++ ++ def gen_files(self): ++ ClkObj.gen_files(self) ++ ++ def fill_hFile(self): ++ gen_str = '''typedef enum {\n''' ++ gen_str += '''\tCLOCK_BUFFER_DISABLE,\n''' ++ gen_str += '''\tCLOCK_BUFFER_SW_CONTROL,\n''' ++ gen_str += '''\tCLOCK_BUFFER_HW_CONTROL\n''' ++ gen_str += '''} MTK_CLK_BUF_STATUS;\n''' ++ gen_str += '''\n''' ++ ++ gen_str += '''typedef enum {\n''' ++ gen_str += '''\tCLK_BUF_DRIVING_CURR_0_4MA,\n''' ++ gen_str += '''\tCLK_BUF_DRIVING_CURR_0_9MA,\n''' ++ gen_str += '''\tCLK_BUF_DRIVING_CURR_1_4MA,\n''' ++ gen_str += '''\tCLK_BUF_DRIVING_CURR_1_9MA\n''' ++ gen_str += '''} MTK_CLK_BUF_DRIVING_CURR;\n''' ++ gen_str += '''\n''' ++ ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ value = ModuleObj.get_data(self)[key] ++ if key.find(self.__pmic) != -1: ++ gen_str += '''#define %s_STATUS_PMIC\t\t\t\tCLOCK_BUFFER_%s\n''' %(key[5:], value.get_varName()) ++ ++ gen_str += '''\n''' ++ ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ value = ModuleObj.get_data(self)[key] ++ if key.find(self.__pmic) != -1: ++ gen_str += '''#define %s_DRIVING_CURR\t\tCLK_BUF_DRIVING_CURR_%sMA\n''' %(key, value.get_current().replace('.', '_')) ++ ++ gen_str += '''\n''' ++ ++ ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ value = ModuleObj.get_data(self)[key] ++ if key.find(self.__rf) != -1: ++ gen_str += '''#define %s_STATUS\t\tCLOCK_BUFFER_%s\n''' %(key[3:], value.get_varName()) ++ ++ gen_str += '''\n''' ++ ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ value = ModuleObj.get_data(self)[key] ++ if key.find(self.__rf) != -1: ++ gen_str += '''#define %s_DRIVING_CURR\t\tCLK_BUF_DRIVING_CURR_%sMA\n''' %(key, value.get_current().replace('.', '_')) ++ ++ gen_str += '''\n''' ++ ++ ++ ++ return gen_str ++ ++ def fill_dtsiFile(self): ++ gen_str = ClkObj.fill_dtsiFile(self) ++ ++ gen_str += '''\n''' ++ ++ gen_str += '''&rf_clock_buffer_ctrl {\n''' ++ gen_str += '''\tmediatek,clkbuf-quantity = <%d>;\n''' %(ClkData._count) ++ gen_str += '''\tmediatek,clkbuf-config = <''' ++ ++ #sorted_list = sorted(ModuleObj.get_data(self).keys()) ++ ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ value = ModuleObj.get_data(self)[key] ++ ++ if key.find(self.__rf) != -1: ++ gen_str += '''%d ''' %(ClkData._varList.index(value.get_varName())) ++ gen_str.rstrip() ++ gen_str += '''>;\n''' ++ ++ gen_str += '''\tmediatek,clkbuf-driving-current = <''' ++ ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ value = ModuleObj.get_data(self)[key] ++ if key.find(self.__rf) != -1: ++ idx = value.get_curList().index(value.get_current()) ++ if cmp(value.get_curList()[0], DEFAULT_AUTOK) == 0: ++ idx -= 1 ++ gen_str += '''%d ''' %(idx) ++ ++ gen_str.rstrip() ++ gen_str += '''>;\n''' ++ ++ gen_str += '''\tstatus = \"okay\";\n''' ++ gen_str += '''};\n''' ++ ++ return gen_str ++ ++class ClkObj_Olympus(ClkObj_Everest): ++ ++ def __init__(self): ++ ClkObj_Everest.__init__(self) ++ ++ def get_cfgInfo(self): ++ ClkObj_Everest.get_cfgInfo(self) ++ ++ def parse(self, node): ++ ClkObj_Everest.parse(self, node) ++ ++ def gen_files(self): ++ ClkObj_Everest.gen_files(self) ++ ++ def fill_hFile(self): ++ gen_str = '''typedef enum {\n''' ++ gen_str += '''\tCLOCK_BUFFER_DISABLE,\n''' ++ gen_str += '''\tCLOCK_BUFFER_SW_CONTROL,\n''' ++ gen_str += '''\tCLOCK_BUFFER_HW_CONTROL\n''' ++ gen_str += '''} MTK_CLK_BUF_STATUS;\n''' ++ gen_str += '''\n''' ++ ++ gen_str += '''typedef enum {\n''' ++ gen_str += '''\tCLK_BUF_DRIVING_CURR_AUTO_K = -1,\n''' ++ gen_str += '''\tCLK_BUF_DRIVING_CURR_0,\n''' ++ gen_str += '''\tCLK_BUF_DRIVING_CURR_1,\n''' ++ gen_str += '''\tCLK_BUF_DRIVING_CURR_2,\n''' ++ gen_str += '''\tCLK_BUF_DRIVING_CURR_3\n''' ++ gen_str += '''} MTK_CLK_BUF_DRIVING_CURR;\n''' ++ gen_str += '''\n''' ++ ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ value = ModuleObj.get_data(self)[key] ++ if key.find('PMIC') != -1: ++ gen_str += '''#define %s_STATUS_PMIC\t\tCLOCK_BUFFER_%s\n''' %(key[5:], value.get_varName()) ++ ++ gen_str += '''\n''' ++ ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ value = ModuleObj.get_data(self)[key] ++ if key.find('RF') != -1: ++ gen_str += '''#define %s_STATUS\t\t\t\tCLOCK_BUFFER_%s\n''' %(key[3:], value.get_varName()) ++ ++ gen_str += '''\n''' ++ ++ ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ if key.find('PMIC') != -1: ++ continue ++ value = ModuleObj.get_data(self)[key] ++ idx = value.get_curList().index(value.get_current()) ++ if cmp(value.get_curList()[0], DEFAULT_AUTOK) == 0: ++ idx -= 1 ++ ++ if idx >= 0: ++ gen_str += '''#define %s_DRIVING_CURR\t\tCLK_BUF_DRIVING_CURR_%d\n''' %(key, idx) ++ else: ++ gen_str += '''#define %s_DRIVING_CURR\t\tCLK_BUF_DRIVING_CURR_AUTO_K\n''' %(key) ++ ++ gen_str += '''\n''' ++ ++ ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ if key.find('RF') != -1: ++ continue ++ value = ModuleObj.get_data(self)[key] ++ idx = value.get_curList().index(value.get_current()) ++ if cmp(value.get_curList()[0], DEFAULT_AUTOK) == 0: ++ idx -= 1 ++ ++ if idx >= 0: ++ gen_str += '''#define %s_DRIVING_CURR\t\tCLK_BUF_DRIVING_CURR_%d\n''' %(key, idx) ++ else: ++ gen_str += '''#define %s_DRIVING_CURR\t\tCLK_BUF_DRIVING_CURR_AUTO_K\n''' %(key) ++ ++ gen_str += '''\n''' ++ ++ return gen_str ++ ++class ClkObj_Rushmore(ClkObj): ++ ++ def __init__(self): ++ ClkObj.__init__(self) ++ self.__suffix = '_BUF' ++ ++ def parse(self, node): ++ ClkObj.parse(self, node) ++ ++ def get_cfgInfo(self): ++ cp = configparser.ConfigParser(allow_no_value=True) ++ cp.read(ModuleObj.get_figPath()) ++ ++ count = string.atoi(cp.get('CLK_BUF', 'CLK_BUF_COUNT')) ++ self.__count = count ++ ++ def read(self, node): ++ nodes = node.childNodes ++ for node in nodes: ++ if node.nodeType == xml.dom.Node.ELEMENT_NODE: ++ if node.nodeName == 'count': ++ continue ++ ++ varNode = node.getElementsByTagName('varName') ++ curNode = node.getElementsByTagName('current') ++ ++ key = re.findall(r'\D+', node.nodeName)[0].upper() + self.__suffix + '%s' %(re.findall(r'\d+', node.nodeName)[0]) ++ data = ClkData() ++ if len(varNode): ++ data.set_varName(varNode[0].childNodes[0].nodeValue) ++ ++ #if len(curNode): ++ #data.set_current(curNode[0].childNodes[0].nodeValue) ++ ++ ModuleObj.set_data(self, key, data) ++ ++ return True ++ ++ def fill_hFile(self): ++ gen_str = '''typedef enum {\n''' ++ gen_str += '''\tCLOCK_BUFFER_DISABLE,\n''' ++ gen_str += '''\tCLOCK_BUFFER_SW_CONTROL,\n''' ++ gen_str += '''\tCLOCK_BUFFER_HW_CONTROL\n''' ++ gen_str += '''} MTK_CLK_BUF_STATUS;\n''' ++ gen_str += '''\n''' ++ ++ gen_str += '''typedef enum {\n''' ++ gen_str += '''\tCLK_BUF_DRIVING_CURR_AUTO_K = -1,\n''' ++ gen_str += '''\tCLK_BUF_DRIVING_CURR_0,\n''' ++ gen_str += '''\tCLK_BUF_DRIVING_CURR_1,\n''' ++ gen_str += '''\tCLK_BUF_DRIVING_CURR_2,\n''' ++ gen_str += '''\tCLK_BUF_DRIVING_CURR_3\n''' ++ gen_str += '''} MTK_CLK_BUF_DRIVING_CURR;\n''' ++ gen_str += '''\n''' ++ ++ ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ value = ModuleObj.get_data(self)[key] ++ if key.find('RF') != -1: ++ gen_str += '''#define %s_STATUS\t\t\t\tCLOCK_BUFFER_%s\n''' %(key[3:], value.get_varName()) ++ ++ gen_str += '''\n''' ++ ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ if key.find('RF') != -1: ++ continue ++ value = ModuleObj.get_data(self)[key] ++ idx = value.get_curList().index(value.get_current()) ++ if cmp(value.get_curList()[0], DEFAULT_AUTOK) == 0: ++ idx -= 1 ++ ++ if idx >= 0: ++ gen_str += '''#define %s_DRIVING_CURR\t\tCLK_BUF_DRIVING_CURR_%d\n''' %(key, idx) ++ else: ++ gen_str += '''#define %s_DRIVING_CURR\t\tCLK_BUF_DRIVING_CURR_AUTO_K\n''' %(key) ++ ++ gen_str += '''\n''' ++ ++ return gen_str ++ ++ def fill_dtsiFile(self): ++ gen_str = '''&rf_clock_buffer_ctrl {\n''' ++ gen_str += '''\tmediatek,clkbuf-quantity = <%d>;\n''' %(self.__count) ++ gen_str += '''\tmediatek,clkbuf-config = <''' ++ ++ #sorted_list = sorted(ModuleObj.get_data(self).keys()) ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ if key.find('RF') == -1: ++ continue ++ value = ModuleObj.get_data(self)[key] ++ gen_str += '''%d ''' %(ClkData._varList.index(value.get_varName())) ++ ++ gen_str = gen_str.rstrip() ++ gen_str += '''>;\n''' ++ ++ gen_str += '''\tstatus = \"okay\";\n''' ++ gen_str += '''};\n''' ++ ++ return gen_str ++ ++ ++ +diff --git a/tools/dct/obj/EintObj.py b/tools/dct/obj/EintObj.py +new file mode 100755 +index 00000000000..c977b7a5c96 +--- /dev/null ++++ b/tools/dct/obj/EintObj.py +@@ -0,0 +1,292 @@ ++#! /usr/bin/python3 ++# -*- coding: utf-8 -*- ++ ++import re ++import os ++import string ++ ++import configparser ++import xml.dom.minidom ++ ++from data.EintData import EintData ++from data.GpioData import GpioData ++from utility.util import log ++from utility.util import LogLevel ++from utility.util import compare ++ ++from obj.ModuleObj import ModuleObj ++from obj.GpioObj import GpioObj ++ ++class EintObj(ModuleObj): ++ def __init__(self, gpio_obj): ++ ModuleObj.__init__(self, 'cust_eint.h', 'cust_eint.dtsi') ++ self.__gpio_obj = gpio_obj ++ self.__count = 0 ++ self.__map_count = 0 ++ ++ def read(self, node): ++ nodes = node.childNodes ++ ++ for node in nodes: ++ if node.nodeType == xml.dom.Node.ELEMENT_NODE: ++ if cmp(node.nodeName, 'count') == 0: ++ self.__count = node.childNodes[0].nodeValue ++ continue ++ ++ varNode = node.getElementsByTagName('varName') ++ detNode = node.getElementsByTagName('debounce_time') ++ polNode = node.getElementsByTagName('polarity') ++ senNode = node.getElementsByTagName('sensitive_level') ++ deeNode = node.getElementsByTagName('debounce_en') ++ ++ data = EintData() ++ if len(varNode): ++ data.set_varName(varNode[0].childNodes[0].nodeValue) ++ ++ if len(detNode): ++ data.set_debounceTime(detNode[0].childNodes[0].nodeValue) ++ ++ if len(polNode): ++ data.set_polarity(polNode[0].childNodes[0].nodeValue) ++ ++ if len(senNode): ++ data.set_sensitiveLevel(senNode[0].childNodes[0].nodeValue) ++ ++ if len(deeNode): ++ data.set_debounceEnable(deeNode[0].childNodes[0].nodeValue) ++ ++ ModuleObj.set_data(self, node.nodeName, data) ++ ++ return True ++ ++ def parse(self, node): ++ self.get_cfgInfo() ++ self.read(node) ++ ++ def gen_files(self): ++ ModuleObj.gen_files(self) ++ ++ def gen_spec(self, para): ++ ModuleObj.gen_spec(self, para) ++ ++ def get_cfgInfo(self): ++ cp = configparser.ConfigParser(allow_no_value=True) ++ cp.read(ModuleObj.get_figPath()) ++ ++ ops = cp.options('GPIO') ++ map = {} ++ mode_map = {} ++ for op in ops: ++ value = cp.get('GPIO', op) ++ list = re.split(r' +|\t+', value) ++ ++ map[string.atoi(re.findall(r'\d+', op)[0])] = string.atoi(list[len(list)-2]) ++ mode_map[op] = list[0:len(list)-2] ++ ++ EintData.set_mapTable(map) ++ EintData.set_modeMap(mode_map) ++ ++ if cp.has_option('EINT', 'EINT_MAP_COUNT'): ++ self.__map_count = string.atoi(cp.get('EINT', 'EINT_MAP_COUNT')) ++ ++ if cp.has_option('EINT', 'INTERNAL_EINT'): ++ info = cp.get('EINT', 'INTERNAL_EINT') ++ str_list = info.split(':') ++ for item in str_list: ++ sub_list = item.split('/') ++ EintData._int_eint[sub_list[0]] = sub_list[1] ++ ++ if cp.has_option('EINT', 'BUILTIN_EINT'): ++ info = cp.get('EINT', 'BUILTIN_EINT') ++ str_list = info.split(':') ++ for builtin_item in str_list: ++ builtin_list = builtin_item.split('/') ++ #EintData._builtin_map[builtin_list[0]] = builtin_list[1] ++ ++ temp = 'BUILTIN_%s' %(builtin_list[0]) ++ if cp.has_option('EINT', temp): ++ info = cp.get('EINT', temp) ++ str_list = info.split(':') ++ temp_map = {} ++ for item in str_list: ++ sub_list = item.split('/') ++ temp_map[sub_list[0]] = sub_list[1] + ':' + builtin_list[1] ++ ++ EintData._builtin_map[builtin_list[0]] = temp_map ++ EintData._builtin_eint_count += len(temp_map) ++ ++ ++ #def compare(self, value): ++ #return string.atoi(value[4:]) ++ ++ def fill_hFile(self): ++ gen_str = '' ++ gen_str += '''#ifdef __cplusplus\n''' ++ gen_str += '''extern \"C\" {\n''' ++ gen_str += '''#endif\n''' ++ ++ gen_str += '''#define CUST_EINTF_TRIGGER_RISING\t\t\t1\n''' ++ gen_str += '''#define CUST_EINTF_TRIGGER_FALLING\t\t\t2\n''' ++ gen_str += '''#define CUST_EINTF_TRIGGER_HIGH\t\t\t4\n''' ++ gen_str += '''#define CUST_EINTF_TRIGGER_LOW\t\t\t8\n''' ++ ++ gen_str += '''#define CUST_EINT_DEBOUNCE_DISABLE\t\t\t0\n''' ++ gen_str += '''#define CUST_EINT_DEBOUNCE_ENABLE\t\t\t1\n''' ++ ++ gen_str += '''\n\n''' ++ ++ sorted_list = sorted(ModuleObj.get_data(self).keys(), key=compare) ++ ++ for key in sorted_list: ++ value = ModuleObj.get_data(self)[key] ++ gen_str += '''#define CUST_EINT_%s_NUM\t\t\t%s\n''' %(value.get_varName().upper(), key[4:]) ++ gen_str += '''#define CUST_EINT_%s_DEBOUNCE_CN\t\t%s\n''' %(value.get_varName().upper(), value.get_debounceTime()) ++ ++ temp = '' ++ polarity = value.get_polarity() ++ sensitive = value.get_sensitiveLevel() ++ ++ if cmp(polarity, 'High') == 0 and cmp(sensitive, 'Edge') == 0: ++ temp = 'CUST_EINTF_TRIGGER_RISING' ++ elif cmp(polarity, 'Low') == 0 and cmp(sensitive, 'Edge') == 0: ++ temp = 'CUST_EINTF_TRIGGER_FALLING' ++ elif cmp(polarity, 'High') == 0 and cmp(sensitive, 'Level') == 0: ++ temp = 'CUST_EINTF_TRIGGER_HIGH' ++ elif cmp(polarity, 'Low') == 0 and cmp(sensitive, 'Level') == 0: ++ temp = 'CUST_EINTF_TRIGGER_LOW' ++ ++ gen_str += '''#define CUST_EINT_%s_TYPE\t\t\t%s\n''' %(value.get_varName().upper(), temp) ++ ++ temp = '' ++ if cmp(value.get_debounceEnable(), 'Disable') == 0: ++ temp = 'CUST_EINT_DEBOUNCE_DISABLE' ++ elif cmp(value.get_debounceEnable(), 'Enable') == 0: ++ temp = 'CUST_EINT_DEBOUNCE_ENABLE' ++ gen_str += '''#define CUST_EINT_%s_DEBOUNCE_EN\t\t%s\n\n''' %(value.get_varName().upper(), temp) ++ ++ ++ gen_str += '''#ifdef __cplusplus\n''' ++ gen_str += '''}\n''' ++ gen_str += '''#endif\n''' ++ ++ return gen_str ++ ++ def fill_mappingTable(self): ++ gen_str = '''&eintc {\n''' ++ count = 0 ++ ++ if self.__map_count == 0: ++ for i in range(0, string.atoi(self.__count)): ++ if EintData.get_gpioNum(i) >= 0: ++ count += 1 ++ count += len(EintData._int_eint) ++ else: ++ count = self.__map_count ++ ++ gen_str += '''\tmediatek,mapping_table_entry = <%d>;\n''' %(count) ++ gen_str += '''\t\t\t/* */\n''' ++ gen_str += '''\tmediatek,mapping_table = ''' ++ ++ sorted_list = sorted(EintData.get_mapTable().keys()) ++ for key in sorted_list: ++ value = EintData.get_mapTable()[key] ++ if value != -1: ++ gen_str += '''<%d %d>,\n\t\t\t\t\t''' %(key, value) ++ ++ for (key, value) in EintData._int_eint.items(): ++ gen_str += '''<%s %s>,\n\t\t\t\t\t''' %(value, key) ++ ++ gen_str = gen_str[0:len(gen_str)-7] ++ gen_str += ''';\n''' ++ gen_str += '''\tmediatek,builtin_entry = <%d>;\n''' %(EintData._builtin_eint_count) ++ if len(EintData._builtin_map) == 0: ++ gen_str += '''};\n\n''' ++ return gen_str ++ ++ gen_str += '''\t\t\t\t\t/* gpio, built-in func mode, built-in eint */\n''' ++ gen_str += '''\tmediatek,builtin_mapping = ''' ++ for (key, value) in EintData._builtin_map.items(): ++ for (sub_key, sub_value) in value.items(): ++ gen_str += '''<%s %s %s>, /* %s */\n\t\t\t\t\t''' %(sub_key, sub_value[0:1], key, sub_value) ++ ++ gen_str = gen_str[0:gen_str.rfind(',')] ++ gen_str += ';' ++ gen_str += '''};\n\n''' ++ ++ return gen_str ++ ++ def get_gpioNum(self, eint_num): ++ for (key, value) in EintData.get_mapTable().items(): ++ if cmp(eint_num, value) == 0: ++ return key ++ ++ return -1 ++ ++ def refGpio(self, eint_num, flag): ++ gpio_vec= [] ++ ++ gpio_num = EintData.get_gpioNum(string.atoi(eint_num)) ++ if gpio_num >= 0: ++ gpio_vec.append(gpio_num) ++ if flag: ++ item_data = self.__gpio_obj.get_gpioData(gpio_num) ++ mode_idx = item_data.get_defMode() ++ mode_name = EintData.get_modeName(gpio_num, mode_idx) ++ if re.match(r'GPIO[\d]+', mode_name) or re.match(r'EINT[\d]+', mode_name): ++ return gpio_vec ++ ++ for key in EintData._builtin_map.keys(): ++ if string.atoi(eint_num) == string.atoi(key): ++ temp_map = EintData._builtin_map[key] ++ for key in temp_map.keys(): ++ gpio_vec.append(key) ++ ++ if flag: ++ for item in temp_map.keys(): ++ item_data = self.__gpio_obj.get_gpioData(string.atoi(item)) ++ ++ if item_data.get_defMode() == string.atoi(temp_map[item].split(':')[0]): ++ gpio_vec = [] ++ gpio_vec.append(item) ++ return gpio_vec ++ ++ break ++ ++ return gpio_vec ++ ++ def fill_dtsiFile(self): ++ gen_str = '''#include \n''' ++ gen_str += '''#include \n''' ++ gen_str += '''\n''' ++ ++ gen_str += self.fill_mappingTable() ++ ++ sorted_list = sorted(ModuleObj.get_data(self).keys(), key=compare) ++ ++ for key in sorted_list: ++ value = ModuleObj.get_data(self)[key] ++ gen_str += '''&%s {\n''' %(value.get_varName().lower()) ++ gen_str += '''\tinterrupt-parent = <&eintc>;\n''' ++ ++ temp = '' ++ polarity = value.get_polarity() ++ sensitive = value.get_sensitiveLevel() ++ ++ if cmp(polarity, 'High') == 0 and cmp(sensitive, 'Edge') == 0: ++ temp = 'IRQ_TYPE_EDGE_RISING' ++ elif cmp(polarity, 'Low') == 0 and cmp(sensitive, 'Edge') == 0: ++ temp = 'IRQ_TYPE_EDGE_FALLING' ++ elif cmp(polarity, 'High') == 0 and cmp(sensitive, 'Level') == 0: ++ temp = 'IRQ_TYPE_LEVEL_HIGH' ++ elif cmp(polarity, 'Low') == 0 and cmp(sensitive, 'Level') == 0: ++ temp = 'IRQ_TYPE_LEVEL_LOW' ++ ++ gen_str += '''\tinterrupts = <%s %s>;\n''' %(self.refGpio(key[4:], True)[0], temp) ++ gen_str += '''\tdebounce = <%s %d>;\n''' %(self.refGpio(key[4:], True)[0], string.atoi(value.get_debounceTime()) * 1000) ++ gen_str += '''\tstatus = \"okay\";\n''' ++ gen_str += '''};\n''' ++ gen_str += '''\n''' ++ ++ return gen_str ++ ++ +diff --git a/tools/dct/obj/GpioObj.py b/tools/dct/obj/GpioObj.py +new file mode 100755 +index 00000000000..fa37e00168c +--- /dev/null ++++ b/tools/dct/obj/GpioObj.py +@@ -0,0 +1,570 @@ ++#! /usr/bin/python3 ++# -*- coding: utf-8 -*- ++ ++from __future__ import absolute_import ++import re ++import os ++import sys ++import string ++import configparser ++import xml.dom.minidom ++ ++ ++from data.GpioData import GpioData ++from data.EintData import EintData ++from .ModuleObj import ModuleObj ++from . import ChipObj ++from utility.util import compare ++from utility.util import sorted_key ++ ++class GpioObj(ModuleObj): ++ def __init__(self): ++ ModuleObj.__init__(self,'cust_gpio_boot.h', 'cust_gpio.dtsi') ++ self.__fileName = 'cust_gpio_usage.h' ++ self.__filePinfunc = '%s-pinfunc.h' %(ModuleObj.get_chipId().lower()) ++ self.__filePinCtrl = 'pinctrl-mtk-%s.h' %(ModuleObj.get_chipId().lower()) ++ self.__fileScp = 'cust_scp_gpio_usage.h' ++ self.__fileMap = 'cust_gpio_usage_mapping.dtsi' ++ ++ def get_cfgInfo(self): ++ cp = configparser.ConfigParser(allow_no_value=True) ++ cp.read(ModuleObj.get_cmpPath()) ++ ++ # get GPIO_FREQ section ++ keys= cp.options('GPIO_FREQ') ++ for key in keys: ++ value = cp.get('GPIO_FREQ', key) ++ GpioData._freqMap[key] = value ++ ++ # get GPIO_MODE section ++ keys = cp.options('GPIO_MODE') ++ for key in keys: ++ value = cp.get('GPIO_MODE', key) ++ GpioData._specMap[key] = value ++ ++ GpioData._mapList = cp.options('GPIO_VARIABLES_MAPPING') ++ ++ cp.read(ModuleObj.get_figPath()) ++ ops = cp.options('GPIO') ++ for op in ops: ++ value = cp.get('GPIO', op) ++ list = re.split(r' +|\t+', value) ++ tmp_list = list[0:len(list)-2] ++ temp = [] ++ for item in tmp_list: ++ str = item[6:len(item)-1] ++ temp.append(str) ++ GpioData._modeMap[op] = temp ++ ++ data = GpioData() ++ data.set_smtNum(string.atoi(list[len(list)-1])) ++ ModuleObj.set_data(self, op.lower(), data) ++ ++ def read(self, node): ++ nodes = node.childNodes ++ for node in nodes: ++ if node.nodeType == xml.dom.Node.ELEMENT_NODE: ++ if cmp(node.nodeName, 'count') == 0: ++ GpioData._count = string.atoi(node.childNodes[0].nodeValue) ++ continue ++ ++ eintNode = node.getElementsByTagName('eint_mode') ++ defmNode = node.getElementsByTagName('def_mode') ++ modsNode = node.getElementsByTagName('mode_arr') ++ inpeNode = node.getElementsByTagName('inpull_en') ++ inpsNode = node.getElementsByTagName('inpull_selhigh') ++ defdNode = node.getElementsByTagName('def_dir') ++ diriNode = node.getElementsByTagName('in') ++ diroNode = node.getElementsByTagName('out') ++ outhNode = node.getElementsByTagName('out_high') ++ var0Node = node.getElementsByTagName('varName0') ++ var1Node = node.getElementsByTagName('varName1') ++ var2Node = node.getElementsByTagName('varName2') ++ smtNode = node.getElementsByTagName('smt') ++ iesNode = node.getElementsByTagName('ies') ++ ++ num = string.atoi(node.nodeName[4:]) ++ if num >= len(ModuleObj.get_data(self)): ++ break ++ data = ModuleObj.get_data(self)[node.nodeName] ++ ++ if len(eintNode): ++ flag = False ++ if cmp(eintNode[0].childNodes[0].nodeValue, 'true') == 0: ++ flag = True ++ data.set_eintMode(flag) ++ ++ if len(defmNode): ++ data.set_defMode(string.atoi(defmNode[0].childNodes[0].nodeValue)) ++ ++ if len(modsNode): ++ str = modsNode[0].childNodes[0].nodeValue ++ temp_list = [] ++ for i in range(0, len(str)): ++ temp_list.append(str[i]) ++ data.set_modeVec(temp_list) ++ ++ if len(inpeNode): ++ flag = False ++ if cmp(inpeNode[0].childNodes[0].nodeValue, 'true') == 0: ++ flag = True ++ data.set_inpullEn(flag) ++ ++ if len(inpsNode): ++ flag = False ++ if cmp(inpsNode[0].childNodes[0].nodeValue, 'true') == 0: ++ flag = True ++ data.set_inpullSelHigh(flag) ++ ++ if len(defdNode): ++ data.set_defDir(defdNode[0].childNodes[0].nodeValue) ++ ++ if len(diriNode): ++ flag = False ++ if cmp(diriNode[0].childNodes[0].nodeValue, 'true') == 0: ++ flag = True ++ data.set_inEn(flag) ++ ++ if len(diroNode): ++ flag = False ++ if cmp(diroNode[0].childNodes[0].nodeValue, 'true') == 0: ++ flag = True ++ data.set_outEn(flag) ++ ++ if len(outhNode): ++ flag = False ++ if cmp(outhNode[0].childNodes[0].nodeValue, 'true') == 0: ++ flag = True ++ data.set_outHigh(flag) ++ ++ temp_list= [] ++ ++ if len(var0Node) != 0 and len(var0Node[0].childNodes) != 0: ++ temp_list.append(var0Node[0].childNodes[0].nodeValue) ++ if len(var1Node) != 0 and len(var1Node[0].childNodes) != 0: ++ temp_list.append(var1Node[0].childNodes[0].nodeValue) ++ if len(var2Node) != 0 and len(var2Node[0].childNodes) != 0: ++ temp_list.append(var2Node[0].childNodes[0].nodeValue) ++ data.set_varNames(temp_list) ++ ++ if len(smtNode): ++ flag = False ++ if cmp(smtNode[0].childNodes[0].nodeValue, 'true') == 0: ++ flag = True ++ data.set_smtEn(flag) ++ ++ if len(iesNode): ++ flag = False ++ if cmp(iesNode[0].childNodes[0].nodeValue, 'true') == 0: ++ flag = True ++ data.set_iesEn(flag) ++ ++ ModuleObj.set_data(self, node.nodeName, data) ++ ++ return True ++ ++ def get_gpioData(self, idx): ++ if idx >= GpioData._count or idx < 0: ++ return None ++ ++ key = 'gpio%s' %(idx) ++ return ModuleObj.get_data(self)[key] ++ ++ def parse(self, node): ++ self.get_cfgInfo() ++ self.read(node) ++ ++ def isMuxMode(self, key, index, modIdx): ++ mode_name = GpioData.get_modeName(key, index) ++ modIdx.append(index) ++ ++ if mode_name.find('//') != -1: ++ return True ++ return False ++ ++ def gen_files(self): ++ ModuleObj.gen_files(self) ++ self.gen_cFile() ++ self.gen_specFiles() ++ ++ def gen_spec(self, para): ++ if para == 'gpio_usage_h': ++ self.gen_cFile() ++ elif para == 'gpio_boot_h': ++ self.gen_hFile() ++ elif para == 'gpio_dtsi': ++ self.gen_dtsiFile() ++ elif para == 'scp_gpio_usage_h': ++ self.gen_scpUsage() ++ elif para == 'pinctrl_h': ++ self.gen_pinCtrl() ++ elif para == 'pinfunc_h': ++ self.gen_pinFunc() ++ elif para == 'gpio_usage_mapping_dtsi': ++ self.gen_mapDtsi() ++ ++ ++ def gen_cFile(self): ++ gen_str = '' ++ fp = open(os.path.join(ModuleObj.get_genPath(), self.__fileName), 'w') ++ gen_str += ModuleObj.writeComment() ++ gen_str += ModuleObj.writeHeader(self.__fileName) ++ gen_str += self.fill_cFile() ++ gen_str += ModuleObj.writeTail(self.__fileName) ++ fp.write(gen_str) ++ fp.close() ++ ++ def gen_specFiles(self): ++ self.gen_pinFunc() ++ self.gen_pinCtrl() ++ self.gen_scpUsage() ++ self.gen_mapDtsi() ++ ++ def gen_pinFunc(self): ++ gen_str = '' ++ fp = open(os.path.join(ModuleObj.get_genPath(), self.__filePinfunc), 'w') ++ gen_str += ModuleObj.writeComment() ++ gen_str += ModuleObj.writeHeader(self.__filePinfunc) ++ gen_str += self.fill_pinfunc_hFile() ++ gen_str += ModuleObj.writeTail(self.__filePinfunc) ++ fp.write(gen_str) ++ fp.close() ++ ++ def gen_pinCtrl(self): ++ gen_str = '' ++ fp = open(os.path.join(ModuleObj.get_genPath(), self.__filePinCtrl), 'w') ++ gen_str += ModuleObj.writeComment() ++ gen_str += ModuleObj.writeHeader(self.__filePinCtrl) ++ gen_str += self.fill_pinctrl_hFile() ++ gen_str += ModuleObj.writeTail(self.__filePinCtrl) ++ fp.write(gen_str) ++ fp.close() ++ ++ def gen_scpUsage(self): ++ gen_str = '' ++ fp = open(os.path.join(ModuleObj.get_genPath(), self.__fileScp), 'w') ++ gen_str += ModuleObj.writeComment() ++ gen_str += ModuleObj.writeHeader(self.__fileScp) ++ gen_str += self.fill_cFile() ++ gen_str += ModuleObj.writeTail(self.__fileScp) ++ fp.write(gen_str) ++ fp.close() ++ ++ def gen_mapDtsi(self): ++ gen_str = '' ++ fp = open(os.path.join(ModuleObj.get_genPath(), self.__fileMap), 'w') ++ gen_str += ModuleObj.writeComment() ++ gen_str += self.fill_mapping_dtsiFile() ++ fp.write(gen_str) ++ fp.close() ++ ++ def fill_hFile(self): ++ gen_str = '''//Configuration for GPIO SMT(Schmidt Trigger) Group output start\n''' ++ temp_list = [] ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ #for value in ModuleObj.get_data(self).values(): ++ value = ModuleObj.get_data(self)[key] ++ num = value.get_smtNum() ++ if num in temp_list or num < 0: ++ continue ++ else: ++ temp_list.append(num) ++ if value.get_smtEn(): ++ gen_str += '''#define GPIO_SMT_GROUP_%d\t\t1\n''' %(num) ++ else: ++ gen_str += '''#define GPIO_SMT_GROUP_%d\t\t0\n''' %(num) ++ ++ gen_str += '''\n\n''' ++ ++ sorted_list = sorted(ModuleObj.get_data(self).keys(), key = compare) ++ ++ for key in sorted_list: ++ value = ModuleObj.get_data(self)[key] ++ if self.is_i2cPadPin(value.get_modeName(key, value.get_defMode())): ++ value.set_inpullEn(False) ++ value.set_outHigh(False) ++ value.set_inpullSelHigh(False) ++ ++ gen_str += '''//Configuration for %s\n''' %(key.upper()) ++ ++ mode_name = GpioData.get_modeName(key, value.get_defMode()) ++ val = '' ++ if mode_name != '': ++ flag = False ++ #val = '' ++ if mode_name.find('//') != -1: ++ flag = True ++ ++ value.get_modeVec()[value.get_defMode()] ++ if flag: ++ if value.get_modeVec()[value.get_defMode()] == '1': ++ val = str(value.get_defMode()) ++ elif value.get_modeVec()[value.get_defMode()] == '2': ++ val = str(value.get_defMode() + GpioData._modNum) ++ else: ++ val = str(value.get_defMode()) ++ ++ if len(val) < 2: ++ val = '0' + val ++ ++ pull_en = '' ++ if value.get_inPullEn(): ++ pull_en = 'ENABLE' ++ else: ++ pull_en = 'DISABLE' ++ ++ pull_sel = '' ++ if value.get_inPullSelHigh(): ++ pull_sel = 'UP' ++ else: ++ pull_sel = 'DOWN' ++ ++ out_high = '' ++ if value.get_outHigh(): ++ out_high = 'ONE' ++ else: ++ out_high = 'ZERO' ++ ++ smt_en = '' ++ if value.get_smtEn(): ++ smt_en = 'ENABLE' ++ else: ++ smt_en= 'DISABLE' ++ ++ ies_en = '' ++ if value.get_iesEn(): ++ ies_en = 'ENABLE' ++ else: ++ ies_en = 'DISABLE' ++ ++ gen_str += '''#define %s_MODE\t\t\tGPIO_MODE_%s\n''' %(key.upper(), val) ++ gen_str += '''#define %s_DIR\t\t\tGPIO_DIR_%s\n''' %(key.upper(), value.get_defDir()) ++ gen_str += '''#define %s_PULLEN\t\tGPIO_PULL_%s\n''' %(key.upper(), pull_en) ++ gen_str += '''#define %s_PULL\t\t\tGPIO_PULL_%s\n''' %(key.upper(), pull_sel) ++ gen_str += '''#define %s_DATAOUT\t\tGPIO_OUT_%s\n''' %(key.upper(), out_high) ++ gen_str += '''#define %s_SMT\t\t\tGPIO_SMT_%s\n''' %(key.upper(), smt_en) ++ gen_str += '''#define %s_IES\t\t\tGPIO_IES_%s\n\n''' %(key.upper(), ies_en) ++ ++ return gen_str ++ ++ ++ def is_i2cPadPin(self, name): ++ if re.match(r'^SCL\d+$', name) or re.match(r'^SDA\d+$', name): ++ return True ++ ++ return False ++ ++ def fill_cFile(self): ++ gen_str = '' ++ #sorted_list = sorted(ModuleObj.get_data(self).keys(), key = compare) ++ ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ #for key in sorted_list: ++ value = ModuleObj.get_data(self)[key] ++ for varName in value.get_varNames(): ++ gen_str += '''#define %s\t\t\t(%s | 0x80000000)\n''' %(varName.upper(), key.upper()) ++ ++ if value.get_eintMode(): ++ gen_str += '''#define %s_M_EINT\t\tGPIO_MODE_00\n''' %(varName) ++ ++ temp_list = [] ++ for item in GpioData._specMap.keys(): ++ regExp = '[_A-Z0-9:]*%s[_A-Z0-9:]*' %(item.upper()) ++ pat = re.compile(regExp) ++ for i in range(0, GpioData._modNum): ++ list = value.get_modeVec() ++ mode_name = GpioData.get_modeName(key, i) ++ ++ if list[i] == '1': ++ if mode_name.find('//') != -1: ++ mode_name = mode_name.split('//')[0] ++ elif list[i] == '2': ++ if mode_name.find('//') != -1: ++ mode_name = mode_name.split('//')[1] ++ ++ if pat.match(mode_name): ++ if cmp(item, 'eint') == 0 and ((value.get_eintMode() or mode_name.find('MD_EINT') != -1)): ++ continue ++ ++ gen_str += '''#define %s%s\t\tGPIO_MODE_0%d\n''' %(varName.upper(), GpioData._specMap[item].upper(), i) ++ temp_list.append(i) ++ break ++ ++ if not value.get_eintMode(): ++ list = value.get_modeVec() ++ for i in range(0,GpioData._modNum): ++ mode_name = GpioData.get_modeName(key, i) ++ ++ if list[i] == '0': ++ continue ++ elif list[i] == '1': ++ if mode_name.find('//') != -1: ++ mode_name = mode_name.split('//')[0] ++ elif list[i] == '2': ++ if mode_name.find('//') != -1: ++ mode_name = mode_name.split('//')[1] ++ ++ ++ if not i in temp_list: ++ gen_str += '''#define %s_M_%s\t\tGPIO_MODE_0%d\n''' %(varName, re.sub(r'\d{0,3}$', '', mode_name), i) ++ ++ regExp = r'CLKM\d' ++ pat = re.compile(regExp) ++ for i in range(0, GpioData._modNum): ++ mode = GpioData.get_modeName(key, i) ++ if pat.match(mode): ++ gen_str += '''#define %s_CLK\t\tCLK_OUT%s\n''' %(varName, mode[4:]) ++ temp = '' ++ if varName in GpioData._freqMap.keys(): ++ temp = GpioData._freqMap[varName] ++ else: ++ temp = 'GPIO_CLKSRC_NONE' ++ gen_str += '''#define %s_FREQ\t\t%s\n''' %(varName, temp) ++ ++ gen_str += '''\n''' ++ ++ return gen_str ++ ++ ++ def fill_dtsiFile(self): ++ gen_str = '''&pio {\n\n''' ++ gen_str += '''\tgpio_pins_default: gpiodef{\n\t};\n\n''' ++ ++ #sorted_list = sorted(ModuleObj.get_data(self).keys(), key = compare) ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ #for key in sorted_list: ++ value = ModuleObj.get_data(self)[key] ++ gen_str += '''\t%s: gpio@%s {\n''' %(key.lower(), key[4:]) ++ gen_str += '''\t\tpins_cmd_dat {\n''' ++ mode = value.get_defMode() ++ mode_name = GpioData.get_modeName(key, mode) ++ mode_val = value.get_modeVec()[mode] ++ if mode_val == '1': ++ if mode_name.find('//') != -1: ++ mode_name = mode_name.split('//')[0] ++ elif mode_val == '2': ++ if mode_name.find('//') != -1: ++ mode_name = mode_name.split('//')[1] ++ ++ gen_str += '''\t\t\tpins = ;\n''' %(key[4:], mode_name) ++ gen_str += '''\t\t\tslew-rate = <%d>;\n''' %(value.ge_defDirInt()) ++ ++ temp = '' ++ if not value.get_inPullEn(): ++ temp = 'bias-disable;' ++ gen_str += '''\t\t\t%s\n''' %(temp) ++ if value.get_inPullSelHigh(): ++ temp = '11' ++ else: ++ temp = '00' ++ gen_str += '''\t\t\tbias-pull-down = <%s>;\n''' %(temp) ++ if value.get_outHigh(): ++ temp = 'high' ++ else: ++ temp = 'low' ++ gen_str += '''\t\t\toutput-%s;\n''' %(temp) ++ gen_str += '''\t\t\tinput-schmitt-enable = <%d>;\n''' %(value.get_smtEn()) ++ gen_str += '''\t\t};\n''' ++ gen_str += '''\t};\n''' ++ ++ gen_str += '''};\n\n''' ++ ++ gen_str += '''&gpio {\n''' ++ lineLen = 0 ++ gen_str += '''\tpinctrl-names = "default",''' ++ lineLen += 30 ++ for i in range(0, GpioData._count-1): ++ gen_str += '''"gpio%d",''' %(i) ++ if i < 10: ++ lineLen += 8 ++ elif i < 100: ++ lineLen += 9 ++ elif i >= 100: ++ lineLen += 10 ++ ++ if lineLen > 100: ++ gen_str += '''\n''' ++ lineLen = 0 ++ ++ ++ gen_str += '''"gpio%d";\n''' %(GpioData._count-1) ++ gen_str += '''\tpinctrl-0 = <&gpio_pins_default>;\n''' ++ ++ for i in range(1, GpioData._count): ++ gen_str += '''\tpinctrl-%d = <&gpio%d>;\n''' %(i, i-1) ++ ++ gen_str += '''\n''' ++ gen_str += '''\tstatus = \"okay\";\n''' ++ gen_str += '''};\n''' ++ ++ return gen_str ++ ++ def fill_pinfunc_hFile(self): ++ gen_str = '''#include \"mt65xx.h\"\n\n''' ++ #sorted_list = sorted(ModuleObj.get_data(self).keys(), key = compare) ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ #for key in sorted_list: ++ value = ModuleObj.get_data(self)[key] ++ for i in range(0, GpioData._modNum): ++ mode_name = GpioData.get_modeName(key, i) ++ ++ if mode_name != '': ++ lst = [] ++ if mode_name.find('//') != -1: ++ lst = mode_name.split('//') ++ else: ++ lst.append(mode_name) ++ ++ for j in range(0, len(lst)): ++ gen_str += '''#define PINMUX_GPIO%s__FUNC_%s (MTK_PIN_NO(%s) | %d)\n''' %(key[4:], lst[j], key[4:], (i + j*8)) ++ ++ gen_str += '''\n''' ++ gen_str += '''\n''' ++ ++ return gen_str ++ ++ def fill_pinctrl_hFile(self): ++ gen_str = '''#include \n''' ++ gen_str += '''#include \n\n''' ++ gen_str += '''static const struct mtk_desc_pin mtk_pins_%s[] = {\n''' %(ModuleObj.get_chipId().lower()) ++ ++ #sorted_list = sorted(ModuleObj.get_data(self).keys(), key = compare) ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ #for key in sorted_list: ++ value = ModuleObj.get_data(self)[key] ++ gen_str += '''\tMTK_PIN(\n''' ++ gen_str += '''\t\tPINCTRL_PIN(%s, \"%s\"),\n''' %(key[4:], key.upper()) ++ gen_str += '''\t\tNULL, \"%s\",\n''' %(ModuleObj.get_chipId().lower()) ++ gen_str += '''\t\tMTK_EINT_FUNCTION(NO_EINT_SUPPORT, NO_EINT_SUPPORT)''' ++ for i in range(0, GpioData._modNum): ++ mode_name = GpioData.get_modeName(key, i) ++ ++ if mode_name != '': ++ lst = [] ++ if mode_name.find('//') != -1: ++ lst = mode_name.split('//') ++ else: ++ lst.append(mode_name) ++ for j in range(0, len(lst)): ++ gen_str += ''',\n\t\tMTK_FUNCTION(%d, "%s")''' %(i + j * 8, lst[j]) ++ gen_str += '''\n\t),\n''' ++ ++ gen_str += '''};\n''' ++ ++ return gen_str ++ ++ def fill_mapping_dtsiFile(self): ++ gen_str = '''&gpio_usage_mapping {\n''' ++ ++ #sorted_list = sorted(ModuleObj.get_data(self).keys(), key = compare) ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ #for key in sorted_list: ++ value = ModuleObj.get_data(self)[key] ++ for varName in value.get_varNames(): ++ if varName != '' and varName.lower() in GpioData._mapList: ++ gen_str += '''\t%s = <%s>;\n''' %(varName, key[4:]) ++ ++ gen_str += '''};\n''' ++ return gen_str ++ ++ +diff --git a/tools/dct/obj/I2cObj.py b/tools/dct/obj/I2cObj.py +new file mode 100755 +index 00000000000..5e0f9aa9908 +--- /dev/null ++++ b/tools/dct/obj/I2cObj.py +@@ -0,0 +1,130 @@ ++#! /usr/bin/python3 ++# -*- coding: utf-8 -*- ++ ++from __future__ import absolute_import ++import re ++import string ++import xml.dom.minidom ++import configparser ++ ++from .ModuleObj import ModuleObj ++#from utility import util ++from utility.util import sorted_key ++from data.I2cData import I2cData ++from data.I2cData import BusData ++from . import ChipObj ++ ++class I2cObj(ModuleObj): ++ def __init__(self): ++ ModuleObj.__init__(self, 'cust_i2c.h', 'cust_i2c.dtsi') ++ self.__busList = [] ++ self.__bBusEnable = True ++ ++ def get_cfgInfo(self): ++ cp = configparser.ConfigParser(allow_no_value=True) ++ cp.read(ModuleObj.get_figPath()) ++ ++ I2cData._i2c_count = string.atoi(cp.get('I2C', 'I2C_COUNT')) ++ I2cData._channel_count = string.atoi(cp.get('I2C', 'CHANNEL_COUNT')) ++ ++ if cp.has_option('Chip Type', 'I2C_BUS'): ++ flag = cp.get('Chip Type', 'I2C_BUS') ++ if flag == '0': ++ self.__bBusEnable = False ++ ++ def read(self, node): ++ nodes = node.childNodes ++ for node in nodes: ++ if node.nodeType == xml.dom.minidom.Node.ELEMENT_NODE: ++ if cmp(node.nodeName, 'count') == 0: ++ self.__count = node.childNodes[0].nodeValue ++ continue ++ if node.nodeName.find('bus') != -1: ++ speedNode = node.getElementsByTagName('speed_kbps') ++ enableNode = node.getElementsByTagName('pullPushEn') ++ ++ data = BusData() ++ if len(speedNode): ++ data.set_speed(speedNode[0].childNodes[0].nodeValue) ++ if len(enableNode): ++ data.set_enable(enableNode[0].childNodes[0].nodeValue) ++ ++ self.__busList.append(data) ++ elif node.nodeName.find('device') != -1: ++ nameNode = node.getElementsByTagName('varName') ++ channelNode = node.getElementsByTagName('channel') ++ addrNode = node.getElementsByTagName('address') ++ ++ data = I2cData() ++ if len(nameNode): ++ data.set_varName(nameNode[0].childNodes[0].nodeValue) ++ if len(channelNode): ++ data.set_channel(channelNode[0].childNodes[0].nodeValue) ++ if len(addrNode): ++ data.set_address(addrNode[0].childNodes[0].nodeValue) ++ ++ ModuleObj.set_data(self, node.nodeName, data) ++ ++ return True ++ ++ def parse(self, node): ++ self.get_cfgInfo() ++ self.read(node) ++ ++ def gen_files(self): ++ ModuleObj.gen_files(self) ++ ++ def gen_spec(self, para): ++ ModuleObj.gen_spec(self, para) ++ ++ def fill_hFile(self): ++ gen_str = '' ++ for i in range(0, I2cData._channel_count): ++ gen_str += '''#define I2C_CHANNEL_%d\t\t\t%d\n''' %(i, i) ++ ++ gen_str += '''\n''' ++ ++ #sorted_lst = sorted(ModuleObj.get_data(self).keys(), key=compare) ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ value = ModuleObj.get_data(self)[key] ++ temp = '' ++ if value.get_address().strip() == '': ++ temp = 'TRUE' ++ else: ++ temp = 'FALSE' ++ gen_str += '''#define I2C_%s_AUTO_DETECT\t\t\t%s\n''' %(value.get_varName(), temp) ++ gen_str += '''#define I2C_%s_CHANNEL\t\t\t%s\n''' %(value.get_varName(), value.get_channel()) ++ gen_str += '''#define I2C_%s_SLAVE_7_BIT_ADDR\t\t%s\n''' %(value.get_varName(), value.get_address().upper()) ++ gen_str += '''\n''' ++ ++ return gen_str ++ ++ def fill_dtsiFile(self): ++ gen_str = '' ++ for i in range(0, I2cData._channel_count): ++ gen_str += '''&i2c%d {\n''' %(i) ++ gen_str += '''\t#address-cells = <1>;\n''' ++ gen_str += '''\t#size-cells = <0>;\n''' ++ if self.__bBusEnable: ++ gen_str += '''\tclock-frequency = <%d>;\n''' %(string.atoi(self.__busList[i].get_speed()) * 1000) ++ temp_str = '' ++ ++ if cmp(self.__busList[i].get_enable(), 'false') == 0: ++ temp_str = 'use-open-drain' ++ elif cmp(self.__busList[i].get_enable(), 'true') == 0: ++ temp_str = 'use-push-pull' ++ gen_str += '''\tmediatek,%s;\n''' %(temp_str) ++ ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ value = ModuleObj.get_data(self)[key] ++ channel = 'I2C_CHANNEL_%d' %(i) ++ if cmp(value.get_channel(), channel) == 0 and cmp(value.get_varName(), 'NC') != 0 and value.get_address().strip() != '': ++ gen_str += '''\t%s@%s {\n''' %(value.get_varName().lower(), value.get_address()[2:].lower()) ++ gen_str += '''\t\tcompatible = \"mediatek,%s\";\n''' %(value.get_varName().lower()) ++ gen_str += '''\t\treg = <%s>;\n''' %(value.get_address().lower()) ++ gen_str += '''\t\tstatus = \"okay\";\n''' ++ gen_str += '''\t};\n\n''' ++ ++ gen_str += '''};\n\n''' ++ ++ return gen_str +\ No newline at end of file +diff --git a/tools/dct/obj/KpdObj.py b/tools/dct/obj/KpdObj.py +new file mode 100755 +index 00000000000..06adf15bc96 +--- /dev/null ++++ b/tools/dct/obj/KpdObj.py +@@ -0,0 +1,292 @@ ++#! /usr/bin/python3 ++# -*- coding: utf-8 -*- ++ ++from __future__ import absolute_import ++import re ++import string ++import configparser ++import xml.dom.minidom ++ ++from .ModuleObj import ModuleObj ++from utility.util import LogLevel ++from utility.util import log ++from data.KpdData import KpdData ++ ++class KpdObj(ModuleObj): ++ ++ def __init__(self): ++ ModuleObj.__init__(self, 'cust_kpd.h', 'cust_kpd.dtsi') ++ ++ ++ def get_cfgInfo(self): ++ cp = configparser.ConfigParser(allow_no_value=True) ++ cp.read(ModuleObj.get_cmpPath()) ++ ++ ops = cp.options('Key_definition') ++ for op in ops: ++ KpdData._keyValueMap[op.upper()] = string.atoi(cp.get('Key_definition', op)) ++ ++ KpdData._keyValueMap['NC'] = 0 ++ ++ cp.read(ModuleObj.get_figPath()) ++ if cp.has_option('KEYPAD_EXTEND_TYPE', 'KEY_ROW'): ++ KpdData.set_row_ext(string.atoi(cp.get('KEYPAD_EXTEND_TYPE', 'KEY_ROW'))) ++ if cp.has_option('KEYPAD_EXTEND_TYPE', 'KEY_COLUMN'): ++ KpdData.set_col_ext(string.atoi(cp.get('KEYPAD_EXTEND_TYPE', 'KEY_COLUMN'))) ++ ++ return True ++ ++ def read(self, node): ++ nodes = node.childNodes ++ for node in nodes: ++ if node.nodeType == xml.dom.Node.ELEMENT_NODE: ++ if node.nodeName == 'row': ++ row = string.atoi(node.childNodes[0].nodeValue) ++ KpdData.set_row(row) ++ ++ if node.nodeName == 'column': ++ col = string.atoi(node.childNodes[0].nodeValue) ++ KpdData.set_col(col) ++ ++ if node.nodeName == 'keyMatrix': ++ content = node.childNodes[0].nodeValue ++ content = content.replace('\t', '') ++ rows = content.split('''\n''') ++ matrix = [] ++ for row in rows: ++ for item in row.split(' '): ++ matrix.append(item) ++ KpdData.set_matrix(matrix) ++ for item in matrix: ++ if cmp(item, 'NC') != 0: ++ KpdData._usedKeys.append(item) ++ KpdData._usedKeys.append('POWER') ++ ++ if node.nodeName == "keyMatrix_ext": ++ content = node.childNodes[0].nodeValue ++ content = content.replace('\t', '') ++ rows = content.split('''\n''') ++ matrix = [] ++ for row in rows: ++ for item in row.split(' '): ++ matrix.append(item) ++ KpdData.set_matrix_ext(matrix) ++ ++ if node.nodeName == 'downloadKey': ++ keys = node.childNodes[0].nodeValue ++ KpdData.set_downloadKeys(keys.split(' ')) ++ ++ if node.nodeName == 'modeKey': ++ value = node.childNodes[0].nodeValue ++ keys = value.split(' ') ++ KpdData._modeKeys['META'] = keys[0] ++ KpdData._modeKeys['RECOVERY'] = keys[1] ++ KpdData._modeKeys['FACTORY'] = keys[2] ++ ++ if node.nodeName == 'pwrKeyEint_gpioNum': ++ num = string.atoi(node.childNodes[0].nodeValue) ++ KpdData.set_gpioNum(num) ++ ++ if node.nodeName == 'pwrKeyUtility': ++ util = node.childNodes[0].nodeValue ++ KpdData.set_utility(util) ++ ++ if node.nodeName == 'home_key': ++ if len(node.childNodes) != 0: ++ home = node.childNodes[0].nodeValue ++ else: ++ home = '' ++ KpdData.set_homeKey(home) ++ ++ if node.nodeName == 'bPwrKeyUseEint': ++ flag = False ++ if node.childNodes[0].nodeValue == 'false': ++ flag = False ++ else: ++ flag = True ++ ++ KpdData.set_useEint(flag) ++ ++ if node.nodeName == 'bPwrKeyGpioDinHigh': ++ flag = False ++ if node.childNodes[0].nodeValue == 'false': ++ KpdData.set_gpioDinHigh(flag) ++ ++ if node.nodeName == 'pressPeriod': ++ time = string.atoi(node.childNodes[0].nodeValue) ++ KpdData.set_pressTime(time) ++ ++ if node.nodeName == 'keyType': ++ keyType = node.childNodes[0].nodeValue ++ KpdData.set_keyType(keyType) ++ ++ return True ++ ++ def parse(self, node): ++ self.get_cfgInfo() ++ self.read(node) ++ ++ def gen_files(self): ++ ModuleObj.gen_files(self) ++ ++ def gen_spec(self, para): ++ ModuleObj.gen_spec(self, para) ++ ++ ++ def fill_hFile(self): ++ gen_str = '''#include \n''' ++ gen_str += '''#include \n''' ++ gen_str += '''\n''' ++ gen_str += '''#define KPD_YES\t\t1\n''' ++ gen_str += '''#define KPD_NO\t\t0\n''' ++ gen_str += '''\n''' ++ gen_str += '''/* available keys (Linux keycodes) */\n''' ++ gen_str += '''#define KEY_CALL\t\tKEY_SEND\n''' ++ gen_str += '''#define KEY_ENDCALL\tKEY_END\n''' ++ gen_str += '''#undef KEY_OK\n''' ++ gen_str += '''#define KEY_OK\t\tKEY_REPLY /* DPAD_CENTER */\n''' ++ gen_str += '''#define KEY_FOCUS\tKEY_HP\n''' ++ gen_str += '''#define KEY_AT\t\tKEY_EMAIL\n''' ++ gen_str += '''#define KEY_POUND\t228\t//KEY_KBDILLUMTOGGLE\n''' ++ gen_str += '''#define KEY_STAR\t227\t//KEY_SWITCHVIDEOMODE\n''' ++ gen_str += '''#define KEY_DEL\t\tKEY_BACKSPACE\n''' ++ gen_str += '''#define KEY_SYM\t\tKEY_COMPOSE\n''' ++ gen_str += '''\n''' ++ gen_str += '''#define KPD_KEY_DEBOUNCE\t%d\n''' %(KpdData.get_pressTime()) ++ gen_str += '''#define KPD_PWRKEY_MAP\tKEY_%s\n''' %(KpdData.get_utility()) ++ # do not gen this macro if the home key is null ++ if KpdData.get_homeKey() != '': ++ gen_str += '''#define KPD_PMIC_RSTKEY_MAP\tKEY_%s\n''' %(KpdData.get_homeKey()) ++ if cmp(KpdData.get_keyType(), 'EXTEND_TYPE') != 0: ++ gen_str += '''#define MTK_PMIC_PWR_KEY\t%d\n''' %(KpdData.get_col() - 1) ++ if KpdData.get_homeKey() != '': ++ gen_str += '''#define MTK_PMIC_RST_KEY\t\t%d\n''' %(2*KpdData.get_col() - 1) ++ gen_str += '''\n''' ++ gen_str += '''#define KPD_USE_EXTEND_TYPE\tKPD_NO\n''' ++ else: ++ gen_str += '''#define MTK_PMIC_PWR_KEY\t%d\n''' %(KpdData.get_col_ext() - 1) ++ if KpdData.get_keyType() != '': ++ gen_str += '''#define MTK_PMIC_RST_KEY\t\t%d\n''' %(2*KpdData.get_col_ext() - 1) ++ gen_str += '''\n''' ++ gen_str += '''#define KPD_USE_EXTEND_TYPE\tKPD_YES\n''' ++ gen_str += '''\n''' ++ gen_str += '''/* HW keycode [0 ~ 71] -> Linux keycode */\n''' ++ gen_str += '''#define KPD_INIT_KEYMAP()\t\\\n''' ++ gen_str += '''{\t\\\n''' ++ ++ ++ if KpdData.get_keyType() == 'NORMAL_TYPE': ++ for key in KpdData.get_matrix(): ++ if cmp(key, 'NC') != 0: ++ gen_str += '''\t[%d] = KEY_%s,\t\\\n''' %(KpdData.get_matrix().index(key), key) ++ else: ++ for key in KpdData.get_matrix_ext(): ++ if cmp(key, 'NC') != 0: ++ gen_str += '''\t[%d] = KEY_%s,\t\\\n''' %(KpdData.get_matrix_ext().index(key), key) ++ ++ gen_str += '''}\n''' ++ gen_str += '''\n''' ++ ++ gen_str += '''/***********************************************************/\n''' ++ gen_str += '''/****************Preload Customation************************/\n''' ++ gen_str += '''/***********************************************************/\n''' ++ gen_str += '''#define KPD_PWRKEY_EINT_GPIO\tGPIO%d\n''' %(KpdData.get_gpioNum()) ++ gen_str += '''#define KPD_PWRKEY_GPIO_DIN\t%d\n''' %(int(KpdData.get_gpioDinHigh())) ++ gen_str += '''\n''' ++ ++ for key in KpdData.get_downloadKeys(): ++ if cmp(key, 'NC') != 0: ++ dlIdx = KpdData.get_downloadKeys().index(key) ++ mtxIdx = self.get_matrixIdx(key) ++ gen_str += '''#define KPD_DL_KEY%d\t%d\t/* KEY_%s */\n''' %(dlIdx+1, mtxIdx, key) ++ gen_str += '''\n''' ++ ++ gen_str += '''/***********************************************************/\n''' ++ gen_str += '''/****************Uboot Customation**************************/\n''' ++ gen_str += '''/***********************************************************/\n''' ++ ++ for (key, value) in KpdData.get_modeKeys().items(): ++ if cmp(value, 'NC') != 0: ++ idx = self.get_matrixIdx(value) ++ #idx = KpdData.get_matrix().index(value) ++ gen_str += '''#define MT65XX_%s_KEY\t%d\t/* KEY_%s */\n''' %(key, idx, value) ++ ++ gen_str += '''\n''' ++ ++ return gen_str ++ ++ def get_matrixIdx(self, value): ++ if KpdData.get_keyType() == 'NORMAL_TYPE': ++ if cmp(value, 'POWER') == 0: ++ return KpdData.get_col() - 1 ++ elif cmp(value, KpdData.get_homeKey()) == 0: ++ return 2 * KpdData.get_col() - 1 ++ else: ++ return KpdData.get_matrix().index(value) ++ elif KpdData.get_keyType() == 'EXTEND_TYPE': ++ if cmp(value, 'POWER') == 0: ++ return KpdData.get_col_ext() - 1 ++ elif cmp(value, KpdData.get_homeKey()) == 0: ++ return 2 * KpdData.get_col_ext() - 1 ++ else: ++ return KpdData.get_matrix_ext().index(value) ++ ++ def fill_dtsiFile(self): ++ gen_str = '''&keypad {\n''' ++ gen_str += '''\tmediatek,kpd-key-debounce = <%d>;\n''' %(KpdData.get_pressTime()) ++ gen_str += '''\tmediatek,kpd-sw-pwrkey = <%d>;\n''' %(KpdData._keyValueMap[KpdData.get_utility()]) ++ if KpdData.get_keyType() == 'NORMAL_TYPE': ++ gen_str += '''\tmediatek,kpd-hw-pwrkey = <%d>;\n''' %(KpdData.get_col()-1) ++ else: ++ gen_str += '''\tmediatek,kpd-hw-pwrkey = <%d>;\n''' %(KpdData.get_col_ext()-1) ++ ++ #gen_str += '''\tmediatek,kpd-sw-rstkey = <%d>;\n''' %(KpdData._keyValueMap[KpdData.get_homeKey()]) ++ if KpdData.get_homeKey() != '': ++ gen_str += '''\tmediatek,kpd-sw-rstkey = <%d>;\n''' %(KpdData.get_keyVal(KpdData.get_homeKey())) ++ if KpdData.get_keyType() == 'NORMAL_TYPE': ++ if KpdData.get_homeKey() != '': ++ gen_str += '''\tmediatek,kpd-hw-rstkey = <%d>;\n''' %(2*KpdData.get_col() - 1) ++ gen_str += '''\tmediatek,kpd-use-extend-type = <0>;\n''' ++ else: ++ if KpdData.get_homeKey() != '': ++ gen_str += '''\tmediatek,kpd-hw-rstkey = <%d>;\n''' %(2*KpdData.get_col_ext() - 1) ++ gen_str += '''\tmediatek,kpd-use-extend-type = <1>;\n''' ++ ++ #gen_str += '''\tmediatek,kpd-use-extend-type = <0>;\n''' ++ gen_str += '''\t/*HW Keycode [0~%d] -> Linux Keycode*/\n''' %(KpdData.get_row() * KpdData.get_col() - 1) ++ gen_str += '''\tmediatek,kpd-hw-map-num = <%d>;\n''' %(KpdData.get_row() * KpdData.get_col()) ++ gen_str += '''\tmediatek,kpd-hw-init-map = <''' ++ ++ if KpdData.get_keyType() == 'NORMAL_TYPE': ++ for key in KpdData.get_matrix(): ++ idx = KpdData._keyValueMap[key] ++ gen_str += '''%d ''' %(idx) ++ else: ++ for key in KpdData.get_matrix_ext(): ++ idx = KpdData._keyValueMap[key] ++ gen_str += '''%d ''' %(idx) ++ ++ gen_str.rstrip() ++ gen_str += '''>;\n''' ++ gen_str += '''\tmediatek,kpd-pwrkey-eint-gpio = <%d>;\n''' %(KpdData.get_gpioNum()) ++ gen_str += '''\tmediatek,kpd-pwkey-gpio-din = <%d>;\n''' %(int(KpdData.get_gpioDinHigh())) ++ for key in KpdData.get_downloadKeys(): ++ if cmp(key, 'NC') == 0: ++ continue ++ gen_str += '''\tmediatek,kpd-hw-dl-key%d = <%s>;\n''' %(KpdData.get_downloadKeys().index(key), self.get_matrixIdx(key)) ++ ++ for (key, value) in KpdData.get_modeKeys().items(): ++ if cmp(value, 'NC') == 0: ++ continue ++ gen_str += '''\tmediatek,kpd-hw-%s-key = <%d>;\n''' %(key.lower(), self.get_matrixIdx(value)) ++ ++ gen_str += '''\tstatus = \"okay\";\n''' ++ gen_str += '''};\n''' ++ ++ return gen_str ++ ++ ++ ++ ++ ++ +diff --git a/tools/dct/obj/Md1EintObj.py b/tools/dct/obj/Md1EintObj.py +new file mode 100755 +index 00000000000..e4660fc94b3 +--- /dev/null ++++ b/tools/dct/obj/Md1EintObj.py +@@ -0,0 +1,174 @@ ++#! /usr/bin/python3 ++# -*- coding: utf-8 -*- ++ ++from __future__ import absolute_import ++import configparser ++import string ++import xml.dom.minidom ++ ++from utility import util ++from utility.util import sorted_key ++from .ModuleObj import ModuleObj ++from data.Md1EintData import Md1EintData ++from utility.util import LogLevel ++ ++class Md1EintObj(ModuleObj): ++ def __init__(self): ++ ModuleObj.__init__(self, 'cust_eint_md1.h', 'cust_md1_eint.dtsi') ++ self.__srcPin = {} ++ self.__bSrcPinEnable = True ++ ++ def get_cfgInfo(self): ++ # ConfigParser accept ":" and "=", so SRC_PIN will be treated specially ++ cp = configparser.ConfigParser(allow_no_value=True) ++ cp.read(ModuleObj.get_figPath()) ++ ++ if cp.has_option('Chip Type', 'MD1_EINT_SRC_PIN'): ++ flag = cp.get('Chip Type', 'MD1_EINT_SRC_PIN') ++ if flag == '0': ++ self.__bSrcPinEnable = False ++ ++ if(self.__bSrcPinEnable): ++ for option in cp.options('SRC_PIN'): ++ value = cp.get('SRC_PIN', option) ++ value = value[1:] ++ temp = value.split('=') ++ self.__srcPin[temp[0]] = temp[1] ++ else: ++ self.__srcPin[''] = '-1' ++ ++ def read(self, node): ++ nodes = node.childNodes ++ try: ++ for node in nodes: ++ if node.nodeType == xml.dom.Node.ELEMENT_NODE: ++ if cmp(node.nodeName, 'count') == 0: ++ self.__count = node.childNodes[0].nodeValue ++ continue ++ ++ varNode = node.getElementsByTagName('varName') ++ detNode = node.getElementsByTagName('debounce_time') ++ polNode = node.getElementsByTagName('polarity') ++ senNode = node.getElementsByTagName('sensitive_level') ++ deeNode = node.getElementsByTagName('debounce_en') ++ dedNode = node.getElementsByTagName('dedicated_en') ++ srcNode = node.getElementsByTagName('srcPin') ++ sktNode = node.getElementsByTagName('socketType') ++ ++ data = Md1EintData() ++ if len(varNode): ++ data.set_varName(varNode[0].childNodes[0].nodeValue) ++ if len(detNode): ++ data.set_debounceTime(detNode[0].childNodes[0].nodeValue) ++ if len(polNode): ++ data.set_polarity(polNode[0].childNodes[0].nodeValue) ++ if len(senNode): ++ data.set_sensitiveLevel(senNode[0].childNodes[0].nodeValue) ++ if len(deeNode): ++ data.set_debounceEnable(deeNode[0].childNodes[0].nodeValue) ++ if len(dedNode): ++ data.set_dedicatedEn(dedNode[0].childNodes[0].nodeValue) ++ if len(srcNode) and len(srcNode[0].childNodes): ++ data.set_srcPin(srcNode[0].childNodes[0].nodeValue) ++ if len(sktNode) and len(sktNode[0].childNodes): ++ data.set_socketType(sktNode[0].childNodes[0].nodeValue) ++ ++ ModuleObj.set_data(self, node.nodeName, data) ++ except: ++ msg = 'read md1_eint content fail!' ++ util.log(LogLevel.error, msg) ++ return False ++ ++ return True ++ ++ def parse(self, node): ++ self.get_cfgInfo() ++ self.read(node) ++ ++ def gen_files(self): ++ ModuleObj.gen_files(self) ++ ++ def fill_hFile(self): ++ gen_str = '' ++ gen_str += '''#define CUST_EINT_MD_LEVEL_SENSITIVE\t\t0\n''' ++ gen_str += '''#define CUST_EINT_MD_EDGE_SENSITIVE\t\t1\n''' ++ ++ gen_str += '''\n''' ++ ++ if self.__bSrcPinEnable: ++ for (key, value) in self.__srcPin.items(): ++ gen_str += '''#define %s\t\t%s\n''' %(key, value) ++ gen_str += '''\n''' ++ ++ gen_str += '''#define CUST_EINT_POLARITY_LOW\t\t0\n''' ++ gen_str += '''#define CUST_EINT_POLARITY_HIGH\t\t1\n''' ++ gen_str += '''\n''' ++ ++ gen_str += '''#define CUST_EINT_LEVEL_SENSITIVE\t\t0\n''' ++ gen_str += '''#define CUST_EINT_EDGE_SENSITIVE\t\t1\n''' ++ gen_str += '''\n''' ++ ++ count = 0 ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ value = ModuleObj.get_data(self)[key] ++ if cmp(value.get_varName(), 'NC') == 0: ++ continue ++ num = key[4:] ++ count += 1 ++ gen_str += '''#define CUST_EINT_MD1_%s_NAME\t\t\t"%s"\n''' %(num, value.get_varName()) ++ gen_str += '''#define CUST_EINT_MD1_%s_NUM\t\t\t%s\n''' %(num, num) ++ gen_str += '''#define CUST_EINT_MD1_%s_DEBOUNCE_CN\t\t%s\n''' %(num, value.get_debounceTime()) ++ gen_str += '''#define CUST_EINT_MD1_%s_POLARITY\t\tCUST_EINT_POLARITY_%s\n''' %(num, value.get_polarity().upper()) ++ gen_str += '''#define CUST_EINT_MD1_%s_SENSITIVE\t\tCUST_EINT_MD_%s_SENSITIVE\n''' %(num, value.get_sensitiveLevel().upper()) ++ gen_str += '''#define CUST_EINT_MD1_%s_DEBOUNCE_EN\t\tCUST_EINT_DEBOUNCE_%s\n''' %(num, value.get_debounceEnable().upper()) ++ gen_str += '''#define CUST_EINT_MD1_%s_DEDICATED_EN\t\t%s\n''' %(num, int(value.get_dedicatedEn())) ++ if self.__bSrcPinEnable: ++ gen_str += '''#define CUST_EINT_MD1_%s_SRCPIN\t\t\t%s\n''' %(num, value.get_srcPin()) ++ gen_str += '''\n''' ++ ++ gen_str += '''#define CUST_EINT_MD1_CNT\t\t\t%d\n''' %(count) ++ ++ return gen_str ++ ++ ++ def fill_dtsiFile(self): ++ gen_str = '' ++ gen_str += '''&eintc {\n''' ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ value = ModuleObj.get_data(self)[key] ++ if cmp(value.get_varName(), 'NC') == 0: ++ continue ++ num = key[4:] ++ gen_str += '''\t%s@%s {\n''' %(value.get_varName(), num) ++ gen_str += '''\t\tcompatible = \"mediatek,%s-eint\";\n''' %(value.get_varName()) ++ ++ type = 1 ++ polarity = value.get_polarity() ++ sensitive = value.get_sensitiveLevel() ++ ++ if cmp(polarity, 'High') == 0 and cmp(sensitive, 'Edge') == 0: ++ type = 1 ++ elif cmp(polarity, 'Low') == 0 and cmp(sensitive, 'Edge') == 0: ++ type = 2 ++ elif cmp(polarity, 'High') == 0 and cmp(sensitive, 'Level') == 0: ++ type = 4 ++ elif cmp(polarity, 'Low') == 0 and cmp(sensitive, 'Level') == 0: ++ type = 8 ++ ++ gen_str += '''\t\tinterrupts = <%s %d>;\n''' %(num, type) ++ gen_str += '''\t\tdebounce = <%s %d>;\n''' %(num, (string.atoi(value.get_debounceTime()))*1000) ++ gen_str += '''\t\tdedicated = <%s %d>;\n''' %(num, int(value.get_dedicatedEn())) ++ if self.__bSrcPinEnable: ++ gen_str += '''\t\tsrc_pin = <%s %s>;\n''' %(num, self.__srcPin[value.get_srcPin()]) ++ else: ++ gen_str += '''\t\tsrc_pin = <%s %s>;\n''' %(num, -1) ++ gen_str += '''\t\tsockettype = <%s %s>;\n''' %(num, value.get_socketType()) ++ gen_str += '''\t\tstatus = \"okay\";\n''' ++ gen_str += '''\t};\n''' ++ ++ gen_str += '''\n''' ++ ++ gen_str += '''};\n''' ++ ++ return gen_str ++ +diff --git a/tools/dct/obj/ModuleObj.py b/tools/dct/obj/ModuleObj.py +new file mode 100755 +index 00000000000..cc09f6cb8be +--- /dev/null ++++ b/tools/dct/obj/ModuleObj.py +@@ -0,0 +1,147 @@ ++#! /usr/bin/python3 ++# -*- coding: utf-8 -*- ++ ++import os, sys ++import time ++import re ++import string ++ ++from utility import version ++from utility.util import log ++from utility.util import LogLevel ++ ++class ModuleObj: ++ _chip_id = '' ++ _gen_path = '' ++ ++ def __init__(self, name1, name2): ++ self.__hName = name1 ++ self.__dtsiName = name2 ++ self.__data = {} ++ ++ def get_hFileName(self): ++ return self.__hName ++ ++ def get_dtsiFileName(self): ++ return self.__dtsiName ++ ++ def get_cfgInfo(self, section): ++ pass ++ ++ def set_data(self, key, value): ++ self.__data[key] = value ++ ++ def get_data(self): ++ return self.__data ++ ++ def gen_files(self): ++ self.gen_hFile() ++ self.gen_dtsiFile() ++ ++ ++ def gen_hFile(self): ++ fp = open(os.path.join(ModuleObj.get_genPath(), ModuleObj.get_hFileName(self)), 'w') ++ gen_str = '' ++ gen_str += ModuleObj.writeComment() ++ gen_str += ModuleObj.writeHeader(ModuleObj.get_hFileName(self)) ++ gen_str += self.fill_hFile() ++ gen_str += ModuleObj.writeTail(ModuleObj.get_hFileName(self)) ++ fp.write(gen_str) ++ fp.close() ++ ++ ++ def gen_dtsiFile(self): ++ fp = open(os.path.join(ModuleObj.get_genPath(), ModuleObj.get_dtsiFileName(self)), 'w') ++ gen_str = '' ++ gen_str = ModuleObj.writeComment() ++ gen_str += ModuleObj.writeHeader(ModuleObj.get_dtsiFileName(self)) ++ gen_str += self.fill_dtsiFile() ++ fp.write(gen_str) ++ fp.close() ++ ++ def gen_spec(self, para): ++ if re.match(r'.*_h$', para): ++ self.gen_hFile() ++ elif re.match(r'.*_dtsi', para): ++ self.gen_dtsiFile() ++ elif re.match(r'.*_c', para): ++ self.gen_cFile() ++ ++ @staticmethod ++ def get_figPath(): ++ figPath = os.path.join(sys.path[0], 'config', ModuleObj.get_chipId() + '.fig') ++ if not os.path.exists(figPath) or not os.path.isfile(figPath): ++ log(LogLevel.error, 'Can not find %s.fig file!' %(ModuleObj.get_chipId())) ++ sys.exit(-1) ++ ++ return figPath ++ ++ @staticmethod ++ def get_cmpPath(): ++ cmpPath = os.path.join(sys.path[0], 'config', 'YuSu.cmp') ++ ++ if not os.path.exists(cmpPath) or not os.path.isfile(cmpPath): ++ log(LogLevel.error, 'Can not find YuSu.cmp file!') ++ sys.exit(-1) ++ ++ return cmpPath ++ ++ @staticmethod ++ def get_chipId(): ++ return ModuleObj._chip_id ++ ++ @staticmethod ++ def set_chipId(id): ++ ModuleObj._chip_id = id ++ ++ @staticmethod ++ def set_genPath(path): ++ ModuleObj._gen_path = path ++ ++ @staticmethod ++ def get_genPath(): ++ return ModuleObj._gen_path ++ ++ @staticmethod ++ def writeComment(): ++ stamp = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) ++ ver_info = version.VER_MAIN + '.' + version.VER_SUB + '.' + version.BUILD_SN ++ ++ gen_str = '''/*\n * Generated by MTK SP DrvGen Version: ''' ++ gen_str += ver_info ++ gen_str += ''' for ''' ++ gen_str += ModuleObj.get_chipId() ++ gen_str += '''.\n''' ++ gen_str += ''' * ''' ++ gen_str += stamp ++ gen_str += '''\n * Do Not Modify The File.\n''' ++ gen_str += ''' * Copyright Mediatek Inc. (c) 2016.\n*/\n\n''' ++ ++ return gen_str ++ ++ @staticmethod ++ def writeHeader(name): ++ str = '' ++ if re.match(r'.*\.h$', name): ++ name = string.replace(name, '.', '_') ++ name = string.replace(name, '-', '_') ++ str += '''#ifndef __%s\n''' %(name.upper()) ++ str += '''#define __%s\n''' %(name.upper()) ++ str += '''\n''' ++ elif re.match(r'.*\.dtsi$', name): ++ str += '''/*************************\n''' ++ str += ''' * %s File\n''' %(name.replace('cust_', '').replace('.', ' ').upper()) ++ str += '''*************************/\n\n''' ++ ++ return str ++ ++ @staticmethod ++ def writeTail(name): ++ if re.match(r'.*\.h$', name): ++ gen_str = '''\n\n#endif /* %s */\n''' %('__' + string.replace(name, '.', '_').upper()) ++ return gen_str ++ ++ ++ ++ ++ +diff --git a/tools/dct/obj/PmicObj.py b/tools/dct/obj/PmicObj.py +new file mode 100755 +index 00000000000..4b5a96630c5 +--- /dev/null ++++ b/tools/dct/obj/PmicObj.py +@@ -0,0 +1,207 @@ ++#! /usr/bin/python3 ++# -*- coding: utf-8 -*- ++ ++from __future__ import absolute_import ++import sys, os ++import re ++import configparser ++import xml.dom.minidom ++ ++from .ModuleObj import ModuleObj ++from data.PmicData import PmicData ++ ++from utility.util import log ++from utility.util import LogLevel ++from utility.util import compare ++from utility.util import sorted_key ++ ++ ++class PmicObj(ModuleObj): ++ def __init__(self): ++ ModuleObj.__init__(self, 'pmic_drv.h', 'cust_pmic.dtsi') ++ self.__fileName = 'pmic_drv.c' ++ self.__chipName = '' ++ self.__defLdo = '' ++ self.__appCount = -1 ++ self.__func = '' ++ self.__paraList = [] ++ self.__headerList = [] ++ ++ ++ def get_cfgInfo(self): ++ cp = configparser.ConfigParser(allow_no_value=True) ++ cp.read(ModuleObj.get_cmpPath()) ++ ++ PmicData._var_list = cp.options('APPLICATION') ++ ++ if self.__chipName == '': ++ return ++ #parse the pmic config file ++ cmpPath = os.path.join(sys.path[0], 'config', self.__chipName + '.cmp') ++ if not os.path.exists(cmpPath) or not os.path.isfile(cmpPath): ++ log(LogLevel.error, 'Can not find %s pmic config file!' %(self.__chipName)) ++ sys.exit(-1) ++ cp.read(cmpPath) ++ self.__defLdo = cp.get('PMIC_TABLE', 'LDO_APPNAME_DEFAULT') ++ self.__headerList = cp.get('PMIC_TABLE', 'INCLUDE_HEADER').split(':') ++ self.__func = cp.get('PMIC_TABLE', 'FUNCTION') ++ ++ for i in range(1, cp.getint('PMIC_TABLE', 'NUM_LDO')+1): ++ key = 'LDO_NAME%d' %(i) ++ self.__paraList.append(cp.get(key, 'PARAMETER_NAME')) ++ ++ #parse app count in fig file ++ cp.read(ModuleObj.get_chipId() + '.fig') ++ ++ cp.read(ModuleObj.get_figPath()) ++ self.__appCount = cp.getint('Chip Type', 'PMIC_APP_COUNT') ++ ++ def read(self, node): ++ nodes = node.childNodes ++ for node in nodes: ++ if node.nodeType == xml.dom.Node.ELEMENT_NODE: ++ if cmp(node.nodeName, 'chip') == 0: ++ if len(node.childNodes) == 0: ++ break ++ self.__chipName = node.childNodes[0].nodeValue ++ continue ++ if cmp(node.nodeName, 'count') == 0: ++ continue ++ ldoNode = node.getElementsByTagName('ldoVar') ++ defNode = node.getElementsByTagName('defEn') ++ ++ data = PmicData() ++ if len(ldoNode): ++ data.set_ldoName(ldoNode[0].childNodes[0].nodeValue) ++ ++ if len(defNode): ++ number = -1 ++ if cmp(defNode[0].childNodes[0].nodeValue, 'SKIP') == 0: ++ number = 0 ++ elif cmp(defNode[0].childNodes[0].nodeValue, 'OFF') == 0: ++ number = 1 ++ else: ++ number = 2 ++ data.set_defEnable(number) ++ ++ name_list = [] ++ for i in range(0, 6): ++ key = 'varName%d' %(i) ++ nameNode = node.getElementsByTagName(key) ++ if len(nameNode): ++ name_list.append(nameNode[0].childNodes[0].nodeValue) ++ ++ data.set_nameList(name_list) ++ ++ ModuleObj.set_data(self, node.nodeName, data) ++ ++ return True ++ ++ def parse(self, node): ++ self.read(node) ++ self.get_cfgInfo() ++ ++ def gen_files(self): ++ ModuleObj.gen_files(self) ++ self.gen_cFile() ++ ++ def gen_cFile(self): ++ fp = open(os.path.join(ModuleObj.get_genPath(), self.__fileName), 'w') ++ gen_str = '' ++ gen_str += ModuleObj.writeComment() ++ gen_str += self.fill_cFile() ++ fp.write(gen_str) ++ fp.close() ++ ++ ++ def fill_hFile(self): ++ gen_str = '' ++ used = [] ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ value = ModuleObj.get_data(self)[key] ++ for name in value.get_nameList(): ++ if name.strip() != '': ++ used.append(name) ++ gen_str += '''#define PMIC_APP_%s\t\t\t%s_POWER_LDO_%s\n''' %(name, self.__chipName[5:11], value.get_ldoName()) ++ ++ ++ gen_str += '''\n''' ++ ++ gen_str += '''/**********Output default name********************/\n''' ++ ++ for varName in PmicData._var_list: ++ if not varName.upper() in used: ++ gen_str += '''#define PMIC_APP_%s\t\t\t%s\n''' %(varName.upper(), self.__defLdo) ++ ++ return gen_str ++ ++ ++ def fill_dtsiFile(self): ++ gen_str = '' ++ ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ value = ModuleObj.get_data(self)[key] ++ gen_str += '''&mt_pmic_%s_ldo_reg {\n''' %(value.get_ldoName().lower()) ++ gen_str += '''\tregulator-name = \"%s\";\n''' %((value.get_ldoName().replace('_', '')).lower()) ++ gen_str += '''\tregulator-default-on = <%d>; /* 0:skip, 1: off, 2:on */\n''' %(value.get_defEnable()) ++ gen_str += '''\tstatus = \"okay\";\n''' ++ gen_str += '''};\n''' ++ ++ gen_str += '''\n''' ++ gen_str += '''&kd_camera_hw1 {\n''' ++ ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ value = ModuleObj.get_data(self)[key] ++ for varName in value.get_nameList(): ++ #for i in range(0, self.__appCount): ++ bExisted = False ++ postFix = '' ++ #varName = value.get_nameList()[i] ++ if varName.find('CAMERA') != -1: ++ postFix = varName[varName.rfind('_')+1:] ++ bExisted = True ++ ++ if varName.find('MAIN_CAMERA') != -1: ++ gen_str += '''\tvcam%s-supply = <&mt_pmic_%s_ldo_reg>;\n''' %(postFix.lower(), value.get_ldoName().lower()) ++ ++ if varName.find('SUB_CAMERA') != -1: ++ gen_str += '''\tvcam%s_main2-supply = <&mt_pmic_%s_ldo_reg>;\n''' %(postFix.lower(), value.get_ldoName().lower()) ++ gen_str += '''\tvcam%s_sub-supply = <&mt_pmic_%s_ldo_reg>;\n''' %(postFix.lower(), value.get_ldoName().lower()) ++ ++ #if bExisted == True: ++ #gen_str += '''\n''' ++ ++ gen_str += '''\tstatus = \"okay\";\n''' ++ gen_str += '''};\n\n''' ++ gen_str += '''&touch {\n''' ++ ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ value = ModuleObj.get_data(self)[key] ++ for name in value.get_nameList(): ++ if name.find('TOUCH') != -1: ++ gen_str += '''\tvtouch-supply = <&mt_pmic_%s_ldo_reg>;\n''' %(value.get_ldoName().lower()) ++ ++ gen_str += '''\tstatus = \"okay\";\n''' ++ gen_str += '''};\n''' ++ ++ return gen_str ++ ++ def fill_cFile(self): ++ gen_str = '' ++ for header in self.__headerList: ++ gen_str += '''#include <%s>\n''' %(header) ++ ++ gen_str += '''\n''' ++ gen_str += '''void pmu_drv_tool_customization_init(void)\n''' ++ gen_str += '''{\n''' ++ idx = 0 ++ ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ value = ModuleObj.get_data(self)[key] ++ if value.get_defEnable() != 0: ++ gen_str += '''\t%s(%s,%d);\n''' %(self.__func, self.__paraList[idx], value.get_defEnable()-1) ++ idx += 1 ++ gen_str += '''}\n''' ++ ++ return gen_str ++ +diff --git a/tools/dct/obj/PowerObj.py b/tools/dct/obj/PowerObj.py +new file mode 100755 +index 00000000000..925075e9cc0 +--- /dev/null ++++ b/tools/dct/obj/PowerObj.py +@@ -0,0 +1,76 @@ ++#! /usr/bin/python3 ++# -*- coding: utf-8 -*- ++ ++from __future__ import absolute_import ++import sys,os ++import re ++import string ++import configparser ++import xml.dom.minidom ++ ++from . import ChipObj ++from data.PowerData import PowerData ++from utility.util import log ++from utility.util import LogLevel ++from utility.util import sorted_key ++from .ModuleObj import ModuleObj ++ ++class PowerObj(ModuleObj): ++ def __init__(self): ++ ModuleObj.__init__(self, 'cust_power.h', 'cust_power.dtsi') ++ self.__list = {} ++ ++ def getCfgInfo(self): ++ cp = configparser.ConfigParser(allow_no_value=True) ++ cp.read(ModuleObj.get_figPath()) ++ ++ self.__list = cp.options('POWER') ++ self.__list = self.__list[1:] ++ self.__list = sorted(self.__list) ++ ++ def read(self, node): ++ nodes = node.childNodes ++ for node in nodes: ++ if node.nodeType == xml.dom.Node.ELEMENT_NODE: ++ if node.nodeName == 'count': ++ continue ++ ++ varNode = node.getElementsByTagName('varName') ++ ++ data = PowerData() ++ data.set_varName(varNode[0].childNodes[0].nodeValue) ++ ++ ModuleObj.set_data(self, node.nodeName, data) ++ ++ return True ++ ++ def parse(self, node): ++ self.getCfgInfo() ++ self.read(node) ++ ++ def gen_files(self): ++ ModuleObj.gen_files(self) ++ ++ def gen_spec(self, para): ++ if re.match(r'.*_h$', para): ++ self.gen_hFile() ++ ++ # power module has no DTSI file ++ def gen_dtsiFile(self): ++ pass ++ ++ def fill_hFile(self): ++ gen_str = '' ++ for key in sorted_key(ModuleObj.get_data(self).keys()): ++ value = ModuleObj.get_data(self)[key] ++ if value.get_varName() == '': ++ continue ++ idx = string.atoi(key[5:]) ++ name = self.__list[idx] ++ gen_str += '''#define GPIO_%s\t\tGPIO_%s\n''' %(name.upper(), value.get_varName()) ++ ++ return gen_str ++ ++ def fill_dtsiFile(self): ++ return '' ++ +diff --git a/tools/dct/obj/__init__.py b/tools/dct/obj/__init__.py +new file mode 100755 +index 00000000000..e69de29bb2d +diff --git a/tools/dct/utility/__init__.py b/tools/dct/utility/__init__.py +new file mode 100755 +index 00000000000..e69de29bb2d +diff --git a/tools/dct/utility/util.py b/tools/dct/utility/util.py +new file mode 100755 +index 00000000000..388336f2d1f +--- /dev/null ++++ b/tools/dct/utility/util.py +@@ -0,0 +1,37 @@ ++#! /usr/bin/python3 ++# -*- coding: utf-8 -*- ++ ++from __future__ import print_function ++import re ++import string ++ ++ ++LEVEL_INFO = '[DCT_INFO]: ' ++LEVEL_WARN = '[DCT_WARNING]: ' ++LEVEL_ERROR = '[DCT_ERROR]: ' ++ ++class LogLevel: ++ info = 1 ++ warn = 2 ++ error = 3 ++ ++def log(level, msg): ++ if level == LogLevel.info: ++ print(LEVEL_INFO + msg) ++ elif level == LogLevel.warn: ++ print(LEVEL_WARN + msg) ++ elif level == LogLevel.error: ++ print(LEVEL_ERROR + msg) ++ ++def compare(value): ++ lst = re.findall(r'\d+', value) ++ if len(lst) != 0: ++ return string.atoi(lst[0]) ++ ++ # if can not find numbers ++ return value ++ ++def sorted_key(lst): ++ return sorted(lst, key=compare) ++ ++ +diff --git a/tools/dct/utility/version.py b/tools/dct/utility/version.py +new file mode 100755 +index 00000000000..976e5dd9654 +--- /dev/null ++++ b/tools/dct/utility/version.py +@@ -0,0 +1,6 @@ ++#! /usr/bin/python3 ++# -*- coding: utf-8 -*- ++ ++VER_MAIN = '3' ++VER_SUB = '4' ++BUILD_SN = '160808'